{
  "version": 3,
  "sources": ["/cdn/shop/t/131/assets/global.js?florame_v=20260517-nino-carousel"],
  "sourcesContent": ["function getFocusableElements(container) {\r\n  return Array.from(\r\n    container.querySelectorAll(\r\n      \"summary, a[href], button:enabled, [tabindex]:not([tabindex^='-']), [draggable], area, input:not([type=hidden]):enabled, select:enabled, textarea:enabled, object, iframe\"\r\n    )\r\n  );\r\n}\r\n\r\n(() => {\r\n  const partnerPath = '/pages/diventa-partner';\r\n  const storefrontUrl = 'https://florame.ai/pages/fiori-nino';\r\n  const normalizedStorefrontUrl = storefrontUrl.replace(/\\/$/, '');\r\n\r\n  function normalizeHref(href) {\r\n    try {\r\n      return new URL(href, window.location.origin).href.replace(/\\/$/, '');\r\n    } catch (e) {\r\n      return String(href || '').replace(/\\/$/, '');\r\n    }\r\n  }\r\n\r\n  function pointsToNinoStorefront(link) {\r\n    return normalizeHref(link && link.getAttribute('href')) === normalizedStorefrontUrl;\r\n  }\r\n\r\n  function enhancePartnerProof() {\r\n    if (window.location.pathname.replace(/\\/$/, '') !== partnerPath) return;\r\n\r\n    const proof = document.querySelector('.social-proof');\r\n    if (!proof || proof.dataset.ninoStorefrontEnhanced === '1') return;\r\n    proof.dataset.ninoStorefrontEnhanced = '1';\r\n\r\n    const storefrontTextLinks = Array.from(proof.querySelectorAll('a.social-proof-link')).filter(pointsToNinoStorefront);\r\n    storefrontTextLinks.slice(1).forEach((link) => link.remove());\r\n\r\n    const avatar = proof.querySelector('.social-avatar');\r\n    const currentAvatarLink = avatar && avatar.closest('a');\r\n    if (currentAvatarLink && !pointsToNinoStorefront(currentAvatarLink)) {\r\n      currentAvatarLink.href = storefrontUrl;\r\n      currentAvatarLink.classList.add('social-avatar-link');\r\n      currentAvatarLink.setAttribute('aria-label', 'Apri lo storefront di Nino Fiori e Piante');\r\n    } else if (avatar && !currentAvatarLink) {\r\n      const avatarLink = document.createElement('a');\r\n      avatarLink.href = storefrontUrl;\r\n      avatarLink.className = 'social-avatar-link';\r\n      avatarLink.setAttribute('aria-label', 'Apri lo storefront di Nino Fiori e Piante');\r\n      avatarLink.style.cssText = 'display:inline-flex;border-radius:50%;text-decoration:none;';\r\n\r\n      const media = avatar.closest('picture') || avatar;\r\n      media.parentNode.insertBefore(avatarLink, media);\r\n      avatarLink.appendChild(media);\r\n    }\r\n\r\n    if (storefrontTextLinks.length) return;\r\n\r\n    let copy = proof.querySelector('.social-proof-copy');\r\n    if (!copy) {\r\n      const proofText = Array.from(proof.children).find((child) => child.textContent.includes('Gi\u00E0 attivo'));\r\n      copy = document.createElement('div');\r\n      copy.className = 'social-proof-copy';\r\n      copy.style.cssText = 'display:grid;gap:6px;';\r\n\r\n      if (proofText) {\r\n        proofText.parentNode.insertBefore(copy, proofText);\r\n        copy.appendChild(proofText);\r\n      } else {\r\n        proof.appendChild(copy);\r\n      }\r\n    }\r\n\r\n    const storefrontLink = document.createElement('a');\r\n    storefrontLink.href = storefrontUrl;\r\n    storefrontLink.className = 'social-proof-link';\r\n    storefrontLink.style.cssText =\r\n      'display:inline-flex;align-items:center;gap:6px;width:fit-content;color:#ff4d75;font-size:12px;font-weight:800;line-height:1.2;text-decoration:none;';\r\n    storefrontLink.innerHTML =\r\n      'Vedi lo storefront di Nino <svg width=\"13\" height=\"13\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M7 17 17 7\"></path><path d=\"M8 7h9v9\"></path></svg>';\r\n    copy.appendChild(storefrontLink);\r\n  }\r\n\r\n  if (document.readyState === 'loading') {\r\n    document.addEventListener('DOMContentLoaded', enhancePartnerProof, { once: true });\r\n  } else {\r\n    enhancePartnerProof();\r\n  }\r\n})();\r\n\r\nclass SectionId {\r\n  static #separator = '__';\r\n\r\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section id (e.g. 'template--22224696705326')\r\n  static parseId(qualifiedSectionId) {\r\n    return qualifiedSectionId.split(SectionId.#separator)[0];\r\n  }\r\n\r\n  // for a qualified section id (e.g. 'template--22224696705326__main'), return just the section name (e.g. 'main')\r\n  static parseSectionName(qualifiedSectionId) {\r\n    return qualifiedSectionId.split(SectionId.#separator)[1];\r\n  }\r\n\r\n  // for a section id (e.g. 'template--22224696705326') and a section name (e.g. 'recommended-products'), return a qualified section id (e.g. 'template--22224696705326__recommended-products')\r\n  static getIdForSection(sectionId, sectionName) {\r\n    return `${sectionId}${SectionId.#separator}${sectionName}`;\r\n  }\r\n}\r\n\r\nclass HTMLUpdateUtility {\r\n  /**\r\n   * Used to swap an HTML node with a new node.\r\n   * The new node is inserted as a previous sibling to the old node, the old node is hidden, and then the old node is removed.\r\n   *\r\n   * The function currently uses a double buffer approach, but this should be replaced by a view transition once it is more widely supported https://developer.mozilla.org/en-US/docs/Web/API/View_Transitions_API\r\n   */\r\n  static viewTransition(oldNode, newContent, preProcessCallbacks = [], postProcessCallbacks = []) {\r\n    preProcessCallbacks?.forEach((callback) => callback(newContent));\r\n\r\n    const newNodeWrapper = document.createElement('div');\r\n    HTMLUpdateUtility.setInnerHTML(newNodeWrapper, newContent.outerHTML);\r\n    const newNode = newNodeWrapper.firstChild;\r\n\r\n    // dedupe IDs\r\n    const uniqueKey = Date.now();\r\n    oldNode.querySelectorAll('[id], [form]').forEach((element) => {\r\n      element.id && (element.id = `${element.id}-${uniqueKey}`);\r\n      element.form && element.setAttribute('form', `${element.form.getAttribute('id')}-${uniqueKey}`);\r\n    });\r\n\r\n    oldNode.parentNode.insertBefore(newNode, oldNode);\r\n    oldNode.style.display = 'none';\r\n\r\n    postProcessCallbacks?.forEach((callback) => callback(newNode));\r\n\r\n    setTimeout(() => oldNode.remove(), 500);\r\n  }\r\n\r\n  // Sets inner HTML and reinjects the script tags to allow execution. By default, scripts are disabled when using element.innerHTML.\r\n  static setInnerHTML(element, html) {\r\n    element.innerHTML = html;\r\n    element.querySelectorAll('script').forEach((oldScriptTag) => {\r\n      const newScriptTag = document.createElement('script');\r\n      Array.from(oldScriptTag.attributes).forEach((attribute) => {\r\n        newScriptTag.setAttribute(attribute.name, attribute.value);\r\n      });\r\n      newScriptTag.appendChild(document.createTextNode(oldScriptTag.innerHTML));\r\n      oldScriptTag.parentNode.replaceChild(newScriptTag, oldScriptTag);\r\n    });\r\n  }\r\n}\r\n\r\ndocument.querySelectorAll('[id^=\"Details-\"] summary').forEach((summary) => {\r\n  summary.setAttribute('role', 'button');\r\n  summary.setAttribute('aria-expanded', summary.parentNode.hasAttribute('open'));\r\n\r\n  if (summary.nextElementSibling.getAttribute('id')) {\r\n    summary.setAttribute('aria-controls', summary.nextElementSibling.id);\r\n  }\r\n\r\n  summary.addEventListener('click', (event) => {\r\n    event.currentTarget.setAttribute('aria-expanded', !event.currentTarget.closest('details').hasAttribute('open'));\r\n  });\r\n\r\n  if (summary.closest('header-drawer, menu-drawer')) return;\r\n  summary.parentElement.addEventListener('keyup', onKeyUpEscape);\r\n});\r\n\r\nconst trapFocusHandlers = {};\r\n\r\nfunction trapFocus(container, elementToFocus = container) {\r\n  var elements = getFocusableElements(container);\r\n  var first = elements[0];\r\n  var last = elements[elements.length - 1];\r\n\r\n  removeTrapFocus();\r\n\r\n  trapFocusHandlers.focusin = (event) => {\r\n    if (event.target !== container && event.target !== last && event.target !== first) return;\r\n\r\n    document.addEventListener('keydown', trapFocusHandlers.keydown);\r\n  };\r\n\r\n  trapFocusHandlers.focusout = function () {\r\n    document.removeEventListener('keydown', trapFocusHandlers.keydown);\r\n  };\r\n\r\n  trapFocusHandlers.keydown = function (event) {\r\n    if (event.code.toUpperCase() !== 'TAB') return; // If not TAB key\r\n    // On the last focusable element and tab forward, focus the first element.\r\n    if (event.target === last && !event.shiftKey) {\r\n      event.preventDefault();\r\n      first.focus();\r\n    }\r\n\r\n    //  On the first focusable element and tab backward, focus the last element.\r\n    if ((event.target === container || event.target === first) && event.shiftKey) {\r\n      event.preventDefault();\r\n      last.focus();\r\n    }\r\n  };\r\n\r\n  document.addEventListener('focusout', trapFocusHandlers.focusout);\r\n  document.addEventListener('focusin', trapFocusHandlers.focusin);\r\n\r\n  elementToFocus.focus();\r\n\r\n  if (\r\n    elementToFocus.tagName === 'INPUT' &&\r\n    ['search', 'text', 'email', 'url'].includes(elementToFocus.type) &&\r\n    elementToFocus.value\r\n  ) {\r\n    elementToFocus.setSelectionRange(0, elementToFocus.value.length);\r\n  }\r\n}\r\n\r\n// Here run the querySelector to figure out if the browser supports :focus-visible or not and run code based on it.\r\ntry {\r\n  document.querySelector(':focus-visible');\r\n} catch (e) {\r\n  focusVisiblePolyfill();\r\n}\r\n\r\nfunction focusVisiblePolyfill() {\r\n  const navKeys = [\r\n    'ARROWUP',\r\n    'ARROWDOWN',\r\n    'ARROWLEFT',\r\n    'ARROWRIGHT',\r\n    'TAB',\r\n    'ENTER',\r\n    'SPACE',\r\n    'ESCAPE',\r\n    'HOME',\r\n    'END',\r\n    'PAGEUP',\r\n    'PAGEDOWN',\r\n  ];\r\n  let currentFocusedElement = null;\r\n  let mouseClick = null;\r\n\r\n  window.addEventListener('keydown', (event) => {\r\n    if (navKeys.includes(event.code.toUpperCase())) {\r\n      mouseClick = false;\r\n    }\r\n  });\r\n\r\n  window.addEventListener('mousedown', (event) => {\r\n    mouseClick = true;\r\n  });\r\n\r\n  window.addEventListener(\r\n    'focus',\r\n    () => {\r\n      if (currentFocusedElement) currentFocusedElement.classList.remove('focused');\r\n\r\n      if (mouseClick) return;\r\n\r\n      currentFocusedElement = document.activeElement;\r\n      currentFocusedElement.classList.add('focused');\r\n    },\r\n    true\r\n  );\r\n}\r\n\r\nfunction pauseAllMedia() {\r\n  document.querySelectorAll('.js-youtube').forEach((video) => {\r\n    video.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"' + 'pauseVideo' + '\",\"args\":\"\"}', '*');\r\n  });\r\n  document.querySelectorAll('.js-vimeo').forEach((video) => {\r\n    video.contentWindow.postMessage('{\"method\":\"pause\"}', '*');\r\n  });\r\n  document.querySelectorAll('video').forEach((video) => video.pause());\r\n  document.querySelectorAll('product-model').forEach((model) => {\r\n    if (model.modelViewerUI) model.modelViewerUI.pause();\r\n  });\r\n}\r\n\r\nfunction removeTrapFocus(elementToFocus = null) {\r\n  document.removeEventListener('focusin', trapFocusHandlers.focusin);\r\n  document.removeEventListener('focusout', trapFocusHandlers.focusout);\r\n  document.removeEventListener('keydown', trapFocusHandlers.keydown);\r\n\r\n  if (elementToFocus) elementToFocus.focus();\r\n}\r\n\r\nfunction onKeyUpEscape(event) {\r\n  if (event.code.toUpperCase() !== 'ESCAPE') return;\r\n\r\n  const openDetailsElement = event.target.closest('details[open]');\r\n  if (!openDetailsElement) return;\r\n\r\n  const summaryElement = openDetailsElement.querySelector('summary');\r\n  openDetailsElement.removeAttribute('open');\r\n  summaryElement.setAttribute('aria-expanded', false);\r\n  summaryElement.focus();\r\n}\r\n\r\nclass QuantityInput extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    this.input = this.querySelector('input');\r\n    this.changeEvent = new Event('change', { bubbles: true });\r\n    this.input.addEventListener('change', this.onInputChange.bind(this));\r\n    this.querySelectorAll('button').forEach((button) =>\r\n      button.addEventListener('click', this.onButtonClick.bind(this))\r\n    );\r\n  }\r\n\r\n  quantityUpdateUnsubscriber = undefined;\r\n\r\n  connectedCallback() {\r\n    this.validateQtyRules();\r\n    this.quantityUpdateUnsubscriber = subscribe(PUB_SUB_EVENTS.quantityUpdate, this.validateQtyRules.bind(this));\r\n  }\r\n\r\n  disconnectedCallback() {\r\n    if (this.quantityUpdateUnsubscriber) {\r\n      this.quantityUpdateUnsubscriber();\r\n    }\r\n  }\r\n\r\n  onInputChange(event) {\r\n    this.validateQtyRules();\r\n  }\r\n\r\n  onButtonClick(event) {\r\n    event.preventDefault();\r\n    const previousValue = this.input.value;\r\n\r\n    if (event.target.name === 'plus') {\r\n      if (parseInt(this.input.dataset.min) > parseInt(this.input.step) && this.input.value == 0) {\r\n        this.input.value = this.input.dataset.min;\r\n      } else {\r\n        this.input.stepUp();\r\n      }\r\n    } else {\r\n      this.input.stepDown();\r\n    }\r\n\r\n    if (previousValue !== this.input.value) this.input.dispatchEvent(this.changeEvent);\r\n\r\n    if (this.input.dataset.min === previousValue && event.target.name === 'minus') {\r\n      this.input.value = parseInt(this.input.min);\r\n    }\r\n  }\r\n\r\n  validateQtyRules() {\r\n    const value = parseInt(this.input.value);\r\n    if (this.input.min) {\r\n      const buttonMinus = this.querySelector(\".quantity__button[name='minus']\");\r\n      buttonMinus.classList.toggle('disabled', parseInt(value) <= parseInt(this.input.min));\r\n    }\r\n    if (this.input.max) {\r\n      const max = parseInt(this.input.max);\r\n      const buttonPlus = this.querySelector(\".quantity__button[name='plus']\");\r\n      buttonPlus.classList.toggle('disabled', value >= max);\r\n    }\r\n  }\r\n}\r\n\r\ncustomElements.define('quantity-input', QuantityInput);\r\n\r\nfunction debounce(fn, wait) {\r\n  let t;\r\n  return (...args) => {\r\n    clearTimeout(t);\r\n    t = setTimeout(() => fn.apply(this, args), wait);\r\n  };\r\n}\r\n\r\nfunction throttle(fn, delay) {\r\n  let lastCall = 0;\r\n  return function (...args) {\r\n    const now = new Date().getTime();\r\n    if (now - lastCall < delay) {\r\n      return;\r\n    }\r\n    lastCall = now;\r\n    return fn(...args);\r\n  };\r\n}\r\n\r\nfunction fetchConfig(type = 'json') {\r\n  return {\r\n    method: 'POST',\r\n    headers: { 'Content-Type': 'application/json', Accept: `application/${type}` },\r\n  };\r\n}\r\n\r\n/*\r\n * Shopify Common JS\r\n *\r\n */\r\nif (typeof window.Shopify == 'undefined') {\r\n  window.Shopify = {};\r\n}\r\n\r\nShopify.bind = function (fn, scope) {\r\n  return function () {\r\n    return fn.apply(scope, arguments);\r\n  };\r\n};\r\n\r\nShopify.setSelectorByValue = function (selector, value) {\r\n  for (var i = 0, count = selector.options.length; i < count; i++) {\r\n    var option = selector.options[i];\r\n    if (value == option.value || value == option.innerHTML) {\r\n      selector.selectedIndex = i;\r\n      return i;\r\n    }\r\n  }\r\n};\r\n\r\nShopify.addListener = function (target, eventName, callback) {\r\n  target.addEventListener\r\n    ? target.addEventListener(eventName, callback, false)\r\n    : target.attachEvent('on' + eventName, callback);\r\n};\r\n\r\nShopify.postLink = function (path, options) {\r\n  options = options || {};\r\n  var method = options['method'] || 'post';\r\n  var params = options['parameters'] || {};\r\n\r\n  var form = document.createElement('form');\r\n  form.setAttribute('method', method);\r\n  form.setAttribute('action', path);\r\n\r\n  for (var key in params) {\r\n    var hiddenField = document.createElement('input');\r\n    hiddenField.setAttribute('type', 'hidden');\r\n    hiddenField.setAttribute('name', key);\r\n    hiddenField.setAttribute('value', params[key]);\r\n    form.appendChild(hiddenField);\r\n  }\r\n  document.body.appendChild(form);\r\n  form.submit();\r\n  document.body.removeChild(form);\r\n};\r\n\r\nShopify.CountryProvinceSelector = function (country_domid, province_domid, options) {\r\n  this.countryEl = document.getElementById(country_domid);\r\n  this.provinceEl = document.getElementById(province_domid);\r\n  this.provinceContainer = document.getElementById(options['hideElement'] || province_domid);\r\n\r\n  Shopify.addListener(this.countryEl, 'change', Shopify.bind(this.countryHandler, this));\r\n\r\n  this.initCountry();\r\n  this.initProvince();\r\n};\r\n\r\nShopify.CountryProvinceSelector.prototype = {\r\n  initCountry: function () {\r\n    var value = this.countryEl.getAttribute('data-default');\r\n    Shopify.setSelectorByValue(this.countryEl, value);\r\n    this.countryHandler();\r\n  },\r\n\r\n  initProvince: function () {\r\n    var value = this.provinceEl.getAttribute('data-default');\r\n    if (value && this.provinceEl.options.length > 0) {\r\n      Shopify.setSelectorByValue(this.provinceEl, value);\r\n    }\r\n  },\r\n\r\n  countryHandler: function (e) {\r\n    var opt = this.countryEl.options[this.countryEl.selectedIndex];\r\n    var raw = opt.getAttribute('data-provinces');\r\n    var provinces = JSON.parse(raw);\r\n\r\n    this.clearOptions(this.provinceEl);\r\n    if (provinces && provinces.length == 0) {\r\n      this.provinceContainer.style.display = 'none';\r\n    } else {\r\n      for (var i = 0; i < provinces.length; i++) {\r\n        var opt = document.createElement('option');\r\n        opt.value = provinces[i][0];\r\n        opt.innerHTML = provinces[i][1];\r\n        this.provinceEl.appendChild(opt);\r\n      }\r\n\r\n      this.provinceContainer.style.display = '';\r\n    }\r\n  },\r\n\r\n  clearOptions: function (selector) {\r\n    while (selector.firstChild) {\r\n      selector.removeChild(selector.firstChild);\r\n    }\r\n  },\r\n\r\n  setOptions: function (selector, values) {\r\n    for (var i = 0, count = values.length; i < values.length; i++) {\r\n      var opt = document.createElement('option');\r\n      opt.value = values[i];\r\n      opt.innerHTML = values[i];\r\n      selector.appendChild(opt);\r\n    }\r\n  },\r\n};\r\n\r\nclass MenuDrawer extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n\r\n    this.mainDetailsToggle = this.querySelector('details');\r\n\r\n    this.addEventListener('keyup', this.onKeyUp.bind(this));\r\n    this.addEventListener('focusout', this.onFocusOut.bind(this));\r\n    this.bindEvents();\r\n  }\r\n\r\n  bindEvents() {\r\n    this.querySelectorAll('summary').forEach((summary) =>\r\n      summary.addEventListener('click', this.onSummaryClick.bind(this))\r\n    );\r\n    this.querySelectorAll(\r\n      'button:not(.localization-selector):not(.country-selector__close-button):not(.country-filter__reset-button)'\r\n    ).forEach((button) => button.addEventListener('click', this.onCloseButtonClick.bind(this)));\r\n  }\r\n\r\n  onKeyUp(event) {\r\n    if (event.code.toUpperCase() !== 'ESCAPE') return;\r\n\r\n    const openDetailsElement = event.target.closest('details[open]');\r\n    if (!openDetailsElement) return;\r\n\r\n    openDetailsElement === this.mainDetailsToggle\r\n      ? this.closeMenuDrawer(event, this.mainDetailsToggle.querySelector('summary'))\r\n      : this.closeSubmenu(openDetailsElement);\r\n  }\r\n\r\n  onSummaryClick(event) {\r\n    const summaryElement = event.currentTarget;\r\n    const detailsElement = summaryElement.parentNode;\r\n    const parentMenuElement = detailsElement.closest('.has-submenu');\r\n    const isOpen = detailsElement.hasAttribute('open');\r\n    const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n\r\n    function addTrapFocus() {\r\n      trapFocus(summaryElement.nextElementSibling, detailsElement.querySelector('button'));\r\n      summaryElement.nextElementSibling.removeEventListener('transitionend', addTrapFocus);\r\n    }\r\n\r\n    if (detailsElement === this.mainDetailsToggle) {\r\n      if (isOpen) event.preventDefault();\r\n      isOpen ? this.closeMenuDrawer(event, summaryElement) : this.openMenuDrawer(summaryElement);\r\n\r\n      if (window.matchMedia('(max-width: 990px)')) {\r\n        document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);\r\n      }\r\n    } else {\r\n      setTimeout(() => {\r\n        detailsElement.classList.add('menu-opening');\r\n        summaryElement.setAttribute('aria-expanded', true);\r\n        parentMenuElement && parentMenuElement.classList.add('submenu-open');\r\n        !reducedMotion || reducedMotion.matches\r\n          ? addTrapFocus()\r\n          : summaryElement.nextElementSibling.addEventListener('transitionend', addTrapFocus);\r\n      }, 100);\r\n    }\r\n  }\r\n\r\n  openMenuDrawer(summaryElement) {\r\n    setTimeout(() => {\r\n      this.mainDetailsToggle.classList.add('menu-opening');\r\n    });\r\n    summaryElement.setAttribute('aria-expanded', true);\r\n    trapFocus(this.mainDetailsToggle, summaryElement);\r\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\r\n  }\r\n\r\n  closeMenuDrawer(event, elementToFocus = false) {\r\n    if (event === undefined) return;\r\n\r\n    this.mainDetailsToggle.classList.remove('menu-opening');\r\n    this.mainDetailsToggle.querySelectorAll('details').forEach((details) => {\r\n      details.removeAttribute('open');\r\n      details.classList.remove('menu-opening');\r\n    });\r\n    this.mainDetailsToggle.querySelectorAll('.submenu-open').forEach((submenu) => {\r\n      submenu.classList.remove('submenu-open');\r\n    });\r\n    document.body.classList.remove(`overflow-hidden-${this.dataset.breakpoint}`);\r\n    removeTrapFocus(elementToFocus);\r\n    this.closeAnimation(this.mainDetailsToggle);\r\n\r\n    if (event instanceof KeyboardEvent) elementToFocus?.setAttribute('aria-expanded', false);\r\n  }\r\n\r\n  onFocusOut() {\r\n    setTimeout(() => {\r\n      if (this.mainDetailsToggle.hasAttribute('open') && !this.mainDetailsToggle.contains(document.activeElement))\r\n        this.closeMenuDrawer();\r\n    });\r\n  }\r\n\r\n  onCloseButtonClick(event) {\r\n    const detailsElement = event.currentTarget.closest('details');\r\n    this.closeSubmenu(detailsElement);\r\n  }\r\n\r\n  closeSubmenu(detailsElement) {\r\n    const parentMenuElement = detailsElement.closest('.submenu-open');\r\n    parentMenuElement && parentMenuElement.classList.remove('submenu-open');\r\n    detailsElement.classList.remove('menu-opening');\r\n    detailsElement.querySelector('summary').setAttribute('aria-expanded', false);\r\n    removeTrapFocus(detailsElement.querySelector('summary'));\r\n    this.closeAnimation(detailsElement);\r\n  }\r\n\r\n  closeAnimation(detailsElement) {\r\n    let animationStart;\r\n\r\n    const handleAnimation = (time) => {\r\n      if (animationStart === undefined) {\r\n        animationStart = time;\r\n      }\r\n\r\n      const elapsedTime = time - animationStart;\r\n\r\n      if (elapsedTime < 400) {\r\n        window.requestAnimationFrame(handleAnimation);\r\n      } else {\r\n        detailsElement.removeAttribute('open');\r\n        if (detailsElement.closest('details[open]')) {\r\n          trapFocus(detailsElement.closest('details[open]'), detailsElement.querySelector('summary'));\r\n        }\r\n      }\r\n    };\r\n\r\n    window.requestAnimationFrame(handleAnimation);\r\n  }\r\n}\r\n\r\ncustomElements.define('menu-drawer', MenuDrawer);\r\n\r\nclass HeaderDrawer extends MenuDrawer {\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  openMenuDrawer(summaryElement) {\r\n    this.header = this.header || document.querySelector('.section-header');\r\n    this.borderOffset =\r\n      this.borderOffset || this.closest('.header-wrapper').classList.contains('header-wrapper--border-bottom') ? 1 : 0;\r\n    document.documentElement.style.setProperty(\r\n      '--header-bottom-position',\r\n      `${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`\r\n    );\r\n    this.header.classList.add('menu-open');\r\n\r\n    setTimeout(() => {\r\n      this.mainDetailsToggle.classList.add('menu-opening');\r\n    });\r\n\r\n    summaryElement.setAttribute('aria-expanded', true);\r\n    window.addEventListener('resize', this.onResize);\r\n    trapFocus(this.mainDetailsToggle, summaryElement);\r\n    document.body.classList.add(`overflow-hidden-${this.dataset.breakpoint}`);\r\n  }\r\n\r\n  closeMenuDrawer(event, elementToFocus) {\r\n    if (!elementToFocus) return;\r\n    super.closeMenuDrawer(event, elementToFocus);\r\n    this.header.classList.remove('menu-open');\r\n    window.removeEventListener('resize', this.onResize);\r\n  }\r\n\r\n  onResize = () => {\r\n    this.header &&\r\n      document.documentElement.style.setProperty(\r\n        '--header-bottom-position',\r\n        `${parseInt(this.header.getBoundingClientRect().bottom - this.borderOffset)}px`\r\n      );\r\n    document.documentElement.style.setProperty('--viewport-height', `${window.innerHeight}px`);\r\n  };\r\n}\r\n\r\ncustomElements.define('header-drawer', HeaderDrawer);\r\n\r\nclass ModalDialog extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    this.querySelector('[id^=\"ModalClose-\"]').addEventListener('click', this.hide.bind(this, false));\r\n    this.addEventListener('keyup', (event) => {\r\n      if (event.code.toUpperCase() === 'ESCAPE') this.hide();\r\n    });\r\n    if (this.classList.contains('media-modal')) {\r\n      this.addEventListener('pointerup', (event) => {\r\n        if (event.pointerType === 'mouse' && !event.target.closest('deferred-media, product-model')) this.hide();\r\n      });\r\n    } else {\r\n      this.addEventListener('click', (event) => {\r\n        if (event.target === this) this.hide();\r\n      });\r\n    }\r\n  }\r\n\r\n  connectedCallback() {\r\n    if (this.moved) return;\r\n    this.moved = true;\r\n    document.body.appendChild(this);\r\n  }\r\n\r\n  show(opener) {\r\n    this.openedBy = opener;\r\n    const popup = this.querySelector('.template-popup');\r\n    document.body.classList.add('overflow-hidden');\r\n    this.setAttribute('open', '');\r\n    if (popup) popup.loadContent();\r\n    trapFocus(this, this.querySelector('[role=\"dialog\"]'));\r\n    window.pauseAllMedia();\r\n  }\r\n\r\n  hide() {\r\n    document.body.classList.remove('overflow-hidden');\r\n    document.body.dispatchEvent(new CustomEvent('modalClosed'));\r\n    this.removeAttribute('open');\r\n    removeTrapFocus(this.openedBy);\r\n    window.pauseAllMedia();\r\n  }\r\n}\r\ncustomElements.define('modal-dialog', ModalDialog);\r\n\r\nclass BulkModal extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  connectedCallback() {\r\n    const handleIntersection = (entries, observer) => {\r\n      if (!entries[0].isIntersecting) return;\r\n      observer.unobserve(this);\r\n      if (this.innerHTML.trim() === '') {\r\n        const productUrl = this.dataset.url.split('?')[0];\r\n        fetch(`${productUrl}?section_id=bulk-quick-order-list`)\r\n          .then((response) => response.text())\r\n          .then((responseText) => {\r\n            const html = new DOMParser().parseFromString(responseText, 'text/html');\r\n            const sourceQty = html.querySelector('.quick-order-list-container').parentNode;\r\n            this.innerHTML = sourceQty.innerHTML;\r\n          })\r\n          .catch((e) => {\r\n            console.error(e);\r\n          });\r\n      }\r\n    };\r\n\r\n    new IntersectionObserver(handleIntersection.bind(this)).observe(\r\n      document.querySelector(`#QuickBulk-${this.dataset.productId}-${this.dataset.sectionId}`)\r\n    );\r\n  }\r\n}\r\n\r\ncustomElements.define('bulk-modal', BulkModal);\r\n\r\nclass ModalOpener extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n\r\n    const button = this.querySelector('button');\r\n\r\n    if (!button) return;\r\n    button.addEventListener('click', () => {\r\n      const modal = document.querySelector(this.getAttribute('data-modal'));\r\n      if (modal) modal.show(button);\r\n    });\r\n  }\r\n}\r\ncustomElements.define('modal-opener', ModalOpener);\r\n\r\nclass DeferredMedia extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    const poster = this.querySelector('[id^=\"Deferred-Poster-\"]');\r\n    if (!poster) return;\r\n    poster.addEventListener('click', this.loadContent.bind(this));\r\n  }\r\n\r\n  loadContent(focus = true) {\r\n    window.pauseAllMedia();\r\n    if (!this.getAttribute('loaded')) {\r\n      const content = document.createElement('div');\r\n      content.appendChild(this.querySelector('template').content.firstElementChild.cloneNode(true));\r\n\r\n      this.setAttribute('loaded', true);\r\n      const deferredElement = this.appendChild(content.querySelector('video, model-viewer, iframe'));\r\n      if (focus) deferredElement.focus();\r\n      if (deferredElement.nodeName == 'VIDEO' && deferredElement.getAttribute('autoplay')) {\r\n        // force autoplay for safari\r\n        deferredElement.play();\r\n      }\r\n    }\r\n  }\r\n}\r\n\r\ncustomElements.define('deferred-media', DeferredMedia);\r\n\r\nclass SliderComponent extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    this.slider = this.querySelector('[id^=\"Slider-\"]');\r\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\r\n    this.enableSliderLooping = false;\r\n    this.currentPageElement = this.querySelector('.slider-counter--current');\r\n    this.pageTotalElement = this.querySelector('.slider-counter--total');\r\n    this.prevButton = this.querySelector('button[name=\"previous\"]');\r\n    this.nextButton = this.querySelector('button[name=\"next\"]');\r\n\r\n    if (!this.slider || !this.nextButton) return;\r\n\r\n    this.initPages();\r\n    const resizeObserver = new ResizeObserver((entries) => this.initPages());\r\n    resizeObserver.observe(this.slider);\r\n\r\n    this.slider.addEventListener('scroll', this.update.bind(this));\r\n    this.prevButton.addEventListener('click', this.onButtonClick.bind(this));\r\n    this.nextButton.addEventListener('click', this.onButtonClick.bind(this));\r\n  }\r\n\r\n  initPages() {\r\n    this.sliderItemsToShow = Array.from(this.sliderItems).filter((element) => element.clientWidth > 0);\r\n    if (this.sliderItemsToShow.length < 2) return;\r\n    this.sliderItemOffset = this.sliderItemsToShow[1].offsetLeft - this.sliderItemsToShow[0].offsetLeft;\r\n    this.slidesPerPage = Math.floor(\r\n      (this.slider.clientWidth - this.sliderItemsToShow[0].offsetLeft) / this.sliderItemOffset\r\n    );\r\n    this.totalPages = this.sliderItemsToShow.length - this.slidesPerPage + 1;\r\n    this.update();\r\n  }\r\n\r\n  resetPages() {\r\n    this.sliderItems = this.querySelectorAll('[id^=\"Slide-\"]');\r\n    this.initPages();\r\n  }\r\n\r\n  update() {\r\n    // Temporarily prevents unneeded updates resulting from variant changes\r\n    // This should be refactored as part of https://github.com/Shopify/dawn/issues/2057\r\n    if (!this.slider || !this.nextButton) return;\r\n\r\n    const previousPage = this.currentPage;\r\n    this.currentPage = Math.round(this.slider.scrollLeft / this.sliderItemOffset) + 1;\r\n\r\n    if (this.currentPageElement && this.pageTotalElement) {\r\n      this.currentPageElement.textContent = this.currentPage;\r\n      this.pageTotalElement.textContent = this.totalPages;\r\n    }\r\n\r\n    if (this.currentPage != previousPage) {\r\n      this.dispatchEvent(\r\n        new CustomEvent('slideChanged', {\r\n          detail: {\r\n            currentPage: this.currentPage,\r\n            currentElement: this.sliderItemsToShow[this.currentPage - 1],\r\n          },\r\n        })\r\n      );\r\n    }\r\n\r\n    if (this.enableSliderLooping) return;\r\n\r\n    if (this.isSlideVisible(this.sliderItemsToShow[0]) && this.slider.scrollLeft === 0) {\r\n      this.prevButton.setAttribute('disabled', 'disabled');\r\n    } else {\r\n      this.prevButton.removeAttribute('disabled');\r\n    }\r\n\r\n    if (this.isSlideVisible(this.sliderItemsToShow[this.sliderItemsToShow.length - 1])) {\r\n      this.nextButton.setAttribute('disabled', 'disabled');\r\n    } else {\r\n      this.nextButton.removeAttribute('disabled');\r\n    }\r\n  }\r\n\r\n  isSlideVisible(element, offset = 0) {\r\n    const lastVisibleSlide = this.slider.clientWidth + this.slider.scrollLeft - offset;\r\n    return element.offsetLeft + element.clientWidth <= lastVisibleSlide && element.offsetLeft >= this.slider.scrollLeft;\r\n  }\r\n\r\n  onButtonClick(event) {\r\n    event.preventDefault();\r\n    const step = event.currentTarget.dataset.step || 1;\r\n    this.slideScrollPosition =\r\n      event.currentTarget.name === 'next'\r\n        ? this.slider.scrollLeft + step * this.sliderItemOffset\r\n        : this.slider.scrollLeft - step * this.sliderItemOffset;\r\n    this.setSlidePosition(this.slideScrollPosition);\r\n  }\r\n\r\n  setSlidePosition(position) {\r\n    this.slider.scrollTo({\r\n      left: position,\r\n    });\r\n  }\r\n}\r\n\r\ncustomElements.define('slider-component', SliderComponent);\r\n\r\nclass SlideshowComponent extends SliderComponent {\r\n  constructor() {\r\n    super();\r\n    this.sliderControlWrapper = this.querySelector('.slider-buttons');\r\n    this.enableSliderLooping = true;\r\n\r\n    if (!this.sliderControlWrapper) return;\r\n\r\n    this.sliderFirstItemNode = this.slider.querySelector('.slideshow__slide');\r\n    if (this.sliderItemsToShow.length > 0) this.currentPage = 1;\r\n\r\n    this.announcementBarSlider = this.querySelector('.announcement-bar-slider');\r\n    // Value below should match --duration-announcement-bar CSS value\r\n    this.announcerBarAnimationDelay = this.announcementBarSlider ? 250 : 0;\r\n\r\n    this.sliderControlLinksArray = Array.from(this.sliderControlWrapper.querySelectorAll('.slider-counter__link'));\r\n    this.sliderControlLinksArray.forEach((link) => link.addEventListener('click', this.linkToSlide.bind(this)));\r\n    this.slider.addEventListener('scroll', this.setSlideVisibility.bind(this));\r\n    this.setSlideVisibility();\r\n\r\n    if (this.announcementBarSlider) {\r\n      this.announcementBarArrowButtonWasClicked = false;\r\n\r\n      this.reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n      this.reducedMotion.addEventListener('change', () => {\r\n        if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();\r\n      });\r\n\r\n      [this.prevButton, this.nextButton].forEach((button) => {\r\n        button.addEventListener(\r\n          'click',\r\n          () => {\r\n            this.announcementBarArrowButtonWasClicked = true;\r\n          },\r\n          { once: true }\r\n        );\r\n      });\r\n    }\r\n\r\n    if (this.slider.getAttribute('data-autoplay') === 'true') this.setAutoPlay();\r\n  }\r\n\r\n  setAutoPlay() {\r\n    this.autoplaySpeed = this.slider.dataset.speed * 1000;\r\n    this.addEventListener('mouseover', this.focusInHandling.bind(this));\r\n    this.addEventListener('mouseleave', this.focusOutHandling.bind(this));\r\n    this.addEventListener('focusin', this.focusInHandling.bind(this));\r\n    this.addEventListener('focusout', this.focusOutHandling.bind(this));\r\n\r\n    if (this.querySelector('.slideshow__autoplay')) {\r\n      this.sliderAutoplayButton = this.querySelector('.slideshow__autoplay');\r\n      this.sliderAutoplayButton.addEventListener('click', this.autoPlayToggle.bind(this));\r\n      this.autoplayButtonIsSetToPlay = true;\r\n      this.play();\r\n    } else {\r\n      this.reducedMotion.matches || this.announcementBarArrowButtonWasClicked ? this.pause() : this.play();\r\n    }\r\n  }\r\n\r\n  onButtonClick(event) {\r\n    super.onButtonClick(event);\r\n    this.wasClicked = true;\r\n\r\n    const isFirstSlide = this.currentPage === 1;\r\n    const isLastSlide = this.currentPage === this.sliderItemsToShow.length;\r\n\r\n    if (!isFirstSlide && !isLastSlide) {\r\n      this.applyAnimationToAnnouncementBar(event.currentTarget.name);\r\n      return;\r\n    }\r\n\r\n    if (isFirstSlide && event.currentTarget.name === 'previous') {\r\n      this.slideScrollPosition =\r\n        this.slider.scrollLeft + this.sliderFirstItemNode.clientWidth * this.sliderItemsToShow.length;\r\n    } else if (isLastSlide && event.currentTarget.name === 'next') {\r\n      this.slideScrollPosition = 0;\r\n    }\r\n\r\n    this.setSlidePosition(this.slideScrollPosition);\r\n\r\n    this.applyAnimationToAnnouncementBar(event.currentTarget.name);\r\n  }\r\n\r\n  setSlidePosition(position) {\r\n    if (this.setPositionTimeout) clearTimeout(this.setPositionTimeout);\r\n    this.setPositionTimeout = setTimeout(() => {\r\n      this.slider.scrollTo({\r\n        left: position,\r\n      });\r\n    }, this.announcerBarAnimationDelay);\r\n  }\r\n\r\n  update() {\r\n    super.update();\r\n    this.sliderControlButtons = this.querySelectorAll('.slider-counter__link');\r\n    this.prevButton.removeAttribute('disabled');\r\n\r\n    if (!this.sliderControlButtons.length) return;\r\n\r\n    this.sliderControlButtons.forEach((link) => {\r\n      link.classList.remove('slider-counter__link--active');\r\n      link.removeAttribute('aria-current');\r\n    });\r\n    this.sliderControlButtons[this.currentPage - 1].classList.add('slider-counter__link--active');\r\n    this.sliderControlButtons[this.currentPage - 1].setAttribute('aria-current', true);\r\n  }\r\n\r\n  autoPlayToggle() {\r\n    this.togglePlayButtonState(this.autoplayButtonIsSetToPlay);\r\n    this.autoplayButtonIsSetToPlay ? this.pause() : this.play();\r\n    this.autoplayButtonIsSetToPlay = !this.autoplayButtonIsSetToPlay;\r\n  }\r\n\r\n  focusOutHandling(event) {\r\n    if (this.sliderAutoplayButton) {\r\n      const focusedOnAutoplayButton =\r\n        event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\r\n      if (!this.autoplayButtonIsSetToPlay || focusedOnAutoplayButton) return;\r\n      this.play();\r\n    } else if (!this.reducedMotion.matches && !this.announcementBarArrowButtonWasClicked) {\r\n      this.play();\r\n    }\r\n  }\r\n\r\n  focusInHandling(event) {\r\n    if (this.sliderAutoplayButton) {\r\n      const focusedOnAutoplayButton =\r\n        event.target === this.sliderAutoplayButton || this.sliderAutoplayButton.contains(event.target);\r\n      if (focusedOnAutoplayButton && this.autoplayButtonIsSetToPlay) {\r\n        this.play();\r\n      } else if (this.autoplayButtonIsSetToPlay) {\r\n        this.pause();\r\n      }\r\n    } else if (this.announcementBarSlider.contains(event.target)) {\r\n      this.pause();\r\n    }\r\n  }\r\n\r\n  play() {\r\n    this.slider.setAttribute('aria-live', 'off');\r\n    clearInterval(this.autoplay);\r\n    this.autoplay = setInterval(this.autoRotateSlides.bind(this), this.autoplaySpeed);\r\n  }\r\n\r\n  pause() {\r\n    this.slider.setAttribute('aria-live', 'polite');\r\n    clearInterval(this.autoplay);\r\n  }\r\n\r\n  togglePlayButtonState(pauseAutoplay) {\r\n    if (pauseAutoplay) {\r\n      this.sliderAutoplayButton.classList.add('slideshow__autoplay--paused');\r\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.playSlideshow);\r\n    } else {\r\n      this.sliderAutoplayButton.classList.remove('slideshow__autoplay--paused');\r\n      this.sliderAutoplayButton.setAttribute('aria-label', window.accessibilityStrings.pauseSlideshow);\r\n    }\r\n  }\r\n\r\n  autoRotateSlides() {\r\n    const slideScrollPosition =\r\n      this.currentPage === this.sliderItems.length ? 0 : this.slider.scrollLeft + this.sliderItemOffset;\r\n\r\n    this.setSlidePosition(slideScrollPosition);\r\n    this.applyAnimationToAnnouncementBar();\r\n  }\r\n\r\n  setSlideVisibility(event) {\r\n    this.sliderItemsToShow.forEach((item, index) => {\r\n      const linkElements = item.querySelectorAll('a');\r\n      if (index === this.currentPage - 1) {\r\n        if (linkElements.length)\r\n          linkElements.forEach((button) => {\r\n            button.removeAttribute('tabindex');\r\n          });\r\n        item.setAttribute('aria-hidden', 'false');\r\n        item.removeAttribute('tabindex');\r\n      } else {\r\n        if (linkElements.length)\r\n          linkElements.forEach((button) => {\r\n            button.setAttribute('tabindex', '-1');\r\n          });\r\n        item.setAttribute('aria-hidden', 'true');\r\n        item.setAttribute('tabindex', '-1');\r\n      }\r\n    });\r\n    this.wasClicked = false;\r\n  }\r\n\r\n  applyAnimationToAnnouncementBar(button = 'next') {\r\n    if (!this.announcementBarSlider) return;\r\n\r\n    const itemsCount = this.sliderItems.length;\r\n    const increment = button === 'next' ? 1 : -1;\r\n\r\n    const currentIndex = this.currentPage - 1;\r\n    let nextIndex = (currentIndex + increment) % itemsCount;\r\n    nextIndex = nextIndex === -1 ? itemsCount - 1 : nextIndex;\r\n\r\n    const nextSlide = this.sliderItems[nextIndex];\r\n    const currentSlide = this.sliderItems[currentIndex];\r\n\r\n    const animationClassIn = 'announcement-bar-slider--fade-in';\r\n    const animationClassOut = 'announcement-bar-slider--fade-out';\r\n\r\n    const isFirstSlide = currentIndex === 0;\r\n    const isLastSlide = currentIndex === itemsCount - 1;\r\n\r\n    const shouldMoveNext = (button === 'next' && !isLastSlide) || (button === 'previous' && isFirstSlide);\r\n    const direction = shouldMoveNext ? 'next' : 'previous';\r\n\r\n    currentSlide.classList.add(`${animationClassOut}-${direction}`);\r\n    nextSlide.classList.add(`${animationClassIn}-${direction}`);\r\n\r\n    setTimeout(() => {\r\n      currentSlide.classList.remove(`${animationClassOut}-${direction}`);\r\n      nextSlide.classList.remove(`${animationClassIn}-${direction}`);\r\n    }, this.announcerBarAnimationDelay * 2);\r\n  }\r\n\r\n  linkToSlide(event) {\r\n    event.preventDefault();\r\n    const slideScrollPosition =\r\n      this.slider.scrollLeft +\r\n      this.sliderFirstItemNode.clientWidth *\r\n        (this.sliderControlLinksArray.indexOf(event.currentTarget) + 1 - this.currentPage);\r\n    this.slider.scrollTo({\r\n      left: slideScrollPosition,\r\n    });\r\n  }\r\n}\r\n\r\ncustomElements.define('slideshow-component', SlideshowComponent);\r\n\r\nclass VariantSelects extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  connectedCallback() {\r\n    this.addEventListener('change', (event) => {\r\n      const target = this.getInputForEventTarget(event.target);\r\n      this.updateSelectionMetadata(event);\r\n\r\n      publish(PUB_SUB_EVENTS.optionValueSelectionChange, {\r\n        data: {\r\n          event,\r\n          target,\r\n          selectedOptionValues: this.selectedOptionValues,\r\n        },\r\n      });\r\n    });\r\n  }\r\n\r\n  updateSelectionMetadata({ target }) {\r\n    const { value, tagName } = target;\r\n\r\n    if (tagName === 'SELECT' && target.selectedOptions.length) {\r\n      Array.from(target.options)\r\n        .find((option) => option.getAttribute('selected'))\r\n        .removeAttribute('selected');\r\n      target.selectedOptions[0].setAttribute('selected', 'selected');\r\n\r\n      const swatchValue = target.selectedOptions[0].dataset.optionSwatchValue;\r\n      const selectedDropdownSwatchValue = target\r\n        .closest('.product-form__input')\r\n        .querySelector('[data-selected-value] > .swatch');\r\n      if (!selectedDropdownSwatchValue) return;\r\n      if (swatchValue) {\r\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', swatchValue);\r\n        selectedDropdownSwatchValue.classList.remove('swatch--unavailable');\r\n      } else {\r\n        selectedDropdownSwatchValue.style.setProperty('--swatch--background', 'unset');\r\n        selectedDropdownSwatchValue.classList.add('swatch--unavailable');\r\n      }\r\n\r\n      selectedDropdownSwatchValue.style.setProperty(\r\n        '--swatch-focal-point',\r\n        target.selectedOptions[0].dataset.optionSwatchFocalPoint || 'unset'\r\n      );\r\n    } else if (tagName === 'INPUT' && target.type === 'radio') {\r\n      const selectedSwatchValue = target.closest(`.product-form__input`).querySelector('[data-selected-value]');\r\n      if (selectedSwatchValue) selectedSwatchValue.innerHTML = value;\r\n    }\r\n  }\r\n\r\n  getInputForEventTarget(target) {\r\n    return target.tagName === 'SELECT' ? target.selectedOptions[0] : target;\r\n  }\r\n\r\n  get selectedOptionValues() {\r\n    return Array.from(this.querySelectorAll('select option[selected], fieldset input:checked')).map(\r\n      ({ dataset }) => dataset.optionValueId\r\n    );\r\n  }\r\n}\r\n\r\ncustomElements.define('variant-selects', VariantSelects);\r\n\r\nclass ProductRecommendations extends HTMLElement {\r\n  observer = undefined;\r\n\r\n  constructor() {\r\n    super();\r\n  }\r\n\r\n  connectedCallback() {\r\n    this.initializeRecommendations(this.dataset.productId);\r\n  }\r\n\r\n  initializeRecommendations(productId) {\r\n    this.observer?.unobserve(this);\r\n    this.observer = new IntersectionObserver(\r\n      (entries, observer) => {\r\n        if (!entries[0].isIntersecting) return;\r\n        observer.unobserve(this);\r\n        this.loadRecommendations(productId);\r\n      },\r\n      { rootMargin: '0px 0px 400px 0px' }\r\n    );\r\n    this.observer.observe(this);\r\n  }\r\n\r\n  loadRecommendations(productId) {\r\n    fetch(`${this.dataset.url}&product_id=${productId}&section_id=${this.dataset.sectionId}`)\r\n      .then((response) => response.text())\r\n      .then((text) => {\r\n        const html = document.createElement('div');\r\n        html.innerHTML = text;\r\n        const recommendations = html.querySelector('product-recommendations');\r\n\r\n        if (recommendations?.innerHTML.trim().length) {\r\n          this.innerHTML = recommendations.innerHTML;\r\n        }\r\n\r\n        if (!this.querySelector('slideshow-component') && this.classList.contains('complementary-products')) {\r\n          this.remove();\r\n        }\r\n\r\n        if (html.querySelector('.grid__item')) {\r\n          this.classList.add('product-recommendations--loaded');\r\n        }\r\n      })\r\n      .catch((e) => {\r\n        console.error(e);\r\n      });\r\n  }\r\n}\r\n\r\ncustomElements.define('product-recommendations', ProductRecommendations);\r\n\r\nclass AccountIcon extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n\r\n    this.icon = this.querySelector('.icon');\r\n  }\r\n\r\n  connectedCallback() {\r\n    document.addEventListener('storefront:signincompleted', this.handleStorefrontSignInCompleted.bind(this));\r\n  }\r\n\r\n  handleStorefrontSignInCompleted(event) {\r\n    if (event?.detail?.avatar) {\r\n      this.icon?.replaceWith(event.detail.avatar.cloneNode());\r\n    }\r\n  }\r\n}\r\n\r\ncustomElements.define('account-icon', AccountIcon);\r\n\r\nclass BulkAdd extends HTMLElement {\r\n  constructor() {\r\n    super();\r\n    this.queue = [];\r\n    this.requestStarted = false;\r\n    this.ids = [];\r\n  }\r\n\r\n  startQueue(id, quantity) {\r\n    this.queue.push({ id, quantity });\r\n    const interval = setInterval(() => {\r\n      if (this.queue.length > 0) {\r\n        if (!this.requestStarted) {\r\n          this.sendRequest(this.queue);\r\n        }\r\n      } else {\r\n        clearInterval(interval);\r\n      }\r\n    }, 250);\r\n  }\r\n\r\n  sendRequest(queue) {\r\n    this.requestStarted = true;\r\n    const items = {};\r\n    queue.forEach((queueItem) => {\r\n      items[parseInt(queueItem.id)] = queueItem.quantity;\r\n    });\r\n    this.queue = this.queue.filter((queueElement) => !queue.includes(queueElement));\r\n    const quickBulkElement = this.closest('quick-order-list') || this.closest('quick-add-bulk');\r\n    quickBulkElement.updateMultipleQty(items);\r\n  }\r\n\r\n  resetQuantityInput(id) {\r\n    const input = this.querySelector(`#Quantity-${id}`);\r\n    input.value = input.getAttribute('value');\r\n    this.isEnterPressed = false;\r\n  }\r\n\r\n  setValidity(event, index, message) {\r\n    event.target.setCustomValidity(message);\r\n    event.target.reportValidity();\r\n    this.resetQuantityInput(index);\r\n    event.target.select();\r\n  }\r\n\r\n  validateQuantity(event) {\r\n    const inputValue = parseInt(event.target.value);\r\n    const index = event.target.dataset.index;\r\n\r\n    if (inputValue < event.target.dataset.min) {\r\n      this.setValidity(event, index, window.quickOrderListStrings.min_error.replace('[min]', event.target.dataset.min));\r\n    } else if (inputValue > parseInt(event.target.max)) {\r\n      this.setValidity(event, index, window.quickOrderListStrings.max_error.replace('[max]', event.target.max));\r\n    } else if (inputValue % parseInt(event.target.step) != 0) {\r\n      this.setValidity(event, index, window.quickOrderListStrings.step_error.replace('[step]', event.target.step));\r\n    } else {\r\n      event.target.setCustomValidity('');\r\n      event.target.reportValidity();\r\n      this.startQueue(index, inputValue);\r\n    }\r\n  }\r\n\r\n  getSectionsUrl() {\r\n    if (window.pageNumber) {\r\n      return `${window.location.pathname}?page=${window.pageNumber}`;\r\n    } else {\r\n      return `${window.location.pathname}`;\r\n    }\r\n  }\r\n\r\n  getSectionInnerHTML(html, selector) {\r\n    return new DOMParser().parseFromString(html, 'text/html').querySelector(selector).innerHTML;\r\n  }\r\n}\r\n\r\nif (!customElements.get('bulk-add')) {\r\n  customElements.define('bulk-add', BulkAdd);\r\n}\r\n"],
  "mappings": "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",
  "names": []
}
