{
  "version": 3,
  "sources": ["/cdn/shop/t/26/assets/predictive-search.js?FollowSite=0&SiteName=%27-whscheck%28%29-%27"],
  "sourcesContent": ["class PredictiveSearch extends HTMLElement {\n  constructor() {\n    super();\n    this.cachedResults = {};\n    this.input = this.querySelector('input[type=\"search\"]');\n    this.predictiveSearchResults = this.querySelector('[data-predictive-search]');\n    this.isOpen = false;\n    this.setupEventListeners();\n  }\n\n  setupEventListeners() {\n    const form = this.querySelector('form.search');\n    form.addEventListener('submit', this.onFormSubmit.bind(this));\n    this.input.addEventListener('input', debounce((event) => {\n      this.onChange(event);\n    }, 300).bind(this));\n    this.input.addEventListener('focus', this.onFocus.bind(this));\n    this.addEventListener('focusout', this.onFocusOut.bind(this));\n    this.addEventListener('keyup', this.onKeyup.bind(this));\n    this.addEventListener('keydown', this.onKeydown.bind(this));\n  }\n\n  getQuery() {\n    return this.input.value.trim();\n  }\n\n  onChange() {\n    const searchTerm = this.getQuery();\n    if (!searchTerm.length) {\n      this.close(true);\n      return;\n    }\n    this.getSearchResults(searchTerm);\n  }\n\n  onFormSubmit(event) {\n    if (!this.getQuery().length || this.querySelector('[aria-selected=\"true\"] a')) event.preventDefault();\n  }\n\n  onFocus() {\n    const searchTerm = this.getQuery();\n    if (!searchTerm.length) return;\n    if (this.getAttribute('results') === 'true') {\n      this.open();\n    } else {\n      this.getSearchResults(searchTerm);\n    }\n  }\n\n  onFocusOut() {\n    setTimeout(() => {\n      if (!this.contains(document.activeElement)) this.close();\n    })\n  }\n\n  onKeyup(event) {\n    if (!this.getQuery().length) this.close(true);\n    event.preventDefault();\n    switch (event.code) {\n      case 'ArrowUp':\n        this.switchOption('up')\n        break;\n      case 'ArrowDown':\n        this.switchOption('down');\n        break;\n      case 'Enter':\n        this.selectOption();\n        break;\n    }\n  }\n\n  onKeydown(event) {\n    // Prevent the cursor from moving in the input when using the up and down arrow keys\n    if (\n      event.code === 'ArrowUp' ||\n      event.code === 'ArrowDown'\n    ) {\n      event.preventDefault();\n    }\n  }\n\n  switchOption(direction) {\n    if (!this.getAttribute('open')) return;\n    const moveUp = direction === 'up';\n    const selectedElement = this.querySelector('[aria-selected=\"true\"]');\n    const allElements = this.querySelectorAll('li');\n    let activeElement = this.querySelector('li');\n    if (moveUp && !selectedElement) return;\n    this.statusElement.textContent = '';\n    if (!moveUp && selectedElement) {\n      activeElement = selectedElement.nextElementSibling || allElements[0];\n    } else if (moveUp) {\n      activeElement = selectedElement.previousElementSibling || allElements[allElements.length - 1];\n    }\n    if (activeElement === selectedElement) return;\n    activeElement.setAttribute('aria-selected', true);\n    if (selectedElement) selectedElement.setAttribute('aria-selected', false);\n    this.setLiveRegionText(activeElement.textContent);\n    this.input.setAttribute('aria-activedescendant', activeElement.id);\n  }\n\n  selectOption() {\n    const selectedProduct = this.querySelector('[aria-selected=\"true\"] a, [aria-selected=\"true\"] button');\n    if (selectedProduct) selectedProduct.click();\n  }\n\n  getSearchResults(searchTerm) {\n    const queryKey = searchTerm.replace(\" \", \"-\").toLowerCase();\n    this.setLiveRegionLoadingState();\n    if (this.cachedResults[queryKey]) {\n      this.renderSearchResults(this.cachedResults[queryKey]);\n      return;\n    }\n\n    fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}&${encodeURIComponent('resources[type]')}=product,page,collection,article&${encodeURIComponent('resources[limit]')}=${this.predictiveSearchResults.dataset.limit}&${encodeURIComponent('resources[limit_scope]')}=each&section_id=predictive-search`)\n      .then((response) => {\n        if (!response.ok) {\n          var error = new Error(response.status);\n          this.close();\n          throw error;\n        }\n        return response.text();\n      })\n      .then((text) => {\n        const resultsMarkup = new DOMParser().parseFromString(text, 'text/html').querySelector('#shopify-section-predictive-search').innerHTML;\n        this.cachedResults[queryKey] = resultsMarkup;\n        this.renderSearchResults(resultsMarkup);\n      })\n      .catch((error) => {\n        this.close();\n        throw error;\n      });\n  }\n\n  setLiveRegionLoadingState() {\n    this.statusElement = this.statusElement || this.querySelector('.predictive-search-status');\n    this.loadingText = this.loadingText || this.getAttribute('data-loading-text');\n    this.setLiveRegionText(this.loadingText);\n    this.setAttribute('loading', true);\n  }\n\n  setLiveRegionText(statusText) {\n    this.statusElement.setAttribute('aria-hidden', 'false');\n    this.statusElement.textContent = statusText;\n    setTimeout(() => {\n      this.statusElement.setAttribute('aria-hidden', 'true');\n    }, 1000);\n  }\n\n  renderSearchResults(resultsMarkup) {\n    this.predictiveSearchResults.innerHTML = resultsMarkup;\n    this.setAttribute('results', true);\n    this.setLiveRegionResults();\n    this.open();\n  }\n\n  setLiveRegionResults() {\n    this.removeAttribute('loading');\n    this.setLiveRegionText(this.querySelector('[data-predictive-search-live-region-count-value]').textContent);\n  }\n\n  getResultsMaxHeight() {\n    this.resultsMaxHeight = window.innerHeight - document.getElementById('shopify-section-header').getBoundingClientRect().bottom;\n    return this.resultsMaxHeight;\n  }\n\n  open() {\n    this.predictiveSearchResults.style.maxHeight = this.resultsMaxHeight || `${this.getResultsMaxHeight()}px`;\n    this.setAttribute('open', true);\n    this.input.setAttribute('aria-expanded', true);\n    this.isOpen = true;\n    window.postMessage({ type: 'predictive_search', action: \"open_search\" }, '*');\n  }\n\n  close(clearSearchTerm = false) {\n    window.postMessage({ type: 'predictive_search', action: \"close_search\" }, '*');\n    if (clearSearchTerm) {\n      this.input.value = '';\n      this.removeAttribute('results');\n    }\n    const selected = this.querySelector('[aria-selected=\"true\"]');\n    if (selected) selected.setAttribute('aria-selected', false);\n    this.input.setAttribute('aria-activedescendant', '');\n    this.removeAttribute('open');\n    this.input.setAttribute('aria-expanded', false);\n    this.resultsMaxHeight = false\n    this.predictiveSearchResults.removeAttribute('style');\n    this.isOpen = false;\n  }\n}\n\ncustomElements.define('predictive-search', PredictiveSearch);\n"],
  "mappings": "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",
  "names": []
}
