class PredictiveSearch extends HTMLElement{constructor(){super(),this.selectors={input:"[data-predictive-search-input]",form:"form",formStatus:"[data-predictive-search-status]",predictiveSearchResults:"[data-predictive-search]",closeBtn:".f-drawer__close"},this.domNodes=queryDomNodes(this.selectors,this),this.drawer=this.closest("drawer-component"),this.input=this.domNodes.input,this.form=this.domNodes.form,this.formStatus=this.domNodes.formStatus,this.predictiveSearchResults=this.domNodes.predictiveSearchResults,this.cachedResults={},this.isOpen=!1,this.predictive_search_url=window.FoxThemeSettings.routes.predictive_search_url,this.setupEventListeners()}setupEventListeners(){this.form.addEventListener("submit",this.onFormSubmit.bind(this)),this.input.addEventListener("input",debounce(event=>{this.onChange(event)},300).bind(this)),this.input.addEventListener("focus",this.onFocus.bind(this)),this.addEventListener("focusout",this.onFocusOut.bind(this)),this.addEventListener("keyup",this.onKeyup.bind(this)),this.addEventListener("keydown",this.onKeydown.bind(this)),this.domNodes.closeBtn&&this.domNodes.closeBtn.addEventListener("click",this.onClose.bind(this))}getQuery(){return this.input.value.trim()}onChange(){const searchTerm=this.getQuery();if(!searchTerm.length){this.close(!0);return}this.getSearchResults(searchTerm)}onFormSubmit(e){(!this.getQuery().length||this.querySelector('[aria-selected="true"] a'))&&e.preventDefault()}onFocus(){const searchTerm=this.getQuery();searchTerm.length&&(this.getAttribute("results")==="true"?this.open():this.getSearchResults(searchTerm))}onFocusOut(e){setTimeout(()=>{this.contains(document.activeElement)||this.close()})}onClose(e){this.close(!0)}onKeyup(event){switch(this.getQuery().length||this.close(!0),event.preventDefault(),event.code){case"ArrowUp":this.switchOption("up");break;case"ArrowDown":this.switchOption("down");break;case"Enter":this.selectOption();break}}onKeydown(e){(e.code==="ArrowUp"||e.code==="ArrowDown")&&e.preventDefault()}switchOption(direction){if(!this.getAttribute("open"))return;const moveUp=direction==="up",selectedElement=this.querySelector('[aria-selected="true"]'),allElements=this.querySelectorAll("li");let activeElement=this.querySelector("li");moveUp&&!selectedElement||(this.formStatus.textContent="",!moveUp&&selectedElement?activeElement=selectedElement.nextElementSibling||allElements[0]:moveUp&&(activeElement=selectedElement.previousElementSibling||allElements[allElements.length-1]),activeElement!==selectedElement&&(activeElement.setAttribute("aria-selected",!0),selectedElement&&selectedElement.setAttribute("aria-selected",!1),this.setLiveRegionText(activeElement.textContent),this.input.setAttribute("aria-activedescendant",activeElement.id)))}selectOption(){const selectedProduct=this.querySelector('[aria-selected="true"] a, [aria-selected="true"] button');selectedProduct&&selectedProduct.click()}getSearchResults(searchTerm){const queryKey=searchTerm.replace(" ","-").toLowerCase();if(this.setLiveRegionLoadingState(),this.cachedResults[queryKey]){this.renderSearchResults(this.cachedResults[queryKey]);return}const url=`${this.predictive_search_url}?q=${encodeURIComponent(searchTerm)}&resources[type]=product&resources[options][unavailable_products]=last&resources[options][fields]=title,body,tag,product_type,vendor,variants.sku,variants.title§ion_id=predictive-search`;fetch(url).then(res=>{if(!res.ok){var error=new Error(res.status);throw this.close(),error}return res.text()}).then(text=>{const resultsMarkup=new DOMParser().parseFromString(text,"text/html").querySelector("#shopify-section-predictive-search").innerHTML;this.cachedResults[queryKey]=resultsMarkup,this.renderSearchResults(resultsMarkup)}).catch(error=>{throw this.close(),error})}setLiveRegionLoadingState(){this.loadingText=this.loadingText||this.getAttribute("data-loading-text"),this.setLiveRegionText(this.loadingText),this.setAttribute("loading",!0)}setLiveRegionText(statusText){this.formStatus.setAttribute("aria-hidden","false"),this.formStatus.textContent=statusText,setTimeout(()=>{this.formStatus.setAttribute("aria-hidden","true")},1e3)}renderSearchResults(resultsMarkup){this.predictiveSearchResults.innerHTML=resultsMarkup,this.setAttribute("results",!0),this.setLiveRegionResults(),this.open()}setLiveRegionResults(){this.removeAttribute("loading"),this.setLiveRegionText(this.querySelector("[data-predictive-search-live-region-count-value]").textContent)}open(){this.setAttribute("open",!0),this.input.setAttribute("aria-expanded",!0),this.isOpen=!0}close(clearSearchTerm=!1){clearSearchTerm&&(this.input.value="",this.removeAttribute("results"));const selected=this.querySelector('[aria-selected="true"]');selected&&selected.setAttribute("aria-selected",!1),this.input.setAttribute("aria-activedescendant",""),this.removeAttribute("open"),this.input.setAttribute("aria-expanded",!1),this.predictiveSearchResults.removeAttribute("style"),this.isOpen=!1}}customElements.define("predictive-search",PredictiveSearch); //# sourceMappingURL=/cdn/shop/t/3/assets/search-drawer.js.map?v=43816157537539867681672340465