1import{B as r}from"./chunk-BaseElement-_9_olu7Z.js";import"./chunk-lit-element-D_hOyXEy.js";function o(n,t){let s=Date.now();return function(...e){s+t-Date.now()<0&&(n.apply(this,e),s=Date.now())}}class h extends r{constructor(){super(),this.prevLocation=0,this.isDragging=!1,this.startX=0,this.startScrollLeft=0,this.hasDragged=!1,this.dotClickHandlers=new Map,this.hasInitialized=!1,this.mutationObserver=null,this.updateActiveDot=this.updateActiveDot.bind(this),this.handleMouseDown=this.handleMouseDown.bind(this),this.handleMouseMove=this.handleMouseMove.bind(this),this.handleMouseUp=this.handleMouseUp.bind(this),this.handleClick=this.handleClick.bind(this),this.handlePrevNext=this.handlePrevNext.bind(this),this.boundScrollHandler=o(this.updateActiveDot,150)}get slider(){return this.querySelector("[data-slider]")}get slides(){return this.querySelectorAll("[data-slide]")}get dots(){return this.querySelectorAll("[data-dot]")}get dotContainer(){return this.querySelector("[data-dot-container]")}get buttonControls(){return this.querySelectorAll("[data-button]")}connectedCallback(){super.connectedCallback(),this.mutationObserver||(this.mutationObserver=new MutationObserver(t=>{t.some(e=>Array.from(e.removedNodes).some(i=>i instanceof HTMLElement&&i.hasAttribute("data-slider")))&&(this.cleanup(),this.hasInitialized=!1),!this.hasInitialized&&this.slider&&this.slides.length>0&&this.initialize()}),this.mutationObserver.observe(this,{childList:!0,subtree:!0})),setTimeout(()=>this.initialize(),0)}initialize(){this.hasInitialized||!this.slider||this.slides.length===0||(this.hasInitialized=!0,this.slider.addEventListener("scroll",this.boundScrollHandler),this.buttonControls.length&&this.buttonControls.forEach(t=>{t.addEventListener("click",this.handlePrevNext)}),this.slider.addEventListener("mousedown",this.handleMouseDown),document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseup",this.handleMouseUp),this.addEventListener("click",this.handleClick),this.dots.length&&this.dots.forEach((t,s)=>{const e=i=>this.scrollToSlide(i,s);this.dotClickHandlers.set(t,e),t.addEventListener("click",e)}),this.updateActiveDot())}cleanup(){var t,s;(t=this.slider)==null||t.removeEventListener("scroll",this.boundScrollHandler),(s=this.slider)==null||s.removeEventListener("mousedown",this.handleMouseDown),document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseup",this.handleMouseUp),this.removeEventListener("click",this.handleClick),this.dotClickHandlers.forEach((e,i)=>{i.removeEventListener("click",e)}),this.dotClickHandlers.clear(),this.buttonControls.forEach(e=>{e.removeEventListener("click",this.handlePrevNext)}),this.isDragging=!1,this.hasDragged=!1}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this.mutationObserver)==null||t.disconnect(),this.mutationObserver=null,this.cleanup(),this.hasInitialized=!1}updateActiveDot(){if(this.slider){if(this.dots.length){const t=this.slider.clientWidth,s=this.slider.scrollLeft,e=Math.round(s/t);if(e<0)return;this.setAttribute("data-active-index",e.toString()),this.dots.length&&this.toggle(e),this.dots.length&&this.dots.forEach((i,l)=>i.dataset.active=l===e?"true":"false")}else if(this.buttonControls.length){const t=this.slider.scrollWidth-this.slider.offsetWidth,s=this.slider.scrollLeft;if(t<=0){this.buttonControls.forEach(i=>{i.disabled=!0});return}const e=Math.round(s/t*(this.slides.length-1));this.buttonControls.forEach(i=>{i.dataset.button==="prev"?i.disabled=e===0:i.dataset.button==="next"&&(i.disabled=e===this.slides.length-1)})}}}toggle(t){var s;(s=this.dotContainer)==null||s.style.setProperty("--left",`${t*4}px`)}scrollToSlide(t,s){if(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),!this.slider)return;const e=this.slider.clientWidth;this.slider.scrollTo({left:s*e,behavior:"smooth"})}handleMouseDown(t){if(t.preventDefault(),!this.slider)return;this.isDragging=!0,this.hasDragged=!1;const s=this.slider.getBoundingClientRect();this.startX=t.clientX-s.left,this.startScrollLeft=this.slider.scrollLeft,this.slider.style.cursor="grabbing",this.slider.style.userSelect="none"}handleMouseMove(t){if(t.preventDefault(),!this.isDragging||!this.slider)return;const s=this.slider.getBoundingClientRect(),e=t.clientX-s.left;Math.abs(e-this.startX)>5&&(this.hasDragged=!0);const l=(e-this.startX)*2;this.slider.scrollLeft=this.startScrollLeft-l}handleMouseUp(t){t.preventDefault(),this.isDragging=!1,this.slider&&(this.slider.style.cursor="pointer",this.slider.style.userSelect="")}handleClick(t){this.hasDragged&&(t.preventDefault(),t.stopPropagation(),t.stopImmediatePropagation(),this.hasDragged=!1)}handlePrevNext(t){if(!this.slider)return;const s=t.currentTarget,e=this.slider.clientWidth,i=s.dataset.button==="next"?e:-e;this.slider.scrollBy({left:i,behavior:"smooth"})}}customElements.define("media-slider",h);
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.