{
  "version": 3,
  "sources": ["/cdn/shop/t/66/assets/quick-nav.js?cb=16427"],
  "sourcesContent": ["if (!customElements.get('quick-nav')) {\n  class QuickNav extends HTMLElement {\n    constructor() {\n      super();\n      this.childSelect = this.querySelector('custom-select[data-level=\"2\"]');\n      this.grandchildSelect = this.querySelector('custom-select[data-level=\"3\"]');\n      this.submitButton = this.querySelector('.js-submit');\n      this.priceRange = this.querySelector('.js-quick-nav-price');\n\n      this.addEventListener('change', this.handleQuickNavChange);\n      this.addEventListener('click', this.handleQuickNavClick);\n    }\n\n    /**\n     * Pauses an auto-playing slideshow\n     */\n    handleQuickNavClick() {\n      const slideshowElem = this.closest('slide-show');\n      if (slideshowElem && slideshowElem.dataset.autoplay === 'true') {\n        const autoplayBtn = slideshowElem.querySelector('.autoplay-btn');\n        if (autoplayBtn) autoplayBtn.click();\n      }\n    }\n\n    /**\n     * Handles when anything in the quick nav is changed (one of the selects)\n     * @param {object} evt - Event object\n     */\n    handleQuickNavChange(evt) {\n      if (evt.target.matches('custom-select') && evt.detail.selectedValue) {\n        const selectedOption = evt.target.querySelector('[aria-selected=\"true\"]');\n        this.url = selectedOption.dataset.url;\n        this.updateSubmitButton(selectedOption.dataset.url);\n\n        if (selectedOption.dataset.isCollection) {\n          this.parseCollectionInfo(selectedOption.dataset.url);\n        } else {\n          this.unparseCollectionInfo();\n        }\n\n        if (evt.target.dataset.level === '1' && this.childSelect) {\n          QuickNav.prepareSelect(this.childSelect, evt.detail.selectedValue);\n          QuickNav.resetSelect(this.grandchildSelect, true);\n        } else if (evt.target.dataset.level === '2' && this.grandchildSelect) {\n          QuickNav.prepareSelect(this.grandchildSelect, evt.detail.selectedValue);\n        }\n      } else if (evt.target.closest('.price-range')) {\n        const priceRangeMin = this.priceRange.querySelector(\"[name='filter.v.price.gte']\").value;\n        const priceRangeMax = this.priceRange.querySelector(\"[name='filter.v.price.lte']\").value;\n\n        let url = this.url; // eslint-disable-line\n        if (priceRangeMin) {\n          url = url.includes('?') ? `${url}&` : `${url}?`;\n          url += `filter.v.price.gte=${priceRangeMin}`;\n        }\n        if (priceRangeMax) {\n          url = url.includes('?') ? `${url}&` : `${url}?`;\n          url += `filter.v.price.lte=${priceRangeMax}`;\n        }\n        this.updateSubmitButton(url);\n        this.parseCollectionInfo(url);\n      } else {\n        QuickNav.resetSelect(evt.target, false);\n      }\n    }\n\n    /**\n     * Dynamically load the price range slider and updates the number of results\n     * @param {string} url - Collection url to fetch\n     * @returns {Promise<void>}\n     */\n    async parseCollectionInfo(url) {\n      this.submitButton.ariaDisabled = 'true';\n      this.submitButton.classList.add('is-loading');\n      let preventButtonEnable = false;\n\n      // Fetch collection page\n      const response = await fetch(url);\n      if (response.ok) {\n        const tmpl = document.createElement('template');\n        tmpl.innerHTML = await response.text();\n\n        const productsContainer = tmpl.content.querySelector('[data-num-results]');\n        if (productsContainer) {\n          const numResults = parseInt(productsContainer.dataset.numResults, 10);\n          if (numResults === 0) {\n            this.submitButton.textContent = theme.strings.quickNav.show_products_none;\n            preventButtonEnable = true;\n          } else if (numResults === 1) {\n            this.submitButton.textContent = theme.strings.quickNav.button_one.replace(\n              '[quantity]',\n              numResults\n            );\n          } else {\n            this.submitButton.textContent = theme.strings.quickNav.button_other.replace(\n              '[quantity]',\n              numResults\n            );\n          }\n        } else {\n          // eslint-disable-next-line\n          console.warn(\n            'Enterprise Theme: An element with [data-num-results] could not be found on the product page.',\n            url\n          );\n        }\n\n        if (this.dataset.showPrice) {\n          const priceRangeElem = tmpl.content.querySelector('price-range');\n          if (priceRangeElem) {\n            this.priceRange.innerHTML = priceRangeElem.outerHTML;\n            const maxHeight = this.priceRange.querySelector('.price-range').clientHeight;\n            this.priceRange.style.maxHeight = `${parseInt(maxHeight, 10) + 1}px`;\n          } else {\n            // eslint-disable-next-line\n            console.warn(\n              'Enterprise Theme: No price ranger slider could be found for collection.',\n              url\n            );\n          }\n        }\n      }\n\n      if (!preventButtonEnable) this.submitButton.removeAttribute('aria-disabled');\n      this.submitButton.classList.remove('is-loading');\n    }\n\n    /**\n     * Hides the price range slider\n     */\n    unparseCollectionInfo() {\n      if (this.priceRange) this.priceRange.style.maxHeight = '0px';\n      this.submitButton.textContent = theme.strings.quickNav.button_standard;\n    }\n\n    /**\n     * Gets a select ready to be opened (hides irrelevant options, etc)\n     * @param {object} selectElem - The select to be prepared\n     * @param {string} value - The handle of the parent dropdown to filter available options by\n     */\n    static prepareSelect(selectElem, value) {\n      let hasOptions = false;\n      let counter = 0;\n\n      // Show only the relevant options\n      selectElem\n        .querySelectorAll('.custom-select__option:not(.quick-nav__default-option)')\n        .forEach((childLink) => {\n          if (childLink.dataset.parentHandle === value) {\n            hasOptions = true;\n            childLink.style.display = '';\n            counter += 1;\n          } else {\n            childLink.style.display = 'none';\n          }\n        });\n\n      const listbox = selectElem.querySelector('.quick-nav__listbox');\n      listbox.setAttribute('data-link-count', counter < 5 ? counter : 'loads');\n\n      QuickNav.resetSelect(selectElem, !hasOptions);\n\n      if (hasOptions) {\n        selectElem.querySelector('.custom-select__btn').removeAttribute('disabled');\n      }\n    }\n\n    /**\n     * Updates the URL on the search button\n     * @param {string} url - The new URL\n     */\n    updateSubmitButton(url) {\n      // Update the url situation\n      if (url && url.length > 0 && url !== '#') {\n        this.submitButton.href = url;\n        this.submitButton.removeAttribute('aria-disabled');\n      } else {\n        this.submitButton.href = '#';\n        this.submitButton.setAttribute('aria-disabled', 'true');\n      }\n    }\n\n    /**\n     * Resets a select back to its default state\n     * @param {object} selectElem - The select element to reset\n     * @param {boolean} disable - Whether the select should be disabled or not\n     */\n    static resetSelect(selectElem, disable) {\n      if (selectElem) {\n        const listbox = selectElem.querySelector('.custom-select__listbox');\n        listbox.removeAttribute('aria-activedescendant');\n\n        const selectedOption = selectElem.querySelector('[aria-selected=\"true\"]');\n        if (selectedOption) {\n          selectedOption.setAttribute('aria-selected', 'false');\n        }\n\n        const label = selectElem.querySelector('.custom-select__btn span');\n        label.textContent = label.dataset.defaultText;\n        if (disable) {\n          selectElem.querySelector('.custom-select__btn').setAttribute('disabled', 'disabled');\n        }\n\n        selectElem.init();\n      }\n    }\n  }\n\n  customElements.define('quick-nav', QuickNav);\n}\n"],
  "mappings": "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",
  "names": []
}
