Showroom | Galaxy Z Flip4 | Samsung US (2024)

Welcome to the showroom

Your hands-on tour starts here.

SHOW ME EVERYTHING

PRE-REGISTER PRE-ORDER NOW BUY NOW WHERE TO BUY

All done!

You're a Galaxy Z Flip4 expert now! Let's get it in your hands.

BUY NOWPRE-REGISTRATIONPRE-ORDER NOWWHERE TO BUY

All done!

You're a Galaxy Z Flip4 expert now! How about checking out Galaxy Z Fold4?LEARN MORE

Get a good look

360°
Compare
AR
AR

Features to flip for

  • FlexCam
  • Quick Shot
  • Custom Cover Screen
  • Galaxy Watch5

Upgrading never felt so good

  • Smart Switch
  • Samsung Trade-in
  • Samsung Care+
  • Why Galaxy

SEE IN 360°This phone's got only good angles

COMPARE

Stands on its own while standing apart

*Online exclusive colors only available on Samsung.com.

Find your trade-in value

FLEXCAMGo ahead, flex your photo skills

*Video simulated for illustrative purposes. Actual UI may be different.

Showroom | Galaxy Z Flip4 | Samsung US (14)

Galaxy Z Flip4 unfolded and seen from the Main Screen with the camera interface open. It shows a preview of three friends posing for a photo. The phone folds to a 90 degree angle for FlexCam. In FlexCam, the camera control panel takes up the bottom half of the screen. Tapping the Wide Selfie Mode button widens the camera angle from the default Selfie Mode. In the upper portion of the panel, the timer button is tapped. Then, a time is chosen. When the shutter button is tapped, a countdown begins on the preview screen before a photo is taken. The Gallery icon is tapped and the photo is opened in the Gallery app, which features a Flex Mode Touchpad on the lower portion of the screen.

QUICK SHOTSo many ways to selfie

*Video simulated for illustrative purposes. Actual UI may be different.

Showroom | Galaxy Z Flip4 | Samsung US (15)

Galaxy Z Flip4 folded and seen from the Cover Screen. The Power key on the side of the phone is pushed twice and the preview of the camera appears inside the Cover Screen. It's a selfie. Then, a swipe across the Cover Screen changes the camera mode from Photo to Portrait. The Cover Screen is tapped to take the picture. A countdown begins and the photo is taken. The phone is unfolded and the photo is seen inside the Gallery app.

CUSTOM COVER SCREENPut your style on display

*Video simulated for illustrative purposes. Actual UI may be different.

Showroom | Galaxy Z Flip4 | Samsung US (16)

Galaxy Z Flip4 unfolded and seen from the Main Screen with the Settings menu open. It scrolls down to and taps Cover screen in the menu. In Cover screen settings, Clock style is tapped and opens the customization page. Different basic clock interfaces can be seen. Clock background image is tapped, then Choose from Gallery, and then a photo is selected from a gallery of photos available before tapping Done. The photo is resized by pinching and cropped as desired. After tapping Confirm, the edited image is applied to the Cover Screen preview. The clock face configuration and location is changed under Basic options. The Customize button is tapped. Text color is selected from a color swatch. When selections are complete, Done is tapped. Galaxy Z Flip4 closes and is seen from the Cover Screen with the newly created custom Cover Screen.

GALAXY WATCH5Better rest is all in the wrist

*Video simulated for illustrative purposes. Actual UI may be different.

*Product and feature availability may vary by country or regions. Galaxy Watch5 must be paired with a Galaxy mobile device. Requires Samsung Galaxy Phone with Android 8.0, minimum 1.5GB RAM and Samsung Health app version 6.22.1 or later. Intended for general wellness and fitness purposes only. Not intended for use in detection, diagnosis, treatment of any medical condition or disease. The measurements are for your personal reference only. Please consult a medical professional for advice.

Showroom | Galaxy Z Flip4 | Samsung US (17)

A Galaxy Watch5 seen from its watch face. On its display is a message on Samsung Health's Sleep coaching feature. 8:30 A.M. Sleep score 75. You slept well. The watch backs away to be seen next to a Galaxy Z Flip4 open to the Main Screen showing the Samsung Health app. In its menu, Sleep coaching is tapped and opens the Sleep coaching page. It indicates that the user has completed the sleep coaching program and shows an illustrated lion with confetti. A matching interface is shown on the watch face. The View final analysis button is tapped on the smartphone screen. The watch exits the view and the Galaxy Z Flip4 Main Screen shows the Sleep analysis results. Scrolling down the page, more data is seen including progress, sleep score, total sleep time, and bedtime and wake-up time.

Journey Tracker

SEE NEXT FEATURE

Buy NowPre-RegistrationPRE-ORDERWhere To Buy

Get a good look

    Features to flip out about

      More Galaxy to explore

      Galaxy Z Fold4Check it out

      Upgrading never felt so good

        Go to Galaxy Z Fold4

        Showroom | Galaxy Z Flip4 | Samsung US (19)

        Make the Smart Switch

        EXPLORE MORE

        Showroom | Galaxy Z Flip4 | Samsung US (20)

        Your Galaxy. Your way.

        Galaxy devices give you more ways to connect and the freedom to make your experience exactly how you want it.

        EXPLORE MORE

        Showroom | Galaxy Z Flip4 | Samsung US (21)

        Galaxy Z Flip4 for business

        Your team will flip for this phone.
        Get up to $900 enhanced trade-in credit per device and exclusive volume discounts with a Samsung Business Account.

        BUY NOW FOR BUSINESS Learn more

        Showroom | Galaxy Z Flip4 | Samsung US (22)

        - High bandwidth mode- Low bandwidth mode

        θ Trade –in Program. On Samsung.com/Shop Samsung App, pre-order or purchase a new qualifying Galaxy device (“Qualifying Purchase”), send in your qualifying trade-in device to Samsung through the Samsung Trade-In Program, and if Samsung determines your trade-in device meets all eligibility requirements, you will receive a trade-in credit specific to your qualifying trade-in device to apply toward your Qualifying Purchase. Trade-in offer good on an eligible smartphone in good working condition that meets all criteria for the current trade-in offer. [go to Samsung.com and the Shop Samsung App for a list of eligible devices and approximate trade-in value]; eligible models and amounts may change at Samsung’s sole discretion. Upon trade-in of an eligible phone, customer will receive a discount at check-out towards the purchase of a qualifying Samsung Galaxy device, exclusive of applicable taxes. Not all phones are eligible for trade-in and trade-in value may vary. Customer must own trade-in phone and is responsible for removing data from the trade-in device. Samsung reserves the right to refuse any trade-in or to limit quantities for any reason. Cannot combine with other offers or discounts. Limit one trade-in per customer. Check additional trade-in information at Samsung.com or the Shop Samsung App. Additional terms, including terms that govern the resolution of disputes, apply, click here and to see the full Standard Limited Warranty, click here.

        ⊕ 0% APR for 12, 18, 24, 36, 40 or 48 Months with Equal Payments: Available on purchases of select products charged to a Samsung Financing account. Minimum purchase: $50. 0% APR from date of eligible purchase until paid in full. Estimated monthly payment equals the eligible purchase amount multiplied by a repayment factor and rounded down to the nearest penny (repayment factors: .08333 for 12 month, .05556 for 18 month, .04167 for 24 month, .02778 for 36 month, .02500 for 40 month, .02083 for 48 month). Last payment may vary due to rounding. Total amount of payments will not exceed eligible purchase amount. Other transactions and fees affect overall minimum payment amount. Advertised payment amount, if any, is an estimate and may change once taxes, delivery or other charges are added. Limited time offer. Regular account terms apply to non-promo purchases. Standard Purchase APR: 29.99%. Minimum interest charge: $1. Prior purchases excluded. Account must be in good standing. Subject to credit approval. Samsung Financing account issued by TD Bank, N.A.

        Z 8/26 - 9/11, while supplies last, purchase a Samsung Galaxy Z Flip4 device ("Qualifying Purchase") on Samsung.com or in the Shop Samsung App and receive a $50 Samsung Credit ("Gift"). You must use the Gift at checkout toward the purchase of additional eligible products, on Samsung.com or in the Shop Samsung App, while supplies last. Gift is a one-time use e-certificate; when first used, any value not used is lost. The Gift is non-transferable and limited to 1 per Qualifying Purchase. If you return or cancel your purchase, the discount will be forfeit. Samsung reserves the right to modify or discontinue offers at any time by posting a notice on the app or website. Void where prohibited or restricted by law.

        *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.

        † For a limited time only, on Samsung.com/us/business, pre-order or purchase a new qualifying Galaxy device (“Qualifying Purchase”), send in your qualifying trade-in device to Samsung through the Samsung Business Trade-In Program and, if Samsung determines your trade-in device meets all eligibility requirements, you will receive a trade-in credit specific to your qualifying trade-in device applied to the payment account you used for your purchase five to seven days after Samsung accepts the trade-in device. Device models that currently qualify for trade-in and trade-in credit amounts associated with those models are available on Samsung.com/us/business; eligible models and amounts may change at Samsung’s sole discretion. To be eligible for trade-in, your qualifying device must meet all Business Trade-In Program eligibility requirements, which include, but are not limited to, that the device powers on, holds a charge, and does not power off unexpectedly; has a functioning display; has no breaks or cracks in the screen (unless a cracked screen offer applies); has no breaks or cracks in the case; has no liquid damage (whether visible or not); has no other defects that go beyond normal wear and tear; is not on a black list; has a verified FCC ID; has been reset to factory settings; has all personal information removed; has all software locks disabled; and is owned by you (leased devices are not eligible). Participation in this program does not excuse you from contracts with your carrier or retailer (or any related payments or fees) for the device that was traded in. Limit 1 trade-in per Qualifying Purchase. Samsung reserves the right to modify or discontinue this offer at any time. The Business Trade-In Program cannot be combined with any other Samsung, carrier or retailer promotions, discounts, or offers unless specifically provided for in the terms and conditions of such offers. Additional terms apply and are located at https://www.samsung.com/us/business/shop/trade-in/terms-and-conditions/, including terms that govern the resolution of disputes, apply.

        '); var $btnClose = null; var _isShow = false; var _isDisabledClose = false; var _getIsShow = function _getIsShow() { return _isShow; }; var _init = function _init(options) { _options = options; $modalContainer.insertAfter("#contents"); var $originContents = $(".modal-origin-features"); $modalContainer.html($originContents.html()); $originContents.remove(); $btnClose = $modalContainer.find(".btn-close"); $btnClose.off("click.modalHide").on("click.modalHide", _close); _accessibillity.inactive(); }; var _open = function _open() { _options.onBeforeOpen && _options.onBeforeOpen(); _isShow = true; $modalContainer.addClass("show"); _accessibillity.active(); $('html').addClass('is-modal-opened'); if (GALAXY.sizeMode > 2) { $btnClose.focus(); } _options.onAfterOpen && _options.onAfterOpen(); }; var _close = function _close() { _isShow = false; $modalContainer.removeClass("show"); _accessibillity.inactive(); $('html').removeClass('is-modal-opened'); $('#QSIFeedbackButton-btn').css('width', '37px'); _options.onAfterClose && _options.onAfterClose(); }; var _disabledClose = function _disabledClose(disabled) { if (disabled) { $btnClose.attr("disabled", disabled).attr(HIDDEN_ARIA); } else { $btnClose.attr("disabled", disabled).removeAttr(REMOVE_HIDDEN_ARIA); } _isDisabledClose = disabled; }; var _accessibillity = { active: function active() { $modalContainer.attr("aria-hidden", "false").css("visibility", "visible"); $("body").off("keydown.closeFeatureModal").on("keydown.closeFeatureModal", function (e) { if (!_options.isOpenGNB() && _isShow && !_isDisabledClose && (e.key == "Escape" || e.keyCode == 27)) { $btnClose.focus(); } }); }, inactive: function inactive() { $modalContainer.attr("aria-hidden", "true").css("visibility", "hidden"); $("body").off("keydown.closeFeatureModal"); }, activeOpenButton: function activeOpenButton() { $btnClose.attr("aria-hidden", "false").css("visibility", "visible"); }, inactiveOpenButton: function inactiveOpenButton() { $btnClose.attr("aria-hidden", "true").css("visibility", "hidden"); } }; return { init: _init, open: _open, close: _close, disabledClose: _disabledClose, isShow: _getIsShow, activeOpenButton: _accessibillity.activeOpenButton, inactiveOpenButton: _accessibillity.inactiveOpenButton };}function sNavigator() { var _currentHash = null; var _options = {}; var $navigatorContents = null; var $btnPrev = null; var $btnNext = null; var _init = function _init(options) { _options = options; $navigatorContents = $(".modal-showroom .navigator"); $btnPrev = $navigatorContents.find(".btns.prev"); $btnNext = $navigatorContents.find(".btns.next"); }; var _renderNavigator = function _renderNavigator(tobeHash) { _currentHash = tobeHash; var prevData = _options.storage.getPrevData(_currentHash); var prevOmni = $btnPrev.data("omni"); if (prevData) { prevOmni = prevOmni.replace("{device}", _options.device); prevOmni = prevOmni.replace("{current}", _options.currentData.tagging); prevOmni = prevOmni.replace("{prev}", prevData.tagging); $btnPrev.attr("data-omni", prevOmni).attr("ga-la", prevOmni); $btnPrev.attr("href", "#" + prevData.uid); $btnPrev.off("click.prev-tracking").on("click.prev-tracking", GALAXY.tracking); $btnPrev.html(prevData.tracker); } var nextData = _options.storage.getNextData(_currentHash); var nextOmni = $btnNext.data("omni"); if (nextData) { nextOmni = nextOmni.replace("{device}", _options.device); nextOmni = nextOmni.replace("{current}", _options.currentData.tagging); nextOmni = nextOmni.replace("{next}", nextData.tagging); $btnNext.attr("data-omni", nextOmni).attr("ga-la", nextOmni); $btnNext.attr("href", "#" + nextData.uid); $btnNext.off("click.next-tracking").on("click.next-tracking", GALAXY.tracking); $btnNext.html(nextData.tracker); } $navigatorContents.addClass("show-navigator"); }; var _resetRender = function _resetRender() { $navigatorContents.removeClass("show-navigator"); }; var _disabled = function _disabled(disabled) { if (disabled) { $btnPrev.attr("disabled", disabled).attr(HIDDEN_ARIA); $btnNext.attr("disabled", disabled).attr(HIDDEN_ARIA); } else { $btnPrev.attr("disabled", disabled).removeAttr(REMOVE_HIDDEN_ARIA); $btnNext.attr("disabled", disabled).removeAttr(REMOVE_HIDDEN_ARIA); } }; var _accessibillity = { active: function active() { $navigatorContents.find('.btns').removeAttr(REMOVE_HIDDEN_ARIA); }, inactive: function inactive() { $navigatorContents.find('.btns').attr(HIDDEN_ARIA); } }; return { init: _init, render: _renderNavigator, resetRender: _resetRender, disabled: _disabled, active: _accessibillity.active, inactive: _accessibillity.inactive };}function sProgress() { var _options = { storage: null, $targetDom: null, id: "", showLabel: false }; var _init = function _init(options) { _options = options; var strProgress = "

        "; var strLabel = ""); _options.$targetDom.html(strProgress + strLabel); }; var _renderProgress = function _renderProgress() { _options.$targetDom.addClass('show-progress'); var status = _options.storage.getStatusInfo(); var $progress = _options.$targetDom.find(".progress-value"); var $label = _options.$targetDom.find(".label"); setTimeout(function () { $progress.stop().css({ width: status.visited / status.total * 100 + "%" }); $label.html("".concat(status.visited, "/").concat(status.total)); }, 300); }; var _resetLabel = function _resetLabel() { var $label = _options.$targetDom.find(".label"); $label.html(""); }; var _accessibillity = { active: function active() { _options.$targetDom && _options.$targetDom.attr("aria-hidden", "false").css("visibility", "visible"); }, inactive: function inactive() { _options.$targetDom && _options.$targetDom.attr("aria-hidden", "true").css("visibility", "hidden"); } }; return { init: _init, update: _renderProgress, resetLabel: _resetLabel, active: _accessibillity.active, inactive: _accessibillity.inactive };}function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }function sStorage(options) { var _doms = options.doms; var _device = options.device; var _isShowroom = options.isShowroom; var _init = function _init() { var origin = Array.prototype.slice.call(_doms).map(function (dom) { var _dom$dataset = dom.dataset, hash = _dom$dataset.hash, taggingId = _dom$dataset.taggingId, labelTracker = _dom$dataset.labelTracker, category = _dom$dataset.category, order = _dom$dataset.order; return { uid: hash, tagging: taggingId, category: category, tracker: labelTracker, visited: false, order: order }; }); var result = origin.map(function (data) { var exist = _getDataByKey(data.uid); return _objectSpread(_objectSpread({}, data), {}, { visited: exist ? exist.visited : false }); }); result.sort(function (a, b) { return a.order - b.order; }); _setAllData(result); }; var _getAllData = function _getAllData() { var key = "".concat(_device); if (!_isShowroom) { key += "-highlights"; } var data = window.sessionStorage.getItem(key); return data ? JSON.parse(data) : null; }; var _setAllData = function _setAllData(allData) { var key = "".concat(_device); if (!_isShowroom) { key += "-highlights"; } window.sessionStorage.setItem(key, JSON.stringify(allData)); }; var _getIndexByKey = function _getIndexByKey(key) { var allData = _getAllData(); var result = -1; allData.forEach(function (data, index) { if (data.uid === key) { result = index; return; } }); return result; }; var _getDataByKey = function _getDataByKey(key) { var data = _getAllData(); if (data) { var findItems = data.filter(function (item) { return item.uid === key; }); return findItems[0]; } else { return null; } }; var _setDataByKey = function _setDataByKey(key, visited) { var allData = _getAllData(); var data = _getDataByKey(key); if (data === null) { return false; } var index = _getIndexByKey(key); var updateData = _objectSpread(_objectSpread({}, data), {}, { visited: visited }); allData[index] = updateData; _setAllData(allData); }; var _getGroupByKey = function _getGroupByKey(key) { var allData = _getAllData(); return Object.values(allData.reduce(function (hash, obj) { hash[obj[key]] = hash[obj[key]] || []; hash[obj[key]].push(obj); return hash; }, {})); }; var _getPrevData = function _getPrevData(key) { var allData = _getAllData(); var currentIndex = _getIndexByKey(key); if (currentIndex < 0) return null; var index = currentIndex - 1; if (index < 0) { index = allData.length - 1; } return allData[index]; }; var _getNextData = function _getNextData(key) { var allData = _getAllData(); var currentIndex = _getIndexByKey(key); if (currentIndex < 0) return null; var index = currentIndex + 1; if (index >= allData.length) { index = 0; } return allData[index]; }; var _getFilteredList = function _getFilteredList(visited) { var allData = _getAllData(); var filtered = allData.filter(function (data) { return data.visited === visited; }); return filtered; }; var _getStatusInfo = function _getStatusInfo() { var allData = _getAllData(); var visitedList = _getFilteredList(true); return { visited: visitedList.length, total: allData.length }; }; return { init: _init, setDataByKey: _setDataByKey, getDataByKey: _getDataByKey, getGroupByKey: _getGroupByKey, getPrevData: _getPrevData, getNextData: _getNextData, getVisitedList: function getVisitedList() { return _getFilteredList(true); }, getRemainedList: function getRemainedList() { return _getFilteredList(false); }, getStatusInfo: _getStatusInfo };}function sTracker() { var _options = {}; var $trackerContainer = null; var $btnOpen = null; var $btnCloseTracker = null; var _isShow = false; var _sProgress = new sProgress(); var _init = function _init(options) { _options = options; $btnOpen = $(".modal-showroom .actions").find(".btn-menu"); $btnOpen.addClass("show"); $trackerContainer = $(".showroom-tracker-contents"); $btnCloseTracker = $trackerContainer.find(".btn-close-tracker"); $btnCloseTracker.off("click.closeTracker").on("click.closeTracker", _close); // init progress _sProgress.init({ storage: _options.storage, id: "tracker-progress", $targetDom: $trackerContainer.find(".tracker-header .progress-container"), showLabel: true }); _accessibillity.inactive(); }; var _open = function _open() { GALAXY.setTransitionEndEvent($trackerContainer, _afterOpen); _accessibillity.active(); }; var _afterOpen = function _afterOpen() { var tobeHash = ""; $btnCloseTracker.focus(); if (_options.onAfterOpen) { tobeHash = _options.onAfterOpen(); _isShow = true; } // render start _renderTracker(tobeHash); GALAXY.changeSizeImage(".showroom-tracker-contents"); }; var _close = function _close() { _isShow = false; $trackerContainer.removeClass("show-tracker"); _accessibillity.inactive(); _options.onAfterClose && _options.onAfterClose(); }; var _renderTracker = function _renderTracker(tobeHash) { var $btnSeenext = $trackerContainer.find(".btn-next-feature"); var $btnBuyContainer = $trackerContainer.find(".buy-container"); var remained = _options.storage.getRemainedList(); if (remained.length === 0) { $btnSeenext.addClass("hide"); $btnBuyContainer.css("display", "block"); } else { var remainItem = remained[0]; $btnSeenext.attr("href", "#" + remainItem.uid); $btnSeenext.attr("title", remainItem.tracker); var seenextOmniture = $btnSeenext.data("omni"); var seenextOmni = seenextOmniture.replace("{device}", _options.device); seenextOmni = seenextOmni.replace("{target}", remainItem.tagging); $btnSeenext.attr("data-omni", seenextOmni).attr("ga-la", seenextOmni); $btnSeenext.removeClass("hide"); $btnSeenext.off("click.seenext").on("click.seenext", function () { _close(); GALAXY.tracking(); }); $btnBuyContainer.css("display", "none"); } var grouped = _options.storage.getGroupByKey("category"); grouped.forEach(function (category, index) { var $listContainer = $trackerContainer.find("#tracker-category-" + index); var originOmniture = $listContainer.data("omni"); var htmlListTracker = ""; category.forEach(function (data) { var itemOmni = originOmniture.replace("{device}", _options.device); itemOmni = itemOmni.replace("{target}", data.tagging); var attrTitle = data.visited ? "title='" + $trackerContainer.data("checked-title") + "'" : ""; var isCurrent = data.uid === tobeHash; htmlListTracker += "

      • ").concat(data.tracker, "
      • "); }); $listContainer.html(htmlListTracker); $listContainer.find(".check-listitem a").off("click.goto-feature").on("click.goto-feature", function () { _close(); GALAXY.tracking(); }); }); var upgraded = _options.upgradeData; var $upgradeContainer = $trackerContainer.find(".list-upgrade"); var upgradeOmniture = $upgradeContainer.data("omni"); var htmlUpgradeList = ""; upgraded.forEach(function (data) { var upgradeOmni = upgradeOmniture.replace("{device}", _options.device); upgradeOmni = upgradeOmni.replace("{target}", data.uid); htmlUpgradeList += "

      • ").concat(data.title, "
      • "); $upgradeContainer.html(htmlUpgradeList); }); if (upgraded.length === 0) { $upgradeContainer.parent(".tracker-more").remove(); } $trackerContainer.addClass("show-tracker"); _sProgress.update(); }; var _setMenuButton = function _setMenuButton(tobeHash) { var data = _options.storage.getDataByKey(tobeHash); var openOmni = $btnOpen.data("omni"); openOmni = openOmni.replace("{device}", _options.device); openOmni = openOmni.replace(/{current}/g, data.tagging); $btnOpen.attr("data-omni", openOmni).attr("ga-la", openOmni); $btnOpen.off("click.menu-open click.menu-open-tracking").on("click.menu-open", _open).on("click.menu-open-tracking", GALAXY.tracking); }; var _focusMenu = function _focusMenu() { setTimeout(function () { $btnOpen.focus(); }, 100); }; var _disabled = function _disabled(disabled) { if (disabled) { $btnOpen.attr("disabled", disabled).attr(HIDDEN_ARIA); } else { $btnOpen.attr("disabled", disabled).removeAttr(REMOVE_HIDDEN_ARIA); } }; var _accessibillity = { active: function active() { $trackerContainer.attr("aria-hidden", "false").css("visibility", "visible"); $btnOpen.attr(HIDDEN_ARIA); $("body").off("keydown.closeTracker").on("keydown.closeTracker", function (e) { if (!_options.isOpenGNB() && _isShow && (e.key == "Escape" || e.keyCode == 27)) { _isShow && _close(); } }); }, inactive: function inactive() { _sProgress.resetLabel(); $trackerContainer.attr("aria-hidden", "true").css("visibility", "hidden"); $btnOpen.removeAttr(REMOVE_HIDDEN_ARIA); $("body").off("keydown.closeTracker"); } }; return { init: _init, setMenuButton: _setMenuButton, focusMenu: _focusMenu, disabled: _disabled, accessibility: _accessibillity };}function sVideo() { var _currentHash = ""; var _sizeVideo = null; var _playState = "stop"; var _pausedInfo = false; var _options = {}; var $targetContents = null; var $video = null; var $btnPlay = null; var _init = function _init(options) { _options = options; _currentHash = _options.tobeHash; $targetContents = $(".showroom-feature-contents article[data-hash*=".concat(_currentHash, "]")); _loadAssets(); $targetContents.find('.f_video-feature').stop().__animate({ opacity: 1 }, { duration: 300, onComplete: function onComplete() {} }); GALAXY.resize(_handleResize, true); }; var _loadAssets = function _loadAssets() { _options.onStartLoadAssets && _options.onStartLoadAssets(); var $lazyLoadAssets = $targetContents.find(".none-lazy-load"); var total = $lazyLoadAssets.length; var loadNum = 0; $lazyLoadAssets.find("img").each(function (i, image) { var src = GALAXY.setMediaBaseURL(GALAXY.getImageSources($(image))[GALAXY.sizeMode]); $(this).attr("src", src); $(this).one("load.loadImages error.loadImages", function () { if (loadNum >= total - 1) { _completeLoad(); } loadNum += 1; $(this).off("load.loadImages error.loadImages"); }); }); $lazyLoadAssets.each(function () { var $video = $(this); if ($video.hasClass("video") && !$video.data("loaded")) { $video.data("loaded", true); GALAXY.setNewVideoControl($(this), $(this).parents("article")); } }); if (!total) { _completeLoad(); } }; var _completeLoad = function _completeLoad() { $video = $targetContents.find("video"); $btnPlay = $targetContents.find(".btn_click-video"); $video.on("loadedmetadata", function () { _sizeVideo = { height: this.videoHeight, width: this.videoWidth }; setTimeout(_resizeAspectRatio, 100); }); _options.onAfterLoadAssets && _options.onAfterLoadAssets(); }; var _renderVideo = function _renderVideo() { _handleVideoChange(); _controller.readyPlay(); $video.off("pause.video").on("pause.video", function (event) { _controller.setPlayState("pause"); }); $video.off("play.video").on("play.video", function (event) { _controller.setPlayState("playing"); }); $video.off("timeupdate.feature").on("timeupdate.feature", function () { $btnPlay.removeClass("btn-replay"); }); $video.off("ended.feature").on("ended.feature", function () { $btnPlay.addClass("btn-startover"); $btnPlay.find("span").text($btnPlay.data("replay-title")); _controller.setPlayState("stop"); }); $targetContents.find(".m_video-wrap .btn_click-video").off("click.feature-control click.feature-control-tracking").on("click.feature-control", function (e) { e.preventDefault(); var $this = $(this); if ($this.hasClass("btn-startover")) { $video[0].currentTime = 0.1; $video[0].play(); $btnPlay.removeClass("btn-startover"); $btnPlay.find("span").text($btnPlay.data("pause-title")); } }).on("click.feature-control-tracking", GALAXY.tracking); setTimeout(_handleResize, 100); $video.on("loadedmetadata", function () { _sizeVideo = { height: this.videoHeight, width: this.videoWidth }; setTimeout(_resizeAspectRatio, 100); }); }; var _reset = function _reset() { $targetContents.find('.f_video-feature').stop().__animate({ opacity: 0 }, { duration: 300, onComplete: function onComplete() { _controller.stop(); } }); }; var _handleResize = function _handleResize() { if (GALAXY.sizeMode != GALAXY.prevSizeMode) { _handleVideoChange(); } _resizeAspectRatio(); }; var _handleVideoChange = function _handleVideoChange() { $targetContents.trigger("video-change"); var $cover = $targetContents.find(".hide-bg"); var coverUrl = $cover.attr("data-bg"); if (coverUrl !== undefined) { $cover.css({ "background-image": "url(" + coverUrl + ")" }); } }; var _resizeAspectRatio = function _resizeAspectRatio() { if (!$targetContents.hasClass("show-feature")) { return false; } if (!_sizeVideo) { return; } if ($(".showroom-feature-contents").css("display") === "none") { return; } if (GALAXY.prevSizeMode !== 0 && GALAXY.sizeMode !== GALAXY.prevSizeMode) { _controller.stop(); } var $wrapper = $targetContents.find(".m_video-wrap"); var $video = $wrapper.find("video"); var containerSize = { height: $(window).height() > $wrapper.height() ? $wrapper.height() : $(window).height(), width: $(window).width() > $wrapper.width() ? $wrapper.width() : $(window).width() }; var updatedVideoSize = { height: 0, width: 0 }; if ($video[0]) { _sizeVideo = { height: $video[0].videoHeight, width: $video[0].videoWidth }; } var ratio = [containerSize.width / _sizeVideo.width, containerSize.height / _sizeVideo.height]; ratio = Math.min(ratio[0], ratio[1]); updatedVideoSize.height = parseInt(_sizeVideo.height * ratio, 10); updatedVideoSize.width = parseInt(_sizeVideo.width * ratio, 10); updatedVideoSize.height += updatedVideoSize.height % 2 === 1 ? 1 : 0; updatedVideoSize.width += updatedVideoSize.width % 2 === 1 ? 1 : 0; $wrapper.find("figure.video").css({ height: updatedVideoSize.height + "px", width: "100%" // width: updatedVideoSize.width + "px", }); }; var _controller = { setPlayState: function setPlayState(state) { _playState = state; }, pause: function pause() { if (_playState === "playing") { $btnPlay.trigger("click"); _pausedInfo = true; } }, resume: function resume() { if (_pausedInfo && _playState === "pause") { $btnPlay.trigger("click"); _pausedInfo = false; } }, stop: function stop() { if (_playState === "playing") { $btnPlay.trigger("click"); } if ($video.length > 0) { $video.attr("class", "ready"); $video[0].currentTime = 0.1; } _pausedInfo = false; _controller.setPlayState("stop"); }, resetPlay: function resetPlay() { _controller.stop(); $btnPlay.trigger("click"); }, play: function play() { if (_playState !== "playing") { $btnPlay.trigger("click"); } }, readyPlay: function readyPlay() { if (!$video) return; if ($video.hasClass("ready")) { setTimeout(function () { if (GALAXY.sizeMode > 2) { _controller.play(); } }, 1000); } else { $video.one("canplay.video", function () { setTimeout(function () { if (GALAXY.sizeMode > 2) { _controller.play(); } }, 1000); }); } }, focus: function focus() { setTimeout(function () { $btnPlay.focus(); }, 300); } }; var _accessibillity = { active: function active() { oAccessibility.off($targetContents.find(".f_video-feature")); }, inactive: function inactive() { oAccessibility.on($targetContents.find(".f_video-feature")); } }; return { init: _init, render: _renderVideo, resizeVideo: _resizeAspectRatio, reset: _reset, control: _controller, active: _accessibillity.active, inactive: _accessibillity.inactive };}function sSlider() { var _options = {}; var $sliderContainer = null; var $listFeatures = null; var $items = null; var $btnPrev = null; var $btnNext = null; var _debounce = null; var _init = function _init(options) { _options = options; $sliderContainer = _options.dom; $listFeatures = $sliderContainer.find(".list-feature-card"); $items = $listFeatures.find(".card-item"); if ($listFeatures.find("li").length === 4) { $listFeatures.attr("data-features", 4); } $btnPrev = $sliderContainer.find(".snap-navigator .btns.prev"); $btnNext = $sliderContainer.find(".snap-navigator .btns.next"); $btnPrev.off("click.slide-prev").on("click.slide-prev", _handleClickPrev); $btnNext.off("click.slide-next").on("click.slide-next", _handleClickNext); GALAXY.resize(_handleResize, true); $listFeatures.off("scroll.features").on("scroll.features", function () { clearTimeout(_debounce); _debounce = setTimeout(_handleScroll, 500); }); $items.off("focus.features").on("focus.features", _handleFocusItem); _handleResize(); _handleClickScroll(true); _handleScroll(); }; var _scrollTo = function _scrollTo(index) { var itemWidth = $listFeatures.find("li").eq(0).width(); $listFeatures.scrollLeft(index * itemWidth); }; var _handleResize = function _handleResize() { var screenWidth = $(window).width(); var contentWidth = $(".overview-card").eq(0).width(); var offset = screenWidth > contentWidth ? parseInt((screenWidth - contentWidth) / 2) : 15; $listFeatures.find(".card-item").removeAttr("style"); $listFeatures.find("li:last-child").removeAttr("style"); $btnPrev.removeAttr("style"); if (GALAXY.sizeMode === 1) { var $html = $("html"); if ($html.hasClass("rtl")) { $html.removeClass("rtl"); $html.addClass("rtl"); $listFeatures.css("paddingBottom", "0px"); $listFeatures.find(".card-item").css("transform", "translate3d(".concat(offset * -1, "px, 0, 0)")); } else { $listFeatures.css("paddingBottom", "0px"); $listFeatures.find(".card-item").css("transform", "translate3d(".concat(offset, "px, 0, 0)")); } } }; var _handleScroll = function _handleScroll() { if (GALAXY.sizeMode > 1) { return false; } var scrollX = $listFeatures.scrollLeft(); var width = $listFeatures.prop("scrollWidth"); var screenWidth = $(window).width(); $btnPrev.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); $btnNext.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); var rtl = $('html.rtl').get(0); if (rtl) { if (Math.abs(scrollX) < screenWidth) { $btnNext.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); setTimeout(function () { $btnPrev.attr(HIDDEN_ARIA).addClass('disabled'); }, 100); } else if (Math.abs(scrollX) + screenWidth + 30 > width) { $btnPrev.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); setTimeout(function () { $btnNext.attr(HIDDEN_ARIA).addClass('disabled'); }, 100); } } else { if (scrollX <= 30) { $btnNext.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); setTimeout(function () { $btnPrev.attr(HIDDEN_ARIA).addClass('disabled'); }, 100); } else if (scrollX + screenWidth >= width - 1) { $btnPrev.removeAttr(REMOVE_HIDDEN_ARIA).removeClass('disabled'); setTimeout(function () { $btnNext.attr(HIDDEN_ARIA).addClass('disabled'); }, 100); } } }; var _handleClickScroll = function _handleClickScroll(first) { if (GALAXY.sizeMode > 1) { return false; } var scrollX = $listFeatures.scrollLeft(); var width = $listFeatures.prop("scrollWidth"); var screenWidth = $(window).width(); var rtl = $('html.rtl').get(0); if (scrollX <= 30) { !first && $btnNext.focus(); } else if (scrollX + screenWidth >= width - 1) { !first && $btnPrev.focus(); } }; var _handleFocusItem = function _handleFocusItem(event) { if (GALAXY.sizeMode > 1) { return false; } var $this = $(event.currentTarget); var index = $items.index($this); _scrollTo(index); }; var _handleClickPrev = function _handleClickPrev() { var scrollX = $listFeatures.scrollLeft(); var itemWidth = $listFeatures.find("li").eq(0).width(); var amount = $('html.rtl').get(0) ? scrollX + itemWidth : scrollX - itemWidth; $listFeatures.scrollLeft(amount); setTimeout(_handleClickScroll, 300); }; var _handleClickNext = function _handleClickNext() { var scrollX = $listFeatures.scrollLeft(); var itemWidth = $listFeatures.find("li").eq(0).width(); var amount = $('html.rtl').get(0) ? scrollX - itemWidth : scrollX + itemWidth; $listFeatures.scrollLeft(amount); setTimeout(_handleClickScroll, 300); }; return { init: _init };}function sOverview() { var _options = {}; var _lastOverviewControl = null; var $journeyContainer = null; var $btnSeenext = null; var $defaultBox = null; var $shopBox = null; var _sProgress = new sProgress(); var _sSlider = new sSlider(); var _init = function _init(options) { _options = options; $journeyContainer = $(".m_content-overview .my-journey"); $btnSeenext = $journeyContainer.find(".type-default .btn-next-feature"); $defaultBox = $journeyContainer.find(".type-default"); $shopBox = $journeyContainer.find(".type-shop"); $nonshopBox = $journeyContainer.find(".type-nonshop"); if (!_options.upgradeData.length) { $(".m_content-overview .overview-card.upgrade").hide(); } // init progress _sProgress.init({ storage: _options.storage, id: "overview-progress", $targetDom: $journeyContainer.find(".progress-container"), showLabel: false }); _sProgress.update(); _sSlider.init({ dom: $(".overview-card.features .card-container") }); $(".m_content-overview .card-item").off("click.card click.card-tracking").on("click.card", _handleClickSaveFocus).on("click.card-tracking", GALAXY.tracking); }; var _update = function _update() { var remained = _options.storage.getRemainedList(); var visited = _options.storage.getVisitedList(); var nextBtnCopy = $btnSeenext.data("continue-txt"); var journeyCopy = $defaultBox.find(".box-btn .desc").data("remain-copy"); var remainOmni = $btnSeenext.data("remain-omni"); if (!visited.length) { $defaultBox.find(".progress-container").hide(); } else { $defaultBox.find(".progress-container").show(); $defaultBox.find(".box-btn .desc").text(journeyCopy); $btnSeenext.find(".copy").text(nextBtnCopy); } if (!remained.length) { $defaultBox.addClass("hide"); var check = ["buy", "regist", "order", "where"]; var shopClassArr = $shopBox.find(".country-check").attr("class").split(" "); shopClassArr.splice(shopClassArr.indexOf("country-check"), 1); if (check.indexOf(shopClassArr[0]) < 0) { $nonshopBox.removeClass("hide"); } else { $shopBox.removeClass("hide"); } } else { var remainItem = remained[0]; $btnSeenext.attr({ href: "#" + remainItem.uid, title: remainItem.tracker, "data-omni": remainOmni + remainItem.uid, "ga-la": remainOmni + remainItem.uid }); $btnSeenext.off("click.seenext click.seenext-tracking").on("click.seenext", _handleClickSaveFocus).on("click.seenext", GALAXY.tracking); } }; var _updateProgress = function _updateProgress() { _sProgress.update(); }; var _resetProgress = function _resetProgress() { _sProgress.resetLabel(); }; var _handleClickSaveFocus = function _handleClickSaveFocus(event) { _lastOverviewControl = event.currentTarget; }; var _lastFocus = function _lastFocus() { var totalCount = _options.storage.getStatusInfo().total; var visitCount = _options.storage.getStatusInfo().visited; setTimeout(function () { if(visitCount == totalCount){ _lastOverviewControl = $journeyContainer.find('.flexbox:not(.hide) .btn-next-feature'); } _lastOverviewControl.focus(); }, 50); }; var _accessibillity = { active: function active() { $(".m_content-overview").removeAttr(REMOVE_HIDDEN_ARIA); }, inactive: function inactive() { $(".m_content-overview").attr(HIDDEN_ARIA); } }; return { init: _init, update: _update, lastFocus: _lastFocus, updateProgress: _updateProgress, resetProgress: _resetProgress, active: _accessibillity.active, inactive: _accessibillity.inactive };}var arModal = function arModal() { var isKeyDown = false; var saveScrollTop = 0; var $prevButton = null; var $modalContent = null; var onceAppendAr = false; var _isShow = false; var $baseContentsArea = $("#wrap"); var $contents = $("#contents"); var $overview = $(".m_content-overview"); var $modals = $('

        '); var ommi = function ommi() { var omniture = $(this).data("omni"); omniture && GALAXY.omniture(omniture); }; var onResize = function onResize() { // return false; if ($contents.length && $modals.hasClass("show")) { var offset = function offset() { var offset = $contents.offset().top; if (GALAXY.isGalaxy) { var subnav = $("#subnav").height() || 0; offset += subnav; } else { var gnbHeight = $(".gnb").height(); var scrolltop = $(window).scrollTop(); var calcTop = scrolltop > gnbHeight ? gnbHeight : scrolltop; offset -= calcTop; } return offset; }; var modalHeight = window.innerHeight - offset; var modalContentHeight = $modals.find(".armodal_container").outerHeight(); var modalInnerHeight = modalHeight < modalContentHeight ? modalHeight : "auto"; $modals.css({ top: offset, height: modalInnerHeight }); } }; var keyDownCheck = function keyDownCheck(e) { if (e.keyCode == 13) { isKeyDown = true; } }; var _init = function _init() { var _this = this; if (GALAXY.isGalaxy) { $baseContentsArea = $baseContentsArea.find("#contents > *:not(#subnav), #footer"); } else { $baseContentsArea = $baseContentsArea.find("#contents > *:not(.ma-floating-nav__wrap), .m_dotcom_footer, .nv-g-breadcrumb, footer"); } if (!onceAppendAr) { onceAppendAr = true; $contents.after($modals); $modals.html($(".armodal_layer").html()).css({ visibility: "hidden" }); $(".armodal_layer").remove(); } $modalContent = $modals.find(".armodal_contents-area"); $modals.find(".btn-close, .armodal_close-area").on({ "click.modalHide": _hide, "keydown.modalHide": keyDownCheck }); $prevButton = $overview.find(".btn_ar"); $prevButton.on("click", function (e) { _this.show(); e.preventDefault(); }); return this; }; var _show = function _show() { isKeyDown = false; isModalShow = true; $modalContent.find("a, button").off("click.omni").on("click.omni", ommi); GALAXY.changeSizeImage($modals.find(".armodal_contents figure")); // Accessibillity $modals.attr({ "aria-hidden": "false" }).css({ visibility: "visible" }); oAccessibility.on($baseContentsArea); oAccessibility.on($("#teconsent")); oAccessibility.on($("#consent_blackbar")); setTimeout(function () { $modalContent.addClass("modals_open"); }, 0); $modals.addClass("show"); saveScrollTop = GALAXY.scrollTop; GALAXY.noScroll.on(); GALAXY.setTransitionEndEvent($modals, _shown); setTimeout(function () { $modals.find(".btn-close").focus(); }, 300); onResize(); GALAXY.resize(onResize, true); }; var _shown = function _shown() { $modals.addClass("show-end"); var closeModal = function closeModal(e) { if ($modals.hasClass("show-end") && (e.key == "Escape" || e.keyCode == 27)) { _hide(); } }; $("body").off("keydown.closeArmodal").on("keydown.closeArmodal", closeModal); }; var _hide = function _hide() { // Accessibillity $modals.removeClass("show").attr("aria-hidden", "true").css("visibility", "hidden"); $("body").off("keydown.closeArmodal"); oAccessibility.off($baseContentsArea); oAccessibility.off($("#teconsent")); oAccessibility.off($("#consent_blackbar")); setTimeout(function () { $prevButton.focus(); GALAXY.noScroll.off(); GALAXY.setScrollTop(saveScrollTop); GALAXY.unResize(onResize); }, 0); $modals.removeClass("show-end"); $modalContent.removeClass("modals_open"); isKeyDown = false; isModalShow = false; event && event.preventDefault(); }; var _getIsShow = function _getIsShow() { return _isShow; }; // AR Hash check var _oArHash = function () { var _init = function _init() { if ($overview.hasClass("no-ar")) { return false; } window.addEventListener("hashchange", this.change.bind(this)); return this; }; var _change = function _change() { var $hash = window.location.hash.split("#")[1], subnavHeight = 0, arOffsetTop = 0; if ($hash == "ar") { subnavHeight = $("#subnav, .ma-floating-nav__wrap").height() || 0; arOffsetTop = GALAXY.sizeMode > 2 ? $overview.find(".overview-card.viewer ul.list-card").offset().top : $("#ar").offset().top; scrollTop = arOffsetTop - subnavHeight; arModal && arModal.show(); setTimeout(function () { GALAXY.setSmoothScrollTop(scrollTop, 100); }, 750); } }; return { init: _init, change: _change }; }(); return { init: _init, show: _show, hide: _hide, isShow: _getIsShow };};function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }var $overview = $('.m_content-overview');;(function (f) { var fave = f || {}; var ua = navigator.userAgent; var android = /Android/i.test(ua); var iOS = navigator.platform == 'MacIntel' && navigator.maxTouchPoints > 1 || /iPhone|iPad|iPod/i.test(ua); var link = android ? fave.glb || fave.gltf : iOS ? fave.usdz : 0; if (link) { android && (link = 'inten' + 't://arvr.goo' + 'gle.com/scene-vie' + 'wer/1.0?file='.concat(link, '&mode=ar_only#Int' + 'ent;scheme=https;package=com.goo' + 'gle.ar.core;action=and' + 'roid.inte' + 'nt.action.VIEW;S.browser_fallback_url=').concat(location.origin, ';end;')); $('.__ar__button').addClass('__on').find('a.__link').attr({ href: "https://samsungar.herokuapp.com/?device=flip_4&hub_active=0&disable_exit=1&CID=scom_ar&ch=scom&gn=web" }); $overview.find('.pc_ar').remove(); } else { $overview.addClass('no-ar'); if ((fave.glb || fave.usdz) && (!android || !iOS)) { $overview.removeClass('no-ar'); } else { $overview.find('.__ar__button').remove(); $overview.find('.pc_ar').addClass('show'); } }})(window.ar3Data);var oAccessibility = function () { return { on: function on($target) { if ($target.length && !$target.data("oAccessibility")) { $target.attr({ tabindex: "-1", "aria-hidden": "true" }).data("oAccessibility", true); var $accessibillityTarget = $target.find("a,input,select,textarea,button,video,iframe"); $accessibillityTarget.each(function () { var $this = $(this); var tabindex = $this.attr("tabindex"); var ariaHidden = $this.attr("aria-hidden"); if (tabindex !== undefined && tabindex !== null) { $this.data("prev-tabindex", tabindex); } if (ariaHidden !== undefined && ariaHidden !== null) { $this.data("prev-ariaHidden", ariaHidden); } $this.attr({ tabindex: "-1", "aria-hidden": "true" }); }); } }, off: function off($target) { if ($target.length && $target.data("oAccessibility") == true) { $target.removeAttr("tabindex aria-hidden").data("oAccessibility", false); var $accessibillityTarget = $target.find("a,input,select,textarea,button,video,iframe"); $accessibillityTarget.each(function () { var $this = $(this); var tabindex = $this.data("prev-tabindex"); var ariaHidden = $this.data("prev-ariaHidden"); if (tabindex !== undefined && tabindex !== null) { $this.attr("tabindex", tabindex); } else { $this.removeAttr("tabindex"); } if (ariaHidden !== undefined && ariaHidden !== null) { $this.attr("aria-hidden", ariaHidden); } else { $this.removeAttr("aria-hidden"); } }); } } };}();var HIDDEN_ARIA = { tabindex: "-1", "aria-hidden": "true"};var REMOVE_HIDDEN_ARIA = "tabindex aria-hidden";function Showroom() { var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var _currentHash = ""; var _device = props.device; var _options = _objectSpread({ isShowroom: true, navigator: true, tracker: true }, props.options); var _upgradeData = null; var _debounce = null; // modules var _arModal = null; var _sStorage = null; var _sOverview = null; var _sModals = null; var _sTracker = null; var _sFeature = null; var _init = function _init() { // storage _sStorage = new sStorage({ doms: document.querySelectorAll(".overview-container [data-hash]"), device: _device, isShowroom: _options.isShowroom }); _sStorage.init(); if (_options.isShowroom) { // upgrade menu _upgradeData = _setUpgradingData(); _sOverview = new sOverview(); _sOverview.init({ storage: _sStorage, upgradeData: _upgradeData }); _sOverview.update(); // modal _sModals = new sModals(); _sModals.init({ isOpenGNB: _isOpenGNBMenu, onBeforeOpen: _callbackBeforeOpen, onAfterOpen: _callbackAfterOpen, onAfterClose: _callbackAfterClose }); _arModal = new arModal(); _arModal.init(); // tracker if (_options.tracker) { _sTracker = new sTracker(); _sTracker.init({ device: _device, storage: _sStorage, upgradeData: _upgradeData, isOpenGNB: _isOpenGNBMenu, onAfterOpen: _callbackAfterOpenTracker, onAfterClose: _callbackAfterCloseTracker }); } } _afterInit(); }; var _afterInit = function _afterInit() { // events: hash change if (_options.isShowroom) { window.addEventListener("hashchange", _handleChangeHash, false); GALAXY.resize(_handleResize, true); _handleChangeHash(); } // dotcom $(window).one('scroll.dotcom', _handleResize); if ($(".dotcom .iparys_inherited").length) { $(".dotcom .iparys_inherited").off("click.dot-com-gnb").on("click.dot-com-gnb", function () { _handleResize(); }); } _handleResize(); }; var _setUpgradingData = function _setUpgradingData() { var doms = document.querySelectorAll("[data-upgrading-id]"); return Array.prototype.slice.call(doms).map(function (dom) { var upgradingId = dom.dataset.upgradingId; var url = dom.getAttribute("href"); var $img = $(dom).find("figure img"); var title = $(dom).find(".title"); return { uid: upgradingId, photo: $img.attr("src"), url: url, title: title.text(), altText: $img.attr("alt") }; }); }; var _setGnbHeight = function _setGnbHeight() { var $contents = $("#contents"); if ($contents.length) { var scrollTop = window.pageYOffset || document.documentElement.scrollTop; _modalOffetTop = $contents.offset().top; if (GALAXY.isGalaxy) { var subnav = $("#subnav, .ma-floating-nav__wrap").height() || 0; _modalOffetTop += subnav; } else { var gnbHeight = $(".gnb").height(); var calcTop = scrollTop > gnbHeight ? gnbHeight : scrollTop; _modalOffetTop -= calcTop; if (GALAXY.sizeMode <= 2) { var iparys = $(".dotcom .iparys_inherited").height(); var subNavHeight = $(".pd-g-floating-nav").height(); _modalOffetTop = iparys + gnbHeight + subNavHeight - calcTop; } } if (document.documentElement.style.setProperty) { if (_options.isShowroom) { document.documentElement.style.setProperty("--ggh", _modalOffetTop + "px"); } else { document.documentElement.style.setProperty("--ggh", "15vh"); } } } }; var _isOpenGNBMenu = function _isOpenGNBMenu() { var opened = false; if (GALAXY.isGalaxy) { opened = $("#wrap #gnb").hasClass("show") || $("#subnav .nav-dropdown .drop-menus").hasClass("open"); } else { opened = $(".dotcom .gnb .gnb__menu-wrap").hasClass("open") || $(".dotcom .gnb .gnb__menu-wrap").hasClass("active") || $(".dotcom #content .pd-g-floating-nav .menu").hasClass("open") || $(".gnb-search").css("display") === "block" || $("#layerEmptyCart").css("display") === "block"; } return opened; }; var _clearHash = function _clearHash() { window.location.hash = ""; _currentHash = ""; }; // event handle var _handleChangeHash = function _handleChangeHash() { var tobeHash = window.location.hash.split("#")[1]; if (tobeHash === "ar") { if (!_arModal.isShow()) { _arModal.show(); } else { _arModal.hide(); } return false; } if (tobeHash === undefined) { if (_sModals.isShow()) { _sModals.close(); } _clearHash(); return false; } if (tobeHash && tobeHash !== _currentHash) { var data = _sStorage.getDataByKey(tobeHash); if (data) { _currentHash = tobeHash; if (!_sModals.isShow()) { _sModals.open(); // feature _sFeature = new sFeature(); _sFeature.init({ isShowroom: _options.isShowroom, device: _device, hash: tobeHash, storage: _sStorage, modal: _sModals, tracker: _sTracker, navigator: _options.navigator }); } else { _sFeature.render(tobeHash); } } else { _sModals.close(); } } }; var _handleResize = function _handleResize() { _setGnbHeight(); }; // accessibility var _accessibillity = { active: function active() { var $baseContents = GALAXY.isGalaxy ? $("#wrap").find("#contents > *:not(#subnav), #footer") : $("#wrap").find("#contents > *:not(.ma-floating-nav__wrap), .m_dotcom_footer, .nv-g-breadcrumb, footer"); $baseContents.attr(HIDDEN_ARIA).css("visibility", "hidden"); }, inactive: function inactive() { var $baseContents = GALAXY.isGalaxy ? $("#wrap").find("#contents > *:not(#subnav), #footer") : $("#wrap").find("#contents > *:not(.ma-floating-nav__wrap), .m_dotcom_footer, .nv-g-breadcrumb, footer"); $baseContents.removeAttr(REMOVE_HIDDEN_ARIA).css("visibility", "visible"); } }; // callback // modal popup var _callbackBeforeOpen = function _callbackBeforeOpen() { $("html").addClass("lock-scroll"); }; var _callbackAfterOpen = function _callbackAfterOpen() { _sOverview.resetProgress(); _accessibillity.active(); setTimeout(_handleResize, 300); }; var _callbackAfterClose = function _callbackAfterClose() { $("html").removeClass("lock-scroll"); $(window).off('scroll.dotcom'); $(".dotcom .iparys_inherited").off("click.dot-com-gnb"); _sOverview.update(); _handleResize(); if (_sFeature) { _sFeature = _sFeature.remove(); } _clearHash(); _accessibillity.inactive(); _sOverview.updateProgress(); _sOverview.lastFocus(); }; // tracker popup var _callbackAfterOpenTracker = function _callbackAfterOpenTracker() { _sModals.inactiveOpenButton(); _sFeature.inactiveInfoButton(); _sFeature.inactiveVideo(); _sFeature.inactiveNavigator(); _sFeature.inactive(); return _currentHash; }; var _callbackAfterCloseTracker = function _callbackAfterCloseTracker() { _sModals.activeOpenButton(); _sFeature.activeInfoButton(); _sFeature.activeVideo(); _sFeature.activeNavigator(); _sFeature.active(); _sFeature.resizeVideo(); _sTracker && _sTracker.focusMenu(); }; var _renderFromExternal = function _renderFromExternal(uid, deviceColor) { _sFeature && _sFeature.remove(); if (!_sFeature) { _sFeature = new sFeature(); _sFeature.init({ isShowroom: false, device: _device, deviceColor: deviceColor, hash: uid, storage: _sStorage, modal: null, tracker: null, navigator: false }); } else { _sFeature.render(uid, deviceColor); } }; return { init: _init, renderFeature: _renderFromExternal };}/*!--//GALAXY-SHOWROOM-JS--*///Showroom deviceconst showroom = new Showroom({device: "galaxy-z-flip4",});GALAXY.load(function() {showroom.init();});//

        }).then(function(){GALAXY.initialize()})});

        Showroom | Galaxy Z Flip4 | Samsung US (2024)
        Top Articles
        Latest Posts
        Article information

        Author: Dr. Pierre Goyette

        Last Updated:

        Views: 5970

        Rating: 5 / 5 (50 voted)

        Reviews: 89% of readers found this page helpful

        Author information

        Name: Dr. Pierre Goyette

        Birthday: 1998-01-29

        Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

        Phone: +5819954278378

        Job: Construction Director

        Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

        Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.