{"version":3,"file":"/components/site-selector-popup.js","mappings":"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","sources":["webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/partials/class-list-utils.js","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/partials/cookie-utils.js","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/partials/dom-api-utils.js","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/partials/general-utils.js","webpack://app_custom_hawkers_frontend/webpack/bootstrap","webpack://app_custom_hawkers_frontend/webpack/runtime/define property getters","webpack://app_custom_hawkers_frontend/webpack/runtime/hasOwnProperty shorthand","webpack://app_custom_hawkers_frontend/./cartridge/client/default/js/components/site-selector-popup.js"],"sourcesContent":["'use strict';\n\n// Classes\nconst classes = {\n hidden: 'tw-hidden',\n is: {\n loading: 'is-loading',\n preferred: 'is-preferred',\n calculating: 'is-calculating',\n visible: 'is-visible',\n selected: 'is-selected',\n open: 'is-open',\n active: 'is-active',\n invalid: 'is-invalid',\n current: 'is-current',\n full: 'is-full',\n loaded: 'is-loaded',\n disabled: 'is-disabled',\n fullscreen: 'is-fullscreen',\n alone: 'is-alone',\n sticky: 'is-sticky',\n zoomed: 'is-zoomed',\n enabled: 'is-enabled',\n filtered: 'is-filtered',\n scrollable: 'is-scrollable',\n fixed: 'is-fixed',\n animated: 'is-animated',\n animatedOut: 'is-animated-out',\n animatedIn: 'is-animated-in',\n locked: 'is-locked',\n empty: 'is-empty',\n available: 'is-available',\n cached: 'is-cached'\n },\n has: {\n error: 'has-error',\n success: 'has-success',\n filtersVisible: 'has-filters-visible',\n subscription: 'has-subscription',\n gross: 'has-gross'\n },\n show: {\n password: 'show-password',\n resumeOrder: 'show-resume-order'\n },\n color: {\n state: {\n success: 'tw-text-state-success',\n error: 'tw-text-state-error'\n }\n },\n gtm: {\n avoidViewed: 'gtm-avoid-viewed'\n },\n not: {\n results: 'not-results'\n },\n text: {\n uppercase: 'tw-uppercase'\n }\n};\n\n// Variables\nconst RECURSIVE_SEARCH_LIMIT = 5;\n\n// Functions\n\n// Add class to element\nconst addClassToElement = ($element, ...newClasses) => {\n if ($element) {\n $element.classList.add(...newClasses);\n }\n};\n\n// Remove class from element\nconst removeClassToElement = ($element, ...newClasses) => {\n if ($element) {\n $element.classList.remove(...newClasses);\n }\n};\n\n// Toggle class to element\nconst toggleClassToElement = ($element, ...newClasses) => {\n if ($element) {\n $element.classList.toggle(...newClasses);\n }\n};\n\n// Check if element has class\nconst hasClassElement = ($element, classname) => {\n if ($element && $element.classList) {\n return $element.classList.contains(classname);\n }\n // Element does not exist or is invalid\n return null;\n};\n\n// Find element by class or parent element until RECURSIVE_SEARCH_LIMIT\nconst findParentFromClass = ($elem, classToSearch, deep = 0) => {\n if (hasClassElement($elem, classToSearch)) {\n return $elem;\n }\n\n if ($elem && deep < RECURSIVE_SEARCH_LIMIT) {\n return findParentFromClass($elem.parentNode, classToSearch, deep + 1);\n }\n\n return null;\n};\n\n// Export\nexport {\n classes,\n addClassToElement,\n removeClassToElement,\n toggleClassToElement,\n hasClassElement,\n findParentFromClass\n};\n","'use strict';\n\n// Cookie durations\nconst COOKIE_DURATION_ONE_YEAR = 31536000000; // ms = 31536000 seconds = 365 days = 1 year\n\n// Cookie names\nconst COOKIE_NAME_FOR_PREFERRED_LOCALE = 'HW_preferred_locale';\nconst COOKIE_NAME_FOR_GTM_CUSTOM_SESSION_ID = 'custom_session_id';\nconst COOKIE_NAME_FOR_SALESFORCE_UNAUTHENTICATED_SESSION_ID = 'dwsid';\n\n// Functions\nconst setCookie = (name, value, duration = COOKIE_DURATION_ONE_YEAR) => {\n const date = new Date();\n date.setTime(date.getTime() + duration);\n document.cookie =\n name + '=' + value + '; expires=' + date.toGMTString() + '; path=/';\n};\n\nconst getCookie = (name) => {\n const cookies = document.cookie.split(';');\n const cookie = cookies.find((cookie) => cookie.includes(name));\n return cookie ? cookie.split('=')[1] : null;\n};\n\nconst deleteCookie = (name) => {\n document.cookie = name + '=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n};\n\n// Export\nexport {\n COOKIE_DURATION_ONE_YEAR,\n COOKIE_NAME_FOR_PREFERRED_LOCALE,\n COOKIE_NAME_FOR_GTM_CUSTOM_SESSION_ID,\n COOKIE_NAME_FOR_SALESFORCE_UNAUTHENTICATED_SESSION_ID,\n setCookie,\n getCookie,\n deleteCookie\n};\n","'use strict';\n\nimport { addClassToElement } from '@jspartials/class-list-utils';\n\nconst prepend = ($parent, $newChild) => {\n $parent.insertBefore($newChild, $parent.firstChild);\n};\n\nconst insertSiblingBefore = ($elem, $newSibling) => {\n $elem.parentNode.insertBefore($newSibling, $elem);\n};\n\nconst insertSiblingAfter = ($elem, $newSibling) => {\n $elem.parentNode.insertBefore($newSibling, $elem.nextSibling);\n};\n\nconst appendElementContent = ($elem, content) => {\n if (typeof content === 'string') {\n if (content) {\n $elem.innerHTML = content;\n }\n } else {\n $elem.appendChild(content);\n }\n};\n\nconst setAttributes = ($elem, attributes) => {\n attributes.forEach((attr) => {\n $elem.setAttribute(attr.name, attr.value);\n });\n};\n\nconst createElement = ({\n tag,\n content = '',\n classes = [],\n attributes = []\n}) => {\n if (!tag) {\n return null;\n }\n\n const $newElement = document.createElement(tag);\n\n classes.forEach((singleClass) => {\n addClassToElement($newElement, singleClass);\n });\n\n appendElementContent($newElement, content);\n\n setAttributes($newElement, attributes);\n\n return $newElement;\n};\n\nconst serializeForm = ($form) => {\n return new URLSearchParams(new FormData($form)).toString();\n};\n\nconst multipleEventsListeners = (elem, events, func) => {\n events.split(' ').forEach((e) => elem.addEventListener(e, func, true));\n};\n\nconst listenDOMEvent = ($elem, eventName = '', callback = null) => {\n if ($elem && eventName && callback) {\n $elem.addEventListener(eventName, callback);\n }\n};\n\nconst dispatchCustomEvent = (eventName = '', detail = {}) => {\n document.dispatchEvent(new CustomEvent(eventName, { detail }));\n};\n\n/**\n * Returns a modified callback function that calls the\n * initial callback function only if the target element matches the given selector\n *\n * @param {string} selector\n * @param {function} callback\n */\n// function getConditionalCallback(selector, callback) {\n// return function(e) {\n// if (e.target && e.target.matches(selector)) {\n// e.delegatedTarget = e.target;\n// callback.apply(this, arguments);\n// return;\n// }\n// // Not clicked directly, check bubble path\n// var path = event.path || (event.composedPath && event.composedPath());\n// if (!path) return;\n// for (var i = 0; i < path.length; ++i) {\n// var el = path[i];\n// if (el.matches(selector)) {\n// // Call callback for all elements on the path that match the selector\n// e.delegatedTarget = el;\n// callback.apply(this, arguments);\n// }\n// // We reached parent node, stop\n// if (el === e.currentTarget) {\n// return;\n// }\n// }\n// };\n// }\n\n/**\n *\n *\n * @param {Element} rootElement The root element to add the linster too.\n * @param {string} eventType The event type to listen for.\n * @param {string} selector The selector that should match the dynamic elements.\n * @param {function} callback The function to call when an event occurs on the given selector.\n * @param {boolean|object} options Passed as the regular `options` parameter to the addEventListener function\n * Set to `true` to use capture.\n * Usually used as an object to add the listener as `passive`\n */\n// const addDynamicEventListener = (rootElement, eventType, selector, callback, options) => rootElement.addEventListener(\n// eventType,\n// getConditionalCallback(selector, callback),\n// options\n// );\n\nexport {\n prepend,\n createElement,\n insertSiblingBefore,\n insertSiblingAfter,\n serializeForm,\n setAttributes,\n appendElementContent,\n multipleEventsListeners,\n listenDOMEvent,\n dispatchCustomEvent\n};\n","'use strict';\n\nimport {\n addClassToElement,\n removeClassToElement\n} from '@jspartials/class-list-utils';\n\n// Elements\nconst html = document.querySelector('html');\nconst body = document.querySelector('body');\n\n// Custom events\nconst customEvent = {\n listenProductTiles: 'listenProductTiles',\n reloadVtoButtons: 'reloadVtoButtons',\n listenAddonTiles: 'listenAddonTiles',\n loginAndSignupLoaded: 'loginAndSignupLoaded',\n qrGeneratorLoaded: 'qrGeneratorLoaded',\n initProductTilesAnimation: 'initProductTilesAnimation',\n adyen: {\n displayPaymentMethods: 'adyen::displayPaymentMethods',\n paymentMethodsUpdated: 'adyen::paymentMethodsUpdated'\n },\n klarna: {\n checkVisibilityOfPaymentMethod: 'checkVisibilityOfKlarnaPaymentMethod'\n },\n closeSearcherFromMenu: 'closeSearcherFromMenu',\n closeMenuFromSearcher: 'closeMenuFromSearcher',\n sidebar: {\n init: 'sidebar::init',\n close: 'sidebar::close',\n open: 'sidebar::open'\n },\n updatePickUpStoreSelectedForShipping: 'updatePickUpStoreSelectedForShipping',\n cart: {\n itemRemoved: 'cart::itemRemoved'\n },\n checkout: {\n selectShippingMethod: 'checkout::selectShippingMethod'\n }\n};\n\n// Media query strings\nconst mediaQuery = {\n tablet: '(min-width: 768px)'\n};\n\nconst selectors = {\n fixedClass: 'tw-fixed',\n overflowHiddenClass: 'tw-overflow-hidden',\n fullWidthClass: 'tw-w-full'\n};\n\nvar htmlElementScroll = 0;\n\n/**\n * Get the current top location\n */\nconst currentYPosition = () => {\n // Firefox, Chrome, Opera, Safari\n if (self.pageYOffset) return self.pageYOffset;\n // Internet Explorer 6 - standards mode\n if (document.documentElement && document.documentElement.scrollTop)\n return document.documentElement.scrollTop;\n // Internet Explorer 6, 7 and 8\n if (document.body.scrollTop) return document.body.scrollTop;\n return 0;\n};\n\n/**\n * Get the position of element\n * @param {string} id of the element\n */\nconst elmYPosition = (id) => {\n const elm = document.querySelector(id);\n let y = elm.offsetTop;\n let node = elm;\n while (node.offsetParent && node.offsetParent !== document.body) {\n node = node.offsetParent;\n y += node.offsetTop;\n }\n return y;\n};\n\n/**\n * Get value from url parameter\n * @param {string} name of url parameter\n */\nconst getUrlParameter = (name) => {\n return (\n decodeURIComponent(\n (new RegExp(`[?|&]${name}=` + `([^&;]+?)(&|#|;|$)`).exec(\n location.search\n ) || [, ''])[1].replace(/\\+/g, '%20')\n ) || null\n );\n};\n\n/**\n * Get value from session storage variable\n * @param {string} key of variable\n */\nconst getSessionStorage = (key = '') => {\n return sessionStorage.getItem(key);\n};\n\n/**\n * Set value for session storage variable\n * @param {string} key of variable\n * @param {string} value of variable\n */\nconst saveSessionStorage = (key = '', value = '') => {\n sessionStorage.setItem(key, value);\n};\n\n/**\n * Set HTML unscrollable\n */\nconst setHtmlUnscrollable = () => {\n htmlElementScroll = document.documentElement.scrollTop;\n addClassToElement(body, selectors.fixedClass);\n addClassToElement(body, selectors.overflowHiddenClass);\n addClassToElement(body, selectors.fullWidthClass);\n body.style.height = `calc(100% + ${htmlElementScroll}px)`;\n body.style.top = `-${htmlElementScroll}px`;\n};\n\n/**\n * Set HTML scrollable\n */\nconst setHtmlScrollable = () => {\n removeClassToElement(body, selectors.fixedClass);\n removeClassToElement(body, selectors.overflowHiddenClass);\n removeClassToElement(body, selectors.fullWidthClass);\n body.style.height = '';\n body.style.top = '';\n window.scrollTo({ top: htmlElementScroll, behavior: 'instant' });\n\n htmlElementScroll = 0;\n};\n\nconst smoothScrollToAnchor = () => {\n const elementsWithHash = document.querySelectorAll('a[href*=\"#\"]') || [];\n\n elementsWithHash.forEach((element) => {\n element.addEventListener('click', (event) => {\n event.preventDefault();\n const targetHref = element.getAttribute('href');\n let elementPosition = 0;\n if (targetHref != '#') {\n elementPosition = elmYPosition(targetHref);\n }\n window.scrollTo({ top: elementPosition, behavior: 'smooth' });\n });\n });\n};\n\nconst randomNumber = (min, max) => {\n return Math.floor(Math.random() * (max - min)) + min;\n};\n\nconst debounce = (callback, wait) => {\n let timeoutId = null;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => {\n callback.apply(null, args);\n }, wait);\n };\n};\n\nconst throttle = (func, wait) => {\n let waiting = false;\n return function () {\n if (waiting) {\n return;\n }\n\n waiting = true;\n setTimeout(() => {\n func.apply(this, arguments);\n waiting = false;\n }, wait);\n };\n};\n\nconst getMediaQuery = (mediaQuery) => {\n return window.matchMedia(mediaQuery);\n};\n\n/**\n * Sleep for a certain amount of time\n * @param {number} ms - The amount of time to sleep in milliseconds\n * @returns {Promise} - The promise that resolves after the sleep\n */\nconst sleep = (ms) =>\n new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n\n/**\n * Try to execute a function with retries and delay\n * @param {Function} func - The function to execute\n * @param {number} retries - The number of retries\n * @param {number} delay - The delay between retries in milliseconds\n * @param {Array} params - The parameters to pass to the function\n * @returns {Promise} - The promise that resolves after the function is executed\n */\nconst tryExecute = async (func, retries, delay, ...params) => {\n let attempts = 0;\n\n while (attempts < retries) {\n try {\n const response = await func(...params);\n\n if (response.status === 200) {\n return response.data;\n }\n } catch (error) {\n const status = error.response?.status;\n const retryAfter = parseInt(\n error.response?.headers['retry-after'] || delay / 1000,\n 10\n ); // in seconds\n\n if (status === 429) {\n // Too many requests\n await sleep(retryAfter * 1000);\n } else {\n if (attempts >= retries - 1) {\n throw error;\n }\n }\n }\n attempts++;\n }\n};\n\nconst isPointingDevice = () => {\n return window.matchMedia('(pointer:fine) and (hover: hover)').matches;\n};\n\nexport {\n html,\n body,\n getUrlParameter,\n getSessionStorage,\n saveSessionStorage,\n currentYPosition,\n elmYPosition,\n setHtmlUnscrollable,\n setHtmlScrollable,\n smoothScrollToAnchor,\n randomNumber,\n debounce,\n throttle,\n customEvent,\n mediaQuery,\n getMediaQuery,\n tryExecute,\n isPointingDevice\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","'use strict';\n\nimport { listenDOMEvent } from '@jspartials/dom-api-utils';\nimport {\n addClassToElement,\n removeClassToElement,\n hasClassElement,\n classes\n} from '@jspartials/class-list-utils';\nimport {\n setHtmlUnscrollable,\n setHtmlScrollable\n} from '@jspartials/general-utils';\nimport {\n COOKIE_DURATION_ONE_YEAR,\n COOKIE_NAME_FOR_PREFERRED_LOCALE,\n setCookie\n} from '@jspartials/cookie-utils';\n\n// Classes\nconst SITE_SELECTOR_TRIGGER_OPEN_CLASSNAME = 'js-site-selector__trigger-open';\nconst MAIN_SITE_SELECTOR_CLASSNAME = 'js-site-selector';\nconst SITE_SELECTOR_CONTENT_CLASSNAME = 'js-site-selector__content';\nconst SITE_SELECTOR_CLASSNAME = 'js-site-selector__dropdown';\nconst SITE_SELECTOR_TITLE_TEXT_CLASSNAME = 'js-site-selector__title-text';\nconst SITE_SELECTOR_DESCRIPTION_TEXT_CLASSNAME =\n 'js-site-selector__description-text';\nconst SITE_SELECTOR_SELECTED_OPTION_CLASSNAME =\n 'js-site-selector__selected-option';\nconst SITE_SELECTOR_SELECTED_OPTION_IMAGE_CLASSNAME =\n 'js-site-selector__selected-option-image';\nconst SITE_SELECTOR_SELECTED_OPTION_TEXT_CLASSNAME =\n 'js-site-selector__selected-option-text';\nconst SITE_SELECTOR_OPTION_CLASSNAME = 'js-site-selector__dropdown-option';\nconst SITE_SELECTOR_OPTION_COUNTRY_TEXT_CLASSNAME =\n 'js-site-selector__dropdown-option-country-text';\nconst SITE_SELECTOR_ARROW_CLASSNAME = 'js-site-selector__selected-option-arrow';\nconst SITE_SELECTOR_REDIRECT_LINK_TEXT_CLASSNAME =\n 'js-site-selector__redirect-link-text';\nconst SITE_SELECTOR_ICON_CLOSE_CLASSNAME = 'js-site-selector_icon-close';\n\n// Selectors\nconst MAIN_SITE_SELECTOR_SELECTOR = `.${MAIN_SITE_SELECTOR_CLASSNAME}`;\nconst SITE_SELECTOR_CONTENT_SELECTOR = `.${SITE_SELECTOR_CONTENT_CLASSNAME}`;\nconst SITE_SELECTOR_TITLE_TEXT_SELECTOR = `.${SITE_SELECTOR_TITLE_TEXT_CLASSNAME}`;\nconst SITE_SELECTOR_DESCRIPTION_TEXT_SELECTOR = `.${SITE_SELECTOR_DESCRIPTION_TEXT_CLASSNAME}`;\nconst SITE_SELECTOR_SELECTOR = `.${SITE_SELECTOR_CLASSNAME}`;\nconst SITE_SELECTOR_SELECTED_OPTION_SELECTOR = `.${SITE_SELECTOR_SELECTED_OPTION_CLASSNAME}`;\nconst SITE_SELECTOR_SELECTED_OPTION_IMAGE_SELECTOR = `.${SITE_SELECTOR_SELECTED_OPTION_IMAGE_CLASSNAME}`;\nconst SITE_SELECTOR_SELECTED_OPTION_TEXT_SELECTOR = `.${SITE_SELECTOR_SELECTED_OPTION_TEXT_CLASSNAME}`;\nconst SITE_SELECTOR_OPTION_SELECTOR = `.${SITE_SELECTOR_OPTION_CLASSNAME}`;\nconst SITE_SELECTOR_OPTION_COUNTRY_TEXT_SELECTOR = `.${SITE_SELECTOR_OPTION_COUNTRY_TEXT_CLASSNAME}`;\nconst SITE_SELECTOR_TRIGGER_OPEN_SELECTOR = `.${SITE_SELECTOR_TRIGGER_OPEN_CLASSNAME}`;\nconst SITE_SELECTOR_ARROW_SELECTOR = `.${SITE_SELECTOR_ARROW_CLASSNAME}`;\nconst SITE_SELECTOR_REDIRECT_LINK_TEXT_SELECTOR = `.${SITE_SELECTOR_REDIRECT_LINK_TEXT_CLASSNAME}`;\nconst SITE_SELECTOR_ICON_CLOSE_SELECTOR = `.${SITE_SELECTOR_ICON_CLOSE_CLASSNAME}`;\n\n// Elements\nconst mainSiteSelector = document.querySelector(MAIN_SITE_SELECTOR_SELECTOR);\nconst siteSelectorContent = document.querySelector(\n SITE_SELECTOR_CONTENT_SELECTOR\n);\nconst titleText = document.querySelectorAll(SITE_SELECTOR_TITLE_TEXT_SELECTOR);\nconst descriptionText = document.querySelector(\n SITE_SELECTOR_DESCRIPTION_TEXT_SELECTOR\n);\nconst siteSelector = document.querySelector(SITE_SELECTOR_SELECTOR);\nconst selectedOption = document.querySelector(\n SITE_SELECTOR_SELECTED_OPTION_SELECTOR\n);\nconst selectedOptionImage = document.querySelector(\n SITE_SELECTOR_SELECTED_OPTION_IMAGE_SELECTOR\n);\nconst selectedOptionText = document.querySelector(\n SITE_SELECTOR_SELECTED_OPTION_TEXT_SELECTOR\n);\nconst arrowSelector = document.querySelector(SITE_SELECTOR_ARROW_SELECTOR);\nconst redirectLinkText = document.querySelector(\n SITE_SELECTOR_REDIRECT_LINK_TEXT_SELECTOR\n);\nconst iconClose = document.querySelector(SITE_SELECTOR_ICON_CLOSE_SELECTOR);\n\n// Variables\nlet isOpened = false;\n\n// Functions\n\n//Close the list of countries and set the classes depending on the variable\nconst closeSelector = () => {\n isOpened = false;\n removeClassToElement(siteSelector, classes.is.open);\n removeClassToElement(arrowSelector, classes.is.open);\n removeClassToElement(selectedOption, classes.is.open);\n};\n\n//Opens the list of countries and set the classes depending on the variable\nconst openSelector = () => {\n if (!isOpened) {\n isOpened = true;\n addClassToElement(siteSelector, classes.is.open);\n addClassToElement(arrowSelector, classes.is.open);\n addClassToElement(selectedOption, classes.is.open);\n } else {\n closeSelector();\n }\n};\n\nconst closeModal = () => {\n if (!hasClassElement(mainSiteSelector, classes.hidden)) {\n addClassToElement(mainSiteSelector, classes.hidden);\n setHtmlScrollable();\n updateLocaleCookie(selectedOption.dataset.current);\n }\n};\n\n//Changes the main/selected button content and its properties\nconst changeSelectedOption = (\n selectedOptionTextContent, // Australia\n selectedLocale, // en\n redirectLinkUrl,\n titleTextContent, // Select a country...\n descriptionTextContent, // Indicate in which country...\n redirectLinkTextContent, // GO\n selectedOptionImageContent\n) => {\n descriptionText.innerHTML = descriptionTextContent;\n titleText.forEach((text) => (text.innerText = titleTextContent));\n selectedOption.dataset.locale = selectedLocale;\n selectedOptionImage.src = selectedOptionImageContent;\n selectedOptionText.textContent = selectedOptionTextContent;\n redirectLinkText.innerHTML = redirectLinkTextContent;\n redirectLinkText.href = redirectLinkUrl;\n};\n\n/**\n * Update site locale\n */\nconst updateSite = () => {\n const locale = selectedOption.dataset.locale;\n\n updateLocaleCookie(locale);\n};\n\n/**\n * Update locale cookie and and site url\n */\nconst updateLocaleCookie = (locale) => {\n setCookie(COOKIE_NAME_FOR_PREFERRED_LOCALE, locale, COOKIE_DURATION_ONE_YEAR);\n};\n\n// Inits the onclick event of every trigger open selector\nconst initSiteSelector = () => {\n const siteSelectorTriggersOpen = document.querySelectorAll(\n SITE_SELECTOR_TRIGGER_OPEN_SELECTOR\n );\n\n if (siteSelectorTriggersOpen) {\n siteSelectorTriggersOpen.forEach((siteSelectorTriggersOpen) => {\n listenDOMEvent(siteSelectorTriggersOpen, 'click', openSelector);\n });\n }\n};\n\n// Inits the onclick event of every button\nconst initOptions = () => {\n const siteSelectorOptions = document.querySelectorAll(\n SITE_SELECTOR_OPTION_SELECTOR\n );\n\n if (siteSelectorOptions) {\n siteSelectorOptions.forEach((siteSelectorOption) => {\n listenDOMEvent(siteSelectorOption, 'click', function () {\n const selectedLocale = this.dataset.locale;\n\n // Change the country text depending on the language\n changeCountriesTextLanguage(selectedLocale, siteSelectorOptions);\n\n const redirectLinkUrl = this.value;\n const titleText = this.dataset.title;\n const descriptionText = this.dataset.msg;\n const redirectLinkText = this.dataset.btn;\n const selectedOptionImage = this.dataset.img;\n const selectedOptionText = this.innerText;\n\n changeSelectedOption(\n selectedOptionText,\n selectedLocale,\n redirectLinkUrl,\n titleText,\n descriptionText,\n redirectLinkText,\n selectedOptionImage\n );\n });\n });\n }\n};\n\nconst changeCountriesTextLanguage = (selectedLocale, siteSelectorOptions) => {\n siteSelectorOptions.forEach((button) => {\n const optionLanguageText = 'button.dataset.' + selectedLocale.split('_')[0];\n\n button.querySelector(SITE_SELECTOR_OPTION_COUNTRY_TEXT_SELECTOR).innerText =\n eval(optionLanguageText);\n });\n};\n\n// Init\ndocument.addEventListener('DOMContentLoaded', function () {\n if (mainSiteSelector) {\n setHtmlUnscrollable();\n initSiteSelector();\n initOptions();\n\n listenDOMEvent(redirectLinkText, 'click', function () {\n updateSite();\n });\n\n listenDOMEvent(iconClose, 'click', function () {\n closeModal();\n });\n\n // Update languages and update site\n if (inputsCountry.length > 0) {\n inputsCountry.forEach((inputCountry) => {\n listenDOMEvent(inputCountry, 'change', function (event) {\n updateLanguages(event.target);\n });\n });\n }\n\n // Close the site-selector when clicking outside\n mainSiteSelector.addEventListener('click', function (event) {\n if (event.target === mainSiteSelector) {\n closeModal();\n }\n });\n\n // Close the site-selector when clicking outside\n listenDOMEvent(window, 'click', function (event) {\n if (\n !event.target.closest('.js-site-selector__dropdown') &&\n !event.target.closest('.js-site-selector__selected-option')\n ) {\n closeSelector();\n }\n });\n }\n});\n"],"names":["classes","hidden","is","loading","preferred","calculating","visible","selected","open","active","invalid","current","full","loaded","disabled","fullscreen","alone","sticky","zoomed","enabled","filtered","scrollable","fixed","animated","animatedOut","animatedIn","locked","empty","available","cached","has","error","success","filtersVisible","subscription","gross","show","password","resumeOrder","color","state","gtm","avoidViewed","not","results","text","uppercase","addClassToElement","$element","_len","arguments","length","newClasses","Array","_key","classList","add","removeClassToElement","_len2","_key2","remove","hasClassElement","classname","contains","COOKIE_DURATION_ONE_YEAR","COOKIE_NAME_FOR_PREFERRED_LOCALE","setCookie","name","value","duration","undefined","date","Date","setTime","getTime","document","cookie","toGMTString","listenDOMEvent","$elem","eventName","callback","addEventListener","querySelector","body","selectors","htmlElementScroll","setHtmlUnscrollable","documentElement","scrollTop","style","height","top","setHtmlScrollable","window","scrollTo","behavior","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","d","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","SITE_SELECTOR_TRIGGER_OPEN_CLASSNAME","MAIN_SITE_SELECTOR_CLASSNAME","SITE_SELECTOR_CONTENT_CLASSNAME","SITE_SELECTOR_CLASSNAME","SITE_SELECTOR_TITLE_TEXT_CLASSNAME","SITE_SELECTOR_DESCRIPTION_TEXT_CLASSNAME","SITE_SELECTOR_SELECTED_OPTION_CLASSNAME","SITE_SELECTOR_SELECTED_OPTION_IMAGE_CLASSNAME","SITE_SELECTOR_SELECTED_OPTION_TEXT_CLASSNAME","SITE_SELECTOR_OPTION_CLASSNAME","SITE_SELECTOR_OPTION_COUNTRY_TEXT_CLASSNAME","SITE_SELECTOR_ARROW_CLASSNAME","SITE_SELECTOR_REDIRECT_LINK_TEXT_CLASSNAME","SITE_SELECTOR_ICON_CLOSE_CLASSNAME","MAIN_SITE_SELECTOR_SELECTOR","SITE_SELECTOR_CONTENT_SELECTOR","SITE_SELECTOR_TITLE_TEXT_SELECTOR","SITE_SELECTOR_DESCRIPTION_TEXT_SELECTOR","SITE_SELECTOR_SELECTOR","SITE_SELECTOR_SELECTED_OPTION_SELECTOR","SITE_SELECTOR_SELECTED_OPTION_IMAGE_SELECTOR","SITE_SELECTOR_SELECTED_OPTION_TEXT_SELECTOR","SITE_SELECTOR_OPTION_SELECTOR","SITE_SELECTOR_OPTION_COUNTRY_TEXT_SELECTOR","SITE_SELECTOR_TRIGGER_OPEN_SELECTOR","SITE_SELECTOR_ARROW_SELECTOR","SITE_SELECTOR_REDIRECT_LINK_TEXT_SELECTOR","SITE_SELECTOR_ICON_CLOSE_SELECTOR","mainSiteSelector","siteSelectorContent","titleText","querySelectorAll","descriptionText","siteSelector","selectedOption","selectedOptionImage","selectedOptionText","arrowSelector","redirectLinkText","iconClose","isOpened","closeSelector","openSelector","closeModal","updateLocaleCookie","dataset","changeSelectedOption","selectedOptionTextContent","selectedLocale","redirectLinkUrl","titleTextContent","descriptionTextContent","redirectLinkTextContent","selectedOptionImageContent","innerHTML","forEach","innerText","locale","src","textContent","href","updateSite","initSiteSelector","siteSelectorTriggersOpen","initOptions","siteSelectorOptions","siteSelectorOption","this","changeCountriesTextLanguage","title","msg","btn","img","button","optionLanguageText","split","eval","inputsCountry","inputCountry","event","updateLanguages","target","closest"],"sourceRoot":""}