PageSourceSearch

https://spartina449.com/cdn/shop/t/693/assets/component_search.js?v=126699585419077017891790166834

js spartina449.com collected 2026-09-25 19:48:08 UTC 5,646 bytes, 2 lines download raw bytes

1class ComponentSearch extends HTMLElement{constructor(){super(),this.searchField=this.querySelector('input[name="q"]'),this.results=this.querySelector(".search-results"),this.form=this.querySelector("form"),this.searchDelay=300,this.searchType="product",this.controller=null,this.requestTimeout=0,this.predictiveSearch=this.dataset.predictiveSearch=="true",this.showPrice=this.dataset.showPrice=="true",this.dataset.autocomplete=="true"&&(this.predictiveSearch&&(this.searchType="product,collection"),this.documentClickHandler=this.documentClick.bind(this),this.searchField.addEventListener("input",this.doSearch.bind(this)),this.searchField.addEventListener("focus",()=>{this.resultsVisible||this.searchField.dispatchEvent(new CustomEvent("input"))})),this.form.addEventListener("submit",e=>{e.preventDefault();const formData=new FormData(this.form),searchParams=new URLSearchParams(formData),query=searchParams.get("q");query&&query!=""&&(searchParams.set("q","*"+query+"*"),location=this.form.action+"?"+searchParams.toString())})}doSearch(term){var standardSearchTerm=typeof term=="string"?term:"*"+this.searchField.value.trim()+"*";this.predictiveSearch?term=typeof term=="string"?term:this.searchField.value.trim():term=standardSearchTerm,this.controller&&(this.controller.abort(),this.controller=null),clearTimeout(this.requestTimeout),standardSearchTerm.length>=5?(this.showSearchingResults(),this.requestTimeout=setTimeout(()=>{this.controller=new AbortController;var searchSectionId=this.predictiveSearch?"search_predictive_json":"search_standard_json",searchUrl=this.predictiveSearch?"/search/suggest?resources[type]="+this.searchType+"&q="+encodeURIComponent(term)+"&resources[limit]=6&section_id="+searchSectionId:"/search?section_id="+searchSectionId+"&type="+this.searchType+"&q="+encodeURIComponent(term);$s.get({signal:this.controller.signal,url:searchUrl,success:data=>{if(this.resultsVisible){var parser=new DOMParser,doc=parser.parseFromString(data,"text/html"),response=JSON.parse(doc.querySelector("div").innerHTML);this.clearResults(!1);var categories=0;if(response.results_count>0||response.collections&&response.collections.length>0){var title=document.createElement("div");title.innerHTML="Search results",title.classList.add("visually-hidden"),this.results.appendChild(title);var items=document.createElement("div");if(items.classList.add("search-results-items"),this.results.appendChild(items),response.results_count>0){categories++;var group=document.createElement("div");group.classList.add("search-results-product","search-results-group");var title=document.createElement("div");items.appendChild(title),title.outerHTML='<div class="result-group-title-wrapper"><div class="result-group-title">Products</div></div>',items.appendChild(group),response.results.forEach(item=>{group.appendChild(this.buildItem(item))})}if(response.collections&&response.collections.length>0){categories++;var group=document.createElement("div");group.classList.add("search-results-collections","search-results-group");var title=document.createElement("div");items.appendChild(title),title.outerHTML='<div class="result-group-title-wrapper"><div class="result-group-title">Collections</div></div>',items.appendChild(group),response.collections.forEach(item=>{group.appendChild(this.buildItem(item))})}if(categories>1&&items.classList.add("multi-category"),response.results_count>response.results.length){var linkUrl="/search?type="+this.searchType+"&q="+encodeURIComponent(standardSearchTerm);this.results.appendChild(this.buildSeeAllLink(linkUrl,response.results_count))}}else this.noResults()}}})},this.searchDelay)):this.clearResults()}buildItem(itemJson){var img=document.createElement("img"),info=document.createElement("div"),title=document.createElement("div"),a=document.createElement("a");a.classList.add("result-item","flex","direction-row","justify-content-start","align-items-start"),a.href=itemJson.url;var labelText=itemJson.title;if(this.showPrice&&itemJson.price!=null&&(labelText+=" "+$s.formatMoney(itemJson.price).replace(".00","")),a.setAttribute("aria-label",labelText),img.src=itemJson.thumbnail?itemJson.thumbnail:"",img.alt="",title.classList.add("title"),title.innerHTML=itemJson.title,a.appendChild(img),a.appendChild(info),info.appendChild(title),info.classList.add("info"),this.showPrice&&itemJson.price!=null){var price=document.createElement("div");price.classList.add("price","money"),price.innerHTML=$s.formatMoney(itemJson.price).replace(".00",""),info.appendChild(price)}return a}buildSeeAllLink(url,resultsQuantity){var a=document.createElement("a");return a.classList.add("see-all"),a.href=url,this.predictiveSearch?a.innerHTML="See all results":a.innerHTML="See all "+resultsQuantity+" results",a}showSearchingResults(){if(this.resultsVisible=!0,!this.results.style.minHeight){document.addEventListener("click",this.documentClickHandler);var height=this.results.offsetHeight;this.results.style.minHeight=Math.max(height,80)+"px",this.results.innerHTML='<div style="height: 100%;" class="loader-wrap flex justify-content-center align-items-center"><div class="loader" style="border-top-color: #ccc;"></div></div>'}}clearResults(removeEvents=!0){removeEvents&&(document.removeEventListener("click",this.documentClickHandler),this.resultsVisible=!1),this.results.innerHTML="",this.results.style.minHeight=""}noResults(){this.results.innerHTML='<div class="no-results">No results</div>'}documentClick(e){this.contains(e.target)||this.clearResults()}}customElements.define("search-form",ComponentSearch);
2//# sourceMappingURL=/cdn/shop/t/693/assets/component_search.js.map?v=126699585419077017891790166834

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.