1var u=Object.defineProperty;var d=(l,a,e)=>a in l?u(l,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[a]=e;var n=(l,a,e)=>d(l,typeof a!="symbol"?a+"":a,e);import{B as p}from"./BaseElement.Dw8b55QC.min.js";import{L as m}from"./LiveRegionUtility.44lKd9Yx.min.js";import"./lit-element.D1QXZDXi.min.js";import"./aria-live-region-context.BZEtRCSs.min.js";import"./create-context.89xeped_.min.js";class v extends p{constructor(){super(...arguments);n(this,"$liveRegionUtility",new m(this));n(this,"resultsMaxHeight");n(this,"searchTerm","");n(this,"input");n(this,"predictiveSearchResults");n(this,"cachedResults",{});n(this,"abortController",new AbortController);n(this,"allPredictiveSearchInstances",[])}connectedCallback(){var e,t;super.connectedCallback(),this.input=this.querySelector('input[type="search"]'),this.predictiveSearchResults=this.querySelector("[data-predictive-search]"),this.initialResults=this.querySelector("[data-predictive-search-initial]"),this.clearButton=this.querySelector("[data-search-clear]"),this.searchContainer=this.closest("details[data-search]"),this.closeButtons=this.searchContainer?this.searchContainer.querySelectorAll("[data-search-close]"):this.querySelectorAll("[data-search-close]"),this.backdrop=(e=this.searchContainer)==null?void 0:e.querySelector(".search-backdrop"),this.dialog=(t=this.searchContainer)==null?void 0:t.querySelector("dialog"),this.allPredictiveSearchInstances=document.querySelectorAll("predictive-search"),this.setupEventListeners(),this.updateClearButtonVisibility()}setupEventListeners(){this.input.form.addEventListener("submit",this.onFormSubmit.bind(this)),this.input.addEventListener("focus",this.onFocus.bind(this)),this.input.addEventListener("input",this.onChange.bind(this)),this.addEventListener("focusout",this.onFocusOut.bind(this)),this.addEventListener("keyup",this.onKeyup.bind(this)),this.addEventListener("keydown",this.onKeydown.bind(this)),this.clearButton&&this.clearButton.addEventListener("click",this.onClear.bind(this)),this.closeButtons.forEach(e=>{e.addEventListener("click",this.onClose.bind(this))}),this.backdrop&&(this.onBackdropClickBound=this.onBackdropClick.bind(this),this.backdrop.addEventListener("click",this.onBackdropClickBound)),this.searchContainer&&(this.onDocumentClickBound=this.onDocumentClick.bind(this),document.addEventListener("click",this.onDocumentClickBound),this.searchContainer.addEventListener("toggle",()=>{this.searchContainer.open&&this.input.focus()}),this.input.addEventListener("keydown",e=>{var t;e.key==="Escape"&&!this.query.length&&(this.onClose(),(t=this.searchContainer.querySelector("summary"))==null||t.focus())}))}get query(){return this.input.value.trim()}onChange(){var t;const e=this.query;if((!this.searchTerm||!e.startsWith(this.searchTerm))&&((t=this.querySelector("#predictive-search-results-groups-wrapper"))==null||t.remove()),this.updateSearchForTerm(this.searchTerm,e),this.searchTerm=e,this.updateClearButtonVisibility(),!this.searchTerm.length){this.showInitialResults(),this.getAttribute("open")?this.open():this.close(!0);return}this.hideInitialResults(),this.predictiveSearchResults&&this.predictiveSearchResults.classList.remove("hidden"),this.getSearchResults(this.searchTerm)}onFormSubmit(e){(!this.query.length||this.querySelector('[aria-selected="true"] a'))&&e.preventDefault()}onFocus(){const e=this.query;if(!e.length){this.showInitialResults(),this.open();return}this.searchTerm!==e?this.onChange():this.getAttribute("results")==="true"?(this.hideInitialResults(),this.open()):(this.hideInitialResults(),this.getSearchResults(this.searchTerm))}onFocusOut(){setTimeout(()=>{this.contains(document.activeElement)||this.close()})}onKeyup(e){switch(this.query.length||(this.showInitialResults(),this.close(!0)),e.preventDefault(),e.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()}updateSearchForTerm(e,t){var s;const i=(s=this.searchForTextElement)==null?void 0:s.innerText;if(i){if(i.match(new RegExp(e,"g")).length>1)return;const r=i.replace(e,t);this.searchForTextElement.innerText=r}}switchOption(e){if(!this.getAttribute("open"))return;const t=e==="up";this.selectedElement=this.querySelector('[aria-selected="true"]');const i=Array.from(this.querySelectorAll("li, [data-predictive-search-item]")).filter(o=>o.offsetParent!==null);let s=0;if(t&&!this.selectedElement)return;let r=-1,h=0;for(;r===-1&&h<=i.length;)i[h]===this.selectedElement&&(r=h),h++;if(!t&&this.selectedElement?s=r===i.length-1?0:r+1:t&&(s=r===0?i.length-1:r-1),s===r)return;const c=i[s];c.setAttribute("aria-selected",!0),this.selectedElement&&this.selectedElement.setAttribute("aria-selected",!1),this.input.setAttribute("aria-activedescendant",c.id)}selectOption(){const e=this.querySelector('[aria-selected="true"] a, button[aria-selected="true"]');e&&e.click()}getSearchResults(e){const t=e.replace(" ","-").toLowerCase();if(this.setLiveRegionLoadingState(),this.cachedResults[t]){this.renderSearchResults(this.cachedResults[t]);return}fetch(`${window.routes.predictive_search_url}?q=${encodeURIComponent(e)}§ion_id=predictive-search&resources[limit]=10&resources[limit_scope]=each`,{signal:this.abortController.signal}).then(i=>{if(!i.ok){var s=new Error(i.status);throw this.close(),s}return i.text()}).then(i=>{const s=new DOMParser().parseFromString(i,"text/html").querySelector("#shopify-section-predictive-search").innerHTML;
1this.allPredictiveSearchInstances.forEach(r=>{r.cachedResults[t]=s}),this.renderSearchResults(s)}).catch(i=>{if((i==null?void 0:i.code)!==20)throw this.close(),i})}setLiveRegionLoadingState(){this.loadingText=this.loadingText||this.getAttribute("data-loading-text"),this.$liveRegionUtility.announce({message:this.loadingText}),this.setAttribute("loading",!0)}renderSearchResults(e){if(this.initialResults&&(this.initialResults.classList.add("hidden"),this.initialResults.removeAttribute("style")),this.predictiveSearchResults){this.predictiveSearchResults.innerHTML=e,this.predictiveSearchResults.classList.remove("hidden");const t=this.predictiveSearchResults.querySelector("[data-predictive-search-no-results]");if(t&&!this.predictiveSearchResults.querySelector("[data-popular-search-links-injected]")){const s=this.querySelector("[data-popular-search-links-template]");if(s){const h=s.content.cloneNode(!0).firstElementChild;h&&(h.setAttribute("data-popular-search-links-injected","true"),t.insertAdjacentElement("afterend",h))}}}this.setAttribute("results",!0),this.setLiveRegionResults(),this.open()}showInitialResults(){this.predictiveSearchResults&&(this.predictiveSearchResults.classList.add("hidden"),this.predictiveSearchResults.removeAttribute("style")),this.initialResults&&(this.initialResults.classList.remove("hidden"),this.initialResults.style.maxHeight=this.resultsMaxHeight||`${this.getResultsMaxHeight()}px`)}hideInitialResults(){this.initialResults&&(this.initialResults.classList.add("hidden"),this.initialResults.removeAttribute("style"))}setLiveRegionResults(){this.removeAttribute("loading"),this.$liveRegionUtility.announce({message:this.querySelector("[data-predictive-search-live-region-count-value]").textContent})}getResultsMaxHeight(){return this.resultsMaxHeight=window.innerHeight-document.querySelector(".section-header").getBoundingClientRect().bottom,this.resultsMaxHeight}open(){const t=this.query.length>0&&this.getAttribute("results")==="true"?this.predictiveSearchResults:this.initialResults;t&&(t.style.maxHeight=this.resultsMaxHeight||`${this.getResultsMaxHeight()}px`),this.setAttribute("open",!0),this.input.setAttribute("aria-expanded",!0)}close(e=!1){this.closeResults(e)}closeResults(e=!1){e&&(this.input.value="",this.searchTerm="",this.removeAttribute("results"),this.updateClearButtonVisibility());const t=this.querySelector('[aria-selected="true"]');t&&t.setAttribute("aria-selected",!1),this.input.setAttribute("aria-activedescendant",""),this.removeAttribute("loading"),this.removeAttribute("open"),this.input.setAttribute("aria-expanded",!1),this.resultsMaxHeight=!1,this.predictiveSearchResults&&this.predictiveSearchResults.removeAttribute("style"),this.initialResults&&this.initialResults.removeAttribute("style")}onClear(){this.input.value="",this.searchTerm="",this.input.focus(),this.updateClearButtonVisibility(),this.showInitialResults(),this.close(!0),this.input.dispatchEvent(new Event("input",{bubbles:!0}))}updateClearButtonVisibility(){if(!this.clearButton)return;this.input.value.trim().length>0?(this.clearButton.classList.remove("hidden"),this.clearButton.style.display="flex"):(this.clearButton.classList.add("hidden"),this.clearButton.style.display="none")}onClose(){const e=this.closest("details[data-search]");e&&e.removeAttribute("open"),this.close(!0)}onBackdropClick(e){e.stopPropagation(),this.onClose()}onDocumentClick(e){if(!this.searchContainer||!this.searchContainer.hasAttribute("open")||this.searchContainer.contains(e.target))return;const i=this.searchContainer.querySelector("summary");if(i&&i.contains(e.target))return;const s=document.querySelector('main-header, header, [id="main-header"]');s&&s.contains(e.target)||this.onClose()}disconnectedCallback(){this.onDocumentClickBound&&document.removeEventListener("click",this.onDocumentClickBound),this.backdrop&&this.onBackdropClickBound&&this.backdrop.removeEventListener("click",this.onBackdropClickBound),super.disconnectedCallback()}}window.customElements.define("predictive-search",v);
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.