PageSourceSearch

https://www.popflexactive.com/cdn/shop/t/463/assets/main-search.js?v=22730273614604066381789058247

js popflexactive.com collected 2026-09-24 08:47:35 UTC 7,287 bytes, 2 lines download raw bytes

1const MainSearch=class extends HTMLElement{constructor(){super(),this.querySelectorAll(".main-search__close").forEach(el=>{el.addEventListener("click",evt=>{evt.preventDefault(),document.body.classList.remove("show-search"),removeTrapFocus(theme.trapOpener)})}),this.querySelector(".main-search__input").addEventListener("keyup",evt=>{evt.key==="Escape"&&this.querySelector(".main-search__close").dispatchEvent(new Event("click"))}),this.dataset.quickSearch==="true"&&this.initQuickSearch(),this.activeResultIndex=-1,this.querySelector(".main-search__input").addEventListener("keydown",this.handleKeyDown.bind(this))}handleKeyDown(evt){const options=[...this.querySelectorAll('.main-search__results [role="option"]')],updateActiveOption=()=>{options.forEach(opt=>opt.classList.remove("search-result-active"));const active=options[this.activeResultIndex];active.classList.add("search-result-active"),evt.currentTarget.setAttribute("aria-activedescendant",active.id)};evt.key==="ArrowDown"&&(evt.preventDefault(),this.activeResultIndex=Math.min(this.activeResultIndex+1,options.length-1),updateActiveOption()),evt.key==="ArrowUp"&&(evt.preventDefault(),this.activeResultIndex=Math.max(this.activeResultIndex-1,0),updateActiveOption()),evt.key==="Enter"&&this.activeResultIndex>=0&&(evt.preventDefault(),options[this.activeResultIndex].querySelector("a").click())}initQuickSearch(){const searchInput=this.querySelector(".main-search__input"),searchTimeoutThrottle=500,resultLimit=8,includeMeta=this.dataset.quickSearchMeta==="true";let searchTimeoutID=-1,searchAbortController=null;const handleInputChange=()=>{const resultsBox=this.querySelector(".main-search__results"),valueToSearch=searchInput.value;if(valueToSearch.length&&valueToSearch!==this.oldSearchValue){this.oldSearchValue=valueToSearch,searchAbortController!==null&&(searchAbortController.abort("Existing request not needed"),searchAbortController=null),clearTimeout(searchTimeoutID);const form=searchInput.closest("form"),linkURL=new URL(form.action);new URLSearchParams(new FormData(form)).forEach((value,key)=>{linkURL.searchParams.set(key,value)}),this.classList.remove("main-search--has-results","main-search--results-on-multiple-lines","main-search--no-results"),this.classList.add("main-search--loading"),this.querySelector(".main-search__results-spinner")||(resultsBox.innerHTML='<div class="main-search__results-spinner"><div class="loading-spinner"></div></div>'),searchTimeoutID=setTimeout(()=>{searchAbortController=new AbortController;let ajaxUrl;theme.Shopify.features.predictiveSearch?(ajaxUrl=new URL(theme.routes.base+theme.routes.predictiveSearch),ajaxUrl.searchParams.set("q",valueToSearch),ajaxUrl.searchParams.set("section_id","predictive-search"),ajaxUrl.searchParams.set("resources[limit]",resultLimit),ajaxUrl.searchParams.set("resources[options][fields]",includeMeta?"title,product_type,variants.title,vendor,tag,variants.sku":"title,product_type,variants.title,vendor")):(ajaxUrl=new URL(linkURL),ajaxUrl.searchParams.set("section_id","main-search")),fetch(ajaxUrl,{method:"get",signal:searchAbortController.signal}).then(response=>{if(!response.ok)throw new Error(`HTTP error! Status: ${response.status}`);return response.text()}).then(response=>{const template=document.createElement("template");template.innerHTML=response;let resultsList=null,resultsMessage=null;theme.Shopify.features.predictiveSearch?(resultsList=template.content.querySelector(".product-grid"),resultsMessage=template.content.querySelector("[data-results-message]")):(resultsList=template.content.querySelector(".section-search-template .product-grid"),resultsMessage=template.content.querySelector(".section-search-template [data-results-message]")),searchAbortController=null,this.classList.remove("main-search--has-results","main-search--results-on-multiple-lines","main-search--no-results"),resultsBox.innerHTML="";const resultsProducts=document.createElement("div");resultsProducts.className="main-search__results__products collection-listing",resultsProducts.innerHTML="<div></div>";const resultsPages=document.createElement("div");resultsPages.className="main-search__results__pages",resultsProducts.firstElementChild.className=resultsList.className,resultsList.querySelectorAll(".product-block").forEach((block,index)=>{block.setAttribute("role","option"),block.id=`SearchResult${index}`}),resultsList.querySelectorAll(".product-block:not(.collection-block):not(.page-block)").forEach((block,index)=>{index<=resultLimit&&(block.classList.add("main-search-result"),block.querySelectorAll(".btn.quickbuy-toggle").forEach(el=>el.remove()),block.querySelectorAll(".quickbuy-toggle").forEach(el=>el.classList.remove("quickbuy-toggle")),resultsProducts.firstElementChild.appendChild(block))}),resultsList.querySelectorAll(".product-block.page-block").forEach(block=>{const item=document.createElement("a");item.className="main-search-result main-search-result--page",item.href=block.querySelector("a").href,item.innerHTML='<div class="main-search-result__text"></div>',item.firstElementChild.innerText=block.querySelector(".page-block__title").innerText,resultsPages.appendChild(item)}),this.classList.remove("main-search--loading");const areProducts=!!resultsProducts.querySelector(".main-search-result"),arePages=!!resultsPages.querySelector(".main-search-result");if(areProducts||arePages){const status=document.querySelector("#HeaderSearchResultsStatus");if(status&&(status.innerHTML=resultsMessage.innerHTML),this.classList.add("main-search--has-results"),this.classList.toggle("main-search--results-on-multiple-lines",resultsProducts.querySelectorAll(".product-block").length>4),areProducts&&resultsBox.appendChild(resultsProducts),arePages){const heading=document.createElement("h6");heading.className="main-search-result__heading",heading.innerHTML=theme.strings.generalSearchPages,resultsPages.insertAdjacentElement("afterbegin",heading),resultsBox.appendChild(resultsPages)}const allLink=document.createElement("a");allLink.className="main-search__results-all-link btn btn--secondary",allLink.href=linkURL,allLink.innerHTML=theme.strings.generalSearchViewAll,resultsBox.appendChild(allLink),searchInput.setAttribute("aria-expanded",!0),this.activeResultIndex=-1}else{this.classList.add("main-search--no-results");const emptyMessage=document.createElement("div");emptyMessage.className="main-search__empty-message",emptyMessage.innerHTML=theme.strings.generalSearchNoResultsWithoutTerms,resultsBox.appendChild(emptyMessage),searchInput.setAttribute("aria-expanded",!1)}}).catch(error=>{console.warn(error)})},searchTimeoutThrottle)}else valueToSearch.length||(this.oldSearchValue=valueToSearch,searchAbortController!==null&&(searchAbortController.abort("Existing request not needed"),searchAbortController=null),clearTimeout(searchTimeoutID),this.classList.remove("main-search--has-results","main-search--results-on-multiple-lines","main-search--loading"),resultsBox.innerHTML="",searchInput.setAttribute("aria-expanded",!1))};searchInput.addEventListener("keyup",handleInputChange.bind(this)),searchInput.addEventListener("change",handleInputChange.bind(this))}};window.customElements.define("main-search",MainSearch);
2//# sourceMappingURL=/cdn/shop/t/463/assets/main-search.js.map?v=22730273614604066381789058247

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.