PageSourceSearch

https://www.sliponline.nl/cdn/shop/t/137/assets/predictive-search-results.js?v=86677911199876359821790337813

js sliponline.nl collected 2026-09-26 13:27:51 UTC 2,924 bytes, 2 lines download raw bytes

1import{d as debounce}from"./debounce-CFN_LA0O.js";import{P as PubSub}from"./pubsub-CoPYzvVm.js";import"./notyf-DIw0RvBj.js";import{f as fetchHTML}from"./fetchHTML-CGNR3V1z.js";import"./parseHTML-Om2c1Ayj.js";class PredictiveSearchResults extends HTMLElement{#unsubscribers=[];#drawerId=this.closest("drawer-element")?.id;#abortController;#options={minimumSearchTermLength:2,searchInputId:this.dataset.searchInputId,hideElement:this.dataset.hideElement,resourcesLimit:10,resourcesLimitScope:"each"};#elementsToHide;connectedCallback(){this.#options.hideElement&&(this.#elementsToHide=document.querySelector(`#${this.#options.hideElement}`)),this.addEventListener("click",event=>{event.target.closest("[data-search-clear]")&&this.#requestClearSearch()}),this.#unsubscribers.push(PubSub.subscribe("search:input",({id,data:{value}})=>{id===this.dataset.searchInputId&&(this.#enableLoaders(),this.#updateSearch(value))}),PubSub.subscribe("search:clear",({id})=>{id===this.dataset.searchInputId&&this.#onClearSearchInput()}),this.#drawerId&&PubSub.subscribe("drawer:open",({id})=>{id===this.#drawerId&&(this.#requestClearSearch(),this.#clearSearchResults())}))}disconnectedCallback(){this.#unsubscribers.forEach(unsubscribe=>unsubscribe())}#clearSearchResults(){this.innerHTML=""}#requestClearSearch(){this.#options.searchInputId&&PubSub.publish("search:request-clear",{id:this.#options.searchInputId})}#onClearSearchInput(){this.ariaHidden=!0,this.#hideOnSearchResults(!1)}#enableLoaders(){this.querySelectorAll("[data-loader]").forEach(loader=>{loader.ariaHidden=!1})}#disableLoaders(){setTimeout(()=>{this.querySelectorAll("[data-loader]").forEach(loader=>{loader.ariaHidden=!0})},50)}#updateSearch=debounce(searchTerm=>this.#getSearchResults(searchTerm),300);#getSearchResults(searchTerm){if(searchTerm=searchTerm.trim(),searchTerm.length<this.#options.minimumSearchTermLength){this.#clearSearchResults(),this.#hideOnSearchResults(!1),this.ariaHidden=!0;return}this.#fetchSearchResults(searchTerm)}#hideOnSearchResults(hide=!0){this.#elementsToHide&&(this.#elementsToHide.ariaHidden=hide)}async#fetchSearchResults(searchTerm){this.#abortController?.abort(),this.#abortController=new AbortController;try{const searchUrl=routes.predictive_search_url,resultsMarkup=(await fetchHTML(`${searchUrl}?q=${searchTerm}&section_id=fetch-predictive-search&resources[limit]=${this.#options.resourcesLimit}&resources[limit_scope]=${this.#options.resourcesLimitScope}`,{signal:this.#abortController.signal})).querySelector("predictive-search-results").innerHTML;this.innerHTML="",this.innerHTML=resultsMarkup,this.ariaHidden=!1,this.#hideOnSearchResults()}catch(error){console.error("Error fetching search results:",error)}finally{this.#disableLoaders()}}}customElements.define("predictive-search-results",PredictiveSearchResults);
2//# sourceMappingURL=/cdn/shop/t/137/assets/predictive-search-results.js.map?v=86677911199876359821790337813

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.