{
  "version": 3,
  "sources": ["/cdn/shop/t/36/assets/predictive-search.js?cb=1792597866854"],
  "sourcesContent": ["/* LADYY FIX: this file calls a global debounce(), but the theme only defines wpbingo.debounce,\n   so search suggestions never started (\"debounce is not defined\"). Small stand-in, same behaviour. */\nif (typeof window.debounce !== 'function') {\n  window.debounce = function (fn, wait) {\n    var t;\n    return function () {\n      var ctx = this, args = arguments;\n      clearTimeout(t);\n      t = setTimeout(function () { fn.apply(ctx, args); }, wait);\n    };\n  };\n}\nclass PredictiveSearch extends HTMLElement {\n  constructor() {\n    super();\n    this.input = this.querySelector('input.field__input');\n    this.predictiveSearchResults = this.querySelector('[data-predictive-search]');\n\tthis.predictiveSearchResultsArticle = this.querySelector('[data-predictive-search-article]');\n    this.setupEventListeners();\n  }\n\n  setupEventListeners() {\n    const form = this.querySelector('form.search');\n    form.addEventListener('submit', this.onFormSubmit.bind(this));\n\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\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\n    if (!searchTerm.length) {\n      this.close(true);\n      return;\n    }\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\n    if (!searchTerm.length) return;\n\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\tonKeyup(event) {\n\t\tif (!this.getQuery().length){\n\t\t\tthis.close(true);\n\t\t\t$('form.search-modal__form .predictive-search-content').css(\"display\", \"none\");\n\t\t}\n\t\tevent.preventDefault();\n\t\tswitch (event.code) {\n\t\t\tcase 'ArrowUp':\n\t\t\t\tthis.switchOption('up')\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tthis.switchOption('down');\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tthis.selectOption();\n\t\t\t\tbreak;\n\t\t}\n\t}\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    \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\n    if (moveUp && !selectedElement) return;\n\n    this.statusElement.textContent = ''; \n\n    if (!moveUp && selectedElement) {\n      activeElement = selectedElement.nextElementSibling || allElements[0];\n    } else if (moveUp) {\n      activeElement = selectedElement.previousElementSibling || allElements[allElements.length - 1];\n    }\n\n    if (activeElement === selectedElement) return;\n\n    activeElement.setAttribute('aria-selected', true);\n    if (selectedElement) selectedElement.setAttribute('aria-selected', false);\n \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\n    if (selectedProduct) selectedProduct.click();\n  }\n\n  getSearchResults(searchTerm) {\n    const queryKey = searchTerm.replace(\" \", \"-\").toLowerCase();\n    this.setLiveRegionLoadingState();\n\t\n    fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}&${encodeURIComponent('resources[type]')}=product&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\n        return response.text();\n      })\n      .then((text) => {\n        const resultsMarkup = new DOMParser().parseFromString(text, 'text/html').querySelector('#predictive-search-product').innerHTML;\n        this.renderSearchResults(resultsMarkup,queryKey);\n      })\n      .catch((error) => {\n        this.close();\n        throw error;\n      });\n  \n    fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}&${encodeURIComponent('resources[type]')}=article&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\n        return response.text();\n      })\n      .then((text) => {\n        const resultsMarkup = new DOMParser().parseFromString(text, 'text/html').querySelector('#predictive-search-blog').innerHTML;\n        this.renderSearchResultsArticle(resultsMarkup,queryKey);\n      })\n      .catch((error) => {\n        this.close();\n        throw error;\n      }); \n\t}  \n\n  setLiveRegionLoadingState() {\n    this.statusElement = this.statusElement || this.querySelector('.predictive-search-status');\n    this.loadingText = this.loadingText || this.getAttribute('data-loading-text');\n\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    \n    setTimeout(() => {\n      this.statusElement.setAttribute('aria-hidden', 'true');\n    }, 1000);\n  }\n\n\trenderSearchResults(resultsMarkup,queryKey) {\n\t\tthis.predictiveSearchResults.innerHTML = resultsMarkup;\n\t\tthis.setAttribute('results', true);  \n\t\tthis.setLiveRegionResults();\n\t\tvar url = '/search?q='+queryKey+'&type=product';\n\t\t$('[data-predictive-search] [data-view-all-product]').attr('href', url);\n\t\tthis.open();\n\t}  \n\trenderSearchResultsArticle(resultsMarkup,queryKey) {\n\t\tif(this.predictiveSearchResultsArticle){\n\t\t\tthis.predictiveSearchResultsArticle.innerHTML = resultsMarkup;\n\t\t\tthis.setAttribute('results', true);  \n\t\t\tvar url = '/search?q='+queryKey+'&type=article';\n\t\t\t$('[data-predictive-search-article] [data-view-all-article]').attr('href', url);\n\t\t\tthis.setLiveRegionResults();\n\t\t\tthis.open();\n\t\t}\n\t}\n\tsetLiveRegionResults() { \n\t\tthis.removeAttribute('loading');\n\t} \n\tgetResultsMaxHeight() {\n\t\tthis.resultsMaxHeight = window.innerHeight - document.getElementById('shopify-section-header').getBoundingClientRect().bottom;\n\t\treturn this.resultsMaxHeight;\n\t}\n  open() {\n    this.setAttribute('open', true);\n    this.input.setAttribute('aria-expanded', true);\n\t$('form.search-modal__form .predictive-search-content').removeAttr('style')\n  }\n\n  close(clearSearchTerm = false) { \n    if (clearSearchTerm) {\n      this.input.value = '';\n      this.removeAttribute('results');\n    }\n\n    const selected = this.querySelector('[aria-selected=\"true\"]');\n\n    if (selected) selected.setAttribute('aria-selected', false);\n\n    this.input.setAttribute('aria-activedescendant', '');\n    this.removeAttribute('open');\n    this.input.setAttribute('aria-expanded', false);\n  }\n}\n\ncustomElements.define('predictive-search', PredictiveSearch);"],
  "mappings": "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",
  "names": []
}
