Galaxy Z Flip 6 | Camera & Functies | Samsung BE (2024)

Galaxy Z Flip6

  • SPECIFICATIES
  • SUPPORT
  • REVIEWS

Koop nu

  • Functies
  • FAQ
  • Accessoires
  • SPECIFICATIES
  • SUPPORT
  • REVIEWS
Galaxy Z Flip 6 | Camera & Functies | Samsung BE (1)

Koop nu Reserveer nu Pre-order nu Verkooppunten

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (2)

Galaxy AI is here

De Galaxy Z Flip6 biedt next level zelfexpressie. Deze eyecatcher is compacter, voorzien van Galaxy AI en een professionele 50MP camera. Op naar je volgende fotoshoot!

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (3)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (4)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (5)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (6)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (7)

Dun en compact ontwerp

Ga naar Design

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (8) Galaxy Z Flip 6 | Camera & Functies | Samsung BE (9)

We zien het zijaanzicht van een Galaxy Z Flip6 die wordt dichtgeklapt. Hij klapt weer open, draait en de hoek verandert in FlexMode.

FlexCam met Auto Zoom

Ga naar FlexCam

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (10) Galaxy Z Flip 6 | Camera & Functies | Samsung BE (11)

We zien een foto van drie vrienden op het FlexWindow van de Galaxy Z Flip6. Galaxy AI wordt gebruikt om handsfree in te zoomen op de onderwerpen.

Taalbarrières zijn passé

Ga naar Interpreter

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (12)

AI wordt gebruikt om een taal naar een andere taal te vertalen op het hoofdscherm van de Galaxy Z Flip6. Hij draait en de vertaling wordt weergegeven op de FlexWindow.

50MP. Nieuwe camera. Prachtige portretten

Ga naar Camera

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (13) Galaxy Z Flip 6 | Camera & Functies | Samsung BE (14)

Er wordt een foto in een donkere omgeving gemaakt, maar de levendige kleuren en details komen tot hun recht.

Een batterij die de hele dag meegaat

Ga naar Prestaties

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (15) Galaxy Z Flip 6 | Camera & Functies | Samsung BE (16)

We zien een timelapse van een dorps landschap. Het beeld verandert van dag naar nacht op het hoofdscherm van de Galaxy Z Flip6. De capaciteitswaarde neemt toe naar maximaal 4000 milliampère-uur.

  • "De Galaxy Z Flip6 is een echt uithangbord"

    Digital Trends

  • "Geweldige prestaties en goede batterijduur"

    Forbes

DE COMPACTE

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (17)

We zien het zijaanzicht van een Galaxy Z Flip6 die wordt dichtgeklapt. Hij klapt weer open, draait en de hoek verandert in FlexMode.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (18)

ALLESKUNNER

Het nieuwe zwevende design van de Galaxy Z Flip6 is modern, dun en stijlvol. Dit maakt het onze meest compacte smartphone tot nu toe.

Kleurrijk. Vrolijk. Prachtig.

Kies je favoriete kleur of kies uit een van de exclusieve online-kleuren, alleen op samsung.com.

3d 360 viewer Exclusief online

Blue Yellow Mint Silver Shadow Crafted Black Online exclusieve kleuren White Online exclusieve kleuren Peach Online exclusieve kleuren

Standaard hoekinstelling

*Online exclusieve kleuren zijn verkrijgbaar op samsung.com & in de Samsung Shop App

Blue Yellow Mint Silver Shadow Crafted Black Online exclusieve kleuren White Online exclusieve kleuren Peach Online exclusieve kleuren

Standaard hoekinstelling

*Online exclusieve kleuren zijn exclusief verkrijgbaar op samsung.com & Samsung Shop App

Galaxy AI is here op Galaxy Foldables

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (26)

We zien het zijaanzicht van een half dichtgeklapte, compacte Galaxy Z Flip6.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (27)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (28)

Galaxy AI Galaxy Z Flip 6 | Camera & Functies | Samsung BE (29) Galaxy Z Flip 6 | Camera & Functies | Samsung BE (30)

is here op Galaxy Foldables is here op Galaxy Foldables

INTERPRETER

Jouw fantastische vertaler met FlexWindow

Lost in translation? De Galaxy Z Flip6 is jouw persoonlijke vertaler en heft alle taalbarrières op.,

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (31)

We zien een gesprek dat in real time in twee talen wordt getranscribeerd en vertaald.

Tik om te proberen

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (32)

Galaxy AI* transcribeert gesprekken in real time. De vertalingen worden onderaan het scherm weergegeven.

Tik om te proberen

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (33)

De dual screen-knop activeert de Interpreter-app op het coverscherm.

CHAT ASSIST

Chatten op een dichtgeklapte telefoon? Het kan!

Stuur berichten vanaf de FlexWindow met Chat Assist. Je hoeft alleen maar een van de reactie suggesties van context-aware AI te selecteren.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (34)

Er verschijnt een sms-gesprek op de FlexWindow van de Galaxy Z Flip6.

Tap to try

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (35)

Suggested Replies bieden drie mogelijke antwoorden om naar een vriend te sturen. Op basis van het sms-gesprek stemmen de antwoorden in met de suggestie van de vriend om samen te gaan skateboarden.

Jouw scherm, jouw manier

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (36)

We zien de klokinterface op de FlexWindow met een foto van een vrouw en interactieve elementen die de verschillende weertypen vertegenwoordigen.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (37)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (38)

We zien de FlexWindow-klokinterface met interactief groentedesign.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (39)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (40)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (41)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (42)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (43)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (44)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (45)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (46)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (47)

We zien de klokinterface op de FlexWindow met een foto van een vrouw en interactieve elementen die de verschillende weertypen vertegenwoordigen.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (48)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (49)

We zien de FlexWindow-klokinterface met interactief groentedesign.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (50)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (51)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (52)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (53)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (54)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (55)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (56)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (57)

Ontdek de wereld van AI

Circle to Search

Omcirkel een voorwerp of tekst en je krijgt de zoekresultaten van Google.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (58)

Live Translate

Je telefoongesprek wordt in real time vertaald in verschillende apps.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (59)

Transcript Assist

Zet je opgenomen gesprekken in een handomdraai om in bewerkbare tekst.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (60)

50MP. NIEUWE CAMERA. SCHITTERENDE PORTRETTEN

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (61)

Vastgelegd met de Galaxy Z Flip6 #withGalaxy

Mooie portretten in het donker

Maak prachtige foto's bij daglicht, maar ook als de avond valt en zelfs in slecht verlichte omgevingen. Gebruik Nightography met ProVisual Engine om alle details in je foto's tot hun recht te laten komen.

De krachtigste camera op een Galaxy Z Flip tot nu toe, nu met AI

De verbeterde 50MP brede achtercamera verwerkt jouw foto's met behulp van de ProVisual Engine. Het resultaat? Schitterende beelden en portretten!,,,,,

ProVisual Engine

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (62)

achtercamera

  • 50 MP Wide 2x Optical Quality Zoom

  • 12 MP Ultra Wide

FlexCam. Kies je beste angle

FlexCam gebruikt Auto Zoom om je onderwerpen in- of uit te zoomen en geeft een preview op de FlexWindow, zodat je handsfree selfies kunt maken.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (63)

Een foto van drie vrienden wordt weergegeven in het FlexWindow van de Galaxy Z Flip6. Galaxy AI wordt gebruikt om handsfree in te zoomen op de onderwerpen.

Vastgelegd met de Galaxy Z Flip6 #withGalaxy

Schitterende portretten met de achtercamera

Laat degene(n) die je op de foto zet een preview in 50 megapixels zien op de FlexWindow. Maak dan heldere en scherpe portretten, zelfs met tegenlicht.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (64)

Vastgelegd met de Galaxy Z Flip6 #withGalaxy

PHOTO ASSIST

Moeiteloos bewerken met Galaxy AI*

Generative Edit

Laat je creativiteit de vrije loop met Generative Edit voor Photo Assist om objecten te verplaatsen, te vergroten/verkleinen of te verwijderen en vul de lege plekken op achtergrond in.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (65)

Een van de onderwerpen wordt geselecteerd en verplaatst naar een andere plek in de foto. Daarna worden de ontbrekende gedeeltes opgevuld met AI.

Instant Slow-mo

Leg de nadruk op belangrijke momenten door slow motion te gebruiken en deel of bewaar de video.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (66)

De video speelt af. Er wordt getikt op het scherm en het beeld vertraagt om Instant Slow-mo te laten zien.

Vastgelegd met de Galaxy Z Flip6 #withGalaxy

Live Effect

Voeg diepte toe om je foto's een nieuwe dimensie te geven.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (67)

Live Effect wordt toegepast op het onderwerp van een foto voor een 3D-effect.

Galaxy Z Flip's beste batterij tot nu toe

Maak kennis met onze grootste Flip-batterij tot nu toe. Tel daar nog Snapdragon® 8 Gen 3 voor Galaxy bij op en je kunt de hele dag praten, berichtjes sturen of gamen.,

4000 4000 mAh

  • Lang muziek luisteren

    Tot 68 uur

  • Lang video's kijken

    Tot 23 uur

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (68)

De snelste Snapdragon op een Galaxy Z Flip tot nu toe.,

Eerste Vapor Chamber op een Galaxy Z Flip tot nu toe

De Vapor Chamber voert warmte snel af en zorgt ervoor dat je apparaat koel blijft en goed blijft werken.

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (69)

We zien de binnenkant van een Galaxy Z Flip6. De twee sets pijlen staan symbool voor de warmte die uit het apparaat komt.

Waarom overstappen naar een Galaxy?

  • Eenvoudig overstappen van iOS

    Overstappen van iOS is zo eenvoudig! Dankzij Smart Switch kun je je foto's, video's, contacten en apps moeiteloos overzetten.,,

    Ontdek meer

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (70)

  • Moeiteloos delen

    Deel bestanden, gegevens en content met andere apparaten, zoals iOS en PC's. Jouw gegevens beveiligd.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (71)

  • Jouw gegevens beveiligd

    Kijk onder Privacy en veiligheid om te zien welke apps toegang hebben tot je informatie en pas je instellingen aan. En met Advanced Intelligence kun je gegevens voor AI-diensten van je Galaxy-apparaat of in de cloud verwerken.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (72)

Stevig. Betrouwbaar. Bestendig

  • Verstevigde vouwrand

    Verstevigd voor een nog betere bescherming.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (73)

  • Stevig ontwerp

    Maak kennis met onze dunne en innovatieve FlexHinge.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (74)

  • Gehuld in aluminium

    Dankzij het verbeterde Armor Aluminum Frame ben je nog beter beschermd.,

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (75)

  • Supersterk

    Geweldige bescherming met Corning® Gorilla® Glass Victus® 2.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (76)

  • Waterbestendig

    IP48-waterbestendigheid voor onverwachte ongelukjes.

    Galaxy Z Flip 6 | Camera & Functies | Samsung BE (77)

Samsung Care+

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (78)

Gecertificeerde bescherming van Samsung-experts.

Ontdek meer

Try Galaxy op je telefoon

Heb je al kennisgemaakt met het nieuwste Galaxy-apparaat? Probeer het nu, op je huidige telefoon! Scan de QR-code en download om te beginnen.

Ga naar trygalaxy.com

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (79)

Houd je welzijn in de gaten met AI

Koppel de Galaxy Z Flip6 met de splinternieuwe Galaxy Watch Ultra of Galaxy Watch7 om je Energy Score gedurende de dag bij te houden.,

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (80)

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (81)

Samsung Health

Ontdek meer

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (82)

Accessoires

Ontdek meer

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (83)

Veelgestelde vragen

Galaxy Z Fold6

Ontdek meer

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (84)

Ontdek hoe je jouw Galaxy Z Flip6 kunt bemachtigen

Koop nu Reserveer nu Pre-order nu Verkooppunten

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (85)

Bekijk de Galaxy Z Flip6 in AR Openen in AR

Life opens up with Galaxy

Ontdek meer

Galaxy Z Flip 6 | Camera & Functies | Samsung BE (89)

3d 360 viewer Exclusief online

Blue Yellow Mint Silver Shadow Crafted Black Online exclusieve kleuren White Online exclusieve kleuren Peach Online exclusieve kleuren

Standaard hoekinstelling

*Online exclusieve kleuren zijn exclusief verkrijgbaar op samsung.com & Samsung Shop App

Er gaat een hele nieuwe zakelijke wereld voor je open

Ga naar Samsung Business

*De hier vermelde specificaties en beschrijvingen kunnen verschillen van de werkelijke productspecificaties en beschrijvingen. Samsung behoudt zich het recht voor dit document en het product te allen tijde te wijzigen, zonder voorafgaande aankondiging. Alle functies, features, specificaties, GUI en andere productinformatie in dit document wat betreft de voordelen, het design, de prijs, de onderdelen, prestaties, beschikbaarheid en functies van het product kunnen worden gewijzigd zonder voorafgaande waarschuwing.

*Inloggen op je Samsung-account kan vereist zijn voor het gebruik van bepaalde Samsung AI features.

*Samsung doet geen beloftes, toezeggingen of garanties ten aanzien van de nauwkeurigheid, compleetheid of betrouwbaarheid van de output van AI-features.

*Beschikbaarheid van Galaxy AI-features kan variëren, afhankelijk van regio/land, OS/One UI-versie, model en provider.

*Galaxy AI-features zijn tot eind 2025 gratis beschikbaar op ondersteunde Samsung Galaxy-modellen. Voor AI-features van derden kunnen afwijkende voorwaarden van toepassing zijn.

*De AI-service van Galaxy kan beperkt zijn voor minderjarigen in bepaalde regio's met leeftijdsbeperkingen voor AI-gebruik.

  1. In vergelijking met voorgaande Galaxy Z Flip-modellen.
  2. Auto Zoom is beschikbaar in de FlexMode en met de achtercamera. Auto Zoom wordt uitgeschakeld als je de zoominstelling handmatig aanpast. De functie is beperkt bij weinig omgevingslicht en werkt mogelijk niet als het apparaat wordt bewogen of als het onderwerp te dichtbij is.
  3. Voor het gebruik van Interpreter dien je ingelogd te zijn op je Samsung-account. Voor bepaalde talen is het downloaden van een taalpakket vereist. De nauwkeurigheid van resultaten wordt niet gegarandeerd. De beschikbaarheid en ondersteunde functies kunnen verschillen per land, regio of provider. Ondersteunde talen kunnen variëren.
  4. 50MP resolutie is alleen beschikbaar op de brede achtercamera van de Galaxy Z Flip6.
  5. De werkelijke batterijduur is afhankelijk van netwerkomgeving, gebruikte functies en apps, aantal gesprekken en berichten, aantal keren opladen en veel andere factoren. Geschat op basis van het gebruiksprofiel van een gemiddelde/typische gebruiker zoals vastgesteld en onafhankelijk getest door UX Connect Research met de standaardinstellingen van LTE en 5G Sub-6 netwerken.
  6. Dikte gemeten van het boven- naar het onderscherm in opengeklapte stand.
  7. De Interpreter wordt weergegeven op het hoofdscherm en op de FlexWindow, maar deze functie dient handmatig te worden ingeschakeld. Niet uitsluitend beschikbaar op de FlexWindow.
  8. De Suggested Replies-functie heeft een netwerkverbinding nodig om berichten te ontvangen. Wanneer de berichten zijn ontvangen, kan het apparaat ook zonder netwerkverbinding suggesties doen voor een reactie. Suggested Replies wordt alleen ondersteund op de FlexWindow. Beschikbaarheid van de service kan per taal, land en app verschillen. De nauwkeurigheid van resultaten wordt niet gegarandeerd.
  9. Scènes zijn ingekort en gesimuleerd. Resultaten dienen uitsluitend voor illustratieve doeleinden.Gebruikers moeten Android en de Google-app mogelijk updaten naar de nieuwste versie. Werkt op compatibele apps en oppervlakken. Resultaten kunnen verschillen afhankelijk van visuele overeenkomsten. De nauwkeurigheid van resultaten wordt niet gegarandeerd. Circle to Search is niet beschikbaar via de FlexWindow.
  10. Voor het gebruik van Live Translate is een internetverbinding vereist om gespreksberichten te ontvangen. De functie kan zonder internetverbinding vertalen zodra de gespreksberichten door het apparaat zijn ontvangen. Live Translate is alleen beschikbaar op vooraf geïnstalleerde Samsung Phone-apps en op een aantal apps van derden. Voor bepaalde talen is het downloaden van een taalpakket vereist. De nauwkeurigheid van resultaten wordt niet gegarandeerd.
  11. Voor de Transcription- en Summary-features van Transcript Assist is een netwerkverbinding vereist en moet je zijn ingelogd op je Samsung-account. De features van Transcript Assist zijn alleen beschikbaar als je vooraf de Samsung Voice Recorder-app hebt geïnstalleerd of als je de Samsung Phone-app, Samsung Notes-app of Samsung Interpreter-app hebt geïnstalleerd en gebruikt om bestanden op te nemen. Audiobestanden mogen niet langer zijn dan 3 uur om te kunnen worden verwerkt. De samenvattingsfunctie in Transcript Assist kan worden geactiveerd als een bepaald aantal tekens is bereikt. Beschikbaarheid van de service kan per taal verschillen. De nauwkeurigheid van de resultaten wordt niet gegarandeerd.
  12. Resultaten kunnen verschillen afhankelijk van de licht- en/of opnameomstandigheden, zoals bij meerdere personen/objecten, onscherpe instelling of bewegende personen/objecten.
  13. Optical Quality Zoom wordt geactiveerd door de Adaptive Pixel sensor.
  14. 2x zoom moet worden ingeschakeld in de Camera Assistant-appinstellingen. Camera Assistant kan worden gedownload in de Galaxy Store.
  15. AI Zoom wordt toegepast op afstanden tussen digitale zoomafstanden. De nauwkeurigheid van resultaten is niet gegarandeerd.
  16. Voor het gebruik van Generative Edit in Photo Assist is een internetverbinding vereist en moet je zijn ingelogd op je Samsung-account. Als je een foto bewerkt met Generative Edit, krijg je een foto in aangepast formaat tot 12 MP. Er wordt een zichtbaar watermerk over de afbeelding geplaatst om aan te geven dat de afbeelding door AI is gegenereerd. De nauwkeurigheid en betrouwbaarheid van de geleverde output zijn niet gegarandeerd.
  17. Instant Slow-mo voor Photo Assist is beschikbaar op Samsung Video Player en Samsung Gallery. Mogelijk niet beschikbaar voor bepaalde videobestandsformaten. De nauwkeurigheid van resultaten wordt niet gegarandeerd.
  18. De Live Effect-functie voor Photo Assist ondersteunt JPG-, HEIC (HEIF)-, BMP-, PNG- en WebP-bestanden. Mogelijk niet beschikbaar voor het bewerken van bepaalde foto's. De nauwkeurigheid en betrouwbaarheid van de geleverde output zijn niet gegarandeerd.
  19. Producten van het merk Snapdragon zijn producten van Qualcomm Technologies, Inc. en/of haar dochterondernemingen.
  20. Beperkt tot Galaxy foldables.
  21. Gemiddelde waarde zoals getest onder laboratoriumomstandigheden door een externe partij. De gemiddelde waarde is het geschatte rekenkundig gemiddelde, rekening houdend met de verschillen in batterijcapaciteit van de batterijsamples die zijn getest onder de IEC 61960-standaard. De opgegeven (minimum)capaciteit is 3887 mAh voor de Galaxy Z Flip6. De daadwerkelijke levensduur van de batterij kan verschillen afhankelijk van netwerkomgeving, gebruik en andere factoren.
  22. Gebaseerd op testomstandigheden in het interne laboratorium van Samsung met de pre-releaseversies van een bepaald model, verbonden met een koptelefoon via Bluetooth en standaardinstellingen via LTE. Geschat op basis van de batterijcapaciteit en de gemeten stroom bij het batterijverbruik tijdens het afspelen van video's (respectievelijk videoresolutie van 720p, opgeslagen op het toestel) en audio (mp3-bestand, 192 kbps, opgeslagen op het toestel met LCD-scherm uitgeschakeld). De daadwerkelijke afspeelduur van video en audio varieert afhankelijk van de netwerkverbinding, instellingen, bestandsformaat, schermhelderheid, batterijconditie en vele andere factoren.
  23. Voor bekabelde overdrachten van Android™-apparaten geldt dat zowel het versturende apparaat als het ontvangende apparaat voorzien moeten zijn van Android™ 4.3 of hoger. Overdrachten kunnen worden voltooid zonder kabel via een draadloze verbinding. Voor draadloze verbindingen geldt dat zowel het versturende apparaat als het ontvangende apparaat voorzien moeten zijn van Android™ 4.0 of hoger. Open Smart Switch Mobile in Instellingen op het ontvangende Galaxy-apparaat of download de Smart Switch mobiele app in de Galaxy Store. De gegevens, content en apps die kunnen worden overgedragen, kunnen verschillen per overdrachtsmethode.
  24. Voor bekabelde overdrachten van iOS-apparaten geldt dat zowel het ontvangende apparaat voorzien moeten zijn van Android™ 4.3 of hoger en het versturende apparaat van iOS 5 of hoger. Overdrachten kunnen worden voltooid zonder kabel via een draadloze verbinding of iCloud. Voor draadloze verbindingen geldt dat het ontvangende apparaat voorzien moeten zijn van Android™ 4.0 of hoger en het versturende apparaat van iOS 12 of hoger. Voor iCloud-overdrachten geldt dat het ontvangende apparaat voorzien moet zijn van Android™ 4.0 of hoger en het versturende apparaat van iOS 5 of hoger. Open Smart Switch Mobile in Instellingen op het ontvangende Galaxy-apparaat of download de Smart Switch mobiele app in de Galaxy Store. Voor draadloze overdrachten kun je Smart Switch voor iOS downloaden in de App Store op je iPhone of iPad. De gegevens en content die kunnen worden overgedragen, kunnen verschillen per overdrachtsmethode. Contactpersonen, de galerij, video's, agenda's en herinneringen kunnen draadloos worden overgezet van een iOS-apparaat.
  25. We raden aan om een bekabelde verbinding te gebruiken als je meerdere sets gegevens tegelijk overzet.
  26. De Quick Share-functie tussen Galaxy-apparaten is beschikbaar op de volgende besturingssystemen: smartphones en tablets met Android OS-versie 10.0 (Q) en One UI 2.1 of hoger en PC's met Windows 10 of hoger. Voor het gebruik van de functie is het inloggen op een Samsung-account en een Wi-Fi- en Bluetooth-verbinding vereist. Quick Share naar iOS- en Android-apparaten kan worden gebruikt door de gedeelde link te versturen: afzonderlijke bestanden mogen niet groter zijn dan 5 GB (met een totaal van 5 GB per dag) en de link verloopt na twee dagen. Inloggen op een Samsung-account en een netwerkverbinding zijn vereist.
  27. De volume- en zijknoppen en de SIM-kaarthouder behoren niet tot het Armor Aluminum Frame.
  28. In vergelijking met vorige modellen.
  29. De voor- en achterkant van het apparaat zijn voorzien van Corning® Gorilla® Glass Victus® 2.
  30. Het toestel is in het lab getest door het gedurende 30 minuten tot 1,5 meter diep onder te dompelen in zoet water en voor bescherming tegen een solide object groter dan 1 mm, zoals een draad. Gebruik op het strand of in het zwembad niet aanbevolen. De waterbestendigheid van het toestel is niet permanent en kan met de tijd verminderen. Niet stof- en zandbestendig.
  31. Samsung Care+ dekking, type dienstverlening en promotiedetails kunnen verschillen per land/regio en er kunnen servicekosten van toepassing zijn. Om in aanmerking te komen voor Samsung Care+ is registratie vereist. Voor meer informatie over Samsung Care+ kun je kijken op https://www.samsung.com/samsung-care-plus/.
  32. Energy Score is beschikbaar op Android-telefoons (Android 11 of hoger) en vereist de Samsung Health-app (v6.27 of hoger). Inloggen op een Samsung-account is vereist. Om de Energy Score te checken, moeten de welzijnssgegevens die met de Samsung Galaxy Watch zijn bijgehouden, worden gesynchroniseerd met de Samsung Health-app. De activiteits-, slaap- en hartslaggegevens van de vorige dag zijn minimaal vereist. Niet bedoeld voor het gebruik bij de opsporing, diagnosticering en behandeling van medische aandoeningen of ziektes. Het resultaat dient alleen als persoonlijke informatie. Neem contact op met een medische professional voor advies.
  33. De Galaxy Watch Ultra en Galaxy Watch7 zijn apart verkrijgbaar.
  34. Diagonaal gemeten is de schermafmeting van de Galaxy Z Flip6 6,7” als een volledige rechthoek en 6,6'' als je rekening houdt met de afgeronde hoeken. Het eigenlijke weergavegebied is kleiner omwille van de afgeronde hoeken en de camera-uitsparing.
  35. Diagonaal gemeten is de afmeting van het coverscherm van de Galaxy Z Flip6 3,4'' als een volledige rechthoek. Het feitelijke weergavegebied is 95% van de volledige rechthoek door de afgeronde hoeken en de camera-uitsparing.
  36. Bepaalde apps bieden mogelijk geen ondersteuning voor FlexWindow-widgets.
  37. Voor de generatieve content-functie is een netwerkverbinding vereist en dien je in te loggen op een Google-account. De nauwkeurigheid en betrouwbaarheid van de geleverde output zijn niet gegarandeerd. De beschikbaarheid van de functie kan variëren per model.
  38. Photo Ambient heeft een netwerkverbinding nodig om de weersgegevens te ontvangen. De weersgegevens kunnen zonder netwerkverbinding worden weergegeven zodra de gegevens zijn ontvangen door het apparaat. De weergave van de actuele weersomstandigheden kan worden vertraagd, omdat deze informatie is gebaseerd op lokale weersupdates. De functie is mogelijk niet compatibel met foto's die binnen, buiten of in lage resolutie zijn gemaakt. De nauwkeurigheid en betrouwbaarheid van de geleverde output zijn niet gegarandeerd. De functie is momenteel alleen beschikbaar op de Galaxy S24-serie, Galaxy Z Flip6 en Galaxy Z Fold6. De beschikbaarheid van de functie kan variëren per model.

Video’s maken met de 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 | Camera & Functies | Samsung BE (2024)
Top Articles
Fort Worth Star-Telegram from Fort Worth, Texas
Abilene Reporter-News from Abilene, Texas
Katmoie
Team 1 Elite Club Invite
Call Follower Osrs
Notary Ups Hours
Nyuonsite
Shaniki Hernandez Cam
Rochester Ny Missed Connections
Cvs Devoted Catalog
Remnant Graveyard Elf
Housing Intranet Unt
Osrs Blessed Axe
Johnston v. State, 2023 MT 20
Calmspirits Clapper
Hood County Buy Sell And Trade
Jackson Stevens Global
Roster Resource Orioles
Dtab Customs
iZurvive DayZ & ARMA Map
Missed Connections Dayton Ohio
Wgu Academy Phone Number
Aerocareusa Hmebillpay Com
Sunset Time November 5 2022
Craigslist Battle Ground Washington
Craigs List Jonesboro Ar
How To Find Free Stuff On Craigslist San Diego | Tips, Popular Items, Safety Precautions | RoamBliss
Foodsmart Jonesboro Ar Weekly Ad
Jayme's Upscale Resale Abilene Photos
Criglist Miami
Jamielizzz Leaked
Roseann Marie Messina · 15800 Detroit Ave, Suite D, Lakewood, OH 44107-3748 · Lay Midwife
Valley Craigslist
Elijah Streams Videos
Mega Millions Lottery - Winning Numbers & Results
Matlab Kruskal Wallis
Hypixel Skyblock Dyes
Facebook Marketplace Marrero La
The Complete Guide To The Infamous "imskirby Incident"
Pay Entergy Bill
Convenient Care Palmer Ma
Armageddon Time Showtimes Near Cmx Daytona 12
Aita For Announcing My Pregnancy At My Sil Wedding
Ferguson Showroom West Chester Pa
Craigslist Minneapolis Com
[Teen Titans] Starfire In Heat - Chapter 1 - Umbrelloid - Teen Titans
Interminable Rooms
Sea Guini Dress Code
Shannon Sharpe Pointing Gif
Unpleasant Realities Nyt
Escape From Tarkov Supply Plans Therapist Quest Guide
Latest Posts
Article information

Author: Carmelo Roob

Last Updated:

Views: 6249

Rating: 4.4 / 5 (65 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Carmelo Roob

Birthday: 1995-01-09

Address: Apt. 915 481 Sipes Cliff, New Gonzalobury, CO 80176

Phone: +6773780339780

Job: Sales Executive

Hobby: Gaming, Jogging, Rugby, Video gaming, Handball, Ice skating, Web surfing

Introduction: My name is Carmelo Roob, I am a modern, handsome, delightful, comfortable, attractive, vast, good person who loves writing and wants to share my knowledge and understanding with you.