class PredictiveSearch extends SearchForm{constructor(){super(),this.cachedResults={},this.predictiveSearchResults=this.querySelector("[data-predictive-search]"),this.allPredictiveSearchInstances=document.querySelectorAll("predictive-search"),this.isOpen=!1,this.abortController=new AbortController,this.searchTerm="",this.body=document.querySelector("body"),this.headerBottom=document.querySelector(".header__bottom"),this.promoModal=document.querySelector(".search__modal"),this.headerInput=document.querySelector(".search-modal .search__input"),this.calcHeight(),this.setupEventListeners(),new ResizeObserver(entries=>{const[entry]=entries;entry.contentRect.width<991?this.calcHeight(65):this.calcHeight(0)}).observe(this.body)}calcHeight(buttonHeight){let heightHeader=document.querySelector(".shopify-section-header")?document.querySelector(".shopify-section-header").getBoundingClientRect().height:0,heightSearchTop=document.querySelector(".search__form__wrapper")?document.querySelector(".search__form__wrapper").getBoundingClientRect().height:0,heightInput=this.headerInput.getBoundingClientRect().height;if(document.querySelector(".predictive-search")){let maxHeightContent=parseFloat(window.getComputedStyle(document.querySelector(".predictive-search"),null).getPropertyValue("max-height")),heightContent=document.querySelector(".predictive-search").getBoundingClientRect().height,maxHeightAllowed=document.documentElement.clientHeight-heightSearchTop-heightInput-buttonHeight-10;document.querySelector(".predictive-search").style.maxHeight=`${maxHeightAllowed}px`}}setupEventListeners(){this.input.form.addEventListener("submit",this.onFormSubmit.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))}getQuery(){return this.input.value.trim()}onChange(){const newSearchTerm=this.getQuery();if((!this.searchTerm||!newSearchTerm.startsWith(this.searchTerm))&&this.querySelector("#predictive-search-results-groups-wrapper")?.remove(),this.updateSearchForTerm(this.searchTerm,newSearchTerm),this.searchTerm=newSearchTerm,!this.searchTerm.length){this.close(!0);return}this.getSearchResults(this.searchTerm)}onFormSubmit(event){(!this.getQuery().length||this.querySelector('[aria-selected="true"] a')||event.submitter.classList.contains("card__link"))&&event.preventDefault()}onFormReset(event){super.onFormReset(event),super.shouldResetForm()&&(this.searchTerm="",this.abortController.abort(),this.abortController=new AbortController,this.closeResults(!0))}onFocus(){const currentSearchTerm=this.getQuery();this.classList.contains("search-modal__form")&&(this.headerBottom&&this.headerBottom.classList.add("header__bottom--visible"),this.promoModal&&this.promoModal.classList.remove("search__modal--hidden")),currentSearchTerm.length&&(this.searchTerm!==currentSearchTerm?this.onChange():this.getAttribute("results")==="true"?(this.open(),this.promoModal&&this.promoModal.classList.add("search__modal--hidden")):this.getSearchResults(this.searchTerm))}onFocusOut(){this.classList.contains("search-modal__form")&&this.headerBottom&&this.headerBottom.classList.remove("header__bottom--visible"),this.classList.contains("search-modal__form")||setTimeout(()=>{this.contains(document.activeElement)||this.close()})}onBlur(){this.headerInput.blur()}onKeyup(event){switch(this.getQuery().length||this.close(!0),event.preventDefault(),event.code){case"Enter":event.preventDefault(),this.selectOption();break;case"Escape":this.closeResults(!0),this.promoModal&&this.classList.contains("search-modal__form")&&this.promoModal.classList.add("search__modal--hidden");break}this.getQuery().length?this.hidePromoBlock():this.showPromoBlock()}onKeydown(event){(event.code==="ArrowUp"||event.code==="ArrowDown")&&event.preventDefault()}updateSearchForTerm(previousTerm,newTerm){const searchForTextElement=this.querySelector("[data-predictive-search-search-for-text]"),currentButtonText=searchForTextElement?.innerText;if(currentButtonText){if(currentButtonText.matchAll(new RegExp(previousTerm,"g")).length>1)return;const newButtonText=currentButtonText.replace(previousTerm,newTerm);searchForTextElement.innerText=newButtonText}this.getQuery().length?this.hidePromoBlock():this.showPromoBlock()}selectOption(){const selectedOption=this.querySelector('[aria-selected="true"] a, button[aria-selected="true"]');selectedOption&&selectedOption.click()}getSearchResults(searchTerm){const queryKey=searchTerm.replace(" ","-").toLowerCase();if(this.setLiveRegionLoadingState(),this.cachedResults[queryKey]){this.renderSearchResults(this.cachedResults[queryKey]),this.clickSearchTabs(),this.calcHeight();return}this.promoModal&&this.classList.contains("search-modal__form")&&this.promoModal.classList.add("search__modal--hidden"),fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}§ion_id=predictive-search`,{signal:this.abortController.signal}).then(response=>{if(!response.ok){var error=new Error(response.status);throw this.close(),error}return response.text()}).then(text=>{const resultsMarkup=new DOMParser().parseFromString(text,"text/html").querySelector("#shopify-section-predictive-search").innerHTML;this.allPredictiveSearchInstances.forEach(predictiveSearchInstance=>{predictiveSearchInstance.cachedResults[queryKey]=resultsMarkup}),this.renderSearchResults(resultsMarkup),this.clickSearchTabs(),this.calcHeight(),colorSwatches()}).catch(error=>{if(error?.code!==20)throw this.close(),error})}setLiveRegionLoadingState(){this.statusElement=this.statusElement||this.querySelector(".predictive-search-status"),this.loadingText=this.loadingText||this.getAttribute("data-loading-text"),this.setLiveRegionText(this.loadingText),this.setAttribute("loading",!0)}setLiveRegionText(statusText){this.statusElement.setAttribute("aria-hidden","false"),this.statusElement.textContent=statusText,setTimeout(()=>{this.statusElement.setAttribute("aria-hidden","true")},1e3)}renderSearchResults(resultsMarkup){this.predictiveSearchResults.innerHTML=resultsMarkup,this.setAttribute("results",!0),this.setLiveRegionResults(),this.open(),this.promoModal&&this.classList.contains("search-modal__form")&&this.promoModal.classList.add("search__modal--hidden")}clickSearchTabs(){const results=this.querySelectorAll(".predictive-search__results-list");results.length!=0&&(results[0].classList.add("active"),this.querySelector(".predictive-search__result-tab").classList.add("active"),this.querySelectorAll(".predictive-search__result-tab").forEach(tab=>{tab.addEventListener("click",event=>{event.preventDefault();const typeTarget=tab.dataset.typeTarget;this.querySelectorAll(".predictive-search__result-tab").forEach(element=>{element.classList.remove("active")}),tab.classList.add("active"),results.forEach(element=>{element.dataset.type==typeTarget?element.classList.add("active"):element.classList.remove("active")})})}))}hidePromoBlock(){document.querySelector(".search__recomendation")&&document.querySelector(".search__recomendation").classList.add("hidden"),document.querySelector(".search__line")&&document.querySelector(".search__line").classList.add("hide")}showPromoBlock(){document.querySelector(".search__recomendation")&&document.querySelector(".search__recomendation").classList.remove("hidden"),document.querySelector(".search__line")&&document.querySelector(".search__line").classList.remove("hide")}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,this.parentElement.parentElement.parentElement.classList.add("predictive-open"),this.promoModal&&this.classList.contains("search-modal__form")&&this.promoModal.classList.remove("search__modal--hidden")}close(clearSearchTerm=!1){this.closeResults(clearSearchTerm),this.parentElement.parentElement.parentElement.classList.remove("predictive-open"),this.isOpen=!1}closeResults(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("loading"),this.removeAttribute("open"),this.input.setAttribute("aria-expanded",!1),this.predictiveSearchResults.removeAttribute("style"),this.promoModal&&this.promoModal.classList.add("search__modal--hidden")}}customElements.define("predictive-search",PredictiveSearch); //# sourceMappingURL=/cdn/shop/t/5/assets/predictive-search.js.map?v=148356996480689290251707847414