PageSourceSearch

https://www.qwetch.com/cdn/shop/t/650/assets/component-search.js?v=162739134828978948291790070583

js qwetch.com collected 2026-09-26 05:57:49 UTC 5,412 bytes, 1 lines download raw bytes

1!function(){const e="fr"==Shopify.locale?"":`/${Shopify.locale}`;class t extends HTMLElement{constructor(){super(),this.bindEvents=this.bindEvents.bind(this),this.userTyping=this.userTyping.bind(this),this.getCollectionsSuggestions=this.getCollectionsSuggestions.bind(this),this.getSearchContent=this.getSearchContent.bind(this),this.resetSearch=this.resetSearch.bind(this),this.newSearch=this.newSearch.bind(this),this.focusInputSearch=this.focusInputSearch.bind(this),this.preventLoadMore=this.preventLoadMore.bind(this),this.onFocus=this.onFocus.bind(this),this.hideKeyboardOnPointerDown=this.hideKeyboardOnPointerDown.bind(this)}connectedCallback(){this.Search=this,this.sectionSearch=document.querySelector(".section-search"),this.isSearchDrawer=this.Search.hasAttribute("data-search-drawer"),this.isSearchDrawer||this.initSearch()}initSearch(){this.searchForm=this.Search.querySelector("form"),this.searchInput=this.querySelector(".js-input-search"),this.searchInputReset=this.querySelector(".js-input-search-reset"),this.searchInputsClear=document.querySelectorAll(".js-input-search-clear"),this.searchContainerId=this.Search.dataset.searchContainerId,this.searchGridContainer=document.querySelector(`#${this.searchContainerId}`),this.searchContent=document.querySelector(".section-search__content"),this.searchClose=document.querySelector(".search-form__close-button"),this.searchInputNewSearch=document.querySelector(".js-input-search-new-search"),this.searchInputValue=this.searchInput.value,this.isSearchInit=!1,this.timeout=null,this.mobileBreakpoint=1024,this.isMobile=window.matchMedia(`(max-width: ${this.mobileBreakpoint}px)`).matches,""!==this.searchInputValue&&this.getCollectionsSuggestions(),this.bindEvents()}bindEvents(){if(this.searchInput&&(this.searchInput.addEventListener("keyup",this.userTyping),this.searchInput.addEventListener("focus",this.onFocus)),this.searchInputsClear)for(let e=0;e<this.searchInputsClear.length;e++){this.searchInputsClear[e].addEventListener("click",this.resetSearch)}this.searchInputReset&&this.searchInputReset.addEventListener("click",this.resetSearch),this.searchInputNewSearch&&this.searchInputNewSearch.addEventListener("click",this.resetSearch),this.searchInput&&this.searchInput.addEventListener("click",this.focusInputSearch),this.isSearchDrawer&&(this.searchDrawer=document.querySelector("w3-drawer-search.drawer-search"),this.searchDrawer.addEventListener("drawer--open",this.focusInputSearch),this.focusInputSearch()),!this.isSearchDrawer&&this.isMobile&&this.searchClose.addEventListener("click",this.resetSearch)}preventLoadMore(){this.searchLoadMore=this.searchGridContainer.querySelector("w3-load-more"),this.searchLoadMore&&this.searchLoadMore.addEventListener("click",(e=>{e.preventDefault(e),this.searchForm.submit()}))}onFocus(){document.addEventListener("pointerdown",this.hideKeyboardOnPointerDown)}hideKeyboardOnPointerDown(e){const t=e.target;!this.searchInput.contains(t)&&this.searchInput.blur()}focusInputSearch(){setTimeout((()=>{this.searchInput.focus()}),200),this.searchInput.focus()}resetSearch(){this.searchInput.value="",this.searchInputValue="",this.searchInput.blur(),this.isSearchInit=!1,window.history.replaceState(null,null,"?q="),this.getSearchContent(),this.focusInputSearch()}newSearch(){const e=document.querySelector(".js-input-mobile-page-search-new-search");e&&e.addEventListener("click",this.resetSearch)}userTyping(e){if("Enter"!==e.key&&13!==e.key){if(this.isSearchDrawer||window.history.replaceState(null,null,`?q=${this.searchInput.value}&type=product`),this.searchInput.value.replace(/ /g,"")===this.searchInputValue.replace(/ /g,""))return;this.timeout&&clearTimeout(this.timeout),this.timeout=setTimeout((()=>{this.isSearchInit=!0,this.searchInputValue=this.searchInput.value,this.getSearchContent()}),300)}}async getSearchContent(){await fetch(`${e}/search?q=${this.searchInput.value}&view=ajax&type=product&options[prefix]=last&options[unavailable_products]=last`).then((e=>e.text())).then((e=>{const t=(new DOMParser).parseFromString(e,"text/html").querySelector(`#${this.searchContainerId}`);this.newSearch(),t.classList.contains("js-search-performed")?this.sectionSearch.classList.add("has-search-performed"):this.sectionSearch.classList.remove("has-search-performed"),t.querySelector(".section-search__empty")?this.sectionSearch.classList.add("has-search-empty"):this.sectionSearch.classList.remove("has-search-empty"),this.searchGridContainer.innerHTML=t.innerHTML,this.isSearchDrawer&&this.preventLoadMore(),""!=this.searchInput.value&&this.getCollectionsSuggestions(),window.lozadObserver.observe()})).catch((function(e){console.error(e)}))}async getCollectionsSuggestions(){await fetch(`${e}/search/suggest.json?q=${this.searchInput.value}&resources[type]=collection`).then((e=>e.json())).then((e=>{if(this.newSearch(),e.resources.results&&e.resources.results.collections.length>=1){const t=e.resources.results.collections;this.appendSuggestions(t)}}
1)).catch((function(e){console.error(e)})),this.searchInputValue}appendSuggestions(e){const t=this.searchGridContainer.querySelector(".js-search-collection-suggestions");for(let s=0;s<e.length;s++)e[s].title.includes("-")||(t.innerHTML+=`\n                <li >\n                <a href="${e[s].url}" class="suggestion-badge">${e[s].title.replace("|"," ")}</a>\n                </li>\n                `)}}customElements.define("w3-search",t)}();

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.