1"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[7328],{328:(e,t,i)=>{i.r(t),i.d(t,{default:()=>o});var s=i(59);class r extends window.PluginBaseClass{init(){try{if(this._inputField=this.el.querySelector('input[type="search"]'),this._autoCompleteEl=this.el.querySelector(".e-autocomplete"),this.searchcloseButton=this.el.querySelector(".js-search-close-btn"),this.searchPlugin=window.PluginManager.getPluginInstanceFromElement(this.el,"SearchWidget"),!this._inputField||!this._autoCompleteEl)throw Error("Input and autocomplete fields are required")}catch(e){if(localStorage){let t=localStorage.getItem("eDebug");t&&1===parseInt(t,10)&&console.log("SuggestAutocompletePlugin",e)}return!1}this.registerObserver(),this.registerEvents()}registerObserver(){this.mutationObserver=new MutationObserver(e=>{e.forEach(e=>{if("attributes"===e.type&&e.target.classList.contains("is-active"))try{let t=e.target.querySelector(".search-suggest-product-name");if(t){let e="";t.classList.contains("js-history-term")?(e=t.innerText,this._inputField.value=e):(e=this._createAutocompleteText(t))?this._autoCompleteEl.innerHTML=e:this._removeAutoComplete()}else throw Error('No "suggestName"-element found. Removing...')}catch(e){this._removeAutoComplete()}})}),this.mutationObserver.observe(this.el,{attributes:!0,attributeFilter:["class"],subtree:!0})}registerEvents(){this._inputField.addEventListener("input",s.A.debounce(()=>this._removeAutoComplete(),50),{capture:!0,passive:!0}),this._inputField.addEventListener("focus",e=>{e.target.value.length>0&&this.searchPlugin._suggest(e.target.value)}),this._inputField.addEventListener("keydown",e=>this._onKeyDown(e)),this.$emitter.subscribe("afterSuggest",e=>this._afterSuggestLoad(e)),this._autoCompleteEl.addEventListener("click",()=>this._inputField.focus()),this.searchcloseButton.addEventListener("click",()=>this._removeAutoComplete())}_afterSuggestLoad(e){try{if(!this.el.querySelector(".is-active"))throw Error("Suggest autocomplete element not found, injecting...")}catch(t){if(e&&e.detail.firstElement){let t=e.detail.firstElement,i=this._createAutocompleteText(t);i?this._autoCompleteEl.innerHTML=i:this._removeAutoComplete()}}this._inputField.focus()}_onKeyDown(e){if(-1!==[9,37,38,39,40].indexOf(e.keyCode||e.which)){let t=this.el.querySelector(".e-autocomplete").innerHTML.trim();if(t){let i=t.replace(/<[^>]*>/g,"").trim(),s=this._inputField.value.trim();i&&i!==s&&(e.preventDefault(),this._inputField.value=i,this._inputField.dispatchEvent(new Event("input")))}}}_removeAutoComplete(){this._autoCompleteEl.innerHTML=""}_createAutocompleteText(e){let t="";try{let i=e.querySelector(".highlight"),s=e.innerHTML.trim(),r=s.startsWith(i.outerHTML.trim());i&&r&&(t=s.replaceAll("highlight","invisible"))}catch(e){console.log("There is no exact match in results")}return t}}class o extends r{registerEvents(){this._inputField.addEventListener("input",s.A.debounce(()=>this._removeAutoComplete(),50),{capture:!0,passive:!0}),this._inputField.addEventListener("keydown",e=>this._onKeyDown(e)),this.$emitter.subscribe("afterSuggest",e=>this._afterSuggestLoad(e)),this._autoCompleteEl.addEventListener("click",()=>this._inputField.focus()),this.searchcloseButton.addEventListener("click",()=>this._removeAutoComplete())}}},59:(e,t,i)=>{i.d(t,{A:()=>s});class s{static debounce(e,t){let i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return function(){for(var r=arguments.length,o=Array(r),l=0;l<r;l++)o[l]=arguments[l];s&&!i&&setTimeout(e.bind(e,...o),0),clearTimeout(i),i=setTimeout(e.bind(e,...o),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.