1import"./chunk-6KHOHYTW.js";var r=class{constructor(t){this.element=t,this.track=t.querySelector("[data-reader-track]"),this.progress=t.querySelector(".reader__progress"),this.modeToggle=t.querySelector("[data-reader-mode-toggle]"),this.track&&(this._rafPending=!1,this._snapTimer=null,this._snapping=!1,this._onScroll=this._onScroll.bind(this),this._onResize=this._onResize.bind(this),this._onKey=this._onKey.bind(this),this._onClick=this._onClick.bind(this),this._markVirtualSubheaders(),this._measure(),this._update(),this.track.addEventListener("scroll",this._onScroll,{passive:!0}),window.addEventListener("resize",this._onResize),window.addEventListener("keydown",this._onKey),this.track.addEventListener("click",this._onClick),this.modeToggle&&this.modeToggle.addEventListener("click",()=>this._toggleMode()))}_scheduleSnap(){this._snapping||(clearTimeout(this._snapTimer),this._snapTimer=setTimeout(()=>{let t=this.pageWidth||1,e=Math.round(this.track.scrollLeft/t)*t;Math.abs(this.track.scrollLeft-e)<1||(this._snapping=!0,this.track.scrollTo({left:e,behavior:"smooth"}),setTimeout(()=>{this._snapping=!1},400))},120))}_markVirtualSubheaders(){this.track.querySelectorAll(".reader__content p").forEach(e=>{let s=e.firstElementChild;if(!s||s.tagName!=="STRONG"||e.firstChild!==s)return;let i=s.textContent.trim();if(!i)return;let o=e.textContent.trim()===i,a=i.split(/\s+/).length<=5;(o||a)&&e.classList.add("reader__virtual-subheader")})}_measure(){let t=this.track.clientWidth||1;this.pageWidth=t,this.total=Math.max(1,Math.round(this.track.scrollWidth/t)),this.progress&&(this.progress.max=this.total)}_update(){let t=Math.round(this.track.scrollLeft/(this.pageWidth||1));this.index=t,this.progress&&(this.progress.value=t+1)}_onScroll(){this._rafPending||(this._rafPending=!0,requestAnimationFrame(()=>{this._rafPending=!1,this._update()})),this._scheduleSnap()}_onResize(){this._measure(),this._update()}_onKey(t){t.key==="ArrowRight"?this._go(1):t.key==="ArrowLeft"&&this._go(-1)}_onClick(t){if(t.target.closest("a, button, input, label, select, textarea"))return;let e=this.track.getBoundingClientRect(),s=t.clientX-e.left,i=e.width/5;s<i?this._go(-1):s>e.width-i&&this._go(1)}_go(t){let e=Math.min(this.total-1,Math.max(0,(this.index||0)+t));this.track.scrollTo({left:e*this.pageWidth,behavior:"smooth"})}_toggleMode(){let t=this.element.toggleAttribute("condensed");this.modeToggle&&this.modeToggle.setAttribute("aria-pressed",String(t)),this._measure(),this._update()}};export{r as default}; 2//# sourceMappingURL=reader-module-E2DU45G3.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.