1class DrawerSearchSection extends HTMLElement{constructor(){super(),this.isOpen=!1,this.drawerClass="wt-drawer-search",this.drawer=document.querySelector(`.${this.drawerClass}`),this.drawerNav=document.querySelector(".wt-drawer--nav"),this.classDrawerActive=`${this.drawerClass}--active`,this.pageOverlayClass="search-overlay",this.activeOverlayBodyClass=`${this.pageOverlayClass}-on`,this.drawerNavAnimationOffClass="wt-drawer--off-animations",this.body=document.body,this.triggerQuery=[".wt-header__search-trigger",".wt-header__search__close",".search-results__terms"].join(", "),this.triggers=()=>document.querySelectorAll(this.triggerQuery),this.cachedResults={},this.input=this.querySelector('input[name="q"]'),this.clearButton=this.querySelector(".wt-header__search__clear-button"),this.closeButton=this.querySelector(".wt-header__search__close"),this.predictiveSearchResults=this.querySelector("[data-predictive-search]"),this.searchProperties=this.dataset.searchProperties,this.mainTrigger=this.querySelector(".wt-header__search-trigger"),this.emptyAnnouncement=this.querySelector(".search-empty"),this.searchResultTop=this.querySelector(".search-result-top"),this.isVisibleClearButton=!1,this.saveSuggestionMenuInDesignMode=this.saveSuggestionMenuInDesignMode.bind(this),this.isPredictiveSearchAvailable=this.hidePredictiveSearch(),this.isPredictiveSearchEnabled=this.dataset.enablePredictiveSearch==="true",this.showSuggestOnNoResults=this.dataset.showSuggestOnNoResults==="true",this.setupEventListeners(),this.toggleTabindexElements=[this.input,this.closeButton],this.suggestionMenuContent=this.querySelector(".search-result-top").cloneNode(!0),this.timeOut=null,this.init()}getFocusableElements(){const focusableElementsSelector="button, [href], input:not([type='hidden']), select, [tabindex]",focusableElements=()=>Array.from(this.querySelectorAll(focusableElementsSelector)).filter(el=>!el.hasAttribute("disabled")&&el.tabIndex>=0);return{focusableElements,first:focusableElements()[0],last:focusableElements()[focusableElements().length-1]}}onToggle(){this.hasAttribute("open")?(this.removeAttribute("open"),setTabindex(this.toggleTabindexElements,"-1"),setTabindex([this.mainTrigger],"0"),this.isOpen=!1,setTimeout(()=>{this.mainTrigger.focus()},0)):(this.setAttribute("open",""),setTabindex(this.toggleTabindexElements,"0"),setTabindex([this.mainTrigger],"-1"),this.input.focus(),this.input.setSelectionRange(this.input.value.length,this.input.value.length),this.isOpen=!0)}toggleDrawerClasses(){const opening=!this.body.classList.contains(this.activeOverlayBodyClass);this.onToggle(),this.drawer.classList.toggle(this.classDrawerActive),this.drawerNav?.classList.toggle(this.drawerNavAnimationOffClass),this.body.classList.toggle(this.activeOverlayBodyClass),opening&&this.armCascade(this.drawer)}armCascade(root){if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;const items=root.querySelectorAll("[data-cascade] .scroll-trigger");if(items.length===0)return;let idx=0;items.forEach(item=>{item.classList.contains("search-result__title")&&(idx=0),item.classList.add("scroll-trigger--offscreen"),item.style.setProperty("--animation-order",idx),idx+=1}),requestAnimationFrame(()=>{requestAnimationFrame(()=>{items.forEach(item=>item.classList.remove("scroll-trigger--offscreen"))})})}init(){this.triggers().forEach(trigger=>{trigger.addEventListener("click",e=>{e.preventDefault(),this.toggleDrawerClasses()})}),this.clearButton.addEventListener("click",()=>{this.input.value="",this.clearButton.style.display="none",this.isVisibleClearButton=!1,this.clearResults()}),this.addEventListener("keydown",e=>{const isTabPressed=e.key==="Tab"||e.keyCode===9||e.code==="Tab",{first,last}=this.getFocusableElements();(e.key==="Escape"||e.keyCode===27||e.code==="Escape")&&this.isOpen&&this.toggleDrawerClasses(),isTabPressed&&this.isOpen&&(e.shiftKey&&document.activeElement===first?(last.focus(),e.preventDefault()):!e.shiftKey&&document.activeElement===last&&(first.focus(),e.preventDefault()))}),this.input.addEventListener("input",()=>{this.input.value.length>0&&!this.isVisibleClearButton?(this.clearButton.style.display="flex",this.clearButton.setAttribute("tabindex","0"),this.isVisibleClearButton=!0):this.input.value.length===0&&this.isVisibleClearButton&&(this.clearButton.style.display="none",this.clearButton.setAttribute("tabindex","-1"),this.isVisibleClearButton=!1)})}hidePredictiveSearch(){const featuresTag=document.getElementById("shopify-features");return!(featuresTag&&JSON.parse(featuresTag.textContent).predictiveSearch===!1)}setupEventListeners(){this.querySelector("form.store-search-form").addEventListener("submit",this.onFormSubmit.bind(this)),this.isPredictiveSearchAvailable&&this.isPredictiveSearchEnabled&&this.input.addEventListener("input",debounce(event=>{this.onChange(event)},300).bind(this)),Shopify.designMode&&document.addEventListener("shopify:section:load",this.saveSuggestionMenuInDesignMode)}saveSuggestionMenuInDesignMode(){this.body.classList.contains(this.activeOverlayBodyClass)&&this.drawer.classList.toggle(this.classDrawerActive)}getQuery(){return this.input.value.trim()}onChange(){const searchTerm=this.getQuery();searchTerm.length?(this.getSearchResults(searchTerm),this.removeAttribute("empty")):this.clearResults()}onFormSubmit(event){(!this.getQuery().length||this.querySelector('[aria-selected="true"] a'))&&event.preventDefault()}getSearchResults(searchTerm){const queryKey=searchTerm.replace(" ","-").toLowerCase();if(this.setLiveRegionLoadingState(),this.cachedResults[queryKey]){this.renderSearchResults(this.cachedResults[queryKey]);return}fetch(`${routes.predictive_search_url}?q=${encodeURIComponent(searchTerm)}&${encodeURIComponent("resources[type]")}=product,page,article,collection,query&${encodeURIComponent("resources[limit_scope]")}=each&${encodeURIComponent("resources[limit]")}=6&${encodeURIComponent("resources[options][fields]")}=${encodeURIComponent(this.searchProperties)}§ion_id=predictive-search`).then(response=>{if(!response.ok)throw new Error(response.status);return response.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 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,this.timeOut=setTimeout(()=>{this.statusElement.setAttribute("aria-hidden","true")},1e3)}renderSearchResults(resultsMarkup){this.predictiveSearchResults.innerHTML=resultsMarkup,this.showSuggestOnNoResults&&(this.predictiveSearchResults.querySelector(".search-result-products, .search-result-pages")||this.predictiveSearchResults.appendChild(this.suggestionMenuContent.cloneNode(!0))),this.setAttribute("results",!0),this.setLiveRegionResults(),this.armCascade(this.predictiveSearchResults)}setLiveRegionResults(){this.removeAttribute("loading"),this.setLiveRegionText(this.querySelector("[data-predictive-search-live-region-count-value]")?.textContent)}clearResults(){this.input.value="",this.removeAttribute("results"),this.setAttribute("empty",!0),this.statusElement.innerHTML=this.suggestionMenuContent.innerHTML||"",clearTimeout(this.timeOut),setTimeout(()=>{this.statusElement.removeAttribute("aria-hidden"),this.armCascade(this.statusElement)},300)}}customElements.define("search-drawer",DrawerSearchSection); 2//# sourceMappingURL=/cdn/shop/t/27/assets/search-drawer.js.map?v=152931468182073827211790594987
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.