PageSourceSearch

https://www.lov2030.be/frontend/pageFind.component-5DuYIAKi.js

js lov2030.be collected 2026-10-02 06:09:48 UTC 4,877 bytes, 1 lines download raw bytes

1import{H as d}from"./helper-wksAHjsY.js";class u{constructor(){this.searchText="",this.highlights=[],this.previousKey="",this.currentIndex=1,this.searchTotal=0,this.options={highlightClasses:["bg-yellow-500"],currentHighlightClasses:["bg-red-500"]};const e=document.querySelector("form.js-find-form");e&&this.initFind(e),Array.from(document.querySelectorAll("p.hidden")).forEach(i=>{i.addEventListener("show",()=>{i.classList.remove("hidden")})})}initFind(e){this.inputElement=document.querySelector(".js-find-input"),this.resultsElement=document.querySelector(".js-page-find-results"),this.nextElement=document.querySelector(".js-page-find-next"),this.previousElement=document.querySelector(".js-page-find-prev"),this.clearElement=document.querySelector(".js-page-find-clear"),this.currentElement=this.resultsElement.querySelector(".js-current-find"),this.totalElement=this.resultsElement.querySelector(".js-total-find");const i=e.getAttribute("data-s-search-block");i?(this.searchElement=document.querySelector(`#${i}`),this.searchElement&&(this.searchText=this.searchElement.textContent)):(this.searchElement=document.body,this.searchText=document.body.textContent),this.resultsElement.classList.add("hidden"),this.inputElement.addEventListener("keyup",t=>{if(t.key==="Enter"&&this.previousKey!=="Enter")this.onFind(t);else{if(t.key==="Enter"&&this.previousKey==="Enter")return;d.debounce(s=>{this.onFind(s),this.previousKey="Enter"},500)()}this.previousKey=t.key}),this.nextElement.addEventListener("click",this.gotoNext.bind(this)),this.previousElement.addEventListener("click",this.gotoPrev.bind(this)),this.clearElement.addEventListener("click",this.onClear.bind(this)),e.addEventListener("submit",t=>{t.preventDefault(),this.gotoNext()})}onFind(e){if(this.clearHighlights(),!this.searchText.toLowerCase().includes(this.inputElement.value.toLowerCase())||this.inputElement.value.trim().length==0)return this.resultsElement.classList.add("hidden"),!1;let t=this.inputElement.value;t=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),this.searchTotal=(this.searchText.match(new RegExp(t,"gi"))||[]).length,this.resultsElement.classList.remove("hidden"),this.totalElement.innerText=`${this.searchTotal}`,this.currentElement.innerText="1",this.currentIndex=1,this.highlightWord(this.inputElement.value),this.scrollToQuery(this.highlights[this.currentIndex-1])}highlightWord(e,i){i||(i=this.searchElement);for(let t=i.firstChild;t;t=t.nextSibling)if(t.nodeType==3){let s=t,n=0;if(n=s.nodeValue.toLowerCase().indexOf(e.toLowerCase()),n>-1){let r=s.nodeValue.substr(0,n),o=s.nodeValue.substr(n,e.length),h=document.createTextNode(s.nodeValue.substr(n+e.length)),l=document.createElement("span");l.classList.add(...this.options.highlightClasses),l.appendChild(document.createTextNode(o)),s.nodeValue=r,s.parentNode.insertBefore(h,s.nextSibling),s.parentNode.insertBefore(l,s.nextSibling),this.highlights.push(l),l.id="highlight_span"+this.highlights.length,t=t.nextSibling}}else t.nodeType==1&&this.highlightWord(e,t)}clearHighlights(){this.highlights.forEach(e=>{const i=e.parentNode;e.outerHTML=e.innerText,i.normalize()}),this.highlights=[]}onClear(){this.clearHighlights(),this.inputElement.value="",this.resultsElement.classList.add("hidden")}gotoNext(){this.highlights.length>0&&(this.highlights[this.currentIndex-1].classList.add(...this.options.highlightClasses),this.highlights[this.currentIndex-1].classList.remove(...this.options.currentHighlightClasses),this.currentIndex++,this.currentIndex>this.searchTotal&&(this.currentIndex=1),this.currentElement.innerText=`${this.currentIndex}`,this.scrollToQuery(this.highlights[this.currentIndex-1]))}gotoPrev(){this.highlights.length>0&&(this.highlights[this.currentIndex-1].classList.add(...this.options.highlightClasses),this.highlights[this.currentIndex-1].classList.remove(...this.options.currentHighlightClasses),this.currentIndex--,this.currentIndex<1&&(this.currentIndex=this.searchTotal),this.currentElement.innerText=`${this.currentIndex}`,this.scrollToQuery(this.highlights[this.currentIndex-1]))}scrollToQuery(e){if(!e)return;const i=this.isElementHidden(e);if(i){let h;typeof Event=="function"?h=new Event("show"):(h=document.createEvent("Event"),h.initEvent("show",!0,!0)),console.log("trigger",i),i.dispatchEvent(h)}
1const t=e.closest(".js-open-on-find");t&&t.dispatchEvent(new Event("open")),e.classList.add(...this.options.currentHighlightClasses),e.classList.remove(...this.options.highlightClasses);const s=window.pageYOffset||document.documentElement.scrollTop,n=window.innerHeight,r=e.getBoundingClientRect().top,o=e.getBoundingClientRect().height;(r+o>n||r<0)&&window.scrollTo(0,r+s-n/2)}isElementHidden(e){return e?window.getComputedStyle(e).display==="none"||e.hasAttribute("data-s-toggle")&&!e.classList.contains("expanded")?e:e.parentElement?this.isElementHidden(e.parentElement):!1:!1}}export{u as default};

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.