1import{a as o}from"./chunk-5FWKMTUW.js";import{j as n}from"./chunk-VJGBCIFP.js";import"./chunk-XCPXRTXT.js";import"./chunk-XJLSI5BW.js";import"./chunk-ZOYOJ6FT.js";import{b as u,d}from"./chunk-6KHOHYTW.js";var _=u((p,l)=>{var m=c=>c.toLowerCase().replace(/[*+\\|()"']/g,"").replace(/-/g," ").replace(/ +/g," ").trim();l.exports={escapeQuery:m}});var s=d(_()),f=5,h=class{constructor(e){this.element=e,this.init()}init(){this._input=this.element.querySelector(".search__input"),this._input.addEventListener("input",this._onTextInput.bind(this)),this._teasers=this.element.querySelector(".search__result-teasers"),this._error_text=this.element.dataset.errorText,this._label_error=this.element.querySelector('.search__form-input-wrapper label.sr-only p[role="alert"]'),this._clear_button=this.element.querySelector(".search__input-clear"),this._clear_button.addEventListener("click",this._clear.bind(this)),this._cancel_button=this.element.querySelector(".search__cancel"),n?this._cancel_button.addEventListener("click",()=>{this._input.value="",this._hideSpinner(),this._searchesStarted.clear(),clearTimeout(this._searchTimeout),this._resetSearch(),this._form.classList.remove("search__form--animate"),this._form.classList.add("search__form--animate-backwards"),setTimeout(()=>this._cancel_button.classList.add("search__cancel--hidden"),500)}):this._cancel_button.addEventListener("click",this._cancel),this._form=this.element.querySelector(".search__form"),this._form.addEventListener("submit",t=>{t.preventDefault(),this._onSubmit()}),n&&this._input.addEventListener("focus",()=>{this._form.classList.add("search__form--animate"),this._form.classList.remove("search__form--animate-backwards"),this._cancel_button.classList.remove("search__cancel--hidden")}),this._searchesStarted=new Set,this._resultsRenderedForQuery=void 0,this._queryParams=new URLSearchParams;let e=new URLSearchParams(window.location.search);e.has("query")?(this._queryParams.set("query",(0,s.escapeQuery)(e.get("query"))),this._input.value=this._queryParams.get("query"),this._onSubmit()):window.matchMedia("(pointer: coarse)").matches||this._input.focus(),"IntersectionObserver"in window&&(this.paginationObserver=new IntersectionObserver(this._handlePagination.bind(this),{threshold:0}))}_cancel(){window.document.referrer.startsWith(window.location.origin)?window.location.href=window.document.referrer:window.location.href="/"}_handlePagination(e){e.forEach(t=>{t.isIntersecting&&(this.paginationObserver.unobserve(t.target),this._search())})}_onSubmit(){let e=(0,s.escapeQuery)(this._input.value);e.length<2||(this._queryParams.set("query",e),window.history.replaceState(null,null,`/sok?query=${e}`),!(this._searchesStarted.has(e)||this._resultsRenderedForQuery===e)&&(this.paginationObserver&&this.paginationObserver.disconnect(),this._resetSearch(),this._hideError(),this._searchesStarted.add(e),this._search()))}_searchTracking(e,t){o({element:this.element,eventName:e,data:t})}_onTextInput(){if(clearTimeout(this._searchTimeout),(0,s.escapeQuery)(this._input.value).length<2){this._hideSpinner();return}this._searchTimeout=window.setTimeout(()=>{this._onSubmit()},600)}_search(){let e=this._queryParams.get("query");this._showSpinner(),fetch(`/api/search?${this._queryParams.toString()}`).then(t=>{if(t.status>=400)throw new Error("Search failed",{cause:t.status});return t.status===204?void 0:t.json()}).then(t=>{if(t.redirectUrl){window.location.replace(t.redirectUrl);return}e===(0,s.escapeQuery)(this._input.value)&&t&&(this._addResult(t.html,!!t.nextRange),this._total=t.total,this._queryParams.get("range")||this._searchTracking("site-search-submitted",{searchWord:e,numberOfResults:this._total}),this._queryParams.set("preferredMatch",t.match),t.nextRange&&this._queryParams.set("range",t.nextRange),this._resultsRenderedForQuery=e)}).catch(t=>{let r=t.cause>400;this._showError(r),console.error(t)}).finally(()=>{this._searchesStarted.delete(e),e===(0,s.escapeQuery)(this._input.value)&&this._hideSpinner()})}_handleArticleClick(e){let t=e.target instanceof HTMLElement&&e.target.closest(".teaser-j2"),r=t instanceof HTMLElement&&t.dataset.articleUuid,i=e.target instanceof HTMLElement&&e.target.getAttribute("href"),a=t.querySelector(".teaser-j2-headline").textContent;this._searchTracking("site-search-result-click",{articleId:r,searchWord:this._queryParams.get("query"),resultsDisplayed:this._teasers.querySelectorAll(".teaser-j2").length,linkText:a,linkUrl:i})}_addResult(e,t){let r=document.createRange().createContextualFragment(e),i=r.querySelectorAll(".teaser-j2");
1i.forEach(a=>a.addEventListener("click",this._handleArticleClick.bind(this))),this._teasers.appendChild(r),t&&this.paginationObserver&&this.paginationObserver.observe(i[i.length-f]),this._hideError()}_resetSearch(){this._queryParams.delete("range"),this._queryParams.delete("preferredMatch"),this._teasers.innerHTML="",this._resultsRenderedForQuery=void 0}_clear(){this._input.value="",this._input.focus(),this._hideSpinner(),this._searchesStarted.clear(),clearTimeout(this._searchTimeout)}_addErrorSrText({error:e}){this._label_error&&(this._label_error.innerHTML=this._error_text,e?this._input.setAttribute("aria-describedby",this._label_error.getAttribute("id")):this._input.removeAttribute("aria-describedby"))}_showSpinner(){this.element.classList.add("searching")}_hideSpinner(){this.element.classList.remove("searching")}_showError(e){e&&this.element.classList.add("error"),this._addErrorSrText({error:!0})}_hideError(){this.element.classList.remove("error"),this._addErrorSrText({error:!1})}};export{h as default}; 2//# sourceMappingURL=search-module-BL6DQKTC.js.map
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.