Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (2024)

Galaxy Z Flip6

  • SPECIFICATIONS
  • SUPPORT
  • REVIEWS

Buy now

  • Features
  • Switch to Galaxy
  • Accessories
  • SPECIFICATIONS
  • SUPPORT
  • REVIEWS
Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (1)

Buy now Register now Buy now Where to buy

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (2)

Galaxy AI is here

Your self-expression tool, GalaxyZFlip6, is more compact and eye-catching, with Galaxy AI and a pro-level 50MP camera that's photoshoot-ready.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (3)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (4)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (5)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (6)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (7)

Slim & Compact Design

Jump to Design

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (8) Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (9)

Galaxy Z Flip6 is seen closing from side profile. It re-opens, rotates and its angle changes to FlexMode.

FlexCam with Auto Zoom

Jump to FlexCam

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (10) Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (11)

A photo of three friends is seen from Galaxy Z Flip6's FlexWindow. Galaxy AI is used to zoom in on the subjects hands-free.

Join the Global Conversation

Jump to Interpreter

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (12)

AI is used to translate one language into another on the main screen of Galaxy Z Flip6. It rotates and the translation is seen on the FlexWindow.

50MP. New Camera. Stunning Portraits

Jump to Camera

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (13) Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (14)

A photo is taken in low light but vivid colours and details are captured.

All-day Battery Life

Jump to Performance

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (15) Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (16)

A time lapse of a town landscape is seen going from day to night on the main screen of Galaxy Z Flip6 as the battery's capacity number increases to a maximum of 4000 milliampere hours.

  • "Galaxy Z Flip6 adds true flagship power"

    Digital Trends

  • "Great performance and good battery life"

    Forbes

MOST COMPACT

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (17)

Galaxy Z Flip6 is seen closing from side profile. It re-opens, rotates and its angle changes to FlexMode.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (18)

BIG IMPACT

GalaxyZFlip6's new floating design is modern, slim and sleek, creating our most compact smartphone yet.

Colourful. Joyful. Wonderful

Find your favourite colour.

3d 360 viewer Online Exclusive

Blue Yellow Mint Silver Shadow

Angle Preset

Blue Yellow Mint Silver Shadow

Angle Preset

Galaxy AI is here on Galaxy Foldables

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (23)

A half-closed compact Galaxy Z Flip6 is seen from side view.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (24)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (25)

Galaxy AI Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (26) Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (27)

is here on Galaxy Foldables is here on Galaxy Foldables

INTERPRETER

Your superior interpreter experience with FlexWindow

Lost in translation? GalaxyZFlip6 is your passport to communication — working as your personal interpreter.,

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (28)

A conversation in two languages is transcribed and translated in real time.

Tap to try

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (29)

Galaxy AI transcribes conversations in real-time. Translations of each language appear as texts on the screen.

Tap to try

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (30)

The dual screen button activates the Interpreter app from the cover screen.

CHAT ASSIST

Chat flows, even when closed

Send messages directly from the FlexWindow with Chat Assist. Just select from one of the Suggested Replies — curated by context-aware AI.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (31)

Text message conversation appears on the FlexWindow of Galaxy Z Flip6.

Tap to try

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (32)

Suggested Replies provides three potential responses to send to a friend. Based on the text conversation, the responses agree to the friend's suggestion of going skateboarding together.

Your window, your way

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (33)

FlexWindow clock interface featuring a photo of a woman with interactive elements depicting various different types of weather.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (34)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (35)

FlexWindow clock interface with interactive vegetable design.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (36)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (37)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (38)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (39)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (40)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (41)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (42)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (43)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (44)

FlexWindow clock interface featuring a photo of a woman with interactive elements depicting various different types of weather.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (45)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (46)

FlexWindow clock interface with interactive vegetable design.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (47)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (48)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (49)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (50)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (51)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (52)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (53)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (54)

Chat with Google Gemini to supercharge your ideas

Thanks to Samsung's longstanding partnership with Google, your Galaxy now comes with the Google Gemini app. Chat with Gemini to get help learning in new ways, writing thank you notes, planning events and more.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (55)

Dive into the world of AI

Circle to Search

Simply circle an object or text to get Google Search results.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (56)

Live Translate

Get real-time voice translation on various apps when you make a call.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (57)

Transcript Assist

Transcribe your recorded conversations into editable text in a flash.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (58)

50MP. NEW CAMERA. STUNNING PORTRAITS

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (59)

Captured by GalaxyZFlip6 #withGalaxy

Night-time portraits are lit

Capture stunning shots during the day but also at night — and even in dimly lit areas. Use Nightography to ensure every photo shines with detail, thanks to ProVisual Engine.

The most powerful camera on a GalaxyZFlip, now with AI

The upgraded 50MP wide rear camera processes your pics through the ProVisual Engine to capture stunning scenes and richer portraits.,,,,,

ProVisual Engine

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (60)

rear camera

  • 50MP Wide 2x Optical Quality Zoom

  • 12MP Ultra Wide

FlexCam. Capture your best angle

FlexCam uses Auto Zoom to either zoom in or out on subjects, and provides a preview on the FlexWindow for a hands-free selfie experience.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (61)

A photo of three friends is seen from Galaxy Z Flip6's FlexWindow. Galaxy AI is used to zoom in on the subjects hands-free.

Captured by GalaxyZFlip6 #withGalaxy

Rear cam portraits hit different

Use the FlexWindow to give your subjects a preview as you take their photo in 50 megapixels. Then, snap a pic to capture bright and detailed portraits even when backlit.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (62)

Captured by GalaxyZFlip6 #withGalaxy

PHOTO ASSIST

Effortless editing. Courtesy of Galaxy AI

Generative Edit

Tap into your creativity with Generative Edit for Photo Assist to move, resize or delete whole objects from your photos and fill in the background where they used to be.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (63)

One of the subjects is selected and moved to another place in the picture. Missing areas are filled in using AI.

Instant Slow-mo

Put focus on key moments by applying slow motion to your videos and share or save it.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (64)

The video plays and starts to slow down when the screen is tapped to show Instant Slow-mo.

Captured by GalaxyZFlip6 #withGalaxy

Live Effect

Add depth to give your pics all-new life.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (65)

Live Effect is applied to the subject of a photo to give a 3D effect.

GalaxyZFlip's longest lasting battery

Meet our biggest Flip battery ever. Paired with Snapdragon® 8 Gen 3 for Galaxy, you can talk, text or game to your heart's content — all day long.,

4000 4000 mAh

  • Listen to music up to

    68 hrs

  • Watch videos up to

    23 hrs

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (66)

The fastest Snapdragon on a GalaxyZFlip yet,

First ever Vapor Chamber on a GalaxyZFlip

Keep things cool, calm and running smoothly with a Vapor Chamber that dissipates heat quickly.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (67)

The inside of a Galaxy Z Flip6 is seen with two sets of arrows coming out of it to represent heat flowing away from it.

Why switch to the Galaxy

  • Simple switching from iOS

    Switching from iOS is so easy! Thanks to Smart Switch, you can transfer your photos, videos, contacts and apps effortlessly.,,

    Learn more

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (68)

  • Seamless sharing

    Send files, data and content between devices, including iOS and PCs. It's a quick and secure way to openly share.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (69)

  • Your privacy. Secured.

    In Privacy and Security, quickly see which apps are accessing your information, then customize your settings. Plus, with Advanced Intelligence features, you can process data for AI services from your Galaxy device or on the cloud.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (70)

Durable. Reliable. Built to last

  • Reinforced Folding Edge

    Fortified to withstand more pressure.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (71)

  • Engineered for endurance

    Meet our slim and innovative FlexHinge.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (72)

  • Shielded in aluminium

    Enhanced Armor Aluminium Frame keeps you protected.,

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (73)

  • Truly tough

    Great protection with Corning® Gorilla® Glass Victus® 2.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (74)

  • Stay water-resistant

    IP48 water-resistance for those unexpected spills.

    Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (75)

Samsung Care+

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (76)

Certified care by Samsung experts.

Learn more

Try Galaxy on your phone

Experienced the newest Galaxy device yet? How about trying it out now? On your phone! Simply scan the QR code and download to begin.

Go to trygalaxy.com

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (77)

Keep close, accurate tabs on your well-being with AI

Pair GalaxyZFlip6 with the all-new Galaxy Watch Ultra or Galaxy Watch7 to track your Energy Score throughout the day.,

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (78)

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (79)

Samsung Health

Learn more

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (80)

Changes start from small steps

Our goal is a more sustainable future.

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (81)

Accessories

Explore more

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (82)

Frequently Asked Questions

GalaxyZFold6

Learn more

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (83)

Check out smart ways to get your GalaxyZFlip6

Buy now Register now Buy now Where to buy

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (84)

See GalaxyZFlip6 in AR Open in AR

Life opens up with Galaxy

Explore more

Samsung Galaxy Z Flip6 | Galaxy AI | Samsung South Africa (88)

3d 360 viewer Online Exclusive

Blue Yellow Mint Silver Shadow

Angle Preset

Unfold a new era of business

Go to Samsung business

*All specifications and descriptions provided herein may be different from the actual specifications and descriptions for the product. Samsung reserves the right to make changes to this document and the product described herein, at anytime, without obligation on Samsung to provide notification of such change. All functionality, features, specifications, GUI and other product information provided in this document including, but not limited to, the benefits, design, pricing, components, performance, availability and capabilities of the product are subject to change without notice or obligation. The contents within the screen are simulated images and are for demonstration purposes only.

*Samsung Account login may be required to use certain Samsung AI features.

*Samsung does not make any promises, assurances or guarantees as to the accuracy, completeness or reliability of the output provided by AI features.

*Availability of Galaxy AI features may vary depending on the region/country, OS/One UI version, device model, and phone carrier.

*Galaxy AI features will be provided for free until the end of 2025 on supported Samsung Galaxy devices. Different terms may apply for AI features provided by third parties.

*Galaxy AI service may be limited for minors in certain regions with age restrictions over AI usage.

  1. Compared to previous GalaxyZFlip models.
  2. Auto Zoom is available in FlexMode using the rear camera and will disengage if the zoom is manually adjusted. Limited in low-light conditions. May not work if the device is moving or if the subject is too close.
  3. Interpreter feature requires Samsung Account login. Certain languages may require language pack download. Service availability may vary by language. Accuracy of results is not guaranteed. Availability and supported features may vary by country, region or carrier. Availability of supported languages may vary.
  4. 50MP resolution is available on GalaxyZFlip6’s rear wide camera only.
  5. Actual battery life may vary by network environment, features and apps used, frequency of calls and messages, the number of times charged, and many other factors. Estimated against the average usage profile compiled and independently assessed by UX Connect Research under default settings using LTE and 5G Sub6 networks.
  6. Thickness measured from top to bottom of the glass when unfolded.
  7. Colour availability may vary depending on country or carrier.
  8. Interpreter can be viewed from both the Main Screen and FlexWindow but this function must be manually enabled. Not available solely on the FlexWindow.
  9. Suggested Replies feature requires network connection to receive messages. It can suggest replies without network connection once the messages are received by the device. Samsung Account login required. Suggested Replies feature is only supported from the FlexWindow. Service availability may vary by language, country and app. Accuracy of results is not guaranteed.
  10. Sequences shortened and simulated. Results for illustrative purposes only. Service availability may vary by country, language, device model. Requires internet connection and Google Account login. Users may need to download or update Google Gemini app to the latest version. Check responses for accuracy. Gemini is a trademark of Google LLC. Gemini opt-in is rolling out to select devices and countries — opt in to Gemini from your Google Assistant or by downloading the Gemini app. Product functionality may be dependent on app and device settings. Some functions may not be compatible with certain apps. Accuracy of results is not guaranteed. Feature availability may vary by content.
  11. Sequences shortened and simulated. Results for illustrative purposes only. Service availability may vary by country, language, device model. Requires internet connection. Users may need to update Android and Google app to the latest version. Works on compatible apps and surfaces. Results may vary depending on visual matches. Accuracy of results is not guaranteed. Circle to Search is not available via the FlexWindow.
  12. Live Translate feature requires network connection to receive call messages. It can translate without network connection once the call messages are received by the device. Samsung Account login required. Live Translate feature is only available on pre-installed Samsung Phone apps and some third-party apps. Service availability may vary by language or region. Certain languages may require language pack download. Accuracy of results is not guaranteed.
  13. Transcription and Summary features for Transcript Assist require a network connection and Samsung Account login. Features for Transcript Assist only available on the pre-installed Samsung Voice Recorder app or files recorded using the pre-installed Samsung Phone app, Samsung Notes app or Samsung Interpreter app. Voice recording feature in the pre-installed Samsung Phone app may not be supported in some countries. Audio files must be under 3 hours in duration to be processed. Summarizing feature for Transcript Assist can be activated when a certain number of characters is met. Service availability may vary by language. Accuracy of results is not guaranteed.
  14. Results may vary depending on light condition and/or shooting conditions including multiple subjects, being out of focus or moving subjects.
  15. Optical quality zoom is enabled by the Adaptive Pixel sensor.
  16. 2x zoom must be enabled in the Camera Assistant app settings. Camera Assistant can be downloaded from the Galaxy Store.
  17. AI Zoom is applied to distances between digital zoom lengths. Accuracy of results is not guaranteed.
  18. Generative Edit feature for Photo Assist requires a network connection and Samsung Account login. Editing with Generative Edit may result in a resized photo up to 12MP. A visible watermark is overlaid on the image output upon saving in order to indicate that the image is generated by AI. The accuracy and reliability of the generated output is not guaranteed.
  19. Instant Slow-mo feature for Photo Assist is available on Samsung Video Player and Samsung Gallery. May not be available on certain video file types. Accuracy of results not guaranteed.
  20. Live Effect feature for Photo Assist supports JPG, HEIC (HEIF), BMP, PNG and WebP files. May not be available on certain photos. The accuracy and reliability of the generated output is not guaranteed.
  21. Snapdragon branded products are products of Qualcomm Technologies, Inc. and/or its subsidiaries.
  22. Limited to Galaxy foldable smartphones.
  23. Typical value tested under third-party laboratory condition. Typical value is the estimated average value considering the deviation in battery capacity among the battery samples tested under IEC 61960 standard. Rated capacity is 3887mAh for GalaxyZFlip6. Actual battery life may vary depending on network environment, usage patterns and other factors.
  24. Based on Samsung internal lab test conditions with pre-release version of given model connected to earphone via Bluetooth under default settings over LTE. Estimated against battery capacity and measured current over battery power consumption during video playback (video file resolution 720p, saved on device) and audio playback (mp3 file, 192kbps, saved on device with LCD display turned off), respectively. Actual video and audio playback times vary by network connection, settings, file format, screen brightness, battery condition and many other factors.
  25. Wired transfers from Android™ devices require the receiving device to have Android™ 4.3 or later and the sending device to have Android 4.3™ or later. Transfers can be completed without a cable through a wireless connection. For wireless connections, the receiving device must have Android™ 4.0 or later and the sending device must have Android™ 4.0 or later. Open Smart Switch Mobile in “Settings” on the receiving Galaxy device or download the Smart Switch Mobile app from the Galaxy Store. Data, content and apps available for transfer may vary by transmission method.
  26. Wired transfers from iOS require the receiving device to have Android™ 4.3 or later and the sending device to have iOS 5 or later. Transfers can be completed without a cable through a wireless connection or iCloud. For wireless connections, the receiving device must have Android™ 4.0 or later and the sending device must have iOS 12 or later. iCloud transfers require the receiving device to have Android™ 4.0 or later and the sending device to have iOS 5 or later. Open Smart Switch Mobile in “Settings” on the receiving Galaxy device or download the Smart Switch Mobile app from the Galaxy Store. For wireless transfers, download Smart Switch for iOS from the App Store on your iPhone or iPad. Data, content and apps available for transfer may vary by transmission method. Contacts, gallery, videos, calendars and reminders can be transferred wirelessly from an iOS device.
  27. It is recommended to use a wired connection when transferring diverse sets of data at once.
  28. Quick Share feature between Galaxy devices available with the following OS: smartphones and tablets with Android OS version 10.0 (Q) and One UI 2.1 or above, PCs running Windows 10 or later. Requires Samsung Account login and Wi-Fi and Bluetooth connection. Quick Share to iOS and Android devices available by sending shared link: individual files shared cannot exceed 5GB (for a total of 5GB per day) and link will expire after two days; requires a Samsung Account login and internet connection.
  29. Armor Aluminium Frame does not include volume and side keys or SIM tray.
  30. Compared to previous models.
  31. Corning® Gorilla® Glass Victus® 2 is applied to the front and rear of the device.
  32. Based on lab test conditions for submersion in up to 1.5 meters of freshwater for up to 30 minutes and for protection against a solid object greater than 1mm such as a wire. Not advised for beach or pool use. Water resistance of device is not permanent and may diminish over time because of normal wear and tear. Not dust- or sand-resistant.
  33. Samsung Care+ coverage, service type and promotion details may vary by country/region and deductible (service fee) may apply. To be eligible for Samsung Care+ promotion benefit, registration may be required. For detailed Samsung Care+ information, please visit https://www.samsung.com/samsung-care-plus/.
  34. Energy Score is available on Android phones (Android 11 or above) and requires Samsung Health app (v6.27 or above). Samsung Account login required. Service availability may vary by country or region. To check the Energy Score, the health data tracked from Samsung Galaxy Watch or Samsung Galaxy Ring must be synchronized with the Samsung Health App. Needs at least the previous day’s activity data and sleep, and heart rate data during sleep. Not intended for use in detection, diagnosis, treatment of any medical condition. The result is for your personal reference only. Please consult a medical professional for advice.
  35. Galaxy Watch Ultra and Galaxy Watch7 devices sold separately.
  36. Measured diagonally, GalaxyZFlip6's Main Screen size is 6.7” in the full rectangle and 6.6” accounting for the rounded corners; actual viewable area is less due to the rounded corners and camera hole.
  37. Measured diagonally, GalaxyZFlip6's Cover Screen size is 3.4” in the full rectangular form; actual viewable area is approximately 95% of the full rectangular area due to the rounded corners and lower cutout.
  38. Certain applications may not support FlexWindow widgets.
  39. Generative content features require a network connection and Google Account login. The accuracy and reliability of the generated output is not guaranteed. Feature availability may vary by model.
  40. Photo Ambient feature requires network connection to receive the weather data. It can reflect the weather data without network connection once the data is received by the device. Reflection of real-time weather conditions may be delayed as service relies on local weather information updates. Certain indoor, night-time and low-resolution photos may not be compatible. The accuracy and reliability of the generated output is not guaranteed. Service is currently only available on Galaxy S24 Series, GalaxyZFlip6 and GalaxyZFold6. Feature availability may vary by model.

How-to videos for Galaxy Z Flip6

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

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

FAQs

How much is Z Flip 4 in South Africa? ›

The Samsung Galaxy Z Fold 4 5G costs between R14000 - R20000 in South Africa.

How much is the Samsung Z Flip 6? ›

Buy Samsung Galaxy Z Flip 6 Online In Nigeria At ₦1,727,000 - Best Prices, Fast Delivery, Secure Payment And Fast Support - Rifugio Nigeria.

What makes the Samsung Galaxy Z Flip6 convenient to put into your pocket more than any normal smartphone? ›

MOST COMPACT

Galaxy Z Flip6 is seen closing from side profile. It re-opens, rotates and its angle changes to FlexMode. Galaxy Z Flip6's new floating design is modern, slim and sleek, creating our most compact smartphone yet.

When did the Samsung Galaxy Z Flip 6 come out? ›

The Galaxy Z Flip 6 is up for preorder now with a release date of July 24.

How much is the Samsung Z Fold 5 in South Africa? ›

No Deposit. Only R16499.50 on your next two paycheques. Interest free.

In which country Samsung Z Flip 4 is cheapest? ›

Malaysia is the cheapest country in the world to buy the Galaxy Z Fold 4 and Flip 4.

Will the Samsung Flip 6 have AI? ›

And Samsung is onboard, with its just-launched clamshell-style foldable phone, the Samsung Galaxy Z Flip 6. New AI features, an improved camera and better battery life have given the new iteration spiffy upgrades compared to its predecessor.

Is the Z Flip 6 waterproof? ›

It has an IP48 rating for dust and water resistance, meaning it can be submerged under 1.5 meters of water for up to 30 minutes. But it's the first number in that rating that is particularly exciting. The "4" in the IP-rating means that the Flip 6 can resist solid objects greater than one millimeter.

How long does the Z Flip 6 battery last? ›

16 hours, 20 minutes

Is Z Flip 6 dual SIM? ›

Samsung Galaxy Z Flip6 5G FAQs:

Yes, the Samsung Galaxy Z Flip6 5G is to be a dual SIM phone.

Which is better, iPhone or Samsung? ›

Samsung might be your best choice if you value advanced camera technology, extensive customization, and cutting-edge display capabilities. For users who prioritize a streamlined user experience, robust data security, and tight integration across devices, Apple stands out as the top option.

How many times can I fold z flip 6? ›

The Z Assurance branding also says that the Z Fold 6 and Flip 6 can withstand 200,000 folds over their lifetime, the same number as last year's models. We're in the process of testing both phones now. Check back soon to see if they're worth the big bucks in our full reviews.

How many years will the Samsung flip last? ›

Lasting 200,000 folds in testing means the hinge can withstand 100 folds a day for 5 years. The lifespan has been measured according to Samsung's quality standards. Applying too much pressure or pressing with a sharp object may cause damage to your device.

When did Flip 5 come out? ›

August 11, 2023

How much is Z Fold 4 in South Africa? ›

The Samsung Galaxy Z Fold 4 5G costs between R19000 - R30000 in South Africa.

How much is Z Fold 3 in South Africa? ›

A new Samsung Galaxy Z Fold 3 5G costs around R35,000.

How much is Samsung Z Fold 2 in South Africa? ›

How much does the Samsung Galaxy Z Fold 2 cost in South Africa? A new Samsung Galaxy Z Fold 2 costs between R16,999 - R19,999 in South Africa.

How many years will the Z Flip 4 last? ›

3. How long will the Galaxy Flip 4 last? It has ultra-thin glass, which can do more than 200,000 flips which means if you flip 100 times a day, the Galaxy Flip 4 will last for approximately 5 years.

Top Articles
Latest Posts
Article information

Author: Horacio Brakus JD

Last Updated:

Views: 6261

Rating: 4 / 5 (71 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Horacio Brakus JD

Birthday: 1999-08-21

Address: Apt. 524 43384 Minnie Prairie, South Edda, MA 62804

Phone: +5931039998219

Job: Sales Strategist

Hobby: Sculling, Kitesurfing, Orienteering, Painting, Computer programming, Creative writing, Scuba diving

Introduction: My name is Horacio Brakus JD, I am a lively, splendid, jolly, vivacious, vast, cheerful, agreeable person who loves writing and wants to share my knowledge and understanding with you.