1import{u as l}from"./index.BqzFG1Jr.js";class d extends HTMLElement{searchInputs=this.querySelectorAll("#search-input");constructor(){super(),this.documentClickHandler=null,this.isSearchOpen=!1,this.justOpened=!1;const e=o(n.bind(this),500);this.searchInputs.forEach(r=>{r?.addEventListener("input",e),r?.addEventListener("keydown",this.handleKeydown.bind(this)),r?.addEventListener("focusin",this.handleFocus.bind(this))}),this.addEventListener("focusout",this.handleFocusOut.bind(this));const a=this.querySelectorAll("#instant-search");async function n(r){const c=r?.target?.value;if(!c){a.forEach(i=>i?.classList.add("hidden"));return}const s=await l({operation:"InstantSearchQuery",variables:{query:c,currency:window?.siteObj?.currency,shippingDestination:window.siteObj.country,reviewsEnabled:window.__HASREVIEW__,vipPricingEnabled:window.__VIPPRICING__}});if(s?.data?.instantSearch?.suggestedSearchQueries?.length||s?.data?.instantSearch?.products?.length){const i=fetch("/fragments/instantSearch",{method:"POST",headers:{"Content-Type":"applicatation/json"},body:JSON.stringify({searchData:s.data.instantSearch})}).then(t=>t.text());s.data.instantSearch.products.forEach(t=>{window.Tracker.store.set("suggestedProducts",{[t?.sku]:{product_id:t?.sku,product_name:t?.title,url:t?.url}})}),Promise.all([i]).then(([t])=>{this.isSearchOpen&&a.forEach(h=>{h?.classList.remove("hidden"),h.innerHTML=t})}).catch(t=>{console.error(t)})}else a.forEach(i=>i?.classList.add("hidden"))}function o(r,c){let s;return(...i)=>{clearTimeout(s),s=setTimeout(()=>{r(...i)},c)}}}onSearchOpened(){this.isSearchOpen||(this.isSearchOpen=!0,this.justOpened=!0,this.documentClickHandler=this.handleDocumentClick.bind(this),document.addEventListener("click",this.documentClickHandler),requestAnimationFrame(()=>{this.justOpened=!1}))}onSearchClosed(){this.isSearchOpen&&(this.isSearchOpen=!1,this.justOpened=!1,this.documentClickHandler&&(document.removeEventListener("click",this.documentClickHandler),this.documentClickHandler=null))}handleFocusOut(){this.isSearchOpen&&requestAnimationFrame(()=>{const e=document.activeElement,a=this.contains(e),n=document.querySelectorAll("#search-overlay, #blog-search-overlay"),o=Array.from(n).some(s=>s?.contains(e)),r=document.querySelectorAll("#instant-search"),c=Array.from(r).some(s=>s?.contains(e));!a&&!o&&!c&&setTimeout(()=>this.closeDropdownAndOverlay(),150)})}handleKeydown(e){e.key==="Escape"&&(this.closeDropdownAndOverlay(),e.target.blur())}handleFocus(e){if(this.onSearchOpened(),e.target.value.trim()){const a=new Event("input",{bubbles:!0});e.target.dispatchEvent(a)}}handleDocumentClick(e){if(this.justOpened)return;const a=document.querySelectorAll("#search-input, #blog-search-input");if(Array.from(a).some(t=>t===e.target||t.contains(e.target)))return;const o=document.querySelectorAll("#search-overlay, #blog-search-overlay"),r=Array.from(o).some(t=>t?.contains(e.target)),c=document.querySelectorAll("#instant-search"),s=Array.from(c).some(t=>t?.contains(e.target)),i=e.target.closest("#search-form")||e.target.closest("#blog-search-form")||e.target.closest("#search-bar-no-overlay");!this.contains(e.target)&&!r&&!s&&!i&&this.closeDropdownAndOverlay()}closeDropdownAndOverlay(){this.querySelectorAll("#instant-search").forEach(n=>n?.classList.add("hidden")),document.querySelectorAll("#search-overlay, #blog-search-overlay, #desktop-search-overlay").forEach(n=>{n&&!n.classList.contains("hidden")&&(n.style.display="",n.classList.add("hidden"),n.classList.remove("show","active","open"))}),this.onSearchClosed()}}customElements.define("instant-search",d);
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.