https://dreww.ca/hubfs/hub_generated/module_assets/1/216678359051/…/module_Testimonial_Slider.min.js
1var module_216678359051=void(()=>{const initSlider=root=>{const viewport=root.querySelector("[data-testimonial-slider-viewport]"),track=root.querySelector("[data-testimonial-slider-track]");if(!viewport||!track)return;const originals=Array.from(track.children),setCount=originals.length;if(0===setCount)return;let unit=0;const appendCloneSet=()=>{originals.forEach(el=>{const clone=el.cloneNode(!0);clone.setAttribute("data-ts-clone",""),clone.setAttribute("aria-hidden","true"),clone.querySelectorAll("a, button, input, [tabindex]").forEach(f=>f.setAttribute("tabindex","-1")),track.appendChild(clone)})},build=()=>{if(track.querySelectorAll("[data-ts-clone]").forEach(el=>el.remove()),appendCloneSet(),unit=track.children[setCount].offsetLeft-track.children[0].offsetLeft,unit<=0)return void(unit=0);const needed=Math.max(3,Math.ceil(viewport.clientWidth/unit)+2);for(let s=2;s<needed;s+=1)appendCloneSet();viewport.scrollLeft=unit,updateDots()},dotsWrap=root.querySelector("[data-testimonial-slider-dots]"),dots=dotsWrap?Array.from(dotsWrap.querySelectorAll("[data-index]")):[],updateDots=()=>{if(!dots.length)return;const active=(()=>{if(unit<=0)return 0;const stride=unit/setCount;return Math.round((viewport.scrollLeft%unit+unit)%unit/stride)%setCount})();dots.forEach((d,i)=>d.classList.toggle("is-active",i===active))};dots.forEach(d=>{d.addEventListener("click",()=>{if(unit<=0)return;const i=parseInt(d.getAttribute("data-index"),10)||0;viewport.scrollLeft=unit+i*(unit/setCount),updateDots()})});let down=!1,startX=0,lastX=0,moved=!1;const onUp=()=>{down&&(down=!1,root.classList.remove("is-dragging"))};let resizeTimer;viewport.addEventListener("scroll",()=>{if(unit<=0)return;const x=viewport.scrollLeft;x>=2*unit?viewport.scrollLeft=x-unit:x<unit&&(viewport.scrollLeft=x+unit),updateDots()},{passive:!0}),viewport.addEventListener("pointerdown",e=>{"mouse"===e.pointerType&&(down=!0,moved=!1,startX=e.clientX,lastX=e.clientX,root.classList.add("is-dragging"))}),viewport.addEventListener("pointermove",e=>{if(!down)return;const dx=e.clientX-lastX;lastX=e.clientX,Math.abs(e.clientX-startX)>4&&(moved=!0),viewport.scrollLeft-=dx}),viewport.addEventListener("pointerup",onUp),viewport.addEventListener("pointercancel",onUp),viewport.addEventListener("pointerleave",onUp),viewport.addEventListener("click",e=>{moved&&(e.preventDefault(),e.stopPropagation())},!0),viewport.addEventListener("dragstart",e=>e.preventDefault()),window.addEventListener("resize",()=>{clearTimeout(resizeTimer),resizeTimer=setTimeout(build,200)}),build()},init=()=>{document.querySelectorAll("[data-testimonial-slider]").forEach(initSlider)};"loading"===document.readyState?document.addEventListener("DOMContentLoaded",init,{once:!0}):init()})(); 2//# sourceURL=https://7605971.fs1.hubspotusercontent-na1.net/hubfs/7605971/hub_generated/module_assets/1/216678359051/1786972775716/module_Testimonial_Slider.js
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.