Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (2024)

Galaxy Z Flip6

  • SPESIFIKASJONER
  • SUPPORT
  • ANMELDELSER

KJØP NÅ

  • Funksjoner
  • Sammenlign og oppgrader
  • Bytt til Galaxy
  • Tilbehør
  • FAQ
  • SPESIFIKASJONER
  • SUPPORT
  • ANMELDELSER
Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (1)

Kjøp nå Reserver nå Forhåndskjøp nå Hvor du kan kjøpe

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (2)

Galaxy AI er her

Ditt verktøy for å uttrykke deg, Galaxy Z Flip6, er mer kompakt og iøynefallende, med Galaxy AI og et 50 MP-kamera på proffnivå som er klar for fotografering.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (3)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (4)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (5)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (6)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (7)

Slank og kompakt design

Gå til Design

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (8) Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (9)

Galaxy Z Flip6 ses lukkes fra siden. Den åpnes igjen, roterer og vinkelen endres til FlexMode.

FlexCam med automatisk zoom

Gå til FlexCam

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (10) Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (11)

Et bilde av tre venner ses fra Galaxy Z Flip6s FlexWindow. Galaxy AI brukes for å zoom inn på personene uten berøring.

Bli med i den globale samtalen

Gå til Tolk

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (12)

AI brukes til å oversette ett språk til et annet på hovedskjermen på Galaxy Z Flip6. Den roterer, og oversettelsen vises i FlexWindow.

50 MP. Nytt kamera. Fantastiske portretter

Hopp til kamera

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (13) Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (14)

Et bilde blir tatt i dårlig lys, men levende farger og detaljer blir fanget opp.

Batterilevetid hele dagen

Hopp til ytelse

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (15) Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (16)

På hovedskjermen til Galaxy Z Flip6 ser man et tidsforløp av et bylandskap som går fra dag til natt, mens batteriets kapasitet øker til maksimalt 4000 milliamperetimer.

  • «Galaxy Z Flip6 gir Skikkelig Flaggskipkraft»

    Digital Trends

  • «Utrolig ytelse og lang batterilevetid»

    Forbes

VÅR MEST KOMPAKTE

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (17)

Galaxy Z Flip6 ses lukkes fra siden. Den åpnes igjen, roterer og vinkelen endres til FlexMode.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (18)

STOR PÅVIRKNING

Galaxy Z Flip6s nye flytende design er moderne, slank og elegant, og skaper vår mest kompakte smarttelefon hittil.

Fargerik. Gledelig. Fantastisk

Finn din favorittfarge eller velg blant en av de eksklusive fargene på nett, kun på Samsung.com.

3d 360 viewer Eksklusivt på nett

Blue Yellow Mint Silver Shadow Crafted Black Eksklusive farger på nett White Eksklusive farger på nett Peach Eksklusive farger på nett

Forhåndsinnstilt vinkel

*Eksklusive farger som kun er tilgjengelige på Samsung.com.

Blue Yellow Mint Silver Shadow Crafted Black Eksklusive farger på nett White Eksklusive farger på nett Peach Eksklusive farger på nett

Forhåndsinnstilt vinkel

*Eksklusive farger som kun er tilgjengelige på Samsung.com.

Galaxy AI er her på Galaxy Foldables

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (26)

En halvlukket kompakt Galaxy Z Flip6 er sett fra siden.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (27)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (28)

Galaxy AI Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (29) Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (30)

er her på Galaxy Foldables er her på Galaxy Foldables

TOLK

Din praktiske tolkeopplevelse med FlexWindow

Lost in translation? Galaxy Z Flip6 er ditt pass til kommunikasjon – og fungerer som din personlige tolk..,

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (31)

En samtale på to språk blir transkribert og oversatt i sanntid.

Trykk for å prøve

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (32)

Galaxy AI transkriberer samtaler i sanntid. Oversettelser av hvert språk vises som tekst på skjermen.

Trykk for å prøve

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (33)

Knappen med to skjermer aktiverer tolkeappen fra forsiden.

CHAT ASSIST

Chatten flyter, selv når den er lukket

Send meldinger direkte fra FlexWindow med Chat Assist. Bare velg et av de Foreslåtte svarene – kuratert av kontekstbevisst AI.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (34)

Tekstsamtalen vises på FlexWindow i Galaxy Z Flip6.

Trykk for å teste

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (35)

Suggested Replies gir tre mulige svar du kan sende til en venn. Svarene er basert på tekstsamtalen og samtykker til vennens forslag om å skate i lag.

Ditt vindu, din måte

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (36)

FlexWindow-klokkegrensesnitt med et bilde av en kvinne og interaktive elementer som viser ulike typer vær.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (37)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (38)

FlexWindow-klokkegrensesnitt med interaktivt grønnsaksdesign.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (39)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (40)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (41)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (42)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (43)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (44)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (45)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (46)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (47)

FlexWindow-klokkegrensesnitt med et bilde av en kvinne og interaktive elementer som viser ulike typer vær.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (48)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (49)

FlexWindow-klokkegrensesnitt med interaktivt grønnsaksdesign.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (50)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (51)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (52)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (53)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (54)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (55)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (56)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (57)

Chat med Google Gemini for å superlade egne ideer

Som følge av Samsungs langvarige samarbeid med Google, leveres Galaxy nå med Google Gemini-appen. Chat med Gemini for help til nye metoder for læring, konstruksjon av takkebrev, planer for arrangementer og mer.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (58)

Dykk ned i en verden av AI

Ring rundt for å søke

Bare sett ring rundt et objekt eller en tekst for å få opp søkeresultater fra Google.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (59)

Live Translate

stemmeoversettelse i sanntid i ulike apper når du ringer.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (60)

Transkripsjonshjelp

Transkriber innspilte samtaler til redigerbar tekst på et blunk.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (61)

50 MP. NYTT KAMERA. FANTASTISKE PORTRETTER

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (62)

Tatt med en Galaxy Z Flip6 #withGalaxy

Portretter på kveldstid er opplyst

Ta fantastiske bilder om dagen men også om natten – og til og med i svakt opplyste områder. Bruk Nightography for å få hvert bilde til å skinne med detaljer, takket være ProVisual Engine.

Det kraftigste kameraet på en Galaxy Z Flip, nå med AI

Det oppgraderte 50MP wide rear kameraet behandler bildene dine gjennom ProVisual Engine for å fange fantastiske bilder og fyldigere portretter..,,,,,

ProVisual Engine

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (63)

kamera bak

  • 50MP Bred 2x optisk kvalitets-zoom

  • 12 MP Ultrabred

FlexCam. Fang din beste vinkel

FlexCam bruker Auto Zoom til å zoome inn eller ut på motiver, og gir en forhåndsvisning i FlexWindow for en håndfri selfieopplevelse.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (64)

Bilde av tre venner sett fra Galaxy Z Flip6s FlexWindow. Galaxy AI zoomer inn på personene uten at den holdes i hånden.

Tatt med en Galaxy Z Flip6 #withGalaxy

Bakkamera-portretter treffer annerledes

Bruk FlexWindow til å gi motivet en forhåndsvisning mens du tar bildet i 50 megapiksler. Ta deretter et bilde for å ta lyse og detaljerte portretter, selv i motlys.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (65)

Tatt med en Galaxy Z Flip6 #withGalaxy

FOTO ASSISTENT

Enkel redigering. Med tillatelse fra Galaxy AI

Generativ redigering

Utnytt kreativiteten din med Generative Edit for Photo Assist for å flytte, endre størrelse på eller slette hele objekter fra bildene dine og fylle ut bakgrunnen der de pleide å være.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (66)

Ett av motivene velges ut og flyttes til et annet sted i bildet. Manglende områder fylles ut ved hjelp av AI.

Instant Slow-mo

Sett fokus på viktige øyeblikk ved å bruke sakte film på videoene dine, og del eller lagre dem.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (67)

Videoen spilles av og begynner å gå saktere når du trykker på skjermen for å vise Instant Slow-mo.

Tatt med en Galaxy Z Flip6 #withGalaxy

Levende effekt

Legg til dybde for å gi bildene dine helt nytt liv.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (68)

Live Effect brukes på motivet i et bilde for å gi en 3D-effekt.

Galaxy Z Flips batteri med lengst levetid

Møt vårt største Flip-batteri noensinne. Sammen med Snapdragon® 8 Gen 3 for Samsung Galaxy kan du snakke, tekste eller spille så mye du vil – hele dagen.,

4000 4000 mAh

  • Lytt til musikk opp til 23

    68 timer

  • Se videoer opp til 23

    23 timer

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (69)

Den raskeste Snapdragon på en Galaxy Z Flip hittil,

Første dampkammer noensinne på en Galaxy Z Flip

Hold ting kjølig, rolig og smidig med et Vapor Chamber som sprer varmen raskt.

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (70)

Innsiden av en Galaxy Z Flip6 er vist med to sett med piler som kommer ut av den for å representere varmen som strømmer bort fra den.

Hvorfor bytte til Samsung Galaxy

  • Enkelt å bytte til Samsung Galaxy

    Enkelt bytte til Samsung Galaxy! Takket være Smart Switch kan du enkelt overføre bilder, videoer, kontakter og apper.,,

    Lær mer

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (71)

  • Sømløs deling

    Send filer, data og innhold mellom enheter, inkludert iOS og PC-er. Det er en rask og sikker måte å dele åpent på.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (72)

  • Personvernet ditt. Sikret.

    I Personvern og sikkerhet kan du raskt se hvilke apper som har tilgang til informasjonen din, og deretter tilpasse innstillingene dine. I tillegg kan du med Advanced Intelligence-funksjoner behandle data for AI-tjenester fra Samsung Galaxy-enheten din eller i skyen.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (73)

Holdbar. Pålitelig. Bygget for å vare

  • Forsterket brettbar kant

    Forsterket for å tåle mer trykk.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (74)

  • Utviklet for utholdenhet

    Møt vår slanke og innovative FlexHinge.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (75)

  • Skjermet i aluminium

    Forbedret Armor Aluminum Frame holder deg beskyttet .,

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (76)

  • Virkelig tøff

    Fantastisk beskyttelse med Corning® Gorilla® Glass Victus® 2.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (77)

  • Hold deg vannbestandig

    IP48 vanntetthet for uventet søl.

    Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (78)

Samsung Care+

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (79)

Sertifisert pleie av Samsungs eksperter

Lær mer

Prøv Galaxy på telefonen din

Har du opplevd den nyeste Samsung Galaxy-enheten ennå? Hva med å prøve den ut nå? På telefonen din! Bare skann QR-koden og last ned for å begynne.

Gå til trygalaxy.com

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (80)

Hold nøyaktig oversikt over velværet ditt med AI

Koble Galaxy Z Flip6 med den helt nye Galaxy Watch Ultra eller Galaxy Watch7 for å spore din Energy Score gjennom dagen.,

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (81)

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (82)

Samsung Helse

Lær mer

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (83)

Tilbehør

Utforsk mer

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (84)

Ofte stilte spørsmål

Galaxy Z Fold6

Lær mer

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (85)

Sjekk ut smarte måter å få tak i Galaxy Z Flip6 på

Kjøp nå Reserver nå Forhåndskjøp nå Hvor du kan kjøpe

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (86)

Se Galaxy Z Flip6 i AR Åpne i AR

Livet åpner seg med Galaxy

Utforsk mer

Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (90)

3d 360 viewer Eksklusivt på nett

Blue Yellow Mint Silver Shadow Crafted Black Eksklusive farger på nett White Eksklusive farger på nett Peach Eksklusive farger på nett

Forhåndsinnstilt vinkel

*Eksklusive farger som kun er tilgjengelige på Samsung.com.

Oppdag en ny æra for næringslivet

Gå til Samsung Business

*Alle spesifikasjoner og beskrivelser som gis her, kan avvike fra de faktiske spesifikasjonene og beskrivelsene for produktet. Samsung forbeholder seg retten til når som helst å gjøre endringer i dette dokumentet og produktet som er beskrevet her, uten at Samsung er forpliktet til å varsle om slike endringer. Alle funksjoner, egenskaper, spesifikasjoner, brukergrensesnitt og annen produktinformasjon i dette dokumentet, inkludert, men ikke begrenset til, produktets fordeler, design, priser, komponenter, ytelse, tilgjengelighet og egenskaper, kan endres uten varsel eller forpliktelser. Innholdet på skjermen er simulerte bilder og er kun ment for demonstrasjonsformål.

*Innlogging på Samsung-kontoen kan være nødvendig for å bruke visse Samsung AI-funksjoner.

*Samsung gir ingen løfter, forsikringer eller garantier med hensyn til nøyaktigheten, fullstendigheten eller påliteligheten til utdataene som leveres av AI-funksjoner.

*Tilgjengeligheten til Galaxy AI-funksjoner kan variere avhengig av region/land, OS/One UI-versjon, enhetsmodell og telefonoperatør.

*Galaxy AI-funksjoner vil være gratis frem til slutten av 2025 på støttede Samsung Galaxy-enheter. Andre vilkår kan gjelde for AI-funksjoner som leveres av tredjeparter.

*Galaxy AI-tjenesten kan være begrenset for mindreårige i visse regioner med aldersbegrensninger for bruk av AI.

  1. Sammenlignet med tidligere Galaxy Z Flip-modeller.
  2. Autozoom er tilgjengelig i FlexMode ved bruk av det bakre kameraet og kobles ut hvis zoomen justeres manuelt. Begrenset i dårlige lysforhold. Fungerer kanskje ikke hvis enheten er i bevegelse eller hvis motivet er for nært.
  3. Tolkefunksjonen krever pålogging til en Samsung-konto. Enkelte språk kan kreve nedlasting av språkpakker. Tjenestens tilgjengelighet kan variere etter språk. Nøyaktigheten av resultatene kan ikke garanteres. Tilgjengelighet og støttede funksjoner kan variere basert på land, region eller operatør. Tilgjengeligheten av språk som støttes kan variere.
  4. 50MP-oppløsning er bare tilgjengelig på Galaxy Z Flip6s bakre, brede kamera.
  5. Den faktiske batterilevetiden kan variere avhengig av nettverksmiljø, funksjoner og apper som brukes, hvor ofte du ringer og sender meldinger, antall ganger du lader og flere andre faktorer. Estimert i forhold til den gjennomsnittlige bruksprofilen som er sammenstilt og uavhengig vurdert av UX Connect Research under standardinnstillinger ved bruk av LTE- og 5G Sub6-nettverk.
  6. Tykkelsen måles fra toppen til bunnen av glasset når det er brettet ut.
  7. Fargetilgjengeligheten kan variere avhengig av land eller operatør.
  8. Tolken kan vises fra både hovedskjermen og FlexWindow, men denne funksjonen må aktiveres manuelt. Ikke bare tilgjengelig på FlexWindow.
  9. Foreslåtte svar-funksjonen krever nettverkstilkobling for å motta meldinger. Den kan foreslå svar uten nettverkstilkobling når meldingene er mottatt av enheten. Innlogging på Samsung-konto kreves. Foreslåtte svar-funksjonen støttes bare fra FlexWindow. Tjenestens tilgjengelighet kan variere etter språk, land og app. Nøyaktigheten av resultatene kan ikke garanteres.
  10. Sekvenser er kortet ned og simulert. Resultater er bare til illustrasjonsformål. Tjenestens tilgjengelighet varierer gjerne etter land, språk og modell for enheten. Krever tilkobling til internett og en konto hos Google for pålogging. Bruker må muligens laste ned eller oppdatere Google Gemini-appen til nyeste versjon. Sjekk svar for nøyaktighet. Gemini er et varemerke fra Google LLC. Påmelding for Gemini ruller ut til utvalgte enheter og land. Si ja til Gemini fra Google Assistant eller når du laster ned Gemini-appen. Produktets funksjoner avhenger gjerne av innstillinger for app- og enhet. Enkelte funksjoner er ikke alltid kompatibel med enkelte apper. Nøyaktige resultater er ikke garantert. Tilgjengelighet av funksjon varierer gjerne etter innhold.
  11. Sekvenser forkortet og simulert. Resultatene er kun ment som illustrasjon. Tjenestens tilgjengelighet kan variere basert på land, språk og enhetsmodell. Krever internettforbindelse. Brukere må kanskje oppdatere Android og Google-appen til den nyeste versjonen. Fungerer på kompatible apper og overflater. Resultatene kan variere avhengig av visuell match. Nøyaktigheten av resultatene kan ikke garanteres. Ring rundt for å søke er ikke tilgjengelig via FlexWindow.
  12. Live Translate-funksjonen krever nettverkstilkobling for å motta anropsmeldinger. Den kan oversette uten nettverkstilkobling når anropsmeldingene er mottatt av enheten. Innlogging på Samsung-konto kreves. Live Translate-funksjonen er bare tilgjengelig i forhåndsinstallerte Samsung-apper og enkelte tredjepartsapper. Tjenestens tilgjengelighet kan variere basert på språk eller region. Enkelte språk kan kreve nedlasting av språkpakker. Nøyaktigheten av resultatene kan ikke garanteres.
  13. Transkripsjons- og sammendragsfunksjonene for Transcript Assist krever en nettverkstilkobling og pålogging til en Samsung-konto. Funksjonene for Transcript Assist er bare tilgjengelige på den forhåndsinstallerte Samsung Voice Recorder-appen eller filer som er spilt inn med den forhåndsinstallerte Samsung Phone-appen, Samsung Notes-appen eller Samsung Interpreter-appen. Det kan hende at taleopptaksfunksjonen i den forhåndsinstallerte Samsung-appen ikke støttes i enkelte land. Lydfiler må være under 3 timer for å bli behandlet. Oppsummeringsfunksjonen for Transcript Assist kan aktiveres når et visst antall tegn er nådd. Tjenestens tilgjengelighet kan variere etter språk. Nøyaktigheten av resultatene kan ikke garanteres.
  14. Resultatene kan variere avhengig av lysforhold og/eller fotograferingsforhold, inkludert flere motiver, ufokuserte motiver eller motiver i bevegelse.
  15. Optisk kvalitets-zoom aktiveres av Adaptive Pixel-sensoren.
  16. 2x zoom må være aktivert i innstillingene for Camera Assistant-appen. Camera Assistant kan lastes ned fra Galaxy Store.
  17. AI Zoom brukes på avstander mellom digitale zoomlengder. Nøyaktigheten av resultatene kan ikke garanteres.
  18. Funksjonen Generative Edit for Photo Assist krever en nettverkstilkobling og pålogging til en Samsung-konto. Redigering med Generative Edit kan resultere i et bilde med en størrelse på opptil 12 MP. Et synlig vannmerke legges over bildet når det lagres, for å indikere at bildet er generert av AI. Nøyaktigheten og påliteligheten til de genererte resultatene kan ikke garanteres.
  19. Instant Slow-mo-funksjonen for Photo Assist er tilgjengelig på Samsung Video Player og Samsung Gallery. Kan være utilgjengelig for enkelte videofiltyper. Nøyaktigheten av resultatene kan ikke garanteres.
  20. Live Effect-funksjonen for Photo Assist støtter JPG-, HEIC- (HEIF), BMP-, PNG- og WebP-filer. Kan være utilgjengelig på enkelte bilder. Nøyaktigheten og påliteligheten til de genererte resultatene kan ikke garanteres.
  21. Snapdragon-merkede produkter er produkter fra Qualcomm Technologies, Inc. og/eller dets datterselskaper.
  22. Begrenset til sammenleggbare Galaxy-smarttelefoner.
  23. Typisk verdi testet under tredjeparts laboratorieforhold. Typisk verdi er den estimerte gjennomsnittsverdien med tanke på avviket i batterikapasitet blant batteriprøvene som er testet i henhold til IEC 61960-standarden. Nominell kapasitet er 3887 mAh for Galaxy Z Flip6. Den faktiske batterilevetiden kan variere avhengig av nettverksmiljø, bruksmønster og andre faktorer.
  24. Basert på Samsungs interne laboratorietestforhold med en forhåndsversjon av den gitte modellen koblet til øretelefoner via Bluetooth med standardinnstillinger over LTE. Estimert batterikapasitet og målt strømforbruk over batteristrømforbruk under henholdsvis videoavspilling (videofil med oppløsningen 720p, lagret på enheten) og lydavspilling (mp3-fil, 192 kbps, lagret på enheten med LCD-skjermen slått av). Den faktiske avspillingstiden for video og lyd varierer avhengig av nettverkstilkobling, innstillinger, filformat, lysstyrke på skjermen, batteritilstand og flere andre faktorer.
  25. Kablede overføringer fra Android™-enheter krever at mottakerenheten har Android™ 4.3 eller nyere, og avsenderenheten må ha Android 4.3™ eller nyere. Overføringer kan fullføres uten kabel via en trådløs tilkobling. For trådløse tilkoblinger må mottakerenheten ha Android™ 4.0 eller nyere, og senderenheten må ha Android™ 4.0 eller nyere. Åpne Smart Switch Mobile i ”Innstillinger” på den mottakende Galaxy-enheten, eller last ned Smart Switch Mobile-appen fra Galaxy Store. Data, innhold og apper som er tilgjengelige for overføring, kan variere avhengig av overføringsmetode.
  26. Kablede overføringer fra iOS krever at mottakerenheten har Android™ 4.3 eller nyere, og at senderenheten har iOS 5 eller nyere. Overføringer kan fullføres uten kabel via en trådløs tilkobling eller iCloud. For trådløse tilkoblinger må mottakerenheten ha Android™ 4.0 eller nyere, og senderenheten må ha iOS 12 eller nyere. iCloud-overføringer krever at mottakerenheten har Android™ 4.0 eller nyere, og senderenheten må ha iOS 5 eller nyere. Åpne Smart Switch Mobile i ”Innstillinger” på den mottakende Galaxy-enheten, eller last ned Smart Switch Mobile-appen fra Galaxy Store. For trådløse overføringer kan du laste ned Smart Switch for iOS fra App Store på iPhone eller iPad. Data, innhold og apper som er tilgjengelige for overføring, kan variere avhengig av overføringsmetode. Kontakter, galleri, videoer, kalendere og påminnelser kan overføres trådløst fra en iOS-enhet.
  27. Det anbefales å bruke en kablet tilkobling når du overfører flere datasett samtidig.
  28. Quick Share-funksjonen mellom Galaxy-enheter er tilgjengelig med følgende operativsystem: smarttelefoner og nettbrett med Android OS versjon 10.0 (Q) og One UI 2.1 eller nyere, PC-er som kjører Windows 10 eller nyere. Krever innlogging på en Samsung-konto og Wi-Fi- og Bluetooth-tilkobling. Quick Share til iOS- og Android-enheter er tilgjengelig ved å sende en delt lenke: individuelle filer som deles, kan ikke overstige 5 GB (totalt 5 GB per dag), og lenken utløper etter to dager; krever innlogging på en Samsung-konto og Internett-tilkobling.
  29. Armor Aluminum Frame inkluderer ikke volum- og sidetaster eller SIM-skuff.
  30. Sammenlignet med tidligere modeller.
  31. Corning® Gorilla® Glass Victus® 2 er brukt på forsiden og baksiden av enheten.
  32. Basert på laboratorietestforhold for nedsenking i opptil 1,5 meter ferskvann i opptil 30 minutter og for beskyttelse mot en fast gjenstand større enn 1 mm, for eksempel en ledning. Frarådes for bruk på stranden eller ved bassenget. Enhetens vanntetthet er ikke permanent og kan reduseres over tid på grunn av normal slitasje. Ikke støv- eller sandbestandig.
  33. Samsung Care+-dekning, tjenestetype og kampanjedetaljer kan variere avhengig av land og region, og egenandel (servicegebyr) kan gjelde. For å være kvalifisert for Samsung Care+-kampanjen kan det være nødvendig å registrere seg. Du finner detaljert informasjon om Samsung Care+ på https://www.samsung.com/samsung-care-plus/.
  34. Energy Score er tilgjengelig på Android-telefoner (Android 11 eller nyere) og krever Samsung Health-appen (v6.27 eller nyere). Innlogging på Samsung-konto kreves. Tjenestens tilgjengelighet kan variere avhengig av land eller region. For å sjekke Energy Score må helsedataene som spores fra Samsung Galaxy Watch eller Samsung Galaxy Ring, synkroniseres med Samsung Health-appen. Trenger minst forrige dags aktivitetsdata og søvn, samt pulsdata under søvn. Ikke ment for bruk til påvisning, diagnostisering eller behandling av noen medisinsk tilstand. Resultatet er kun ment som en personlig referanse. Rådfør deg med en lege for å få råd.
  35. Galaxy Watch Ultra og Galaxy Watch7-enheter selges separat.
  36. Målt diagonalt er Galaxy Z Flip6s hovedskjerm 6,7” i hele rektangelet og 6,6” når man tar hensyn til de avrundede hjørnene; det faktiske synlige området er mindre på grunn av de avrundede hjørnene og kamerahullet.
  37. Målt diagonalt er Galaxy Z Flip6s dekselskjerm 3,4” i full rektangulær form; det faktiske synlige området er omtrent 95 % av hele det rektangulære området på grunn av de avrundede hjørnene og den nedre utskjæringen.
  38. Enkelte programmer støtter kanskje ikke FlexWindow-widgeter.
  39. Funksjoner for generativt innhold krever nettverkstilkobling og pålogging på Google-kontoen. Nøyaktigheten og påliteligheten til de genererte resultatene kan ikke garanteres. Tilgjengeligheten av funksjoner kan variere fra modell til modell.
  40. Photo Ambient feature requires network connection to receive the weather data. It can reflect the weather data without network connection once the data is received by the device. Reflection of real-time weather conditions may be delayed as service relies on local weather information updates. Certain indoor, nighttime and low-resolution photos may not be compatible. The accuracy and reliability of the generated output is not guaranteed. Service is currently only available on Galaxy S24 Series, Galaxy Z Flip6 and Galaxy Z Fold6. Feature availability may vary by model.

Opplæringsvideoer for Galaxy Z Flip6

')); } } }; const isZoom = function () { let zoomLevel = 100 / ((window.innerWidth / window.outerWidth) * 100); if (zoomLevel > 1.7) { document.documentElement.classList.add('browser-zoomed-175'); } else { document.documentElement.classList.remove('browser-zoomed-175'); } if (zoomLevel > 3) { document.documentElement.classList.add('browser-zoomed-300'); } else { document.documentElement.classList.remove('browser-zoomed-300'); } if (zoomLevel > 4) { document.documentElement.classList.add('browser-zoomed-400'); } else { document.documentElement.classList.remove('browser-zoomed-400'); } }; const getViewerUrl = function () { let defaultParams = '', viewerSection = document.querySelector('.js-colors-viewer'), viewerButton = document.querySelector('.viewer-btn'), viewerModel = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-name') : viewerSection.getAttribute('data-model-name'), viewerColor = utils.isLowNetwork() ? viewerButton.getAttribute('data-model-color') : viewerSection.getAttribute('data-model-color'), viewerUrl = '//www.samsung.com/global/galaxy/3d-360/viewer/?'; defaultParams = '&gesture_guide=0'; defaultParams += '&bgcolor=transparent'; defaultParams += '&skin=colorlayer'; defaultParams += '&theme=roundlayer'; defaultParams += '&auto_rotation=0'; defaultParams += '&intro=1'; defaultParams += '&ruler=1'; defaultParams += '&breakpoint_criteria=outer'; defaultParams += '&breakpoint_desktop_width=1024'; defaultParams += '&x=180'; defaultParams += '&intro_pose=3'; defaultParams += '&intro_pose_hold=1'; defaultParams += '&intro_pose_hold_limit=9999999'; defaultParams += '&controls=0'; defaultParams += '&use_zoom=0'; defaultParams += '&use_pan=0'; defaultParams += '&screen_mode=on'; // model_name viewerUrl += 'model_name=' + viewerModel; if (document.documentElement.classList.contains('color_yb') || (utils.getCookie('highContrastMode') != null && utils.getCookie('highContrastMode') == 1)) { viewerUrl += '&highcontrast=1'; } else { viewerUrl += '&highcontrast=0'; } // RTL utils.isRTL() && (viewerUrl += '&rtl=1'); viewerUrl += defaultParams; viewerUrl += '#color=' + (viewerColor ? viewerColor : 'null'); return viewerUrl; }; return { addLoadStatusClass: addLoadStatusClass, setResolution: setResolution, clickSup: clickSup, centeredFocus: centeredFocus, setArBanner: setArBanner, isZoom: isZoom, getViewerUrl: getViewerUrl, }})();flagship.features.setting = (function () { const resize = window.flagship.common.resize, common = window.flagship.features.common, utils = window.flagship.common.utils, agent = navigator.userAgent.toLowerCase(), maxOs = agent.indexOf('mac os') > -1, touchDevice = ('ontouchstart' in window || (window.DocumentTouch && document instanceof window.DocumentTouch)), isGlobal = document.documentElement.classList.contains('global'); let els = {}; const init = function () { common.addLoadStatusClass(); common.setArBanner(); setElements(); bindEvents(); setResize(); if (!maxOs && !touchDevice) { setScrollControl(); } setImageLoader(); setVideoLoader(); setMp4VideoLoader(); setCenteredfocus(); setDisclaimerNumber(); setDisclaimer(); setVideoTheme(); setVideoBlind(); common.isZoom(); resize.add(common.isZoom); }; const setElements = function () { // video els.videoWrap = document.querySelectorAll('.js-video-wrap'); }; const bindEvents = function () { window.addEventListener('load', anchorPosition); window.addEventListener('hashchange', anchorPosition); }; const anchorPosition = function () { if (window.location.hash != '') { let hash = location.hash.split('#')[1], hashSection = document.querySelector('#contents #' + hash), hashTimeout = null; clearTimeout(hashTimeout); hashTimeout = setTimeout(function () { let sectionTop = hashSection.getBoundingClientRect().top, navHeight = utils.getNavHeight(), hashScroll = window.pageYOffset + sectionTop - navHeight; window.scrollTo(0, hashScroll); }, 300); } }; const setResize = function () { resize.init([{ resolution: 1920, resolutionName: 'desktop', eventFunction: '' }, { resolution: 1023, resolutionName: 'tablet', eventFunction: '' }, { resolution: 767, resolutionName: 'mobile', eventFunction: '' }, { resolution: 320, resolutionName: 'mobileS', eventFunction: '' }], 200); resize.add(common.setResolution); }; const setScrollControl = function () { window.scrollController = utils.scrollController(); scrollController.init({ speed: 120, duration: 0.6 }); }; const setImageLoader = function () { window.imageLoader = utils.mediaLoader({ lazyClass: '.js-img-src', responsiveClass: '.js-res-img', preset: isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-src-pc' }, { resolution: 1023, attribute: 'data-src-tb' }, { resolution: 767, attribute: 'data-src-mo' }, { resolution: 360, attribute: 'data-src-mo-s' }], visiblePoint: 2 }); window.bgLoader = utils.mediaLoader({ type: 'bgImage', lazyClass: '.js-bg-img', loadOption: [{ resolution: 1920, attribute: '', bgOpts: '' }], visiblePoint: 2 }); }; const setVideoLoader = function () { window.videoLoader = utils.mediaLoader({ type: 'video', lazyClass: '.js-video-src', responsiveClass: '.js-res-video', preset: isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (!!video.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) { video.videoHandler.wrap.classList.add('is-loaded'); } } }); }; const setMp4VideoLoader = function () { window.mp4VideoLoader = utils.mediaLoader({ type: 'mp4Video', lazyClass: '.js-mp4-video-src', responsiveClass: '.js-res-video', preset: isGlobal ? '' : '?imbypass=true', loadOption: [{ resolution: 1920, attribute: 'data-video-src-pc' }, { resolution: 1023, attribute: 'data-video-src-tb' }, { resolution: 767, attribute: 'data-video-src-mo' }, { resolution: 360, attribute: 'data-video-src-mo-s' }], visiblePoint: 1, endCallback: function (video) { if (!!video.videoHandler && !video.videoHandler.wrap.classList.contains('is-loaded')) { video.videoHandler.wrap.classList.add('is-loaded'); } } }); }; const setCenteredfocus = function () { els.contents = document.querySelector('#contents'); els.allClickables = els.contents.querySelectorAll('a, button, input, select'); for (let i = 0; i < els.allClickables.length; i++) { els.allClickables[i].addEventListener('focusin', common.centeredFocus); } }; const setDisclaimerNumber = function () { const supTag = document.querySelectorAll('.click_sup'), btmDicl = document.querySelectorAll('li.common-bottom-disclaimer__list-item'); let btmDiclArr = []; for (let i = 0; i < btmDicl.length; i++) { let dataSup = btmDicl[i].getAttribute('data-sup'); btmDiclArr.push(dataSup); } for (let j = 0; j < supTag.length; j++) { let dataSupTag = supTag[j].getAttribute('data-sup-tag'); let supChildCount = supTag[j].parentElement.childElementCount; if (btmDiclArr.indexOf(dataSupTag) > -1) { supTag[j].innerText = btmDiclArr.indexOf(dataSupTag) + 1; } else { if (supChildCount == 1) { supTag[j].parentElement.remove(); } else { let supParent = supTag[j].parentElement.childNodes; let supArr = []; for (let supIndex = 0; supIndex < supParent.length; supIndex++) { supArr.push(supParent[supIndex]); } let index = supArr.indexOf(supTag[j]); if (index != 0 && index % 2 == 0) { supParent[index].remove(); supParent[index - 1].remove(); } else { if (index != supArr.length) supParent[index + 1].remove(); supParent[index].remove(); } } } } }; const setDisclaimer = function () { els.supClicker = document.querySelectorAll('a.click_sup'); for (let i = 0; i < els.supClicker.length; i++) { els.supClicker[i].addEventListener('click', common.clickSup); } }; const setVideoTheme = function () { for (let i = 0; i < els.videoWrap.length; i++) { let colorType = els.videoWrap[i].getAttribute('data-theme-type'); if (colorType === 'white') { els.videoWrap[i].classList.add('common-video--white'); } else if (colorType === 'black') { els.videoWrap[i].classList.add('common-video--black'); } } }; const setVideoBlind = function () { for (let i = 0; i < els.videoWrap.length; i++) { let controlBlind = els.videoWrap[i].querySelector('.js-video-control .blind'); controlBlind.innerHTML = (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) ? LOCAL_VARI.play : 'play'; } }; return { init: init }})();flagship.features.setting.init();(function () { window.flagship.features.clickToVideo = (function () { const utils = window.flagship.common.utils; let els = { clickToVideosWrap: [], clickToVideo: [], }; const init = function () { els.clickToVideosWrap = document.querySelectorAll('.js-click-video'); if (els.clickToVideosWrap.length > 0) { setProperty(); bindEvents(); } }; const setProperty = function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { els.clickToVideosWrap[i].video = els.clickToVideosWrap[i].querySelector('video'); els.clickToVideosWrap[i].controller = els.clickToVideosWrap[i].querySelector('.js-video-control'); els.clickToVideosWrap[i].controller.video = els.clickToVideosWrap[i].video; } }; const bindEvents = function () { eventList.setVideo(); eventHandler.click(); }; const eventHandler = { click: function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { els.clickToVideosWrap[i].controller.addEventListener('click', eventList.clickVideoCta); } } }; const eventList = { setVideo: function () { for (let i = 0; i < els.clickToVideosWrap.length; i++) { els.clickToVideo[i] = utils.videoHandler({ wrap: els.clickToVideosWrap[i], video: els.clickToVideosWrap[i].video, controller: els.clickToVideosWrap[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } if (this.wrap.classList.contains('is-started')) { this.wrap.classList.remove('is-started'); } }, playCallback: function () { if (!this.wrap.classList.contains('is-started')) { this.wrap.classList.add('is-started'); } setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }, clickVideoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })();})();(function () { window.flagship.features.headline = (function () { const utils = window.flagship.common.utils; let els = {}; const init = function () { setElements(); bindEvents(); }; const setElements = function() { els.moveText = document.querySelectorAll('.js-move-text'); }; const bindEvents = function () { eventList.setScene(); eventHandler.scroll(); eventList.scroll(); }; const eventHandler = { scroll: function () { window.addEventListener('scroll', eventList.scroll); } }; const eventList = { scroll: function () { for (let i = 0; i < els.moveText.length; i++) { els.moveText[i].sceneObj.trackAnimation(function () { let progressRange = !!this.trackElement.classList.contains('features-high-resolution__img-bottom') ? -60 : -10; let moveRange = !!this.trackElement.classList.contains('features-high-resolution__img-bottom') ? -55 : -5; if (this.progress >= progressRange && this.progress <= 100) { if(this.progress >= moveRange) { els.moveText[i].classList.add('is-moved'); if (this.trackElement.classList.contains('common-description')) this.trackElement.style.transitionDelay = "0.2s"; } if(this.progress <= moveRange) { els.moveText[i].classList.remove('is-moved'); } } }); } }, setScene: function () { for(let i = 0; i < els.moveText.length; i++) { els.moveText[i].sceneObj = SCROLLER({ trackElement: els.moveText[i], useFixed: false, useStrictMode: false }); } } }; return { init: init } })();})();(function () { window.flagship.features.howtoPopup = (function () { const utils = window.flagship.common.utils; resize = window.flagship.common.resize; let els = {}; let currDevice = resize.checkResolution(); prevDevice = null; const init = function () { els.layerPopup = document.querySelector('.js-howto-popup'); if (!!els.layerPopup) { setElements(); setAttribute(); bindEvents(); eventList.setPopup(); } }; const setElements = function () { els.contents = document.querySelector('#contents'); els.openCtas = document.querySelectorAll('.js-howto-popup-opener'); // popup content els.closeCta = document.querySelector('.js-howto-popup-close-cta'); els.ytIframe = els.layerPopup.querySelector('iframe'); els.ytDesc = els.layerPopup.querySelector('.js-howto-popup-youtube-desc'); els.dimmed = els.layerPopup.querySelector('.js-howto-popup-dimmed'); // swiper els.swiperContainer = els.layerPopup.querySelector('.swiper-container'); els.buttons = els.swiperContainer.querySelectorAll('.swiper-slide'); els.arrowWrap = els.swiperContainer.querySelector('.js-howto-popup-arrow-wrap'); els.prevArrow = els.swiperContainer.querySelector('.swiper-button-prev'); els.nextArrow = els.swiperContainer.querySelector('.swiper-button-next'); els.scrollbar = els.swiperContainer.querySelector('.js-howto-popup-scrollbar'); }; const setAttribute = function () { for (let i = 0 ; i < els.buttons.length; i++) { els.buttons[i].openerCta = els.openCtas[i]; } }; const bindEvents = function () { eventHandler.buttonsClick(); resize.add(eventList.resize); }; const eventHandler = { buttonsClick: function () { for (let i = 0 ; i < els.buttons.length; i++) { els.buttons[i].addEventListener('click', function () { eventList.setYoutube(els.buttons[i]); }); } }, }; const eventList = { setPopup: function () { for (let i = 0; i < els.openCtas.length; i++) { els.openCtas[i].index = i; utils.layerPopup({ layerPopup: els.layerPopup, layerPopupClass: '.js-howto-popup', openerEvent: { element: els.openCtas[i], }, closeCtas: [els.closeCta], dimmed: els.dimmed, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.layerPopup.classList.add('is-init'); eventList.itemImageLoader(); swiperEventList.activeCheck(target.openerCta); }, end: function (target) { els.layerPopup.classList.add('is-open'); eventList.setYoutube(target); } }, hide: { start: function () { els.layerPopup.classList.remove('is-open'); }, end: function (target) { if(utils.detector.isIosDevice) target.openerCta.style.display = ''; setTimeout(function () { els.layerPopup.classList.remove('is-init'); }, 300); eventList.clearYoutube(); } } }); } }, setYoutube: function (target) { let opener = target.openerCta, ytSrc = 'htt' + 'ps://www.youtube.com/embed/' + opener.getAttribute('data-youtube-id') + '?wmode=opaque&rel=0&enablejsapi=1&version=3&autoplay=1', ytTitle = opener.getAttribute('data-youtube-title'), ytBlind = opener.querySelector('.blind').innerHTML; els.ytIframe.setAttribute('src', ytSrc); els.ytIframe.setAttribute('title', ytTitle); els.ytDesc.innerHTML = ytBlind; let oldActive = els.swiperContainer.querySelector('.swiper-slide.is-active'); if (!!oldActive) { oldActive.classList.remove('is-active'); oldActive.removeAttribute('title'); } els.buttons[opener.index].classList.add('is-active'); accessibility.setTitle(els.buttons[opener.index]); }, clearYoutube: function () { els.ytIframe.removeAttribute('src'); els.ytDesc.innerHTML = ''; }, resize: function (currRes) { currDevice = currRes; if (prevDevice != currDevice) { if (els.layerPopup.classList.contains('is-open')) { swiperEventList.activeCheck(); } prevDevice = currDevice; } }, itemImageLoader: function () { for (let i = 0; i < els.buttons.length; i++) { if (!els.buttons[i].querySelector('img').classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.buttons[i].querySelector('img')]); } } } }; const swiperEventList = { set: function () { if(els.swiperContainer.swiper == null) { new Swiper(els.swiperContainer, { init: false, slidesPerView: 'auto', observer: true, observeParents: true, observeSlideChildren: true, navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow, }, scrollbar: { el: els.scrollbar, draggable: true, hide: false, } }); els.swiperContainer.swiper.on('init', function(){ var notification = this.el.querySelector('.swiper-notification'); this.el.removeChild(notification); }); els.swiperContainer.swiper.init(); } }, destroy: function () { if(els.swiperContainer.swiper != null) { els.swiperContainer.swiper.scrollbar.dragEl.style = ''; els.swiperContainer.swiper.scrollbar.destroy(true); els.swiperContainer.swiper.navigation.destroy(true); els.swiperContainer.swiper.destroy(true); els.swiperContainer.swiper = null; } }, activeCheck: function (openerCta) { let isSlide = ((currDevice.indexOf('mobile') > -1) && (els.buttons.length >= 3)) || ((currDevice.indexOf('desktop') > -1 || currDevice == 'tablet') && (els.buttons.length >= 5)); if (isSlide) { els.scrollbar.style.display = 'block'; els.arrowWrap.style.display = 'block'; swiperEventList.set(); if (openerCta.index == 2) { els.swiperContainer.swiper.slideTo(1, 0); } else if (openerCta.index == 3) { els.swiperContainer.swiper.slideTo(2, 0); } else { els.swiperContainer.swiper.slideTo(0, 0); } } else { els.scrollbar.style.display = 'none'; els.arrowWrap.style.display = 'none'; swiperEventList.destroy(); } } }; const accessibility = { setTitle: function(target){ if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { target.setAttribute('title', LOCAL_VARI.selected); } else { target.setAttribute('title', 'Selected'); } }, }; return { init: init, } })();})();(function () { window.flagship = window.flagship || {}; window.flagship.features = window.flagship.features || {}; window.flagship.features.oneColumnCarousel = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let prevDevice; let currDevice = resize.checkResolution(); let dimmedClass = 'is-dimmed'; const isRtl = document.documentElement.classList.contains('rtl'); const init = function () { els.section = document.querySelectorAll('.js-one-column-carousel'); if (!!els.section) { setElements(); setProperty(); bindEvents(); } }; const setElements = function () { for (let i = 0; i < els.section.length; i++) { els.section[i].swiperContainer = els.section[i]; els.section[i].swiperSlides = els.section[i].swiperContainer.querySelectorAll('.swiper-slide'); els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev'); els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next'); els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar'); } }; const setProperty = function() { for (let i = 0; i < els.section.length; i++) { let isSlideLength = els.section[i].swiperSlides.length; for (let j = 0; j < isSlideLength; j++) { els.section[i].swiperSlides[j].video = els.section[i].swiperSlides[j].querySelector('.common-video__video'); } } } const bindEvents = function () { eventList.load(); resize.add(eventList.resize); }; const eventList = { load: function() { swiperEvents.set(); for (let i = 0; i < els.section.length; i++) { els.section[i].swiper.init(); if (els.section[i].swiperSlides.length >= 2) { els.section[i].swiper.init(); } } }, resize: function() { currDevice = resize.checkResolution(); if (prevDevice != currDevice) { eventList.responsive(); prevDevice = currDevice; }; }, responsive: function() { for (let i = 0; i < els.section.length; i++) { eventList.resetDimmedSlide(els.section[i].swiper); els.section[i].swiper.slideTo(0, false); if (eventList.getCarouselSizeInfo(els.section[i].swiper).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(els.section[i].swiper); } }, setMedia: function(swiper, index) { let isIndex = index + 1 > swiper.slides.length -1 ? swiper.slides.length -1 : index + 1; let videoLength = swiper.el.querySelectorAll('video').length - 1; let imageLength = swiper.el.querySelectorAll('img').length - 1; let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1; let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1; let nextVideo = swiper.slides[isIndex].querySelector('video'); let nextImage = swiper.slides[isIndex].querySelector('img'); if (videoloadComplateLength != videoLength) { if (!!nextVideo) { videoLoader.setResponsiveMedia([nextVideo]); } } if (imageloadComplateLength != imageLength) { if (!!nextImage) { imageLoader.setResponsiveMedia([nextImage]); } } }, resetVideo: function(swiper) { for (let i = 0; i < swiper.slides.length; i++) { let isVideo = swiper.slides[i].video; if (!!isVideo && !isVideo.paused) { isVideo.pause(); isVideo.currentTime = 0; }; }; }, getCarouselSizeInfo: function(swiper) { let slideLength = swiper.slides.length; let slideWidth = swiper.slides[0].clientWidth; let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]); let slideSize = slideWidth + slideMargin; let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth; let viewWidth = swiper.wrapperEl.clientWidth; let viewLength = parseInt((viewWidth + slideMargin)/slideSize); let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth)); let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4])); return { slideWidth: slideWidth, slideMargin: slideMargin, slideSize: slideSize, maxMoveSize: maxMoveSize, viewWidth: viewWidth, viewLength: viewLength, lastBeforeSize: lastBeforeSize, isMoveSize: isMoveSize } }, initDimmedSlides: function(swiper) { for (let i = 0; i < swiper.slides.length; i++) { if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) { swiper.slides[i].classList.add(dimmedClass); } } }, setDimmedSlide: function(swiper) { if (currDevice != 'mobile') { for (let i = 0; i < swiper.slides.length; i++) { let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i; if (dimmedSlide) { swiper.slides[i].classList.add(dimmedClass); } else { swiper.slides[i].classList.remove(dimmedClass); } } } }, resetDimmedSlide: function(swiper) { for (let i = 0; i < swiper.slides.length; i++) { swiper.slides[i].classList.remove(dimmedClass); } }, } const swiperEvents = { set: function () { for (let i = 0; i < els.section.length; i++) { if (els.section[i].swiper == null) { new Swiper(els.section[i].swiperContainer, { init: false, slidesPerView: 'auto', navigation: { nextEl: els.section[i].nextArrow, prevEl: els.section[i].prevArrow, }, scrollbar: { el: els.section[i].scrollbar, draggable: true }, }); els.section[i].swiper.on('init', swiperEvents.init); els.section[i].swiper.on('slideChange', swiperEvents.slideChange); els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd); } } }, init: function () { let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next'); let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev'); isNextArrow.removeAttribute('aria-label'); isNextArrow.removeAttribute('role'); isPrevArrow.removeAttribute('aria-label'); isPrevArrow.removeAttribute('role'); accessibility.slide(this); if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.initDimmedSlides(this); }, slideChange: function () { accessibility.slide(this); eventList.resetVideo(this); if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this); if (this.realIndex > 0) eventList.setMedia(this, this.realIndex); }, transitionEnd: function() { if (this.slides.length < 3 && currDevice == 'mobile') return; setTimeout(() => { let carouselInfo = eventList.getCarouselSizeInfo(this); let lastIndex = this.slides.length -1; let lastSlide = this.slides[lastIndex]; let lastBeforeSlide = this.slides[lastIndex - 1]; if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize || carouselInfo.maxMoveSize == carouselInfo.isMoveSize) { eventList.resetVideo(this); lastSlide.classList.add('is-last-slide'); lastBeforeSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-dimmed'); utils.offAccessibility(this.slides[lastIndex]); utils.onAccessibility(this.slides[lastIndex - 1]); } else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) { eventList.resetVideo(this); lastSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-last-slide'); lastBeforeSlide.classList.remove('is-dimmed'); utils.onAccessibility(this.slides[lastIndex]); utils.offAccessibility(this.slides[lastIndex - 1]); } }, 0); }, destroy: function (swiper) { if (swiper != null) { swiper.navigation.destroy(true); swiper.destroy(true); swiper = null; } }, }; const accessibility = { slide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if (i != swiper.activeIndex) { utils.onAccessibility(swiper.slides[i]); } else { utils.offAccessibility(swiper.slides[i]); } } } }; return { init: init, } })();})();(function () { window.flagship.features.scrollVideo = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = { scrollVideoWraps: [], scrollVideo: [], scene: [], }, currDevice = resize.checkResolution(); const init = function () { els.scrollVideoWraps = document.querySelectorAll('div:not(.js-interactive-intro-video)>.js-scroll-video'); if (els.scrollVideoWraps.length > 0) { setProperty(); eventList.setVideo(); eventList.setScene(); bindEvents(); } }; const setProperty = function () { for (let i = 0; i < els.scrollVideoWraps.length; i++) { els.scrollVideoWraps[i].video = els.scrollVideoWraps[i].querySelector('video'); els.scrollVideoWraps[i].controller = els.scrollVideoWraps[i].querySelector('.js-video-control'); els.scrollVideoWraps[i].controller.video = els.scrollVideoWraps[i].video; els.scrollVideoWraps[i].startPoint = !!els.scrollVideoWraps[i].getAttribute('data-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-start-point')) : undefined; els.scrollVideoWraps[i].reversePoint = !!els.scrollVideoWraps[i].getAttribute('data-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-reverse-point')) : undefined; els.scrollVideoWraps[i].moStartPoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-start-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-start-point')) : undefined; els.scrollVideoWraps[i].moReversePoint = !!els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point') ? parseInt(els.scrollVideoWraps[i].getAttribute('data-mo-reverse-point')) : undefined; } }; const bindEvents = function () { eventHandler.scroll(); eventList.scroll(); eventHandler.click(); resize.add(eventList.resize); }; const eventHandler = { scroll: function () { window.addEventListener('scroll', eventList.scroll); }, click: function () { for (let i = 0; i < els.scrollVideoWraps.length; i++) { els.scrollVideoWraps[i].controller.addEventListener('click', eventList.clickVideoCta); } } }; const eventList = { setVideo: function () { for (let i = 0; i < els.scrollVideoWraps.length; i++) { els.scrollVideo[i] = utils.videoHandler({ playType: 'scrollPlay', startPoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moStartPoint : els.scrollVideoWraps[i].startPoint, reversePoint: (currDevice.indexOf('mobile') > -1) ? els.scrollVideoWraps[i].moReversePoint : els.scrollVideoWraps[i].reversePoint, wrap: els.scrollVideoWraps[i], video: els.scrollVideoWraps[i].video, controller: els.scrollVideoWraps[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } if (this.wrap.classList.contains('is-started')) { this.wrap.classList.remove('is-started'); } if (!!this.video.videoWrap && this.video.videoWrap.classList.contains('js-interactive-intro-video')) { this.video.tooltip.classList.remove('is-visible'); } }, playCallback: function () { if (!this.wrap.classList.contains('is-started')) { this.wrap.classList.add('is-started'); } setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } }, setScene: function () { for (let i = 0; i < els.scrollVideoWraps.length; i++) { els.scene[i] = SCROLLER({ trackElement: els.scrollVideoWraps[i].video, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); } }, scroll: function () { for (let i = 0; i < els.scrollVideoWraps.length; i++) { els.scene[i].trackAnimation(function () { els.scrollVideo[i].scrollActive(this.progress); }); } }, resize: function (currRes) { currDevice = currRes; }, clickVideoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })();})();;(function () { window.flagship.features.threeColumnCarousel = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, swiperObj, prevDevice = null, currDevice = resize.checkResolution(); dimmedClass = 'is-dimmed'; const isRtl = document.documentElement.classList.contains('rtl'); const init = function () { els.section = document.querySelectorAll('.js-three-column-carousel'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { for (let i = 0; i < els.section.length; i++) { els.section[i].swiperContainer = els.section[i]; els.section[i].swiperSlide = els.section[i].querySelectorAll('.swiper-slide'); els.section[i].nextArrow = els.section[i].parentElement.querySelector('.swiper-button-next'); els.section[i].prevArrow = els.section[i].parentElement.querySelector('.swiper-button-prev'); els.section[i].scrollbar = els.section[i].parentElement.querySelector('.swiper-scrollbar'); }; }; const bindEvents = function () { eventList.load(); resize.add(eventList.resize); }; const eventHandler = { swiper: function() { for (let i = 0; i < els.section.length; i++) { els.section[i].swiper.on('init', swiperEvents.init); els.section[i].swiper.on('slideChange', swiperEvents.slideChange); els.section[i].swiper.on('transitionEnd', swiperEvents.transitionEnd); }; } }; const eventList = { load: function() { for (let i = 0; i < els.section.length; i++) { let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && els.section[i].swiperSlide.length > 3; let mobileStatus = (currDevice == 'mobile' || currDevice == 'mobileS') && els.section[i].swiperSlide.length > 1; if (desktopStatus || mobileStatus) { swiperEvents.set(); eventHandler.swiper(); els.section[i].swiper.init(); } } }, resize: function() { currDevice = resize.checkResolution(); if (prevDevice != currDevice) { eventList.responsive(); prevDevice = currDevice; }; }, responsive: function() { for (let i = 0; i < els.section.length; i++) { let isSection = els.section[i]; let desktopStatus = (currDevice == 'desktop' || currDevice == 'tablet') && isSection.swiperSlide.length > 3; let mobileStatus = currDevice == 'mobile' && isSection.swiperSlide.length > 1; eventList.resetDimmedSlide(isSection.swiper); accessibility.reset(isSection.swiper); if (desktopStatus || mobileStatus) { if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper); swiperEvents.set(); eventHandler.swiper(); isSection.swiper.init(); if (desktopStatus) eventList.initDimmedSlides(isSection.swiper); if (mobileStatus) accessibility.slide(isSection.swiper); } else if ((!desktopStatus || !mobileStatus) && isSection.swiper != undefined) { if (isSection.swiper.initialized) swiperEvents.destroy(isSection.swiper); } }; }, getCarouselSizeInfo: function(swiperObj) { let slideLength = swiperObj.slides.length; let slideWidth = swiperObj.slides[0].clientWidth; let slideMargin = parseInt(window.getComputedStyle(swiperObj.slides[0]).margin.split(' ')[isRtl ? 3 : 1]); let slideSize = slideWidth + slideMargin; let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiperObj.wrapperEl.clientWidth; let viewWidth = swiperObj.wrapperEl.clientWidth; let viewLength = Math.round((viewWidth + slideMargin)/slideSize); let lastBeforeSize = slideLength == 3 ? 0 : (slideWidth + slideMargin) * ((slideLength - viewLength) - 1); let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiperObj.wrapperEl).transform.split(',')[4])); return { slideLength: slideLength, slideWidth: slideWidth, slideMargin: slideMargin, slideSize: slideSize, maxMoveSize: maxMoveSize, viewWidth: viewWidth, viewLength: viewLength, lastBeforeSize: lastBeforeSize, isMoveSize: isMoveSize } }, initDimmedSlides: function(swiperObj) { for (let i = 0; i < swiperObj.slides.length; i++) { let isSlide = swiperObj.slides[i]; if ((swiperObj.activeIndex + eventList.getCarouselSizeInfo(swiperObj).viewLength) <= i) { isSlide.classList.add(dimmedClass); utils.onAccessibility(isSlide) } } }, setDimmedSlide: function(swiperObj) { if (currDevice != 'mobile') { for (let i = 0; i < swiperObj.slides.length; i++) { let isSlide = swiperObj.slides[i]; let dimmedSlide = (swiperObj.activeIndex) > i || (swiperObj.activeIndex + (eventList.getCarouselSizeInfo(swiperObj).viewLength - 1)) < i; if (dimmedSlide) { isSlide.classList.add(dimmedClass); utils.onAccessibility(isSlide) } else { isSlide.classList.remove(dimmedClass); utils.offAccessibility(isSlide) } } } }, resetDimmedSlide: function(swiperObj) { if (!!!swiperObj) return; for (let i = 0; i < swiperObj.slides.length; i++) { swiperObj.slides[i].classList.remove(dimmedClass); } }, tagging: function () { const values = { 'data-omni-type': 'microsite_pcontentinter', 'data-omni': 'galaxy-z-fold6:highlights:indicator:sldr-dots:', 'ga-ca': 'indication', 'ga-ac': 'carousel', 'ga-la': 'galaxy-z-fold6:highlights:indicator:sldr-dots:', }; } }; const swiperEvents = { set: function () { for (let i = 0; i < els.section.length; i++) { if (els.section[i].swiper == null) { new Swiper(els.section[i].swiperContainer, { init: false, slidesPerView: 'auto', speed: 200, navigation: { nextEl: els.section[i].nextArrow, prevEl: els.section[i].prevArrow, }, scrollbar: { el: els.section[i].scrollbar, draggable: true } }); } } }, init: function () { let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next'); let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev'); isNextArrow.removeAttribute('aria-label'); isNextArrow.removeAttribute('role'); isPrevArrow.removeAttribute('aria-label'); isPrevArrow.removeAttribute('role'); eventList.tagging(); if (currDevice != 'mobile') { eventList.initDimmedSlides(this); } else { accessibility.slide(this); }; }, transitionEnd: function() { let carouselInfo = eventList.getCarouselSizeInfo(this); if (currDevice == 'mobile' || currDevice == 'tablet') return; if (carouselInfo.viewLength < 3) return; setTimeout(() => { let lastIndex = this.slides.length -1 ; let lastSlide = this.slides[lastIndex]; let lsatDimmedLength = (carouselInfo.slideLength - 1) - carouselInfo.viewLength; let lastBeforeSlide = this.slides[lsatDimmedLength]; if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize && carouselInfo.maxMoveSize >= carouselInfo.isMoveSize) { lastSlide.classList.add('is-last-slide'); lastBeforeSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-dimmed'); } else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) { lastSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-last-slide'); lastBeforeSlide.classList.remove('is-dimmed'); } }, 0); }, slideChange: function () { eventList.setDimmedSlide(this); if (currDevice == 'mobile') accessibility.slide(this); }, destroy: function (swiperObj) { swiperObj.navigation.destroy(true); swiperObj.destroy(true); swiperObj = null; }, }; const accessibility = { slide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if (i != swiper.activeIndex) { utils.onAccessibility(swiper.slides[i]); } else { utils.offAccessibility(swiper.slides[i]); } } }, reset: function(swiper) { for (let i = 0; i < swiper.slides.length; i++) { utils.offAccessibility(swiper.slides[i]); } } }; return { init: init } })();})();(function () { window.flagship.features.aiOverview = (function () { const utils = window.flagship.common.utils, resize = flagship.common.resize; let els = {}; let currDevice = resize.checkResolution(); let isAos = utils.detector.isTouchDevice && document.documentElement.classList.contains('android'); let isLoaded = false; const init = function () { els.section = document.querySelector('.features-ai-overview'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { // fixed els.fixedTrack = els.section.querySelector('.js-fixed-track'); els.fixedInner = els.section.querySelector('.js-fixed-inner'); // title els.overviewTextWrap = els.section.querySelector('.js-overview-text-wrap'); els.overviewTopText = els.section.querySelector('.js-overview-top-text'); els.overviewMiddleTextPc = els.section.querySelector('.js-overview-middle-text-pc'); els.overviewMiddleTextMo = els.section.querySelector('.js-overview-middle-text-mo'); els.overviewBottomTextPc = els.section.querySelector('.js-overview-bottom-text-pc'); els.overviewBottomTextMo = els.section.querySelector('.js-overview-bottom-text-mo'); // introVideo els.introVideoWrap = els.section.querySelector('.js-intro-video .js-video-wrap'); els.introVideoWrap.video = els.introVideoWrap.querySelector('video'); // introLogoVideo els.introLogoWrap = els.section.querySelector('.js-intro-logo-wrap'); els.introLogoVideoWrap = els.section.querySelector('.js-intro-logo-video-wrap'); els.introLogoVideoWrap.video = els.introLogoVideoWrap.querySelector('video'); els.introLogoVideoWrap.coverImg = els.introLogoVideoWrap.querySelector('.js-intro-logo-cover-image'); // logoVideo els.logoWrap = els.section.querySelector('.js-logo-wrap'); els.logoVideoWrap = els.section.querySelector('.js-logo-video-wrap'); els.logoVideoWrap.video = els.logoVideoWrap.querySelector('video'); els.logoVideoWrap.coverImg = els.logoVideoWrap.querySelector('.js-logo-cover-image'); // dimmed els.dimmed = els.section.querySelector('.js-dimmed'); }; const bindEvents = function () { eventHandler.load(); resize.add(eventHandler.resize); }; const eventHandler = { load: function () { eventList.checkBrokenFixed(); if (document.documentElement.classList.contains('is-ai-broken-fixed') || document.documentElement.classList.contains('low_network')) { window.addEventListener('DOMContentLoaded', eventList.setStaticContents, {once: true}); } else { if (isAos) { window.addEventListener('DOMContentLoaded', function () { eventList.fixedScroller.set(); eventList.sequencePlayer.set(); }, {once: true}); window.addEventListener('scroll', eventList.setScroll); eventList.setScroll(); } else { window.addEventListener('DOMContentLoaded', eventList.setVideoHandler, {once: true}); window.addEventListener('scroll', eventList.setScroll); els.introVideoWrap.video.addEventListener('canplaythrough',eventList.fixedScroller.set, {once: true}); eventList.setScroll(); } } window.addEventListener('orientationchange', eventHandler.orientationchange); }, resize: function (currRes) { currDevice = currRes; eventList.setContents(); }, orientationchange: function () { setTimeout(function () { eventList.setContents(); }, 150); } }; const eventList = { mediaLoader: function () { let scrollTop = window.pageYOffset, kv = document.querySelector('.features-kv'), kvTop = scrollTop + kv.getBoundingClientRect().top; if ((scrollTop > kvTop) && !isLoaded) { if (!els.introLogoVideoWrap.coverImg.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.introLogoVideoWrap.coverImg]); } if (!els.introLogoVideoWrap.video.classList.contains('is-mp4video-load-complete')) { mp4VideoLoader.setResponsiveMedia([els.introLogoVideoWrap.video]); } if (!els.logoVideoWrap.coverImg.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.logoVideoWrap.coverImg]); } if (!els.logoVideoWrap.video.classList.contains('is-mp4video-load-complete')) { mp4VideoLoader.setResponsiveMedia([els.logoVideoWrap.video]); } isLoaded = true; } }, setVideoHandler: function () { utils.videoHandler({ wrap: els.introVideoWrap, video: els.introVideoWrap.video }); utils.videoHandler({ wrap: els.introLogoVideoWrap, video: els.introLogoVideoWrap.video }); utils.videoHandler({ wrap: els.logoVideoWrap, video: els.logoVideoWrap.video }); }, fixedScroller: { set: function () { eventList.fixedScroller.destroy(); if (els.fixedTrack.scene == null) { els.fixedTrack.scene = SCROLLER({ trackElement: els.fixedTrack, fixedElement: els.fixedInner, useFixed: true, useFixedStyle: false, trackHeight: 3.5, resize: (utils.detector.isTouchDevice) ? false : true }); } }, destroy: function () { if (els.fixedTrack.scene != null) { els.fixedTrack.scene.destroy(true, true); els.fixedTrack.scene = null; els.fixedTrack.style = ''; } }, play: function () { if (els.fixedTrack.scene != null) { els.fixedTrack.scene.trackAnimation(eventList.fixedScrollMotion); } }, }, sequencePlayer: { set: function () { let imageName = null; if (currDevice.indexOf('desktop') > -1) { imageName = 'galaxy-z-flip6-features-ai-overview-intro-'; } else if (currDevice.indexOf('mobile') > -1) { imageName = 'galaxy-z-flip6-features-ai-overview-intro-mo-'; } else { imageName = 'galaxy-z-flip6-features-ai-overview-intro-tb-'; } els.fixedTrack.seqSence = SEQUENCEPLAYER({ targetElement: els.introVideoWrap, startNum: 0, endNum: 47, path: typeof SEQUENCE_IMG_PATH == 'undefined' ? './images/seq/' : SEQUENCE_IMG_PATH, name: imageName, extension: 'jpg', addType: 'append' }); }, destroy: function () { if (els.fixedTrack.seqSence != null) { els.fixedInner.removeChild(els.fixedInner.querySelector('canvas')); els.fixedTrack.seqSence = null; } }, play: function () { if (els.fixedTrack.scene != null) { els.fixedTrack.scene.trackAnimation(eventList.fixedScrollMotion); } } }, fixedScrollMotion: function () { els.fixedTrack.scene.trackAnimation(function () { let progress = this.progress; let isMobile = currDevice.indexOf('mobile') > -1; let isSeq = (els.fixedTrack.seqSence != null); if (isSeq) { let motionValue = utils.calRange({ targetValue: 47, progress: progress, startPoint: 0, endPoint: 80 }); els.fixedTrack.seqSence.play({index: parseInt(motionValue)}); } else { if (els.introVideoWrap.video.readyState >= 4) { let scrollTimeValue = utils.calRange({ targetValue: els.introVideoWrap.video.duration, progress: progress, endPoint: 45 }); els.introVideoWrap.video.currentTime = scrollTimeValue; } } let introVideoValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: 25, endPoint: isSeq ? 55 : 35 }); TweenMax.to(els.introVideoWrap, 0.1, { opacity: 1 - introVideoValue }); let introLogoShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 53 : 33, endPoint: isSeq ? 60 : 40 }), introLogoHideValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 60 : 40, endPoint: isSeq ? 67 : 47 }), introLogoScaleValue = utils.calRange({ targetValue: 0.5, progress: progress, startPoint: isSeq ? 60 : 40, endPoint: isSeq ? 67 : 47 }), textWrapShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 68 : 48, endPoint: isSeq ? 75 : 55 }), topMiddleTextShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 68 : 48, endPoint: isSeq ? 75 : 55 }), logoShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 70 : 50, endPoint: isSeq ? 76 : 56 }), bottomTextShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: isSeq ? 75 : 55, endPoint: isSeq ? 80 : 60 }), bottomTextTopValue = utils.calRange({ targetValue: 50, progress: progress, startPoint: isSeq ? 76 : 56, endPoint: isSeq ? 84 : 64 }); TweenMax.to(els.introLogoWrap, 0.1, { opacity: introLogoShowValue }); // introLogoVideo if ((isSeq && (progress > 55)) || (!isSeq && (progress > 35))) { if (els.introLogoVideoWrap.video.paused) { if (!els.introLogoWrap.classList.contains('is-visible')) { els.introLogoWrap.classList.add('is-visible'); } els.introLogoVideoWrap.video.play(); } } else { if (!els.introLogoVideoWrap.video.paused) { if (els.introLogoWrap.classList.contains('is-visible')) { els.introLogoWrap.classList.remove('is-visible'); } els.introLogoVideoWrap.video.pause(); els.introLogoVideoWrap.video.currentTime = 0; } } if ((isSeq && (progress > 60)) || (!isSeq && (progress > 40))) { TweenMax.to(els.introLogoWrap, 0.1, { opacity: 1 - introLogoHideValue, scale: 1 - introLogoScaleValue, ease: 'cubic-bezier(0, 0.25, 0, 1.06)' }); } // text TweenMax.to(els.overviewTextWrap, 0.1, { opacity: textWrapShowValue }); TweenMax.to(els.overviewTopText, 0.1, { opacity: topMiddleTextShowValue }); if (isMobile) { TweenMax.to(els.overviewMiddleTextMo, 0.1, { opacity: topMiddleTextShowValue }); } else { TweenMax.to(els.overviewMiddleTextPc, 0.1, { opacity: topMiddleTextShowValue }); } TweenMax.to(els.logoWrap, 0.1, { opacity: logoShowValue }); if ((isSeq && (progress > 80)) || (!isSeq && (progress > 60))) { if (els.logoVideoWrap.video.paused) { if (!els.logoWrap.classList.contains('is-visible')) { els.logoWrap.classList.add('is-visible'); } els.logoVideoWrap.video.play(); } } else { if (!els.logoVideoWrap.video.paused) { if (els.logoWrap.classList.contains('is-visible')) { els.logoWrap.classList.remove('is-visible'); } els.logoVideoWrap.video.pause(); els.logoVideoWrap.video.currentTime = 0; } } // dimmed if ((isSeq && (progress > 80)) || (!isSeq && (progress > 60))) { if (!els.dimmed.classList.contains('is-active')) { els.dimmed.classList.add('is-active') } } else { if (els.dimmed.classList.contains('is-active')) { els.dimmed.classList.remove('is-active') } } if (isMobile) { TweenMax.to(els.overviewBottomTextMo, 0.3, { opacity: bottomTextShowValue, y: 50 - bottomTextTopValue + '%', ease: 'cubic-bezier(0, 0.25, 0, 1.06)' }); } else { TweenMax.to(els.overviewBottomTextPc, 0.3, { opacity: bottomTextShowValue, y: 50 - bottomTextTopValue + '%', ease: 'cubic-bezier(0, 0.25, 0, 1.06)' }); } }); }, checkBrokenFixed: function () { let winWidth = window.innerWidth, winHeight = window.innerHeight; document.documentElement.classList.remove('is-ai-broken-fixed'); if (winWidth > 1440 && winHeight <= 720) { document.documentElement.classList.add('is-ai-broken-fixed'); } else if (winWidth <= 1440 && (winHeight / winWidth) < 0.5277) { document.documentElement.classList.add('is-ai-broken-fixed'); } else { document.documentElement.classList.remove('is-ai-broken-fixed'); } }, setStaticContents: function () { els.section.classList.add('none-fixed'); }, setFixedContents: function () { if (els.section.classList.contains('none-fixed')) { els.section.classList.remove('none-fixed'); } if (isAos) { eventList.fixedScroller.set(); eventList.sequencePlayer.set(); window.addEventListener('scroll', eventList.setScroll); } else { if (!els.introVideoWrap.video.videoHandler) { eventList.setVideoHandler(); } if (els.introVideoWrap.video.readyState < 4) { els.introVideoWrap.video.load(); } window.addEventListener('scroll', eventList.setScroll); els.introVideoWrap.video.addEventListener('canplaythrough', function () { eventList.fixedScroller.set(); }, {once: true}); } }, setContents: function () { eventList.checkBrokenFixed(); if (document.documentElement.classList.contains('is-ai-broken-fixed') || document.documentElement.classList.contains('low_network')) { eventList.fixedScroller.destroy(); window.removeEventListener('scroll', eventList.setScroll); if (isAos) { eventList.sequencePlayer.destroy(); } eventList.setStaticContents(); } else { eventList.setFixedContents(); } }, setScroll: function () { eventList.mediaLoader(); if (isAos) { eventList.sequencePlayer.play(); } else { eventList.fixedScroller.play(); } }, }; return { init: init } })();})();;(function () { window.flagship.features.battery = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, startNum = 3700, endNum = 4000, counter = { num: startNum }, animateStatus = true, tweenObj, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.features-battery'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.capacity = els.section.querySelector('.js-battery-capacity'); els.value = els.capacity.querySelector('.js-battery-value'); }; const bindEvents = function () { eventHandler.load(); eventList.scroll(); eventHandler.scroll(); }; const eventHandler = { load: function() { eventList.setScene(); }, scroll: function() { window.addEventListener('scroll', eventList.scroll); } } const eventList = { setScene: function() { SCROLLER({ trackElement: els.capacity, useFixed: false }); }, scroll: function() { els.capacity.scroller.trackAnimation(function(){ let countActive = this.progress > 1 && animateStatus && !!!tweenObj; let countReset = this.progress <= 0 && this.wheelDirection == 'up' && !!tweenObj; if (countReset) { tweenObj.kill(); counter.num = startNum; tweenObj = null; els.capacity.classList.remove('is-active'); } if (countActive) { animateStatus = false; els.capacity.classList.add('is-active'); tweenObj = TweenMax.to(counter, 2, {num: endNum, onUpdate: function() { els.value.textContent = Math.floor(counter.num); }, onComplate: function() { animateStatus = true; }}); } }); } }; return { init: init } })();})();;(function () { window.flagship.features.cameraSpec = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.features-camera-spec'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.listInner = els.section.querySelectorAll('.js-camera-spec-inner'); }; const bindEvents = function () { resize.add(eventList.resize); eventList.load(); eventList.showCollout(); eventHandler.scroll(); }; const eventHandler = { scroll: function() { window.addEventListener('scroll', eventList.showCollout); } } const eventList = { load: function() { eventList.setSecene(); }, resize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { prevDevice = currDevice; } }, setSecene: function () { for (let i = 0; i < els.listInner.length; i++) { SCROLLER({ trackElement: els.listInner[i], useFixed: false }); } }, showCollout: function() { for (let i = 0; i < els.listInner.length; i++) { els.listInner[i].scroller.trackAnimation(function() { if (this.progress > 0) { this.trackElement.classList.add('is-active'); } if (i == 0) { if (this.progress <= 0) { for (let j = 0; j < els.listInner.length; j++) { els.listInner[j].classList.remove('is-active'); } } } }); } } }; return { init: init } })();})();(function () { window.flagship.features.colorchip = function (colorchipWrap) { const utils = window.flagship.common.utils, common = window.flagship.features.common, resize = window.flagship.common.resize; let els = {}, activeClass = 'is-active', currentDevice = resize.checkResolution(), prevDevice = null, currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7; const init = function () { els.section = document.querySelector('.js-colors'); els.popup = document.querySelector('.js-viewer'); if (colorchipWrap.type == 'popup') { colorchipWrap.contentWrap = els.popup; } else { colorchipWrap.contentWrap = els.section; } setElements(); setProperty(); bindEvents(); }; const setElements = function () { // panel els.panelWrap = els.section.querySelector('.js-panel-wrap'); els.panelItems = els.panelWrap.querySelectorAll('.js-panel-item'); // colorchip els.swiperContainer = colorchipWrap.querySelector('.js-colorchip-container'); els.colorchipButtons = colorchipWrap.querySelectorAll('.js-colorchip-button'); els.swiperArrowWrap = colorchipWrap.querySelector('.js-arrow-wrap'); els.swiperNextArrow = colorchipWrap.querySelector('.js-colorchip-next'); els.swiperPrevArrow = colorchipWrap.querySelector('.js-colorchip-prev'); els.colorchipNames = colorchipWrap.querySelectorAll('.js-colorchip-name'); // 360 Popup Btn els.viewerBtn = els.section.querySelector('.viewer-btn'); // viewer els.viewerSection = els.section.querySelector('.js-colors-viewer'); els.viewerIframe = colorchipWrap.contentWrap.querySelector('iframe'); // exclusive badge els.exclusive = colorchipWrap.contentWrap.querySelector('.js-exclusive-badge'); }; const setProperty = function () { for (let i = 0; i < els.colorchipButtons.length; i++) { els.colorchipButtons[i].index = i; } }; const bindEvents = function () { eventList.checkColorchipSwiper(); if (colorchipWrap.type != 'popup') eventList.setColors(0); eventHandler.click(); eventHandler.keydown(); resize.add(eventList.resize); eventHandler.scroll(); }; const eventHandler = { click: function () { for (let i = 0; i < els.colorchipButtons.length; i++) { els.colorchipButtons[i].addEventListener('click', eventList.clickColorchip); } els.viewerBtn.addEventListener('click', function () { let activeIndex = this.getAttribute('data-target-index'); eventList.setColorchip(activeIndex); eventList.setColorName(activeIndex); eventList.setExclusive(activeIndex); }); els.swiperNextArrow.addEventListener('click', accessibility.clickArrow); els.swiperPrevArrow.addEventListener('click', accessibility.clickArrow); }, keydown: function () { els.swiperNextArrow.addEventListener('keydown', accessibility.clickArrow); els.swiperPrevArrow.addEventListener('keydown', accessibility.clickArrow); }, scroll: function () { window.addEventListener('scroll', eventList.scroll); } }; const eventList = { scroll: function () { let winOffsetBottom = window.pageYOffset + window.innerHeight, kv = document.querySelector('.features-kv'), kvHeight = kv.getBoundingClientRect().height + utils.getNavHeight(); if (winOffsetBottom >= kvHeight) { // bg load colorchipWrap.bgImgs = colorchipWrap.querySelectorAll('.js-bg-img'); if(!!colorchipWrap.bgImgs) bgLoader.setResponsiveMedia(colorchipWrap.bgImgs); eventList.setViewer(); window.removeEventListener('scroll', eventList.scroll); } }, setViewer: function () { if (!utils.isLowNetwork()) { setTimeout(function () { els.viewerIframe.style.position = 'fixed'; els.viewerIframe.style.top = 0; els.viewerIframe.style.opacity = 0; setTimeout(function () { els.viewerIframe.style.position = ''; els.viewerIframe.style.top = ''; els.viewerIframe.style.opacity = ''; }, 300); }, 1000); // set eventList.setViewerUrl(els.colorchipButtons[0].getAttribute('data-colors')); } }, checkColorchipSwiper: function () { let colorchipSwiperLength = currentDevice.indexOf('mobile') > -1 ? 6 : 8; if (els.colorchipButtons.length >= colorchipSwiperLength) { if (els.swiperArrowWrap.style.display == 'none') { els.swiperArrowWrap.style.display = ''; } swiperEvents.set(); } else { if (els.swiperArrowWrap.style.display != 'none') { els.swiperArrowWrap.style.display = 'none'; } if (els.colorchipSwiper != null) { swiperEvents.destroy(); } } }, setColors: function (activeIndex) { eventList.setPopupBtn(els.colorchipButtons[activeIndex]); eventList.setColorchip(activeIndex); eventList.setPanel(activeIndex); eventList.setColorName(activeIndex); eventList.setExclusive(activeIndex); }, resize: function (currRes) { currentDevice = currRes; if (currentDevice !== prevDevice) { eventList.checkColorchipSwiper(); currentSlidesPerView = currentDevice.indexOf('mobile') > -1 ? 5 : 7; prevDevice = currentDevice; } }, clickColorchip: function () { let targetColor = this; eventList.setColors(targetColor.index); eventList.setViewerUrl(targetColor.getAttribute('data-colors')); }, setColorchip: function (activeIndex) { let targetcolorchipButton = els.colorchipButtons[activeIndex]; for (let i = 0; i < els.colorchipButtons.length; i++) { els.colorchipButtons[i].classList.remove(activeClass); if (!!colorchipWrap.isStatic) { els.colorchipButtons[i].setAttribute('aria-selected', false); } else { els.colorchipButtons[i].removeAttribute('title'); } } if (!targetcolorchipButton.classList.contains(activeClass)) { targetcolorchipButton.classList.add(activeClass); if (!!colorchipWrap.isStatic) { targetcolorchipButton.setAttribute('aria-selected', true); } else { accessibility.selected(targetcolorchipButton); } } }, setPanel: function (activeIndex) { if (!colorchipWrap.isStatic) return; for (let i = 0; i < els.panelItems.length; i++) { if (els.panelItems[i].classList.contains(activeClass)) { els.panelItems[i].classList.remove(activeClass); els.panelItems[i].setAttribute('aria-hidden', true); } } if (!els.panelItems[activeIndex].classList.contains(activeClass)) { els.panelItems[activeIndex].classList.add(activeClass); els.panelItems[activeIndex].setAttribute('aria-hidden', false); } }, setColorName: function (activeIndex) { for (let i = 0; i < els.colorchipNames.length; i++) { if (els.colorchipNames[i].classList.contains(activeClass)) { els.colorchipNames[i].classList.remove(activeClass); els.colorchipNames[i].setAttribute('aria-hidden', true); } } if (!els.colorchipNames[activeIndex].classList.contains(activeClass)) { els.colorchipNames[activeIndex].classList.add(activeClass); els.colorchipNames[activeIndex].setAttribute('aria-hidden', false); } }, setViewerUrl: function (colorName) { if (!!colorchipWrap.isStatic) return; if (colorchipWrap.type == 'popup') { let viewerSrc = els.viewerIframe.getAttribute('src').split('#color=')[0]; els.viewerIframe.setAttribute('src', `${viewerSrc}#color=${colorName}`); } else { els.viewerSection.setAttribute('data-model-color', colorName); els.viewerIframe.setAttribute('src', common.getViewerUrl()); } }, setPopupBtn: function (target) { if (colorchipWrap.type == 'popup') return; els.viewerBtn.setAttribute('data-target-index', target.index); els.viewerBtn.setAttribute('data-model-color', target.getAttribute('aria-controls')); }, setExclusive: function (activeIndex) { if (!!els.colorchipButtons[activeIndex].getAttribute('data-exclusive')) { els.exclusive.classList.add('is-active'); } else { els.exclusive.classList.remove('is-active'); } } }; const swiperEvents = { set: function () { if (els.colorchipSwiper == null) { els.colorchipSwiper = new Swiper(els.swiperContainer, { init: false, navigation: { nextEl: els.swiperNextArrow, prevEl: els.swiperPrevArrow, }, slidesPerView: currentSlidesPerView, speed: 300, }); els.colorchipSwiper.on('init', swiperEvents.init); els.colorchipSwiper.on('slideChange', swiperEvents.slideChange); els.colorchipSwiper.init(); } }, init: function () { let notification = this.el.querySelector('.swiper-notification'); if (!!notification) this.el.removeChild(notification); els.swiperPrevArrow.removeAttribute('aria-label'); els.swiperPrevArrow.removeAttribute('role'); els.swiperNextArrow.removeAttribute('aria-label'); els.swiperNextArrow.removeAttribute('role'); accessibility.colorchip(els.colorchipSwiper); }, slideChange: function () { accessibility.colorchip(els.colorchipSwiper); }, destroy: function () { els.colorchipSwiper.destroy(true); els.colorchipSwiper = null; }, }; const accessibility = { clickArrow: function (e) { let arrowTimeout = null, arrowStyleTimeout = null; if ((e.type == 'keydown' && e.keyCode == 13) || e.type == 'click') { e.preventDefault(); if (els.colorchipSwiper.isBeginning && !els.colorchipSwiper.isEnd) { els.swiperPrevArrow.style.setProperty('display', 'block'); clearTimeout(arrowTimeout); arrowTimeout = setTimeout(function () { els.swiperNextArrow.focus(); }, 300); clearTimeout(arrowStyleTimeout); arrowStyleTimeout = setTimeout(function () { els.swiperPrevArrow.style.display = ''; }, 400); } else if (!els.colorchipSwiper.isBeginning && els.colorchipSwiper.isEnd) { els.swiperNextArrow.style.setProperty('display', 'block'); clearTimeout(arrowTimeout); arrowTimeout = setTimeout(function () { els.swiperPrevArrow.focus(); }, 300); clearTimeout(arrowStyleTimeout); arrowStyleTimeout = setTimeout(function () { els.swiperNextArrow.style.display = ''; }, 400); } } }, colorchip: function (swiperObj) { let isNotActivedColorchips = null; for (let i = 0; i < swiperObj.slides.length; i++) { if (currentDevice.indexOf('mobile') > -1) { isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 4) || (swiperObj.activeIndex > i); } else { isNotActivedColorchips = (i != swiperObj.activeIndex) && (i > swiperObj.activeIndex + 6) || (swiperObj.activeIndex > i); } if (isNotActivedColorchips) { utils.onAccessibility(swiperObj.slides[i]); setTimeout(function () { utils.onAccessibility(swiperObj.slides[i]); }, 300); } else { utils.offAccessibility(swiperObj.slides[i]); setTimeout(function () { utils.offAccessibility(swiperObj.slides[i]); }, 300); } } }, selected: function (target) { if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { target.setAttribute('title', LOCAL_VARI.selected); } else { target.setAttribute('title', 'Selected'); } } }; return init(colorchipWrap); }; let colorchips = document.querySelectorAll('.js-colorchip'); for (let i = 0; i < colorchips.length; i++) { colorchips[i].type = colorchips[i].parentElement.classList.contains('js-popup-colorchip') ? 'popup' : 'colors'; colorchips[i].isStatic = colorchips[i].parentElement.getAttribute('data-static'); flagship.features.colorchip(colorchips[i]); }})();;(function () { window.flagship.features.faq = (function () { const resize = window.flagship.common.resize, utils = window.flagship.common.utils; let els = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.js-faq'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.faqList = els.section.querySelector('.js-faq-list'); }; const bindEvents = function () { resize.add(eventList.resize); eventList.setAccordion(); }; const eventList = { resize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { eventList.responsive(); prevDevice = currDevice; } }, responsive: function () { let isOpenedItems = els.faqList.querySelectorAll('.js-faq-item.is-open'); if (isOpenedItems.length > 0) { for (let i = 0; i < isOpenedItems.length; i++) { let isOpenedItemContent = isOpenedItems[i].querySelector('.js-faq-answer'), clientHeight = isOpenedItemContent.children[0].clientHeight; isOpenedItemContent.style.height = `${clientHeight}px`; } } }, setAccordion: function () { els.accordion = new window.flagship.common.accordion({ wrap: els.faqList, classList: { item: 'js-faq-item', button: 'js-faq-open', contents: 'js-faq-answer', activeClass: 'is-open' }, open: { start: function (target) { let targetInnerCta = target.querySelector('.js-featue-cta'); if (targetInnerCta) targetInnerCta.addEventListener('click', accessibility.moveFocus); } } }); els.accordion.init(); }, }; const accessibility = { moveFocus: function (e) { if (this.getAttribute('href').indexOf('#') > -1) { e.preventDefault(); let sectionId = this.getAttribute('href'), section = document.querySelector(`${sectionId}`), sectionTop = section.getBoundingClientRect().top, movePosition = (sectionTop + window.pageYOffset) - utils.getNavHeight(), clickable = section.querySelectorAll('a, button'), title = section.querySelector('h2') || section.querySelector('h3'); if (!!title) { let _focusOut = function () { title.removeAttribute('tabindex'); title.removeEventListener('focusout', _focusOut); }; title.addEventListener('focusout', _focusOut); title.setAttribute('tabindex', 0); title.focus(); } else { clickable[0].focus(); } window.scrollTo(0, movePosition); } } }; return { init: init } })();})();(function () { window.flagship.features.flexWindow = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let oldIndex = 0; let swiperObj = {}; let pointerOffset = {}; let currDevice = resize.checkResolution(); let videoPlayStatus = false; let lowNetwork = document.documentElement.classList.contains('low_network'); const init = function () { els.section = document.querySelector('.features-flex-window'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.carouselWrap = els.section.querySelector('.features-flex-window__carousel'); els.carouselInner = els.section.querySelector('.features-flex-window__carousel-inner'); els.swiperContainer = els.section.querySelector('.swiper-container'); els.nextArrow = els.section.querySelector('.swiper-button-next'); els.prevArrow = els.section.querySelector('.swiper-button-prev'); els.autoSlideController = els.section.querySelector('.features-flex-window__carousel-button'); els.blind = els.autoSlideController.querySelector('.blind'); els.videos; els.realCarouselSlides; }; const setProperty = function () { for (let i = 0; i < els.realCarouselSlides.length; i++) { let isSlide = els.realCarouselSlides[i]; let isVideoWrap = els.realCarouselSlides[i].querySelector('.common-video'); if (!!isVideoWrap) { isSlide.videoWrap = isVideoWrap; isSlide.videoWrap.video = isVideoWrap.querySelector('.common-video__video'); isSlide.video = isVideoWrap.querySelector('.common-video__video'); isSlide.videoWrap.controller = isVideoWrap.querySelector('.js-video-control'); isSlide.videoWrap.controller.video = isVideoWrap.querySelector('.common-video__video'); } } }; const bindEvents = function () { eventList.load(); eventHandler.scroll(); eventHandler.autoSlideController(); }; const eventHandler = { scroll: function() { window.addEventListener('scroll', eventList.scroll) }, transitionend: function() { els.carouselInner.addEventListener('animationend', eventList.transitionend, {once: true}) }, flickSwiper: function() { els.carouselWrap.addEventListener('touchstart', function(e) { pointerOffset.start = null; pointerOffset.current = null; pointerOffset.start = e.touches[0].clientX; els.carouselWrap.addEventListener('touchmove', eventList.getPointerMoveSize); }); els.carouselWrap.addEventListener('touchend', function() { if (pointerOffset.start == null) return; eventList.flickSwiper(); els.carouselWrap.removeEventListener('touchmove', eventList.getPointerMoveSize); }); els.carouselWrap.addEventListener('mousedown', function(e) { pointerOffset.start = null; pointerOffset.current = null; pointerOffset.start = e.offsetX; els.carouselWrap.addEventListener('mousemove', eventList.getPointerMoveSize); }); els.carouselWrap.addEventListener('mouseup', function() { eventList.flickSwiper(); els.carouselWrap.removeEventListener('mousemove', eventList.getPointerMoveSize); }); els.carouselWrap.addEventListener('mouseleave', function() { if (pointerOffset.start == null) return; pointerOffset.start = null; pointerOffset.current = null; els.carouselWrap.removeEventListener('mousemove', eventList.getPointerMoveSize); }); }, click: function () { for (let i = 0; i < els.realCarouselSlides.length; i++) { let isVideoWrap = els.realCarouselSlides[i].videoWrap; if (!!isVideoWrap) { els.realCarouselSlides[i].videoWrap.controller.addEventListener('click', eventList.clickVideoCta); } } }, autoSlideController: function() { els.autoSlideController.addEventListener('click', eventList.autoSlideController); } }; const eventList = { load: function() { swiperEvent.set(); swiperObj.thumb.init(); eventList.setScene(); eventList.scroll(); els.blind.innerText = LOCAL_VARI.play; }, setVideo: function() { els.realCarouselSlides = els.swiperContainer.querySelectorAll('.swiper-slide'); els.videos = els.swiperContainer.querySelectorAll('.common-video__video'); setProperty(); eventHandler.click(); for (let i = 0; i < els.realCarouselSlides.length; i++) { let isVideoWrap = els.realCarouselSlides[i].videoWrap; if (!!isVideoWrap) { if (!isVideoWrap.classList.contains('is-loaded')) isVideoWrap.classList.add('is-loaded'); utils.videoHandler({ playType: 'scrollPlay', wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } if (this.wrap.classList.contains('is-started')) { this.wrap.classList.remove('is-started'); } }, playCallback: function () { if (!this.wrap.classList.contains('is-started')) { this.wrap.classList.add('is-started'); } setTagging.pause(this.controller); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } } }); } } }, playVideo: function(videoWrap) { let isVideo = videoWrap.video; if (isVideo.readyState >= 4) { isVideo.play(); } else { isVideo.load(); isVideo.addEventListener('canplay', function() { isVideo.play(); }, {once: true}); } }, resetVideo: function() { if (!!!els.realCarouselSlides) return; for (let i = 0; i < els.realCarouselSlides.length; i++) { let isVideo = els.realCarouselSlides[i].video; if (!!isVideo && !isVideo.paused) { isVideo.pause(); isVideo.currentTime = 0; }; }; }, clickVideoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, setScene: function() { SCROLLER({ trackElement: els.swiperContainer, resize: false }) }, autoSlideController: function() { let taggingValue = this.getAttribute('data-omni'); if (this.classList.contains('is-playing')) { this.classList.remove('is-playing'); this.classList.add('is-paused'); this.setAttribute('data-omni', taggingValue.replace('play', 'pause')); this.setAttribute('ga-la', taggingValue.replace('play', 'pause')); els.blind.innerText = LOCAL_VARI.pause; } else { this.classList.remove('is-paused'); this.classList.add('is-playing'); this.setAttribute('data-omni', taggingValue.replace('pause', 'play')); this.setAttribute('ga-la', taggingValue.replace('pause', 'play')); els.blind.innerText = LOCAL_VARI.play; } }, resetScroll: function() { swiperEvent.destroy(swiperObj.thumb); swiperEvent.set(); swiperObj.thumb.init(); for (let i = 0; i < swiperObj.thumb.slides.length; i++) { let isVideo = swiperObj.thumb.slides[i].querySelector('.common-video'); if (!!isVideo) { isVideo.classList.remove('is-playing'); isVideo.classList.remove('is-paused'); isVideo.classList.remove('is-ended'); isVideo.classList.remove('is-loaded'); isVideo.classList.remove('is-completed'); } } els.carouselInner.classList.remove('is-animate-start'); els.autoSlideController.classList.add('is-ended'); els.autoSlideController.classList.remove('is-playing'); els.autoSlideController.classList.remove('is-paused'); }, scroll: function() { els.swiperContainer.scroller.trackAnimation(function() { let clsaaStatus = els.carouselInner.classList.contains('is-animate-start'); let activeStatus = this.progress > 20 && !clsaaStatus; let resetStatus = this.wheelDirection == 'up' && this.progress <= 0 && clsaaStatus; let isActiveVideo = swiperObj.thumb.slides[swiperObj.thumb.activeIndex].querySelector('video'); if (resetStatus) { eventList.resetScroll(); }; if (activeStatus) { videoPlayStatus = false; els.carouselInner.classList.add('is-animate-start'); els.autoSlideController.classList.remove('is-ended'); els.autoSlideController.classList.add('is-playing'); eventHandler.transitionend(); }; for (let i = 0; i < els.videos.length; i++) { if (!lowNetwork && videoPlayStatus && !!isActiveVideo) isActiveVideo.videoHandler.scrollActive(this.progress); } }); }, transitionend: function() { videoPlayStatus = true; els.autoSlideController.classList.remove('is-playing'); els.autoSlideController.classList.add('is-ended'); setTimeout(function() { let isActiveVideo = swiperObj.thumb.slides[swiperObj.thumb.activeIndex].querySelector('video'); if (!!isActiveVideo) { isActiveVideo.currentTime = 0; isActiveVideo.play(); } }, 600); }, getPointerMoveSize: function(e) { if (!!e.touches) { pointerOffset.current = e.touches[0].clientX; } else { pointerOffset.current = e.offsetX; } }, }; const swiperEvent = { set: function() { swiperObj.thumb = new Swiper(els.swiperContainer, { init: false, loop: true, centeredSlides: true, slidesPerView: 'auto', navigation: { nextEl: els.nextArrow, prevEl: els.prevArrow }, }); swiperObj.thumb.on('transitionEnd', swiperEvent.transitionEnd); swiperObj.thumb.on('init', swiperEvent.init); }, init: function() { els.nextArrow.removeAttribute('aria-label'); els.nextArrow.removeAttribute('role'); els.prevArrow.removeAttribute('aria-label'); els.prevArrow.removeAttribute('role'); accessibility.slide(this); eventList.setVideo(); }, transitionEnd: function() { let isActiveSlide = els.swiperContainer.querySelector('.swiper-slide-active'); let isVideoWrap = isActiveSlide.videoWrap; accessibility.slide(this); eventList.resetVideo(); if (!lowNetwork && !!isVideoWrap) eventList.playVideo(isVideoWrap); }, destroy: function (swiper) { swiper.navigation.destroy(true); swiper.destroy(true); }, } const accessibility = { slide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if (i != swiper.activeIndex) { utils.onAccessibility(swiper.slides[i]); } else { utils.offAccessibility(swiper.slides[i]); } } } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })();})();(function () { window.flagship.features.formfactor = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}; let currDevice = resize.checkResolution(); let isAos = utils.detector.isTouchDevice && document.documentElement.classList.contains('android'); const init = function () { els.section = document.querySelector('.js-form-factor'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { // fixed els.fixedVideoTrack = els.section.querySelector('.js-fixed-track'); els.fixedVideoInner = els.section.querySelector('.js-fixed-inner'); els.fixedVideoWrap = els.section.querySelector('.js-fixed-scroll-video .js-video-wrap'); els.fixedVideo = els.section.querySelector('.js-fixed-scroll-video video'); // title els.topTitleWrap = els.section.querySelector('.js-top-title-wrap'); els.topTitle1 = els.section.querySelector('.js-top-title-1'); els.topTitle2 = els.section.querySelector('.js-top-title-2'); els.bottomTitleWrap = els.section.querySelector('.js-bottom-title-wrap'); els.bottomTitle = els.section.querySelector('.js-bottom-title'); els.bottomDesc = els.section.querySelector('.js-bottom-desc'); // sequence hidden video els els.videoControlWrap = els.section.querySelector('.common-video__control-wrap'); els.videoFigure = els.section.querySelector('.common-video__figure'); }; const bindEvents = function () { eventHandler.load(); resize.add(eventHandler.resize); }; const eventHandler = { load: function () { eventList.checkBrokenFixed(); window.addEventListener('orientationchange', eventHandler.orientationchange); if (document.documentElement.classList.contains('is-formfactor-broken-fixed') || document.documentElement.classList.contains('low_network')) { window.addEventListener('DOMContentLoaded', eventList.setStaticContents, {once: true}); } else { if (isAos) { window.addEventListener('DOMContentLoaded', function () { eventList.fixedScroller.set(); eventList.sequencePlayer.set(); eventList.correctionBottomHeight(); }, {once: true}); window.addEventListener('scroll', eventList.sequencePlayer.play); els.videoControlWrap.style.display = 'none'; els.videoFigure.style.display = 'none'; } else { window.addEventListener('DOMContentLoaded', eventList.setVideoHandler, {once: true}); els.fixedVideo.addEventListener('canplaythrough', function () { window.addEventListener('scroll', eventList.fixedScroller.play); eventList.fixedScroller.set(); eventList.correctionBottomHeight(); }, {once: true}); } } }, resize: function () { eventList.setContents(); }, orientationchange: function () { setTimeout(function () { eventList.setContents(); }, 150); } }; const eventList = { setVideoHandler: function () { utils.videoHandler({ wrap: els.fixedVideoWrap, video: els.fixedVideo }); }, fixedScroller: { set: function () { eventList.fixedScroller.destroy(); if (els.fixedVideoTrack.scene == null) { els.fixedVideoTrack.scene = SCROLLER({ trackElement: els.fixedVideoTrack, fixedElement: els.fixedVideoInner, useFixed: true, useFixedStyle: false, trackHeight: isAos ? 5 : 4, resize: (utils.detector.isTouchDevice) ? false : true }); } }, destroy: function () { if (els.fixedVideoTrack.scene != null) { els.fixedVideoTrack.scene.destroy(true, true); els.fixedVideoTrack.scene = null; els.fixedVideoTrack.style = ''; } }, play: function () { if (els.fixedVideoTrack.scene != null) { els.fixedVideoTrack.scene.trackAnimation(eventList.fixedScrollMotion); } } }, sequencePlayer: { set: function () { let imageName = null; if (currDevice.indexOf('desktop') > -1) { imageName = 'galaxy-z-flip6-features-form-factor-'; } else if (currDevice.indexOf('mobile') > -1) { imageName = 'galaxy-z-flip6-features-form-factor-mo-'; } else { imageName = 'galaxy-z-flip6-features-form-factor-tb-'; } els.fixedVideoTrack.seqSence = SEQUENCEPLAYER({ targetElement: els.fixedVideoWrap, startNum: 0, endNum: 95, path: typeof SEQUENCE_IMG_PATH == 'undefined' ? './images/seq/' : SEQUENCE_IMG_PATH, name: imageName, extension: 'jpg', addType: 'append' }); }, destroy: function () { if (els.fixedVideoTrack.seqSence != null) { els.fixedVideoInner.removeChild(els.fixedVideoInner.querySelector('canvas')); els.fixedVideoTrack.seqSence = null; } }, play: function () { if (els.fixedVideoTrack.scene != null) { els.fixedVideoTrack.scene.trackAnimation(eventList.fixedScrollMotion); } } }, fixedScrollMotion: function () { let progress = this.progress; let isMobile = currDevice.indexOf('mobile') > -1 ? true : false if (els.fixedVideoTrack.seqSence != null) { let motionValue = utils.calRange({ targetValue: 95, progress: this.progress, startPoint: 0, endPoint: 100 }); els.fixedVideoTrack.seqSence.play({index: parseInt(motionValue)}); } else { if (els.fixedVideo.readyState >= 4) { let scrollTimeValue = utils.calRange({ targetValue: els.fixedVideo.duration, progress: progress, endPoint: 100 }); els.fixedVideo.currentTime = scrollTimeValue - 0.1; } } let topTitleWrapShowValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: 0, endPoint: 10 }); let topTitleValue = utils.calRange({ targetValue: 100, progress: progress, startPoint: 32, endPoint: 36 }); let topTitleWrapHideValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: 28, endPoint: 36 }); TweenMax.to(els.topTitleWrap, 0.1, { opacity: topTitleWrapShowValue, scale: topTitleWrapShowValue }); if (progress >= 28) { TweenMax.to(els.topTitleWrap, 0.1, { opacity: 1 - topTitleWrapHideValue }); } TweenMax.to(els.topTitle1, 0.3, { x: -topTitleValue + '%' }); TweenMax.to(els.topTitle2, 0.3, { x: topTitleValue + '%' }); let bottomTtileOpacityValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: 87, endPoint: 98 }), bottomTopValue = utils.calRange({ targetValue: 20, progress: progress, startPoint: 87, endPoint: 98 }), bottomDescOpacityValue = utils.calRange({ targetValue: 1, progress: progress, startPoint: 98, endPoint: 100 }), bottomDescTopValue = utils.calRange({ targetValue: 70, progress: progress, startPoint: 98, endPoint: 100 }) TweenMax.to(els.bottomTitleWrap, 0.1, { y: 20 - bottomTopValue + '%', ease: 'ease-out' }); TweenMax.to(els.bottomTitle, 0.1, { opacity: bottomTtileOpacityValue }); TweenMax.to(els.bottomDesc, 0.1, { opacity: bottomDescOpacityValue, y: 70 - bottomDescTopValue + '%', ease: 'ease-out' }); }, correctionBottomHeight: function () { let bottomTitleHeight = els.bottomTitleWrap.clientHeight, bottomTitleMarginTop = parseInt(window.getComputedStyle(els.bottomTitleWrap).marginTop), correctionHeight = (bottomTitleMarginTop < 0) ? -bottomTitleMarginTop : bottomTitleMarginTop; if (bottomTitleHeight > correctionHeight) { let correctionValue = bottomTitleHeight - correctionHeight; els.fixedVideoTrack.style.paddingBottom = correctionValue + 'px'; } }, checkBrokenFixed: function () { let winWidth = window.innerWidth, winHeight = window.innerHeight; document.documentElement.classList.remove('is-formfactor-broken-fixed'); if (winWidth > 1440 && winHeight <= 720) { document.documentElement.classList.add('is-formfactor-broken-fixed'); } else if (winWidth <= 1440 && (winHeight / winWidth) < 0.5277) { document.documentElement.classList.add('is-formfactor-broken-fixed'); } else { document.documentElement.classList.remove('is-formfactor-broken-fixed'); } }, setStaticContents: function () { if (!els.section.classList.contains('none-fixed')) { els.section.classList.add('none-fixed'); } }, setFixedContents: function () { if (els.section.classList.contains('none-fixed')) { els.section.classList.remove('none-fixed'); } if (isAos) { window.addEventListener('DOMContentLoaded', function () { eventList.fixedScroller.set(); eventList.sequencePlayer.set(); eventList.correctionBottomHeight(); }, {once: true}); window.addEventListener('scroll', eventList.sequencePlayer.play); els.videoControlWrap.style.display = 'none'; els.videoFigure.style.display = 'none'; } else { if (!els.fixedVideo.videoHandler) { eventList.setVideoHandler(); } if (!els.fixedVideo.classList.contains('is-mp4video-load-complete')) { mp4VideoLoader.setResponsiveMedia([els.fixedVideo]); } els.fixedVideo.addEventListener('canplaythrough', function () { eventList.fixedScroller.set(); eventList.correctionBottomHeight(); window.addEventListener('scroll', eventList.fixedScroller.play); }, {once: true}); } }, setContents: function () { eventList.checkBrokenFixed(); if (document.documentElement.classList.contains('is-formfactor-broken-fixed') || document.documentElement.classList.contains('low_network')) { eventList.fixedScroller.destroy(); if (isAos) { eventList.sequencePlayer.destroy(); window.removeEventListener('scroll', eventList.sequencePlayer.play); els.videoControlWrap.style.display = ''; els.videoFigure.style.display = ''; } else { window.removeEventListener('scroll', eventList.fixedScroller.play); } eventList.setStaticContents(); } else { eventList.setFixedContents(); } }, }; return { init: init } })();})();(function () { window.flagship = window.flagship || {}; window.flagship.features = window.flagship.features || {}; window.flagship.features.highlightsZone = (function () { const utils = window.flagship.common.utils; const resize = window.flagship.common.resize; let els = {}; let prevDevice; let swiperObj = {}; let pointerOffset = {}; let currDevice = resize.checkResolution(); let dimmedClass = 'is-dimmed'; let ctaPlayStatus = true; let scrollProgress = null; let lowNetwork = document.documentElement.classList.contains('low_network'); let isBgLoaded = false; const init = function () { els.section = document.querySelector('.features-highlights'); if (!!els.section) { setElements(); setProperty(); bindEvents(); } }; const setElements = function () { els.mainContainer = els.section.querySelector('.js-highlights-main-container'); els.mainSwiperSlides = els.mainContainer.querySelectorAll('.swiper-slide'); els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap'); els.prevArrow = els.mainContainer.parentElement.querySelector('.swiper-button-prev'); els.nextArrow = els.mainContainer.parentElement.querySelector('.swiper-button-next'); els.scrollbar = els.section.querySelector('.js-highlights-scrollbar'); els.bgContainer = els.section.querySelector('.js-highlights-bg-container'); els.bgSwiperSlides = els.bgContainer.querySelectorAll('.swiper-slide'); }; const setProperty = function () { els.mainContainer.autoPlay = true; els.videoWrap = els.mainContainer.querySelectorAll('.js-video-wrap'); for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].video = els.videoWrap[i].querySelector('.common-video__video'); els.videoWrap[i].coverImageHighband = els.videoWrap[i].querySelector('.common-video__cover-image--highband'); els.videoWrap[i].coverImageLowband = els.videoWrap[i].querySelector('.common-video__cover-image--lowband'); els.videoWrap[i].controller = els.videoWrap[i].querySelector('.js-video-control'); els.videoWrap[i].controller.video = els.videoWrap[i].video; els.videoWrap[i].progressBar = els.videoWrap[i].querySelector('.common-video__control-progress-bar'); els.bgSwiperSlides[i].image = els.bgSwiperSlides[i].querySelector('img'); } }; const bindEvents = function () { eventList.load(); eventHandler.click(); eventHandler.scroll(); eventHandler.flickSwiper(); resize.add(eventList.resize); }; const eventHandler = { flickSwiper: function () { els.mainContainer.addEventListener('touchstart', function (e) { pointerOffset.start = null; pointerOffset.current = null; pointerOffset.start = e.touches[0].clientX; els.mainContainer.addEventListener('touchmove', eventList.getPointerMoveSize); }); els.mainContainer.addEventListener('touchend', function () { if (pointerOffset.start == null) return; els.mainContainer.autoPlay = false; els.mainContainer.removeEventListener('touchmove', eventList.getPointerMoveSize); }); els.mainContainer.addEventListener('mousedown', function (e) { pointerOffset.start = null; pointerOffset.current = null; pointerOffset.start = e.offsetX; els.mainContainer.addEventListener('mousemove', eventList.getPointerMoveSize); }); els.mainContainer.addEventListener('mouseup', function () { els.mainContainer.autoPlay = false; els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize); }); els.mainContainer.addEventListener('mouseleave', function () { if (pointerOffset.start == null) return; pointerOffset.start = null; pointerOffset.current = null; els.mainContainer.removeEventListener('mousemove', eventList.getPointerMoveSize); }); }, click: function () { for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].controller.addEventListener('click', eventList.clickVideoCta); } for (let i = 0; i < els.videoWrap.length; i++) { els.videoWrap[i].controller.addEventListener('click', eventList.stopAutoPlay); } els.nextArrow.addEventListener('click', function (e) { eventList.stopAutoPlay(e) eventList.swiperArrow(e); }); els.prevArrow.addEventListener('click', function (e) { eventList.stopAutoPlay(e) eventList.swiperArrow(e); }); els.scrollbar.addEventListener('click', eventList.stopAutoPlay); }, scroll: function () { window.addEventListener('scroll', eventList.scroll) } } const eventList = { load: function () { swiperEvents.set(); swiperObj.main.init(); swiperObj.bg.init(); eventList.setVideo(); eventList.setScene(); eventList.scroll(); }, resize: function () { currDevice = resize.checkResolution(); if (prevDevice != currDevice) { eventList.responsive(); prevDevice = currDevice; }; }, responsive: function () { let desktopStatus = eventList.getCarouselSizeInfo(swiperObj.main).viewLength > 0 && currDevice == 'desktop'; eventList.resetDimmedSlide(swiperObj.main); swiperObj.main.slideTo(0, false); if (desktopStatus) eventList.initDimmedSlides(swiperObj.main); }, setVideo: function () { for (let i = 0; i < els.videoWrap.length; i++) { utils.videoHandler({ playType: 'scrollPlay', startPoint: currDevice != 'mobile' ? 40 : 24, reversePoint: currDevice != 'mobile' ? 88 : 80, wrap: els.videoWrap[i], video: els.videoWrap[i].video, controller: els.videoWrap[i].controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } if (this.wrap.classList.contains('is-started')) { this.wrap.classList.remove('is-started'); } }, playCallback: function () { setTagging.pause(this.controller); this.video.timeupdateEvent = function(){ if (this.currentTime > 0) { if (!this.videoHandler.wrap.classList.contains('is-started')) { this.videoHandler.wrap.classList.add('is-started'); } eventList.setProgerssDuration(i); this.removeEventListener('timeupdate', this.timeupdateEvent); } } this.video.addEventListener('timeupdate', this.video.timeupdateEvent); }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } if (els.mainContainer.autoPlay) { if (scrollProgress > 40 && scrollProgress < 55) { clearTimeout(swiperObj.main.videoTiming); swiperObj.main.videoTiming = setTimeout(() => { swiperObj.main.slideNext(); }, 1000); } } } }); } }, playVideo: function (video) { if (video.readyState >= 1) { video.play(); } else { video.addEventListener('canplay', function () { this.play(); }, { once: true }) } }, clickVideoCta: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { eventList.playVideo(e.currentTarget.video); ctaPlayStatus = true; } else { e.currentTarget.video.pause(); ctaPlayStatus = false; } } }, stopAutoPlay: function (e) { if (e.target.classList.contains('js-video-control') || e.target.classList.contains('swiper-button-next') || e.target.classList.contains('swiper-button-prev') || e.target.classList.contains('js-highlights-scrollbar') ) { els.mainContainer.autoPlay = false; }; }, swiperArrowVisiblirity: function () { let mainSlidesLength = els.mainSwiperSlides.length - 1; let mainSwiper = swiperObj.main; let prevArrow = mainSwiper.previousIndex > mainSwiper.realIndex; let nextArrow = mainSwiper.previousIndex < mainSwiper.realIndex; if (prevArrow) { if (mainSwiper.realIndex == (mainSlidesLength - 1)) { if (els.nextArrow.style.display == 'none') els.nextArrow.style.display = ''; } else if (mainSwiper.realIndex == 0) { els.prevArrow.style.display = 'none'; } }; if (nextArrow) { if (mainSwiper.realIndex == 1) { if (els.prevArrow.style.display == 'none') els.prevArrow.style.display = ''; } else if (mainSwiper.realIndex == mainSlidesLength) { els.nextArrow.style.display = 'none'; } }; }, swiperArrow: function (e) { let mainSwiper = swiperObj.main; let mainSlidesLength = els.mainSwiperSlides.length - 1; let prevArrow = e.target.classList.contains('swiper-button-prev'); let nextArrow = e.target.classList.contains('swiper-button-next'); if (prevArrow) { clearTimeout(swiperObj.main.videoTiming); mainSwiper.slidePrev(); if (mainSwiper.realIndex == 0) { setTimeout(() => { els.nextArrow.blur(); els.nextArrow.focus(); }, 300); } }; if (nextArrow) { clearTimeout(swiperObj.main.videoTiming); mainSwiper.slideNext(); if (mainSwiper.realIndex == mainSlidesLength) { setTimeout(() => { els.prevArrow.blur(); els.prevArrow.focus(); }, 300); } }; }, scroll: function () { els.section.scene.trackAnimation(function () { let isIndex = swiperObj.main.realIndex; let isMainVideoHandler = els.videoWrap[isIndex].video.videoHandler; scrollProgress = this.progress; if (!lowNetwork && ctaPlayStatus) isMainVideoHandler.scrollActive(this.progress); if (scrollProgress > 0 && !isBgLoaded) { for (let i = 0; i < els.bgSwiperSlides.length; i++) { if (!els.bgSwiperSlides[i].image.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]); } } isBgLoaded = true; } }); }, slideVideoPlay: function () { let isIndex = swiperObj.main.realIndex; let isVideoWrap = els.videoWrap[isIndex]; isVideoWrap.classList.add('is-ended'); setTimeout(function () { isVideoWrap.classList.remove('is-started', 'is-paused'); if (!ctaPlayStatus) isVideoWrap.video.paused(); isVideoWrap.video.currentTime = 0; if (ctaPlayStatus) { eventList.playVideo(isVideoWrap.video); setTimeout(function () { if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.blur(); if (els.mainContainer.autoPlay) isVideoWrap.video.videoHandler.controller.focus(); if (isIndex == (swiperObj.main.slides.length - 1)) { els.mainContainer.autoPlay = false; } }, 300); } }, 50); }, setProgerssDuration: function (index) { let isDuration = els.videoWrap[index].video.duration; if (!!!els.videoWrap[index].durationSet) { els.videoWrap[index].progressBar.style.animationDuration = `${isDuration}s`; els.videoWrap[index].durationSet = true; } }, setMedia: function (index) { let videoLength = els.mainSwiperSlides.length - 1; let isIndex = index + 1 let loadIndex = isIndex < videoLength ? isIndex : videoLength; let mainVideoloadComplateLength = els.mainContainer.querySelectorAll('.is-video-load-complete').length - 1; for (let i = 0; i <= loadIndex; i++) { if (mainVideoloadComplateLength != videoLength && !els.videoWrap[i].video.classList.contains('.is-video-load-complete')) { if (!!els.videoWrap[i].video) videoLoader.setResponsiveMedia([els.videoWrap[i].video]); if (!lowNetwork) { if (!!els.videoWrap[i].coverImageHighband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageHighband]); } else { if (!!els.videoWrap[i].coverImageLowband) imageLoader.setResponsiveMedia([els.videoWrap[i].coverImageLowband]); } if (!!els.bgSwiperSlides[i].image) imageLoader.setResponsiveMedia([els.bgSwiperSlides[i].image]); } } }, pauseVideo: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { let isVideo = swiper.slides[i].querySelector('video'); if (!!isVideo && !isVideo.paused) { isVideo.pause(); }; }; }, getCarouselSizeInfo: function (swiper) { let slideLength = swiper.slides.length; let slideWidth = swiper.slides[0].clientWidth; let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[1]); let slideSize = slideWidth + slideMargin; let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth; let viewWidth = swiper.wrapperEl.clientWidth; let viewLength = parseInt((viewWidth + slideMargin) / slideSize); let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth)); let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4])); return { slideWidth: slideWidth, slideMargin: slideMargin, slideSize: slideSize, maxMoveSize: maxMoveSize, viewWidth: viewWidth, viewLength: viewLength, lastBeforeSize: lastBeforeSize, isMoveSize: isMoveSize } }, setScene: function () { els.section.scene = SCROLLER({ trackElement: els.section, useFixed: false }); }, initDimmedSlides: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if ((swiper.activeIndex + eventList.getCarouselSizeInfo(swiper).viewLength) <= i) { swiper.slides[i].classList.add(dimmedClass); } } }, setDimmedSlide: function (swiper) { if (currDevice != 'mobile') { for (let i = 0; i < swiper.slides.length; i++) { let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i; if (dimmedSlide) { swiper.slides[i].classList.add(dimmedClass); } else { swiper.slides[i].classList.remove(dimmedClass); } } } }, resetDimmedSlide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { swiper.slides[i].classList.remove(dimmedClass); } }, getPointerMoveSize: function (e) { if (!!e.touches) { pointerOffset.current = e.touches[0].clientX; } else { pointerOffset.current = e.offsetX; } } } const swiperEvents = { set: function () { if (swiperObj.main == null) { swiperObj.main = new Swiper(els.mainContainer, { init: false, slidesPerView: 'auto', scrollbar: { el: els.scrollbar, draggable: true }, }); swiperObj.main.on('init', swiperEvents.init); swiperObj.main.on('slideChange', swiperEvents.slideChange); swiperObj.main.on('transitionEnd', swiperEvents.transitionEnd); } if (swiperObj.bg == null) { swiperObj.bg = new Swiper(els.bgContainer, { init: false, slidesPerView: 'auto', allowTouchMove: false }); } els.prevArrow.style.display = 'none'; }, init: function () { let isNextArrow = this.el.parentElement.querySelector('.swiper-button-next'); let isPrevArrow = this.el.parentElement.querySelector('.swiper-button-prev'); isNextArrow.removeAttribute('aria-label'); isNextArrow.removeAttribute('role'); isPrevArrow.removeAttribute('aria-label'); isPrevArrow.removeAttribute('role'); accessibility.slide(this); if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice == 'desktop') eventList.initDimmedSlides(this); }, slideChange: function () { swiperObj.bg.slideTo(this.realIndex); accessibility.slide(this); eventList.pauseVideo(this); if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice == 'desktop') eventList.setDimmedSlide(this); if (this.realIndex > 0) eventList.setMedia(this.realIndex); if (!lowNetwork) eventList.slideVideoPlay(); eventList.swiperArrowVisiblirity(); }, transitionEnd: function () { setTimeout(() => { let carouselInfo = eventList.getCarouselSizeInfo(this); let lastIndex = this.slides.length - 1; let lastSlide = this.slides[lastIndex]; let lastBeforeSlide = this.slides[lastIndex - 1]; let isIndex = swiperObj.main.previousIndex; let isMoveSize = currDevice != 'mobile' ? carouselInfo.isMoveSize : carouselInfo.isMoveSize + Math.abs(carouselInfo.slideMargin); els.videoWrap[isIndex].video.pause(); if (carouselInfo.maxMoveSize == isMoveSize) { lastSlide.classList.add('is-last-slide'); lastBeforeSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-dimmed'); if (currDevice == 'mobile') { eventList.pauseVideo(this); if (!lowNetwork && ctaPlayStatus) { lastSlide.querySelector('video').play(); }; lastSlide.classList.add('swiper-slide-active'); lastBeforeSlide.classList.remove('swiper-slide-active'); } } else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) { lastSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-last-slide'); lastBeforeSlide.classList.remove('is-dimmed'); if (currDevice == 'mobile') { eventList.pauseVideo(this); if (!lowNetwork && ctaPlayStatus) { lastBeforeSlide.querySelector('video').play(); }; lastSlide.classList.remove('swiper-slide-active'); lastBeforeSlide.classList.add('swiper-slide-active'); } } }, 0); }, destroy: function (swiper) { if (swiper != null) { swiper.navigation.destroy(true); swiper.destroy(true); swiper = null; } }, }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; const accessibility = { slide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if (i != swiper.activeIndex) { utils.onAccessibility(swiper.slides[i]); } else { utils.offAccessibility(swiper.slides[i]); } } } }; return { init: init, } })();})();;(function () { window.flagship.features.interactiveSuggested = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}; let objs = {}; let stepInfo = []; let scrollProgress = null; let isPlaySection = null; const init = function () { els.section = document.querySelector('.js-suggested-replies'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.interactiveContent = els.section.querySelector('.js-interactive'); els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta'); }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.video.videoWrap = el; el.controller = el.querySelector('.js-video-control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; el.video.coverImage = el.querySelector('.common-video__cover-image'); }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]) } setVideos(); eventList.videoController(); eventList.click(); eventList.setScroller(); eventHandler.scroll(); }; const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); }; const eventList = { setScroller: function () { if (els.interactiveContent.scene == null) { els.interactiveContent.scene = SCROLLER({ trackElement: els.interactiveContent, useFixed: false }); } }, scrollEvent: function () { if (els.interactiveContent.scene != null) { if (els.interactiveContent.classList.contains('is-tutorial-opened')) { els.interactiveContent.scene.trackAnimation(function () { scrollProgress = this.progress; let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video'); let firstVideoHandler = els.videoWrap[0].video.videoHandler; let replayStatus = !document.documentElement.classList.contains('low_network') && activeVideo.paused && !els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) && !els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) && scrollProgress > 0 && scrollProgress < 100; let resetStatus = scrollProgress === 0 || scrollProgress === 100; if (replayStatus) { if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) { els.videoWrap[0].video.play(); } else { els.videoWrap[0].video.addEventListener('canplay', function() { els.videoWrap[0].video.play(); }, {once:true}); } } if (resetStatus) { activeVideo.pause(); activeVideo.currentTime = 0; eventList.tutorialReset(); } }); } } }, videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('loadeddata', function () { if (this.paused) this.play(); }); } els.videoList[index].classList.remove('is-visible'); }, click: function () { let self = this; for (let i = 0; i < els.tooltipCta.length; i++) { els.tooltipCta[i].addEventListener('click', function () { self.nextVideoPlay(i); }); } }, tutorialReset: function () { let firstVideoHandler = els.videoWrap[0].video.videoHandler; els.videoWrap[0].classList.remove(firstVideoHandler.playClass); els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass); els.videoWrap[0].classList.remove(firstVideoHandler.endedClass); // video wrap if (!els.videoList[0].classList.contains('is-visible')) { els.videoList[0].classList.add('is-visible'); } // tooltip if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) { els.videoWrap[0].tooltip.classList.remove('is-visible'); } // tootip accessibility utils.offAccessibility(els.videoWrap[0]); if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip); for (let i = 0; i < els.videoWrap.length; i++) { if (i != 0) { if (els.videoList[i].classList.contains('is-visible')) { els.videoList[i].classList.remove('is-visible'); } if (!els.videoWrap[i].video.paused) { els.videoWrap[i].video.pause(); els.videoWrap[i].video.currentTime = 0; } // tooltip if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) { els.videoWrap[i].tooltip.classList.remove('is-visible'); } utils.onAccessibility(els.videoWrap[i]); if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip); } } // replay cta els.tutorialReplay.style.display = 'none'; els.tutorialReplay.setAttribute('aria-hidden', true); els.tutorialReplay.setAttribute('tabindex', -1); } }; const eventHandler = { scroll: function () { window.addEventListener('scroll', eventList.scrollEvent); eventList.scrollEvent(); } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(utils.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') { this.controller.style.display = ''; } } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); let nextPlayindex = this.video.playIndex + 1; if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) { if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) { videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]); } if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]); } } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') { let self = this; if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled'); if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible'); utils.offAccessibility(this.wrap.tooltip); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } this.controller.style.display = 'none'; if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })();})();;(function () { window.flagship.features.interactiveInterpreter = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}; let objs = {}; let stepInfo = []; let scrollProgress = null; let isMute = null; let isPlaySection = null; const init = function () { els.section = document.querySelector('.js-interpreter'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.interactiveContent = els.section.querySelector('.js-interactive'); els.tutorialVideoContainer = els.section.querySelector('.common-interactive__tutorial'); els.videoList = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video'); els.videoWrap = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video'); els.videos = els.tutorialVideoContainer.querySelectorAll('.common-interactive__tutorial-video .common-video__video'); els.tooltipCta = els.tutorialVideoContainer.querySelectorAll('.js-tutorial-tooltip-cta'); els.tutorialReplay = els.tutorialVideoContainer.querySelector('.js-replay-cta'); els.allVideoWrap = els.section.querySelectorAll('.js-video-wrap'); els.muteCta = els.section.querySelectorAll('.js-mute-cta'); // status isMute = !!els.muteCta && els.muteCta.length > 0; }; const setProperty = function (el, index) { el.video = el.querySelector('video'); el.video.videoWrap = el; el.controller = el.querySelector('.js-video-control'); el.controller.video = el.querySelector('video'); el.alert = el.parentElement.querySelector('.common-tutorial__alert'); el.tooltip = el.parentElement.querySelector('.js-tutorial-tooltip'); el.tooltipCta = el.parentElement.querySelector('.js-tutorial-tooltip-cta'); el.video.playIndex = index; el.video.coverImage = el.querySelector('.common-video__cover-image'); if (isMute) { el.muteCta = els.muteCta[index + 1]; } }; const bindEvents = function () { for (let i = 0; i < els.videoWrap.length; i++) { setProperty(els.videoWrap[i], i); setStepStatus(els.videoList[i]); } setVideos(); eventList.videoController(); eventList.click.tooltipCta(); eventList.setScroller(); eventHandler.scroll(); if (isMute) { muteEventHandler(); } }; const setStepStatus = function (el) { stepInfo.push({ alert: el.getAttribute('data-alert'), tooltip: el.getAttribute('data-tooltip') }); }; const muteEventHandler = function () { for (let i = 0; i < els.muteCta.length; i++) { muteEventList.setProperty(els.muteCta[i], i); muteEventList.setMuteBlindText(els.muteCta[i], i); muteEventList.click(els.muteCta[i], i); els.allVideoWrap[i].querySelector('video').style.pointerEvents = 'none'; } }; const muteEventList = { setProperty: function (muteCta, index) { muteCta.videoWrap = els.allVideoWrap[index]; muteCta.videoWrap.muteCta = muteCta; muteCta.video = els.allVideoWrap[index].querySelector('video'); muteCta.blind = muteCta.querySelector('.blind'); }, setMuteBlindText: function (muteCta) { muteCta.blind.innerText = muteCta.getAttribute('data-unmute'); }, click: function (muteCta) { muteCta.addEventListener('click', function () { let isMute = this.video.muted; if (!!isMute) { this.classList.remove('is-muted'); this.classList.add('is-unmuted'); this.blind.innerText = this.getAttribute('data-mute'); this.video.muted = false; setTagging.mute(this); } else { this.classList.remove('is-unmuted'); this.classList.add('is-muted'); this.blind.innerText = this.getAttribute('data-unmute'); this.video.muted = true; setTagging.unmute(this); } }); }, }; const eventList = { setScroller: function () { if (els.interactiveContent.scene == null) { els.interactiveContent.scene = SCROLLER({ trackElement: els.interactiveContent, useFixed: false }); } }, scrollEvent: function () { if (els.interactiveContent.scene != null) { if (els.interactiveContent.classList.contains('is-tutorial-opened')) { els.interactiveContent.scene.trackAnimation(function () { scrollProgress = this.progress; let activeVideo = els.tutorialVideoContainer.querySelector('.is-visible video'); let firstVideoHandler = els.videoWrap[0].video.videoHandler; let replayStatus = !document.documentElement.classList.contains('low_network') && activeVideo.paused && !els.videoWrap[0].classList.contains(firstVideoHandler.endedClass) && !els.videoWrap[0].classList.contains(firstVideoHandler.pauseClass) && scrollProgress > 0 && scrollProgress < 100; let resetStatus = scrollProgress === 0 || scrollProgress === 100; if (replayStatus) { if (els.videoWrap[0].video.readyState == 4 && els.videoWrap[0].video.paused) { els.videoWrap[0].video.play(); } else { els.videoWrap[0].video.addEventListener('canplay', function() { els.videoWrap[0].video.play(); }, {once:true}); } } if (resetStatus) { activeVideo.pause(); activeVideo.currentTime = 0; eventList.tutorialReset(); } }); } } }, videoController: function () { for (let i = 0; i < objs.videos.length; i++) { objs.videos[i].controller.addEventListener('click', function () { if (this.video.paused) { this.video.play(); } else { this.video.pause(); } }); } }, nextVideoPlay: function (index) { if (!!els.videoList[index].tooltip) { utils.onAccessibility(els.videoList[index].tooltip); } els.videoList[index + 1].classList.add('is-visible'); utils.onAccessibility(els.videoList[index]); if (els.videos[index + 1].readyState > 3) { els.videos[index + 1].play(); } else { els.videos[index + 1].addEventListener('loadeddata', function () { if (this.paused) this.play(); }); } els.videoList[index].classList.remove('is-visible'); }, click: { tooltipCta: function () { for (let i = 0; i < els.tooltipCta.length; i++) { els.tooltipCta[i].addEventListener('click', function () { eventList.nextVideoPlay(i); }); } } }, tutorialReset: function () { let firstVideoHandler = els.videoWrap[0].video.videoHandler; els.videoWrap[0].classList.remove(firstVideoHandler.playClass); els.videoWrap[0].classList.remove(firstVideoHandler.pauseClass); els.videoWrap[0].classList.remove(firstVideoHandler.endedClass); // video wrap if (!els.videoList[0].classList.contains('is-visible')) { els.videoList[0].classList.add('is-visible'); } // tooltip if (!!els.videoWrap[0].tooltip && els.videoWrap[0].tooltip.classList.contains('is-visible')) { els.videoWrap[0].tooltip.classList.remove('is-visible'); } // tootip accessibility utils.offAccessibility(els.videoWrap[0]); if (!!els.videoWrap[0].tooltip) utils.onAccessibility(els.videoWrap[0].tooltip); for (let i = 0; i < els.videoWrap.length; i++) { if (i != 0) { if (els.videoList[i].classList.contains('is-visible')) { els.videoList[i].classList.remove('is-visible'); } if (!els.videoWrap[i].video.paused) { els.videoWrap[i].video.pause(); els.videoWrap[i].video.currentTime = 0; } // tooltip if (!!els.videoWrap[i].tooltip && els.videoWrap[i].tooltip.classList.contains('is-visible')) { els.videoWrap[i].tooltip.classList.remove('is-visible'); } utils.onAccessibility(els.videoWrap[i]); if (!!els.videoWrap[i].tooltip) utils.onAccessibility(els.videoWrap[i].tooltip); } } // replay cta els.tutorialReplay.style.display = 'none'; els.tutorialReplay.setAttribute('aria-hidden', true); els.tutorialReplay.setAttribute('tabindex', -1); } }; const eventHandler = { scroll: function () { window.addEventListener('scroll', eventList.scrollEvent); eventList.scrollEvent(); } } const setVideos = function () { objs.videos = []; for (let i = 0; i < els.videoWrap.length; i++) { let isVideoWrap = els.videoWrap[i]; objs.videos.push(utils.videoHandler({ wrap: isVideoWrap, video: isVideoWrap.video, controller: isVideoWrap.controller, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); if (this.controller.style.display = 'none') { this.controller.style.display = ''; } } }, playCallback: function () { els.videoList[this.video.playIndex].removeAttribute('tabindex'); els.videoList[this.video.playIndex].removeAttribute('aria-hidden'); utils.offAccessibility(this.wrap.muteCta); if (!this.video.muted) { this.wrap.muteCta.classList.remove('is-unmuted'); this.wrap.muteCta.video.muted = true; this.wrap.muteCta.blind.innerText = this.wrap.muteCta.getAttribute('data-unmute'); setTagging.unmute(this.wrap.muteCta); } this.controller.style.display = 'block'; utils.offAccessibility(this.controller); setTagging.pause(this.controller); let nextPlayindex = this.video.playIndex + 1; if ((els.videos.length - 1) > this.video.playIndex && els.videos[nextPlayindex].readyState < 4) { if (!els.videos[nextPlayindex].classList.contains('is-video-load-complete')) { videoLoader.setResponsiveMedia([els.videos[nextPlayindex]]); } if (!els.videos[nextPlayindex].coverImage.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([els.videos[nextPlayindex].coverImage]); } } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { if (!!this.wrap.tooltip && stepInfo[this.video.playIndex].tooltip == 'true') { let self = this; if (!!this.wrap.tooltipCta) this.wrap.tooltipCta.removeAttribute('disabled'); if (!!this.wrap.tooltip) this.wrap.tooltip.classList.add('is-visible'); utils.offAccessibility(this.wrap.tooltip); } if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } this.controller.style.display = 'none'; if ((els.videos.length - 1) == this.video.playIndex) { els.tutorialReplay.style.display = 'block'; els.tutorialReplay.removeAttribute('tabindex'); els.tutorialReplay.removeAttribute('aria-hidden'); } } })); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } }, mute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('unmute', 'mute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('unmute', 'mute')); } }, unmute: function (targetCta) { if (targetCta.hasAttribute('data-omni')) { let dataOmni = targetCta.getAttribute('data-omni').toLowerCase(); targetCta.setAttribute('data-omni', dataOmni.replace('mute', 'unmute')); } if (targetCta.hasAttribute('ga-la')) { let gaLa = targetCta.getAttribute('ga-la').toLowerCase(); targetCta.setAttribute('ga-la', gaLa.replace('mute', 'unmute')); } }, }; return { init: init } })();})();;(function () { window.flagship.features.interactive = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, prevDevice = null, currDevice = resize.checkResolution(), scrollProgress = null; const init = function () { els.interactiveContents = document.querySelectorAll('.js-interactive'); if (!!els.interactiveContents && els.interactiveContents.length > 0) { for (let i = 0; i < els.interactiveContents.length; i++) { setProperty(els.interactiveContents[i], i); eventList.setIntroVideo(els.interactiveContents[i]); eventList.setIntroScene(els.interactiveContents[i]); bindEvents(els.interactiveContents[i], i); } } }; const setProperty = function (content, index) { // introVideo content.index = index; content.introVideo = content.querySelector('.js-interactive-intro-video video'); content.introVideo.videoWrap = content.querySelector('.js-interactive-intro-video'); content.introVideo.wrap = content.querySelector('.js-interactive-intro-video .js-video-wrap'); content.introVideo.parentWrap = content.parentElement; content.introVideo.controllerCta = content.introVideo.videoWrap.querySelector('.js-video-control'); content.introVideo.controllerCta.video = content.introVideo; content.introVideo.tooltip = content.querySelector('.js-tutorial-tooltip'); content.introVideo.tooltipCta = content.querySelector('.js-tutorial-tooltip-cta'); content.introVideo.tooltipCta.parentWrap = content; content.tutorialContentWrap = content.querySelectorAll('.js-tutorial-video'); content.tutorialContentWrap.tooltip = content.querySelectorAll('.js-tutorial-video .js-tutorial-tooltip'); // start, reverse point content.introVideo.wrap.startPoint = !!content.introVideo.wrap.getAttribute('data-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-start-point')) : undefined; content.introVideo.wrap.reversePoint = !!content.introVideo.wrap.getAttribute('data-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-reverse-point')) : undefined; content.introVideo.wrap.moStartPoint = !!content.introVideo.wrap.getAttribute('data-mo-start-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-start-point')) : undefined; content.introVideo.wrap.moReversePoint = !!content.introVideo.wrap.getAttribute('data-mo-reverse-point') ? parseInt(content.introVideo.wrap.getAttribute('data-mo-reverse-point')) : undefined; // replayCta content.replayCta = content.querySelector('.js-replay-cta'); content.replayCta.parentWrap = content; }; const bindEvents = function (content, i) { eventHandler.click.introTooltipCta(content.introVideo.tooltipCta); eventHandler.click.replayCta(content.replayCta); eventHandler.click.videoController(content.introVideo.controllerCta); eventHandler.scroll(content); eventList.scroll(content); resize.add(function (currRes) { eventList.resize(currRes, content); }); }; const eventList = { setIntroVideo: function (content) { utils.videoHandler({ playType: 'scrollPlay', startPoint: content.introVideo.wrap.startPoint, reversePoint: content.introVideo.wrap.reversePoint, wrap: content.introVideo.wrap, video: content.introVideo, controller: content.introVideo.controllerCta, resetCallback: function () { if (this.wrap.classList.contains('is-completed')) { this.wrap.classList.remove('is-completed'); } if (this.wrap.classList.contains('is-started')) { this.wrap.classList.remove('is-started'); } if (this.video.tooltip.classList.contains('is-visible')) { this.video.tooltip.classList.remove('is-visible'); } content.introVideo.tooltip.classList.remove('is-visible'); utils.onAccessibility(content.introVideo.tooltip); utils.offAccessibility(content.introVideo.videoWrap); if (content.introVideo.controllerCta.style.display == 'none') { content.introVideo.controllerCta.style.display = 'block'; } }, playCallback: function () { if (!this.wrap.classList.contains('is-started')) { this.wrap.classList.add('is-started'); } setTagging.pause(this.controller); let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap'); videoWrap.coverImg = videoWrap.querySelector('.common-video__cover-image'); videoWrap.video = videoWrap.querySelector('video'); if (!!videoWrap.coverImg && !videoWrap.coverImg.classList.contains('is-img-load-complete')) { imageLoader.setResponsiveMedia([videoWrap.coverImg]); } if (!!videoWrap.video && !videoWrap.video.classList.contains('is-video-load-complete')) { videoLoader.setResponsiveMedia([videoWrap.video]); } }, pauseCallback: function () { setTagging.play(this.controller); }, endCallback: function () { let self = this; if (!this.wrap.classList.contains('is-completed')) { this.wrap.classList.add('is-completed'); } this.controller.style.display = 'none'; this.video.tooltip.classList.add('is-visible'); utils.offAccessibility(this.video.tooltip); } }); }, setIntroScene: function (content) { content.introVideo.scene = SCROLLER({ trackElement: content.introVideo, useFixed: false, resize: utils.detector.isTouchDevice ? false : true }); }, scroll: function (content) { if (!content.classList.contains('is-tutorial-opened')) { content.introVideo.scene.trackAnimation(function () { content.introVideo.videoHandler.scrollActive(this.progress); scrollProgress = this.progress; }); } }, click: { introVideoTooltipCta: function () { let content = this.parentWrap; content.classList.add('is-tutorial-opened'); content.introVideo.tooltip.classList.remove('is-visible'); utils.onAccessibility(content.introVideo.videoWrap); content.tutorialContentWrap[0].classList.add('is-visible'); utils.offAccessibility(content.tutorialContentWrap[0]); let videoWrap = content.tutorialContentWrap[0].querySelector('.js-video-wrap'); videoWrap.video.play(); }, replayCta: function () { let content = this.parentWrap; content.replayCta.style.display = 'none'; content.replayCta.setAttribute('aria-hidden', true); content.replayCta.setAttribute('tabindex', -1); for (let i = 0; i < content.tutorialContentWrap.length; i++) { content.tutorialContentWrap[i].classList.remove('is-visible'); if (!!content.tutorialContentWrap.tooltip[i]) { content.tutorialContentWrap.tooltip[i].classList.remove('is-visible'); } utils.onAccessibility(content.tutorialContentWrap[i]); setTimeout(function () { content.tutorialContentWrap[i].querySelector('video').currentTime = 0; }, 300); } content.introVideo.controllerCta.style.display = 'block'; content.introVideo.tooltip.classList.remove('is-visible'); utils.offAccessibility(content.introVideo.videoWrap); utils.onAccessibility(content.introVideo.tooltip); content.classList.remove('is-tutorial-opened'); content.introVideo.play(); }, videoController: function (e) { if (e.target == e.currentTarget) { if (e.currentTarget.video.paused) { e.currentTarget.video.play(); } else { e.currentTarget.video.pause(); } } }, }, reset: function (content) { if (content.classList.contains('is-tutorial-opened')) { content.classList.remove('is-tutorial-opened'); } // replay cta if (content.replayCta.style.display == 'block') { content.replayCta.style.display = 'none'; content.replayCta.setAttribute('aria-hidden', true); content.replayCta.setAttribute('tabindex', -1); } // tutorial video let tutorialWrap = content.tutorialContentWrap; for (let i = 0; i < tutorialWrap.length; i++) { tutorialWrap[i].classList.remove('is-visible'); utils.onAccessibility(tutorialWrap[i]); // video tutorialWrap[i].video = tutorialWrap[i].querySelector('video'); if (!tutorialWrap[i].video.paused) { tutorialWrap[i].video.pause(); tutorialWrap[i].video.currentTime = 0; } // tooltip if (!!tutorialWrap.tooltip[i]) { if (tutorialWrap.tooltip[i].classList.contains('is-visible')) { tutorialWrap.tooltip[i].classList.remove('is-visible'); } utils.onAccessibility(tutorialWrap.tooltip[i]); } } // intro video utils.offAccessibility(content.introVideo.videoWrap); if (content.introVideo.controllerCta.style.display == 'none') { content.introVideo.controllerCta.style.display = 'block'; } // intro tooltip if (content.introVideo.tooltip.classList.contains('is-visible')) { content.introVideo.tooltip.classList.remove('is-visible') } if (scrollProgress >= 40 && scrollProgress <= 60) { if (content.introVideo.paused) { content.introVideo.currentTime = 0; content.introVideo.play(); } } }, resize: function (currRes, content) { currDevice = currRes; if (prevDevice != currDevice) { eventList.reset(content); } prevDevice = currDevice; }, }; const eventHandler = { click: { replayCta: function (replayCta) { replayCta.addEventListener('click', eventList.click.replayCta); }, introTooltipCta: function (introTooltipCta) { introTooltipCta.addEventListener('click', eventList.click.introVideoTooltipCta); }, videoController: function (introVideoController) { introVideoController.addEventListener('click', eventList.click.videoController); } }, scroll: function (content) { window.addEventListener('scroll', function () { eventList.scroll(content); }); } }; const setTagging = { play: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('pause', 'play')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('pause', 'play')); } }, pause: function (targetController) { if (targetController.hasAttribute('data-omni')) { let dataOmni = targetController.getAttribute('data-omni').toLowerCase(); targetController.setAttribute('data-omni', dataOmni.replace('play', 'pause')); } if (targetController.hasAttribute('ga-la')) { let gaLa = targetController.getAttribute('ga-la').toLowerCase(); targetController.setAttribute('ga-la', gaLa.replace('play', 'pause')); } } }; return { init: init } })();})();;(function () { window.flagship.features.lowLightPortrait = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize; let els = {}, prevDevice = null, currDevice = resize.checkResolution(); const init = function () { els.section = document.querySelector('.features-lowlight-portrait'); if (!!els.section) { setElements(); bindEvents(); } }; const setElements = function () { els.image = els.section.querySelector('.features-lowlight-portrait__interaction-image'); els.videoWrap = els.section.querySelector('.js-portrait-video-wrap'); els.video = els.videoWrap.querySelector('.js-portrait-video'); }; const bindEvents = function () { resize.add(eventList.resize); eventList.setScene(); eventList.scroll(); eventHandler.scroll(); els.image.addEventListener('transitionend', eventList.videoPlay); }; const eventHandler = { scroll: function() { window.addEventListener('scroll', eventList.scroll); } } const eventList = { resize: function (currRes) { currDevice = currRes; if (currDevice != prevDevice) { prevDevice = currDevice; } }, setVideo: function() { let movPlayStatus = document.documentElement.classList.contains('ios') && document.documentElement.classList.contains('safari') || document.documentElement.classList.contains('mac') && document.documentElement.classList.contains('safari'); if (!movPlayStatus) { els.video.src = els.video.getAttribute('data-video-src'); } else { els.video.src = els.video.getAttribute('data-ios-video-src'); } els.video.classList.add('is-loaded'); }, setScene: function() { SCROLLER({ trackElement: els.section, }); }, scroll: function() { els.section.scroller.trackAnimation(function() { if (els.video.readyState < 4 && this.progress >= 0 && !els.video.classList.contains('is-loaded')) { eventList.setVideo(); } if (this.progress > 15) { if (!els.section.classList.contains('is-active')) els.section.classList.add('is-active'); } else if (this.wheelDirection == 'up' && this.progress <= 0) { if (els.section.classList.contains('is-active')) els.section.classList.remove('is-active'); } }); }, videoPlay: function() { clearTimeout(els.video.playState); els.video.currentTime = 0; els.video.play(); els.video.playState = setTimeout(() => { els.video.currentTime = 0; els.video.pause(); }, 1500); } }; return { init: init } })();})();(function () { window.flagship.features.moveFeature = (function () { const utils = window.flagship.common.utils; let els = {}; const init = function () { els.jumpCta = document.querySelectorAll('.js-jump-cta'); if (!!els.jumpCta) { setProperty(); bindEvents(); } }; const setProperty = function () { for (let i = 0; i < els.jumpCta.length; i++) { els.jumpCta[i].sectionId = els.jumpCta[i].getAttribute('href'); els.jumpCta[i].section = document.querySelector(`${els.jumpCta[i].sectionId}`); els.jumpCta[i].returnCta = els.jumpCta[i].section.querySelector('.js-return-cta'); els.jumpCta[i].returnCta.jumpCta = els.jumpCta[i]; els.jumpCta[i].returnCta.section = els.jumpCta[i].section; } }; const bindEvents = function () { eventHandler.click(); eventList.setScene(); eventHandler.scroll(); }; const eventHandler = { click: function () { for (let i = 0; i < els.jumpCta.length; i++) { els.jumpCta[i].addEventListener('click', eventList.clickJumpCta); els.jumpCta[i].returnCta.addEventListener('click', eventList.clickReturnCta); } }, scroll: function () { window.addEventListener('scroll', eventList.hideReturnCta); } }; const eventList = { setScene: function () { for(let i=0; i

swiper.slides.length -1 ? swiper.slides.length -1 : index + 1; let videoLength = swiper.el.querySelectorAll('video').length - 1; let imageLength = swiper.el.querySelectorAll('img').length - 1; let videoloadComplateLength = swiper.el.querySelectorAll('.is-video-load-complete').length - 1; let imageloadComplateLength = swiper.el.querySelectorAll('.is-img-load-complete').length - 1; let nextVideo = swiper.slides[isIndex].querySelector('video'); let nextImage = swiper.slides[isIndex].querySelector('img'); if (videoloadComplateLength != videoLength) { if (!!nextVideo) { videoLoader.setResponsiveMedia([nextVideo]); } } if (imageloadComplateLength != imageLength) { if (!!nextImage) { imageLoader.setResponsiveMedia([nextImage]); } } }, resetVideo: function(swiper) { for (let i = 0; i < swiper.slides.length; i++) { let isVideo = swiper.slides[i].video; if (!!isVideo && !isVideo.paused) { isVideo.pause(); isVideo.currentTime = 0; }; }; }, getCarouselSizeInfo: function(swiper) { let slideLength = swiper.slides.length; let slideWidth = swiper.slides[0].clientWidth; let slideMargin = parseInt(window.getComputedStyle(swiper.slides[0]).margin.split(' ')[isRtl ? 3 : 1]); let slideSize = slideWidth + slideMargin; let maxMoveSize = ((slideSize * slideLength) - slideMargin) - swiper.wrapperEl.clientWidth; let viewWidth = swiper.wrapperEl.clientWidth; let viewLength = parseInt((viewWidth + slideMargin)/slideSize); let lastBeforeSize = slideLength == 2 ? 0 : Math.abs((maxMoveSize - slideSize)) + Math.abs((viewWidth - slideWidth)); let isMoveSize = Math.abs(parseInt(window.getComputedStyle(swiper.wrapperEl).transform.split(',')[4])); return { slideWidth: slideWidth, slideMargin: slideMargin, slideSize: slideSize, maxMoveSize: maxMoveSize, viewWidth: viewWidth, viewLength: viewLength, lastBeforeSize: lastBeforeSize, isMoveSize: isMoveSize } }, setDimmedSlide: function(swiper) { if (currDevice != 'mobile') { for (let i = 0; i < swiper.slides.length; i++) { let dimmedSlide = (swiper.activeIndex) > i || (swiper.activeIndex + (eventList.getCarouselSizeInfo(swiper).viewLength - 1)) < i; if (dimmedSlide) { swiper.slides[i].classList.add(dimmedClass); } else { swiper.slides[i].classList.remove(dimmedClass); } } } }, slideChange: function () { accessibility.slide(this); eventList.resetVideo(this); if (eventList.getCarouselSizeInfo(this).viewLength > 0 && currDevice != 'mobile') eventList.setDimmedSlide(this); if (this.realIndex > 0) eventList.setMedia(this, this.realIndex); }, transitionEnd: function() { if (this.slides.length < 3 && currDevice == 'mobile') return; setTimeout(() => { let carouselInfo = eventList.getCarouselSizeInfo(this); let lastIndex = this.slides.length -1; let lastSlide = this.slides[lastIndex]; let lastBeforeSlide = this.slides[lastIndex - 1]; if (carouselInfo.isMoveSize > carouselInfo.lastBeforeSize || carouselInfo.maxMoveSize == carouselInfo.isMoveSize) { eventList.resetVideo(this); lastSlide.classList.add('is-last-slide'); lastBeforeSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-dimmed'); utils.offAccessibility(this.slides[lastIndex]); utils.onAccessibility(this.slides[lastIndex - 1]); } else if (lastSlide.classList.contains('is-last-slide') && carouselInfo.lastBeforeSize == carouselInfo.isMoveSize) { eventList.resetVideo(this); lastSlide.classList.add('is-dimmed'); lastSlide.classList.remove('is-last-slide'); lastBeforeSlide.classList.remove('is-dimmed'); utils.onAccessibility(this.slides[lastIndex]); utils.offAccessibility(this.slides[lastIndex - 1]); } let swiperActiveSlide = els.section.querySelector('.swiper-slide-active'); let lastSlideActive = els.section.querySelector('.is-last-slide'); let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide; let isActiveVideo = isActiveSlide.querySelector('video'); if (!!isActiveVideo && !isLowBand) isActiveVideo.play() }, 0); }, setScene: function() { els.section.scene = SCROLLER({ trackElement: els.section }); }, setVideoType: function() { if (!!els.videos) { for (let i = 0; i < els.videos.length; i++) { els.videos[i].videoHandler.playType = 'scrollPlay'; } } }, scroll: function() { els.section.scene.trackAnimation(function() { let swiperActiveSlide = els.section.querySelector('.swiper-slide-active'); let lastSlideActive = els.section.querySelector('.is-last-slide'); let isActiveSlide = !!lastSlideActive ? lastSlideActive : swiperActiveSlide; let isActiveVideo = isActiveSlide.querySelector('video'); if (!!isActiveVideo && !isLowBand) isActiveVideo.videoHandler.scrollActive(this.progress); }); } }; const accessibility = { slide: function (swiper) { for (let i = 0; i < swiper.slides.length; i++) { if (i != swiper.activeIndex) { utils.onAccessibility(swiper.slides[i]); } else { utils.offAccessibility(swiper.slides[i]); } } } }; return { init: init } })();})();;(function () { window.flagship.features.viewer = (function () { const utils = window.flagship.common.utils, resize = window.flagship.common.resize, common = window.flagship.features.common, isLow = utils.isLowNetwork(); let els = {}, currDevice = resize.checkResolution(); const init = function () { els.viewerBtn = document.querySelector('.viewer-btn'); els.section = document.querySelector('.js-colors'); els.popup = document.querySelector('.js-viewer'); if (!!isLow) { if (!els.viewerBtn) return; els.currentWrap = els.popup; setElements(); setProperty(); popupEvents.set(); bindEvents(); } else { if (!els.section) return; els.currentWrap = els.section; setElements(); setProperty(); bindEvents(); } }; const setElements = function () { els.wrapEl = document.querySelector('#wrap'); els.contents = document.querySelector('#contents'); // popup els.popupWrap = els.currentWrap.querySelector('.js-viewer-wrap'); els.popupInner = els.currentWrap.querySelector('.js-viewer-inner'); els.closeCta = els.currentWrap.querySelector('.js-viewer-close'); els.popupContents = els.currentWrap.querySelector('.js-viewer-contents'); // popup-scroll els.popupScroll = els.currentWrap.querySelector('.js-viewer-scroll'); els.popupScrollUpBtn = els.currentWrap.querySelector('.js-scroll-up'); els.popupScrollDownBtn = els.currentWrap.querySelector('.js-scroll-down'); // viewer els.viewerIframe = els.currentWrap.querySelector('iframe'); els.foldBtn = els.currentWrap.querySelector('.js-fold-btn'); els.resetBtn = els.currentWrap.querySelector('.js-reset-btn'); // angle preset els.presetOpen = els.currentWrap.querySelector('.js-preset-open'); els.presetClose = els.currentWrap.querySelector('.js-preset-close'); els.presetLayer = els.currentWrap.querySelector('.js-preset-layer'); els.angleCta = els.currentWrap.querySelectorAll('.js-angle-cta'); }; const setProperty = function () { // timeout els.resizeTimeout = null; els.resizeInnerTimeout = null; els.viewerOpener = null; els.viewerIframe.isHash = false; els.viewerIframe.isIntroposeReady = false; els.viewerIframe.isFold = false; els.viewerIframe.resetTimeout = null; }; const bindEvents = function () { eventHandler.load(); eventHandler.message(); eventHandler.click(); resize.add(eventList.resize); if (!isLow) { eventList.setScene(); } }; const eventHandler = { load: function () { window.addEventListener('DOMContentLoaded', eventList.load, { once: true }); }, message: function () { window.addEventListener('message', eventList.receiveV3DMessage, false); }, click: function () { if (!!isLow) { els.popupScroll.addEventListener('click', eventList.clickLayerScroll); } els.foldBtn && els.foldBtn.addEventListener('click', eventList.clickFold); els.resetBtn && els.resetBtn.addEventListener('click', eventList.clickReset); els.presetOpen && els.presetOpen.addEventListener('click', eventList.openPresetPopup); for (let i = 0; i < els.angleCta.length; i++) { els.angleCta[i].addEventListener('click', eventList.setAngle); } els.contents.addEventListener('click', function (e) { if (e.target.classList.contains('js-reset-btn') || e.target.classList.contains('js-fold-btn') || e.target.classList.contains('js-preset-open') || e.target.closest('.js-preset-layer')) return; eventList.closePresetPopup(); }); }, scroll: function () { window.addEventListener('scroll', eventList.runIntroPose); } }; const eventList = { load: function () { if (!!isLow) { eventList.innerWrapHeight(); eventList.layerScroll(); } accessibility.fold.ariaLabel(); eventList.setFoldClass(); }, receiveV3DMessage: function (e) { if (e.data == 'V3D.state.popOpen') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (!els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.add('is-popup-opened'); els.closeCta.setAttribute('tabindex', '-1'); els.closeCta.setAttribute('aria-hidden', 'true'); els.closeCta.setAttribute('disabled', 'disabled'); } } } else if (e.data == 'V3D.state.popClose') { if (currDevice.indexOf('mobile') > -1 || currDevice == 'tablet') { if (els.closeCta) { if (els.popupWrap.classList.contains('is-popup-opened')) els.popupWrap.classList.remove('is-popup-opened'); els.closeCta.removeAttribute('tabindex'); els.closeCta.removeAttribute('aria-hidden'); els.closeCta.removeAttribute('disabled'); } } } else if (e.data == 'V3D.state.introPose.ready') { if (!isLow) { els.viewerIframe.isIntroposeReady = true; eventHandler.scroll(); eventList.runIntroPose(); } else { els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*'); } } else if (e.data == 'V3D.state.localData.ready') { els.viewerIframe && els.viewerIframe.contentWindow.postMessage(JSON.stringify(V3DLOCALDATA), '*'); } else if (e.data == 'V3D.state.actionPose.0') { els.viewerIframe.isFold = false; eventList.setFoldClass(); } else if (e.data == 'V3D.state.actionPose.1') { els.viewerIframe.isFold = true; eventList.setFoldClass(); } else if (e.data == 'V3D.event.pointerdown') { eventList.closePresetPopup(); } }, resize: function (currRes) { currDevice = currRes; if (utils.detector.isTouchDevice && !utils.detector.isIosDevice) eventList.innerWrapHeight(); eventList.layerScroll(); }, innerWrapHeight: function () { clearTimeout(els.resizeInnerTimeout); els.resizeInnerTimeout = setTimeout(function () { if (els.popupInner) { els.popupInner.style.height = parseInt(window.innerHeight * 0.9) + 'px'; } }, 0); }, layerScroll: function () { clearTimeout(els.resizeTimeout); els.resizeTimeout = setTimeout(function () { eventList.setLayerScroll(); }, 300); }, setLayerScroll: function () { if (!els.popupContents) return; if (els.popupContents.scrollHeight > els.popupContents.clientHeight) { utils.offAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.add('is-scroll-btn'); } else { utils.onAccessibility(els.popupScroll); els.popupScroll && els.popupScroll.classList.remove('is-scroll-btn'); } }, clickLayerScroll: function (e) { e && e.preventDefault(); if (e.target.matches('.js-scroll-btn')) { let scrollDown = e.target.classList.contains('js-scroll-down'), $popupContents = $(els.popupContents); if (scrollDown) { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() + 100 }, { duration: 300, complete: function () { eventList.updateLayerScroll(true); } }); } else { $popupContents.stop().animate({ scrollTop: $popupContents.scrollTop() - 100 }, { duration: 300, complete: function () { eventList.updateLayerScroll(true); } }); } } }, updateLayerScroll: function (isClicked) { const offsetTop = els.popupContents.scrollTop, layerBottom = els.popupContents.scrollHeight - els.popupContents.clientHeight; els.popupScrollUpBtn.removeAttribute('tabindex'); els.popupScrollUpBtn.removeAttribute('aria-hidden'); els.popupScrollUpBtn.removeAttribute('disabled'); els.popupScrollDownBtn.removeAttribute('tabindex'); els.popupScrollDownBtn.removeAttribute('aria-hidden'); els.popupScrollDownBtn.removeAttribute('disabled'); if (offsetTop == 0) { isClicked && els.popupScrollDownBtn && els.popupScrollDownBtn.focus(); els.popupScrollUpBtn.setAttribute('tabindex', '-1'); els.popupScrollUpBtn.setAttribute('aria-hidden', 'true'); els.popupScrollUpBtn.setAttribute('disabled', 'disabled'); } else if (offsetTop >= layerBottom - 1) { isClicked && els.popupScrollUpBtn && els.popupScrollUpBtn.focus(); els.popupScrollDownBtn.setAttribute('tabindex', '-1'); els.popupScrollDownBtn.setAttribute('aria-hidden', 'true'); els.popupScrollDownBtn.setAttribute('disabled', 'disabled'); } }, setScene: function () { els.sceneObj = SCROLLER({ trackElement: els.section, useFixed: false }); }, runIntroPose: function () { els.sceneObj.trackAnimation(function () { let progress = currDevice.indexOf('mobile') > -1 ? 50 : 30; if (this.progress >= progress && !!els.viewerIframe.isIntroposeReady) { els.viewerIframe && els.viewerIframe.contentWindow.postMessage('V3D.introPose.run', '*'); window.removeEventListener('scroll', eventList.runIntroPose); } }); }, clickFold: function () { if (!els.viewerIframe.isFold) { els.viewerIframe.isFold = true; els.viewerIframe.contentWindow.postMessage('V3D.action', '*'); } else { els.viewerIframe.isFold = false; els.viewerIframe.contentWindow.postMessage('V3D.action.reverse', '*'); } accessibility.fold.ariaLabel(); eventList.setFoldClass(); accessibility.fold.tagging(); }, clickReset: function () { let viewerSrc = els.viewerIframe.getAttribute('src'); els.viewerIframe.setAttribute('src', `${viewerSrc}#reset=1`); clearTimeout(els.viewerIframe.resetTimeout); els.viewerIframe.resetTimeout = setTimeout(function () { viewerSrc = viewerSrc.split('#reset=1')[0]; els.viewerIframe.setAttribute('src', viewerSrc); }, 300); }, openPresetPopup: function () { if (!els.presetLayer.classList.contains('is-active')) { els.presetOpen.classList.add('is-open'); els.presetLayer.classList.add('is-active'); els.presetOpen.setAttribute('aria-expanded', true); els.presetClose.focus(); } else { eventList.closePresetPopup(); } els.presetClose && els.presetClose.addEventListener('click', eventList.closePresetPopup); }, closePresetPopup: function (e) { if (els.presetLayer.classList.contains('is-active')) { els.presetOpen.classList.remove('is-open'); els.presetLayer.classList.remove('is-active'); els.presetOpen.setAttribute('aria-expanded', false); if (e && e.target.classList.contains('js-preset-close')) { els.presetOpen.focus(); } } }, setFoldClass: function () { if (!els.viewerIframe.isFold) { if (els.foldBtn.classList.contains('is-folded')) els.foldBtn.classList.remove('is-folded'); els.foldBtn.classList.add('is-fold'); } else { if (els.foldBtn.classList.contains('is-fold')) els.foldBtn.classList.remove('is-fold'); els.foldBtn.classList.add('is-folded'); } }, setAngle: function () { let target = this, targetAngle = target.innerText.toLowerCase(); if (targetAngle == 'front') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 0', '*'); } else if (targetAngle == 'back') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 3.141592653589793', '*'); } else if (targetAngle == 'top') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 1.5707963267948966,angleY: 3.141592653589793', '*'); } else if (targetAngle == 'bottom') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: -1.5707963267948966,angleY: 0', '*'); } else if (targetAngle == 'left') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: 1.5707963267948966', '*'); } else if (targetAngle == 'right') { els.viewerIframe.contentWindow.postMessage('V3D.setPosition.angleX: 0,angleY: -1.5707963267948966', '*'); } accessibility.selected(target); } }; const popupEvents = { set: function () { utils.layerPopup({ layerPopup: els.popup, layerPopupClass: '.js-viewer', openerEvent: { element: els.viewerBtn, }, closeCtas: [els.closeCta], dimmed: els.popupWrap, moveTarget: document.documentElement, contents: els.contents, show: { start: function (target) { els.popup.classList.add('is-init'); popupEvents.show(target.openerCta); }, end: function () { if (utils.detector.isIosDevice) els.popup.style.display = 'block'; els.popup.classList.add('is-open'); } }, hide: { start: function () { els.popup.classList.remove('is-open'); }, end: function () { setTimeout(function () { els.popup.classList.remove('is-init'); }, 300); popupEvents.hide(); } } }); }, show: function (viewerOpener) { if (viewerOpener.classList.contains('viewer-btn')) { els.viewerIframe.isHash = false; els.viewerOpener = viewerOpener; } else { els.viewerIframe.isHash = true; els.viewerOpener = els.viewerBtn; } els.viewerIframe.setAttribute('src', common.getViewerUrl()); }, hide: function () { els.viewerIframe.setAttribute('src', 'about:blank'); if (els.viewerIframe.isHash) { setTimeout(function () { els.viewerOpener.focus(); }, 300); } }, }; const accessibility = { fold: { ariaLabel: function () { if (!els.viewerIframe.isFold) { els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-unfolded')}`); } else { els.foldBtn.setAttribute('aria-label', `${els.foldBtn.getAttribute('data-folded')}`); } }, tagging: function () { let dataOmni = els.foldBtn.getAttribute('data-omni'), gaLa = els.foldBtn.getAttribute('ga-la'); if (!els.viewerIframe.isFold) { els.foldBtn.setAttribute('data-omni', dataOmni.replace('folded', 'unfolded')); els.foldBtn.setAttribute('ga-la', gaLa.replace('folded', 'unfolded')); } else { els.foldBtn.setAttribute('data-omni', dataOmni.replace('unfolded', 'folded')); els.foldBtn.setAttribute('ga-la', gaLa.replace('unfolded', 'folded')); } }, }, selected: function (target) { for (let i = 0; i < els.angleCta.length; i++) { els.angleCta[i].removeAttribute('title'); if (els.angleCta[i].classList.contains('is-selected')) { els.angleCta[i].classList.remove('is-selected'); } } if (!target.classList.contains('is-selected')) { target.classList.add('is-selected'); } if (typeof LOCAL_VARI != 'undefined' && !!LOCAL_VARI) { target.setAttribute('title', LOCAL_VARI.selected); } else { target.setAttribute('title', 'Selected'); } } }; return { init: init } })();})();flagship.features.initialize = (function () { window.flagship.common.resize.bindEvent(); const init = function () { flagship.features.clickToVideo.init(); flagship.features.headline.init(); flagship.features.howtoPopup.init(); flagship.features.oneColumnCarousel.init(); flagship.features.scrollVideo.init(); flagship.features.threeColumnCarousel.init(); flagship.features.aiOverview.init(); flagship.features.battery.init(); flagship.features.cameraSpec.init(); flagship.features.faq.init(); flagship.features.flexWindow.init(); flagship.features.formfactor.init(); flagship.features.highlightsZone.init(); flagship.features.interactiveSuggested.init(); flagship.features.interactiveInterpreter.init(); flagship.features.interactive.init(); flagship.features.lowLightPortrait.init(); flagship.features.moveFeature.init(); flagship.features.nightography.init(); flagship.features.photoAssist.init(); flagship.features.viewer.init(); }; return { init: init }})();flagship.features.initialize.init(); });
Galaxy Z Flip 6 | Kamera og skjerm | Samsung Norge (2024)

References

Top Articles
Latest Posts
Recommended Articles
Article information

Author: Lidia Grady

Last Updated:

Views: 5849

Rating: 4.4 / 5 (45 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Lidia Grady

Birthday: 1992-01-22

Address: Suite 493 356 Dale Fall, New Wanda, RI 52485

Phone: +29914464387516

Job: Customer Engineer

Hobby: Cryptography, Writing, Dowsing, Stand-up comedy, Calligraphy, Web surfing, Ghost hunting

Introduction: My name is Lidia Grady, I am a thankful, fine, glamorous, lucky, lively, pleasant, shiny person who loves writing and wants to share my knowledge and understanding with you.