{"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":""}