https://sugarbooandco.com/cdn/shop/t/50/assets/predictive-search.js?v=124473055315778209551770290989
1/*! 2 * =================================================== 3 * WARNING: DO NOT EDIT THIS FILE DIRECTLY! 4 * This file is automatically generated by the build process. 5 * Any changes made to this file will be overwritten. 6 * =================================================== 7 */ 8 9var __defProp=Object.defineProperty;var __typeError=msg=>{throw TypeError(msg)};var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value;var __publicField=(obj,key,value)=>__defNormalProp(obj,typeof key!="symbol"?key+"":key,value),__accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);var _controller,_activeFetch,_handleModalClick,_handleKeyboardShortcut,_handleDialogClose,_PredictiveSearchComponent_instances,allResultsItems_get,_isKeyboardNavigation,currentIndex_get,currentIndex_set,currentItem_get,resetScrollPositions_fn,getSearchResults_fn,getRecentlyViewedProductsMarkup_fn,hideResetButton_fn,showResetButton_fn,createAbortController_fn,_resetSearch;import{Component}from"@theme/component";import{debounce,onAnimationEnd,prefersReducedMotion,onDocumentLoaded}from"@theme/utilities";import{sectionRenderer}from"@theme/section-renderer";import{morph}from"@theme/morph";import{RecentlyViewed}from"@theme/recently-viewed-products";import{DialogCloseEvent}from"@theme/dialog";class PredictiveSearchComponent extends Component{constructor(){super(...arguments);__privateAdd(this,_PredictiveSearchComponent_instances);__publicField(this,"requiredRefs",["searchInput","predictiveSearchResults","resetButton"]);__privateAdd(this,_controller,new AbortController);__privateAdd(this,_activeFetch,null);__privateAdd(this,_handleModalClick,event=>{const target=event.target;!(target instanceof HTMLButtonElement||target instanceof HTMLAnchorElement||target instanceof HTMLInputElement||target.closest("button")||target.closest("a")||target.closest("input"))&&this.refs.searchInput&&this.refs.searchInput.focus()});__privateAdd(this,_handleKeyboardShortcut,event=>{event.metaKey&&event.key==="k"&&this.dialog?.toggleDialog()});__privateAdd(this,_handleDialogClose,()=>{__privateGet(this,_resetSearch).call(this)});__privateAdd(this,_isKeyboardNavigation,!1);__publicField(this,"onSearchKeyDown",event=>{if(event.key==="Escape"){__privateGet(this,_resetSearch).call(this);return}if(!__privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get)?.length||event.key==="ArrowLeft"||event.key==="ArrowRight")return;const currentIndex=__privateGet(this,_PredictiveSearchComponent_instances,currentIndex_get),totalItems=__privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get).length;switch(event.key){case"ArrowDown":__privateSet(this,_isKeyboardNavigation,!0),event.preventDefault(),__privateSet(this,_PredictiveSearchComponent_instances,currentIndex<totalItems-1?currentIndex+1:0,currentIndex_set);break;case"Tab":event.shiftKey?(__privateSet(this,_isKeyboardNavigation,!0),event.preventDefault(),__privateSet(this,_PredictiveSearchComponent_instances,currentIndex>0?currentIndex-1:totalItems-1,currentIndex_set)):(__privateSet(this,_isKeyboardNavigation,!0),event.preventDefault(),__privateSet(this,_PredictiveSearchComponent_instances,currentIndex<totalItems-1?currentIndex+1:0,currentIndex_set));break;case"ArrowUp":__privateSet(this,_isKeyboardNavigation,!0),event.preventDefault(),__privateSet(this,_PredictiveSearchComponent_instances,currentIndex>0?currentIndex-1:totalItems-1,currentIndex_set);break;case"Enter":{const singleResultContainer=this.refs.predictiveSearchResults.querySelector("[data-single-result-url]");if(singleResultContainer instanceof HTMLElement&&singleResultContainer.dataset.singleResultUrl){event.preventDefault(),window.location.href=singleResultContainer.dataset.singleResultUrl;return}if(__privateGet(this,_PredictiveSearchComponent_instances,currentIndex_get)>=0)event.preventDefault(),__privateGet(this,_PredictiveSearchComponent_instances,currentItem_get)?.querySelector("a")?.click();else{const searchUrl=new URL(Theme.routes.search_url,location.origin);searchUrl.searchParams.set("q",this.refs.searchInput.value),window.location.href=searchUrl.toString()}break}}});__publicField(this,"resetSearch",debounce((keepFocus=!0)=>{keepFocus&&this.refs.searchInput.focus(),__privateGet(this,_resetSearch).call(this)},100));__publicField(this,"search",debounce(event=>{if(!event.inputType)return;const searchTerm=this.refs.searchInput.value.trim();if(__privateSet(this,_PredictiveSearchComponent_instances,-1,currentIndex_set),!searchTerm.length){__privateGet(this,_resetSearch).call(this);return}__privateMethod(this,_PredictiveSearchComponent_instances,showResetButton_fn).call(this),__privateMethod(this,_PredictiveSearchComponent_instances,getSearchResults_fn).call(this,searchTerm)},200));__privateAdd(this,_resetSearch,async()=>{const{predictiveSearchResults,searchInput}=this.refs,emptySectionId="predictive-search-empty";__privateSet(this,_PredictiveSearchComponent_instances,-1,currentIndex_set),searchInput.value="",__privateMethod(this,_PredictiveSearchComponent_instances,hideResetButton_fn).call(this);const abortController=__privateMethod(this,_PredictiveSearchComponent_instances,createAbortController_fn).call(this),url=new URL(window.location.href);
9url.searchParams.delete("page");const emptySectionMarkup=await sectionRenderer.getSectionHTML(emptySectionId,!1,url),parsedEmptySectionMarkup=new DOMParser().parseFromString(emptySectionMarkup,"text/html").querySelector(".predictive-search-empty-section");if(!parsedEmptySectionMarkup)throw new Error("No empty section markup found");if(RecentlyViewed.getProducts().length>0){const recentlyViewedMarkup=await __privateMethod(this,_PredictiveSearchComponent_instances,getRecentlyViewedProductsMarkup_fn).call(this);if(!recentlyViewedMarkup)return;const recentlyViewedProductsHtml=new DOMParser().parseFromString(recentlyViewedMarkup,"text/html").getElementById("predictive-search-products");if(!recentlyViewedProductsHtml)return;for(const child of recentlyViewedProductsHtml.children)child instanceof HTMLElement&&child.setAttribute("ref","recentlyViewedWrapper");const collectionElement=parsedEmptySectionMarkup.querySelector("#predictive-search-products");if(!collectionElement)return;collectionElement.prepend(...recentlyViewedProductsHtml.children)}abortController.signal.aborted||(morph(predictiveSearchResults,parsedEmptySectionMarkup),__privateMethod(this,_PredictiveSearchComponent_instances,resetScrollPositions_fn).call(this))})}get dialog(){return this.closest("dialog-component")}connectedCallback(){super.connectedCallback();const{dialog}=this,{signal}=__privateGet(this,_controller);this.refs.searchInput.value.length>0&&__privateMethod(this,_PredictiveSearchComponent_instances,showResetButton_fn).call(this),dialog&&(document.addEventListener("keydown",__privateGet(this,_handleKeyboardShortcut),{signal}),dialog.addEventListener(DialogCloseEvent.eventName,__privateGet(this,_handleDialogClose),{signal}),this.addEventListener("click",__privateGet(this,_handleModalClick),{signal})),onDocumentLoaded(()=>{this.resetSearch(!1)})}disconnectedCallback(){super.disconnectedCallback(),__privateGet(this,_controller).abort()}clearRecentlyViewedProducts(event){event.stopPropagation(),RecentlyViewed.clearProducts();const{recentlyViewedItems,recentlyViewedTitle,recentlyViewedWrapper}=this.refs;[...recentlyViewedItems||[],...recentlyViewedTitle||[]].length!==0&&recentlyViewedWrapper&&(recentlyViewedWrapper.classList.add("removing"),onAnimationEnd(recentlyViewedWrapper,()=>{recentlyViewedWrapper.remove()}))}}_controller=new WeakMap,_activeFetch=new WeakMap,_handleModalClick=new WeakMap,_handleKeyboardShortcut=new WeakMap,_handleDialogClose=new WeakMap,_PredictiveSearchComponent_instances=new WeakSet,allResultsItems_get=function(){return Array.from(this.querySelectorAll(".predictive-search-results__wrapper-queries, .predictive-search-results__wrapper-products, .predictive-search-results__list")).flatMap(container=>container.classList.contains("predictive-search-results__wrapper-products")?Array.from(container.querySelectorAll(".predictive-search-results__card")):Array.from(container.querySelectorAll('[ref="resultsItems[]"], .predictive-search-results__card'))).filter(item=>item instanceof HTMLElement)},_isKeyboardNavigation=new WeakMap,currentIndex_get=function(){return __privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get)?.findIndex(item=>item.getAttribute("aria-selected")==="true")??-1},currentIndex_set=function(index){if(__privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get)?.length){__privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get).forEach(item=>{item.classList.remove("keyboard-focus")});for(const[itemIndex,item]of __privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get).entries())itemIndex===index?(item.setAttribute("aria-selected","true"),__privateGet(this,_isKeyboardNavigation)&&item.classList.add("keyboard-focus"),item.scrollIntoView({behavior:prefersReducedMotion()?"instant":"smooth",block:"nearest"})):item.removeAttribute("aria-selected");this.refs.searchInput.focus()}},currentItem_get=function(){return __privateGet(this,_PredictiveSearchComponent_instances,allResultsItems_get)?.[__privateGet(this,_PredictiveSearchComponent_instances,currentIndex_get)]},resetScrollPositions_fn=function(){requestAnimationFrame(()=>{const resultsInner=this.refs.predictiveSearchResults.querySelector(".predictive-search-results__inner");resultsInner instanceof HTMLElement&&(resultsInner.scrollTop=0);const formContent=this.querySelector(".predictive-search-form__content");formContent instanceof HTMLElement&&(formContent.scrollTop=0)})},getSearchResults_fn=async function(searchTerm){if(!this.dataset.sectionId)return;const url=new URL(Theme.routes.predictive_search_url,location.origin);url.searchParams.set("q",searchTerm),url.searchParams.set("resources[limit_scope]","each");const{predictiveSearchResults}=this.refs,abortController=__privateMethod(this,_PredictiveSearchComponent_instances,createAbortController_fn).call(this);sectionRenderer.getSectionHTML(this.dataset.sectionId,!1,url).then(resultsMarkup=>{resultsMarkup&&(abortController.signal.aborted||(morph(predictiveSearchResults,resultsMarkup),__privateMethod(this,_PredictiveSearchComponent_instances,resetScrollPositions_fn).call(this)))}).catch(error=>{if(!abortController.signal.aborted)throw error})},getRecentlyViewedProductsMarkup_fn=async function(){if(!this.dataset.sectionId)return null;const productIds=RecentlyViewed.getProductIds();if(productIds.length===0)return null;const url=new URL(Theme.routes.search_url,location.origin);return url.searchParams.set("q",productIds.map(id=>`id:${id}`).join(" OR ")),url.searchParams.set("resources[type]","product"),sectionRenderer.getSectionHTML(this.dataset.sectionId,!1,url)},hideResetButton_fn=function(){const{resetButton}=this.refs;resetButton.hidden=!0},showResetButton_fn=function(){const{resetButton}=this.refs;resetButton.hidden=!1},createAbortController_fn=function(){const abortController=new AbortController;return __privateGet(this,_activeFetch)&&__privateGet(this,_activeFetch).abort(),__privateSet(this,_activeFetch,abortController),abortController},_resetSearch=new WeakMap,customElements.get("predictive-search-component")||customElements.define("predictive-search-component",PredictiveSearchComponent); 10//# sourceMappingURL=predictive-search.js.map
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.