PageSourceSearch

https://www.nutrient.io/_astro/Carousel.astro_astro_type_script_index_0_lang.B8edjrso.js

js nutrient.io collected 2026-10-02 10:05:38 UTC 27,024 bytes, 1 lines download raw bytes

1var b=class{carousel;track;originalItems;items;prevButton;nextButton;dotsContainer;scrollbarThumb;config;currentIndex;totalSlides;autoplayInterval;isDragging;startX;currentX;initialTransform;itemWidth;slidePositions;lastTransform;heightRaf;resizeRaf;isInfinite;currentSlideIndex;activeStartIndex;isTransitioning;hasDragged;lastArrowClickTime;constructor(t){this.carousel=t,this.track=t.querySelector("[data-carousel-track]"),this.originalItems=Array.from(this.track.children),this.items=[...this.originalItems],this.prevButton=t.querySelector("[data-carousel-prev]"),this.nextButton=t.querySelector("[data-carousel-next]"),this.dotsContainer=t.querySelector("[data-carousel-dots]"),this.scrollbarThumb=t.querySelector("[data-carousel-scrollbar-thumb]"),this.config=this.getConfig(),this.currentIndex=0,this.totalSlides=0,this.autoplayInterval=null,this.isDragging=!1,this.startX=0,this.currentX=0,this.initialTransform=0,this.itemWidth=0,this.slidePositions=[],this.lastTransform=0,this.heightRaf=null,this.resizeRaf=null,this.isInfinite=!1,this.currentSlideIndex=0,this.activeStartIndex=0,this.isTransitioning=!1,this.hasDragged=!1,this.lastArrowClickTime=0,this.init()}getConfig(){const t=this.carousel.dataset,e=JSON.parse(t.responsive||"[]");return{itemsToShow:parseInt(t.itemsToShow||"1")||1,itemsToScroll:parseInt(t.itemsToScroll||"1")||1,infinite:t.infinite==="true",autoplay:t.autoplay==="true",autoplaySpeed:parseInt(t.autoplaySpeed||"3000")||3e3,speed:parseInt(t.speed||"300")||300,adaptiveHeight:t.adaptiveHeight==="true",draggable:t.draggable==="true",swipeable:t.swipeable==="true",trackpadScroll:t.trackpadScroll==="true",pauseOnHover:t.pauseOnHover==="true",responsive:e,gap:t.gap||"1rem",overflow:t.overflow==="true",disableAbove:parseInt(t.disableAbove||"0")||0}}isStatic(){return!this.config.infinite&&this.config.disableAbove>0&&window.innerWidth>this.config.disableAbove}applyStatic(){this.track.style.removeProperty("transform"),this.lastTransform=0,this.items.forEach(t=>{t.style.removeProperty("width"),t.style.removeProperty("flex-shrink"),t.classList.add("carousel-active"),t.removeAttribute("aria-hidden"),t.toggleAttribute("inert",!1),this.toggleFocusabilityWithin(t,!1)})}init(){this.calculateDimensions();const t=this.carousel.dataset.vertical==="true",e=()=>{t&&this.calculateDimensions(),this.config.infinite&&this.setupInfinite(),this.setupResponsive(),this.createDots(),this.updateCarousel(),this.config.autoplay&&this.startAutoplay(),this.config.adaptiveHeight&&this.updateHeight(),this.isStatic()&&this.applyStatic()};this.setupEventListeners(),t?requestAnimationFrame(e):e()}calculateDimensions(){const t=this.carousel.querySelector(".carousel-container"),e=this.carousel.dataset.vertical==="true",i=e?t.offsetHeight:t.offsetWidth,s=this.getCurrentConfig(),r=this.parseGap(s.gap),o=(s.itemsToShow-1)*r;if(this.itemWidth=(i-o)/s.itemsToShow,this.carousel.querySelectorAll(".carousel-item").forEach(n=>{e?(n.style.height=`${this.itemWidth}px`,n.style.width="100%"):(n.style.width=`${this.itemWidth}px`,n.style.height=""),n.style.flexShrink="0"}),this.config.infinite)this.calculateSlidePositions(),this.totalSlides=this.originalItems.length;else{const n=s.itemsToShow;this.items.length<=n?this.totalSlides=1:(this.calculateSlidePositions(),this.totalSlides=this.slidePositions.length)}if(this.config.infinite){const n=this.items.length;e?(this.track.style.height=`${n*this.itemWidth+(n-1)*r}px`,this.track.style.width="100%"):this.track.style.width=`${n*this.itemWidth+(n-1)*r}px`}e&&this.updateHeightForVertical(),this.updatePosition()}refreshAllItems(){const t=this.carousel.dataset.vertical==="true";this.carousel.querySelectorAll(".carousel-item").forEach(e=>{t?(e.style.height=`${this.itemWidth}px`,e.style.width="100%"):(e.style.width=`${this.itemWidth}px`,e.style.height=""),e.style.flexShrink="0"})}updatePosition(){this.config.infinite?this.updateInfinitePosition():this.updateCarouselTransform()}parseGap(t){return t.includes("rem")||t.includes("em")?parseFloat(t)*16:t.includes("px")?parseFloat(t):parseFloat(t)||0}getCurrentConfig(){const t=window.innerWidth,e={...this.config};for(const i of this.config.responsive)if(t<=i.breakpoint){e.itemsToShow=i.itemsToShow,e.itemsToScroll=i.itemsToScroll||e.itemsToScroll;break}return this.config.itemsToShow>=2&&this.config.responsive.length===0&&(t<=768?(e.itemsToShow=1,e.itemsToScroll=1):t<=992&&this.config.itemsToShow>2&&(e.itemsToShow=2,e.itemsToScroll=Math.min(2,this.config.itemsToScroll))),e}setupResponsive(){let t=!0,e=0,i=0;new ResizeObserver(s=>{for(const r of s)if(r.target===this.carousel){const o=this.carousel.dataset.vertical==="true",n=r.contentRect.width,l=r.contentRect.height;if(t){t=!1,e=n,i=l;continue}const a=Math.round(n)!==Math.round(e),h=o?a||Math.round(l)!==Math.round(i):a;if(e=n,i=l,!h)continue;this.scheduleResize()}}).observe(this.carousel)}scheduleResize(){this.resizeRaf==null&&(this.resizeRaf=requestAnimationFrame(()=>{this.resizeRaf=null,this.applyResize()}))}applyResize(){if(this.isStatic()){this.applyStatic();return}const t=this.config.infinite?this.currentSlideIndex:this.currentIndex,e=this.getCurrentConfig();if(this.calculateDimensions(),this.config.infinite){const i=this.getCurrentConfig();if(e.itemsToShow!==i.itemsToShow)this.setupInfinite();else{this.refreshAllItems();const s=this.parseGap(i.gap),r=-this.activeStartIndex*(this.itemWidth+s);this.writeTransform(r,!1,!0)}}else this.refreshAllItems(),this.slidePositions&&this.slidePositions.length>0&&(this.currentIndex=Math.min(t,this.slidePositions.length-1)),this.updatePosition();this.updateCarousel(),this.createDots(),this.config.adaptiveHeight&&this.updateHeight()}createDots(){if(!this.dotsContainer)return;this.dotsContainer.innerHTML="";const t=this.getCurrentConfig();if((this.originalItems?this.originalItems.length:this.items.length)<=t.itemsToShow){this.dotsContainer.style.display="none";return}else this.dotsContainer.style.display="";const e=this.config.infinite?this.originalItems.length:this.totalSlides;for(let i=0;i<e;i++){const s=document.createElement("button");
1s.className="carousel-dot",s.setAttribute("aria-label",`Go to slide ${i+1} of ${e}`),s.setAttribute("role","tab"),s.setAttribute("type","button"),s.setAttribute("aria-controls",`${this.carousel.dataset.carouselId}-track`),s.setAttribute("aria-selected","false"),s.setAttribute("tabindex","-1"),this.config.infinite?s.addEventListener("click",()=>this.goToInfiniteSlide(i)):s.addEventListener("click",()=>this.goToSlide(i)),this.dotsContainer.appendChild(s)}this.updateDots()}updateDots(){this.dotsContainer&&this.dotsContainer.querySelectorAll(".carousel-dot").forEach((t,e)=>{const i=e===this.currentIndex;t.classList.toggle("active",i),t.setAttribute("aria-selected",i.toString()),t.setAttribute("tabindex",i?"0":"-1")})}updateInfiniteScrollbar(){if(!this.scrollbarThumb)return;const t=this.getCurrentConfig(),e=this.originalItems.length,i=t.itemsToShow,s=this.carousel.querySelector(".carousel-scrollbar");if(s)if(e<=i){s.style.display="none";return}else s.style.display="";const r=i/e*100,o=Math.max(8,Math.min(r,95)),n=this.currentSlideIndex/Math.max(1,e-1)*(100-o);this.scrollbarThumb.style.width=`${o}%`,this.scrollbarThumb.style.left=`${n}%`,this.scrollbarThumb.style.transform="none"}updateScrollbar(){if(!this.scrollbarThumb)return;const t=this.getCurrentConfig(),e=this.items.length,i=t.itemsToShow,s=this.carousel.querySelector(".carousel-scrollbar");
1if(s)if(e<=i){s.style.display="none";return}else s.style.display="";const r=i/e*100,o=Math.max(8,Math.min(r,95)),n=this.getCurrentScrollProgress()*(100-o);this.scrollbarThumb.style.width=`${o}%`,this.scrollbarThumb.style.left=`${n}%`,this.scrollbarThumb.style.transform="none"}getCurrentScrollProgress(){if(!this.config.infinite&&this.slidePositions&&this.slidePositions.length>0){const n=this.slidePositions.length-1;return n===0?0:this.currentIndex/n}const t=this.getCurrentTransform(),e=this.getCurrentConfig(),i=this.items.length,s=e.itemsToShow,r=this.parseGap(e.gap),o=Math.max(0,(i-s)*(this.itemWidth+r));return o===0?0:Math.min(Math.abs(t)/o,1)}setFluidPosition(t){if(!this.slidePositions||this.slidePositions.length===0){this.setDirectPosition(t);return}const e=t*(this.slidePositions.length-1),i=Math.floor(e),s=Math.min(Math.ceil(e),this.slidePositions.length-1),r=e-i,o=this.getCurrentConfig(),n=this.parseGap(o.gap),l=this.itemWidth+n,a=this.slidePositions[i],h=-(a+(this.slidePositions[s]-a)*r)*l;this.track.style.transition="none",this.writeTransform(h),this.updateScrollbarThumbPosition(t),this.updateActiveSlideStates();const c=Math.round(e);this.currentIndex=Math.max(0,Math.min(this.slidePositions.length-1,c)),this.updateDots(),this.updateArrows(),requestAnimationFrame(()=>{this.track.style.transition=""})}setDirectPosition(t){const e=this.getCurrentConfig(),i=this.items.length,s=e.itemsToShow,r=this.parseGap(e.gap),o=(i-s)*(this.itemWidth+r),n=-t*o;this.track.style.transition="none",this.writeTransform(n),this.updateScrollbarThumbPosition(t),this.updateActiveSlideStates(),requestAnimationFrame(()=>{this.track.style.transition=""})}updateScrollbarThumbPosition(t){if(!this.scrollbarThumb)return;const e=this.getCurrentConfig(),i=this.items.length,s=e.itemsToShow/i*100,r=t*(100-Math.max(8,Math.min(s,95)));this.scrollbarThumb.style.left=`${r}%`}updateActiveSlideStates(){const t=this.getCurrentConfig(),e=t.itemsToShow;let i;if(this.track.style.transition==="none"){const r=this.getCurrentTransform(),o=this.parseGap(t.gap),n=this.itemWidth+o;i=Math.floor(Math.abs(r)/n)}else i=this.getCurrentFirstVisibleItemIndex();const s=Math.min(i+e-1,this.items.length-1);this.items.forEach((r,o)=>{const n=o>=i&&o<=s;r.classList.toggle("carousel-active",n),this.config.overflow||(r.setAttribute("aria-hidden",(!n).toString()),r.toggleAttribute("inert",!n),this.toggleFocusabilityWithin(r,!n))})}scheduleHeightUpdate(){this.heightRaf==null&&(this.heightRaf=requestAnimationFrame(()=>{this.heightRaf=null,this.config.adaptiveHeight&&this.updateHeight(),this.carousel.dataset.vertical==="true"&&this.updateHeightForVertical()}))}updateHeight(){if(!this.config.adaptiveHeight)return;const t=this.getCurrentConfig(),e=this.getCurrentFirstVisibleItemIndex(),i=Math.min(e+t.itemsToShow-1,this.items.length-1),s=this.items.slice(e,i+1);let r=0;s.forEach(o=>{const n=o.offsetHeight;n>r&&(r=n)}),this.carousel.querySelector(".carousel-container").style.height=`${r}px`}
1updateHeightForVertical(){if(this.carousel.dataset.vertical!=="true")return;const t=this.getCurrentConfig(),e=this.getCurrentFirstVisibleItemIndex(),i=Math.min(e+t.itemsToShow-1,this.items.length-1),s=this.items.slice(e,i+1);s.forEach(o=>{o.style.height="auto"});let r=0;s.forEach(o=>{const n=o.offsetHeight;n>r&&(r=n)}),this.carousel.querySelector(".carousel-container").style.height=`${r}px`}setupEventListeners(){this.prevButton&&this.prevButton.addEventListener("click",()=>{this.handleArrowClick(()=>this.prevSlide())}),this.nextButton&&this.nextButton.addEventListener("click",()=>{this.handleArrowClick(()=>this.nextSlide())}),this.carousel.addEventListener("keydown",t=>{if(this.isStatic())return;const e=this.carousel.dataset.vertical==="true";if(e&&t.key==="ArrowUp"||!e&&t.key==="ArrowLeft")t.preventDefault(),this.prevSlide(),this.announceSlideChange();else if(e&&t.key==="ArrowDown"||!e&&t.key==="ArrowRight")t.preventDefault(),this.nextSlide(),this.announceSlideChange();else if(t.key==="Home")t.preventDefault(),this.goToSlide(0),this.announceSlideChange();else if(t.key==="End"){t.preventDefault();const i=this.config.infinite?this.originalItems.length-1:this.totalSlides-1;this.goToSlide(i),this.announceSlideChange()}}),(this.config.draggable||this.config.swipeable)&&this.setupDragEvents(),this.track.addEventListener("click",t=>{if(this.hasDragged)return t.preventDefault(),t.stopPropagation(),!1},!0),this.config.autoplay&&this.config.pauseOnHover&&(this.carousel.addEventListener("mouseenter",()=>{this.stopAutoplay(),this.announceAutoplayState("paused")}),this.carousel.addEventListener("mouseleave",()=>{this.startAutoplay(),this.announceAutoplayState("playing")})),this.scrollbarThumb&&this.setupScrollbarDrag(),this.config.trackpadScroll&&this.setupTrackpadScroll()}setupScrollbarDrag(){const t=this.carousel.querySelector(".carousel-scrollbar-track");if(!t)return;let e=!1,i=0,s=0,r=null;const o=a=>{a.preventDefault(),e=!0;const h=t.getBoundingClientRect();if(r=h,s=this.getEventX(a),a.target===this.scrollbarThumb)i=this.scrollbarThumb.getBoundingClientRect().left-h.left;else{const c=this.updateScrollbarFromPosition(a,h),d=this.getCurrentConfig(),u=this.items.length,f=d.itemsToShow/u*100,g=Math.max(8,Math.min(f,95)),m=h.width*(100-g)/100;i=Number.isFinite(c)?m*c:0}document.body.style.userSelect="none",this.scrollbarThumb.style.cursor="grabbing"},n=a=>{if(!e||(a.preventDefault(),this.config.infinite))return;const h=r||t.getBoundingClientRect(),c=this.getEventX(a)-s,d=i+c,u=this.getCurrentConfig(),f=this.items.length,g=u.itemsToShow/f*100,m=Math.max(8,Math.min(g,95)),p=h.width*(100-m)/100,S=p>0?Math.max(0,Math.min(p,d))/p:0;this.setFluidPosition(S)},l=()=>{e&&(e=!1,r=null,document.body.style.userSelect="",this.scrollbarThumb.style.cursor="grab")};t.addEventListener("mousedown",o),this.scrollbarThumb.addEventListener("mousedown",o),document.addEventListener("mousemove",n),document.addEventListener("mouseup",l),t.addEventListener("touchstart",o,{passive:!1}),this.scrollbarThumb.addEventListener("touchstart",o,{passive:!1}),document.addEventListener("touchmove",n,{passive:!1}),document.addEventListener("touchend",l,{passive:!0}),t.addEventListener("selectstart",a=>a.preventDefault()),this.scrollbarThumb.addEventListener("selectstart",a=>a.preventDefault())}updateScrollbarFromPosition(t,e){const i=this.carousel.querySelector(".carousel-scrollbar-track"),s=e||i.getBoundingClientRect(),r=this.getEventX(t)-s.left;if(this.config.infinite)return 0;const o=this.getCurrentConfig(),n=this.items.length,l=o.itemsToShow/n*100,a=Math.max(8,Math.min(l,95)),h=s.width,c=h*(100-a)/100,d=r-h*a/100/2,u=c>0?Math.max(0,Math.min(c,d))/c:0;return this.setFluidPosition(u),u}setupTrackpadScroll(){let t=null;const e=i=>{if(this.isStatic())return;const s=this.getCurrentConfig();if(this.items.length<=s.itemsToShow)return;const r=this.carousel.dataset.vertical==="true",o=r?i.deltaY:i.deltaX;Math.abs(o)>0&&(i.preventDefault(),i.stopPropagation());const n=this.itemWidth+this.parseGap(s.gap),l=-(this.items.length-s.itemsToShow)*n,a=Math.max(l,Math.min(0,this.getCurrentTransform()-o*.8));if(this.track.style.transition="none",this.writeTransform(a,r),this.slidePositions&&this.slidePositions.length>0){const h=Math.abs(a)/Math.abs(l);this.currentIndex=Math.round(h*(this.slidePositions.length-1))}this.updateScrollbar(),this.updateDots(),this.updateArrows(),this.updateActiveSlideStates(),t&&clearTimeout(t),t=setTimeout(()=>
1{const h=-Math.round(Math.abs(a)/n)*n;if(this.track.style.transition="",this.writeTransform(h,r),this.slidePositions&&this.slidePositions.length>0){const c=Math.abs(h)/Math.abs(l);this.currentIndex=Math.round(c*(this.slidePositions.length-1))}this.updateScrollbar(),this.updateDots(),this.updateArrows(),this.updateActiveSlideStates()},150)};this.carousel.addEventListener("wheel",e,{passive:!1})}setupDragEvents(){this.config.draggable&&(this.track.addEventListener("mousedown",t=>this.dragStart(t)),document.addEventListener("mousemove",t=>this.dragMove(t)),document.addEventListener("mouseup",t=>this.dragEnd(t)),this.track.addEventListener("dragstart",t=>t.preventDefault()),this.track.addEventListener("selectstart",t=>t.preventDefault()),this.track.addEventListener("contextmenu",t=>{this.isDragging&&t.preventDefault()})),this.config.swipeable&&(this.track.addEventListener("touchstart",t=>this.dragStart(t),{passive:!1}),document.addEventListener("touchmove",t=>this.dragMove(t),{passive:!1}),document.addEventListener("touchend",t=>this.dragEnd(t),{passive:!0}))}dragStart(t){this.isStatic()||t.target.matches("button, input, select, textarea, a")||(t.preventDefault(),this.isDragging=!0,this.hasDragged=!1,this.track.classList.add("dragging"),this.carousel.dataset.vertical==="true"?this.startX=this.getEventY(t):this.startX=this.getEventX(t),this.track.querySelector("a")!==null&&(this.currentX=this.startX),this.initialTransform=this.getCurrentTransform(),document.body.style.userSelect="none",this.config.autoplay&&this.stopAutoplay())}dragMove(t){if(!this.isDragging)return;t.preventDefault(),this.carousel.dataset.vertical==="true"?this.currentX=this.getEventY(t):this.currentX=this.getEventX(t);const e=this.currentX-this.startX;Math.abs(e)>5&&(this.hasDragged=!0);let i=e;const s=this.getCurrentConfig();if(!this.config.infinite){const n=Math.min(0,-(this.items.length-s.itemsToShow)*(this.itemWidth+this.parseGap(s.gap)));this.initialTransform+e>0?i=e*.3:this.initialTransform+e<n&&(i=e-(this.initialTransform+e-n)*.7)}const r=this.initialTransform+i,o=this.carousel.dataset.vertical==="true";this.config.infinite?this.writeTransform(r,o,!0):this.writeTransform(r,o)}dragEnd(t){if(!this.isDragging)return;this.isDragging=!1,this.track.classList.remove("dragging"),document.body.style.userSelect="";const e=this.currentX-this.startX;Math.abs(e)>50?e>0?this.prevSlide():this.nextSlide():this.config.infinite?this.updateInfinitePosition():this.updateCarousel(),setTimeout(()=>{this.hasDragged=!1},10),this.config.autoplay&&this.config.pauseOnHover&&this.startAutoplay()}getEventX(t){if(t.type.includes("touch")){const e=t;return e.touches&&e.touches[0]?e.touches[0].clientX:e.changedTouches[0].clientX}return t.clientX}getEventY(t){if(t.type.includes("touch")){const e=t;return e.touches&&e.touches[0]?e.touches[0].clientY:e.changedTouches[0].clientY}return t.clientY}writeTransform(t,e=!1,i=!1){i?this.track.style.transform=e?`translate3d(0px, ${t}px, 0px)`:`translate3d(${t}px, 0px, 0px)`:this.track.style.transform=e?`translateY(${t}px)`:`translateX(${t}px)`,this.lastTransform=t}getCurrentTransform(){if(typeof this.lastTransform=="number"&&!Number.isNaN(this.lastTransform))return this.lastTransform;const t=getComputedStyle(this.track).transform;if(t==="none")return 0;const e=this.carousel.dataset.vertical==="true",i=t.match(/matrix3d\((.+)\)/);if(i){const r=i[1].split(",").map(o=>o.trim());return e?parseFloat(r[13])||0:parseFloat(r[12])||0}const s=t.match(/matrix\((.+)\)/);if(s){const r=s[1].split(",").map(o=>o.trim());return e?parseFloat(r[5])||0:parseFloat(r[4])||0}return 0}toggleFocusabilityWithin(t,e){t.querySelectorAll("a, button, input, select, textarea, [tabindex]").forEach(i=>{e?("disabled"in i&&(i.disabled=!0),i.setAttribute("tabindex","-1"),i.setAttribute("aria-hidden","true")):("disabled"in i&&(i.disabled=!1),i.getAttribute("tabindex")==="-1"&&i.removeAttribute("tabindex"),i.removeAttribute("aria-hidden"))})}prevSlide(){this.config.infinite?(this.handleInfinitePrev(),this.updateInfiniteDots()):(this.currentIndex=Math.max(0,this.currentIndex-1),this.updateCarousel())}handleInfiniteNext(){const t=this.getCurrentConfig(),e=t.itemsToScroll,i=this.originalItems.length,s=t.itemsToShow;this.currentSlideIndex=(this.currentSlideIndex+e)%i,this.activeStartIndex+=e,this.updateInfinitePosition(),this.updateActiveSlides();const r=this.items.length-s;this.activeStartIndex>=r&&setTimeout(()=>{this.track.style.transition="none",this.activeStartIndex=s+this.currentSlideIndex,this.updateInfinitePosition(),this.updateActiveSlides(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.track.style.transition=""})})},this.config.speed),this.updateInfiniteDots()}handleInfinitePrev(){const t=this.getCurrentConfig(),e=t.itemsToScroll,i=this.originalItems.length,s=t.itemsToShow;this.currentSlideIndex=(this.currentSlideIndex-e+i)%i,this.activeStartIndex-=e,this.updateInfinitePosition(),this.updateActiveSlides(),this.activeStartIndex<s&&setTimeout(()=>{this.track.style.transition="none",this.activeStartIndex=this.activeStartIndex+i,this.updateInfinitePosition(),this.updateActiveSlides(),requestAnimationFrame(()=>{requestAnimationFrame(()=>{this.track.style.transition=""})})},this.config.speed),this.updateInfiniteDots()}updateInfinitePosition(){const t=this.getCurrentConfig(),e=this.parseGap(t.gap),i=this.carousel.dataset.vertical==="true",s=-this.activeStartIndex*(this.itemWidth+e);this.track.style.setProperty("--carousel-speed",`${this.config.speed}ms`),this.writeTransform(s,i,!0)}updateActiveSlides(){const t=this.getCurrentConfig().itemsToShow;
1this.items.forEach(e=>{e.classList.remove("carousel-active","carousel-current"),e.setAttribute("aria-hidden","true"),e.setAttribute("tabindex","-1"),e.toggleAttribute("inert",!0),this.toggleFocusabilityWithin(e,!0)});for(let e=0;e<t;e++){const i=this.activeStartIndex+e;if(i>=0&&i<this.items.length){const s=this.items[i];s.classList.add("carousel-active"),s.setAttribute("aria-hidden","false"),s.setAttribute("tabindex","-1"),s.toggleAttribute("inert",!1),this.toggleFocusabilityWithin(s,!1),e===Math.floor(t/2)&&s.classList.add("carousel-current")}}}updateInfiniteDots(){this.dotsContainer&&this.dotsContainer.querySelectorAll(".carousel-dot").forEach((t,e)=>{const i=e===this.currentSlideIndex;t.classList.toggle("active",i),t.setAttribute("aria-selected",i.toString()),t.setAttribute("tabindex",i?"0":"-1")})}nextSlide(){this.config.infinite?(this.handleInfiniteNext(),this.updateInfiniteDots()):(this.currentIndex=Math.min(this.totalSlides-1,this.currentIndex+1),this.updateCarousel())}goToInfiniteSlide(t){const e=this.getCurrentConfig().itemsToShow;this.currentSlideIndex=t,this.activeStartIndex=e+t,this.updateInfinitePosition(),this.updateActiveSlides(),this.updateInfiniteDots()}goToSlide(t){this.config.infinite?this.goToInfiniteSlide(t):(this.currentIndex=Math.max(0,Math.min(this.totalSlides-1,t)),this.updateCarousel())}setupInfinite(){const t=this.getCurrentConfig(),e=t.itemsToShow,i=this.originalItems.length;this.track.innerHTML="";const s=[];for(let n=0;n<e;n++){const l=i-e+n,a=this.originalItems[l].cloneNode(!0);a.classList.add("carousel-slide","carousel-cloned"),a.setAttribute("data-index",(-(e-n)).toString()),a.setAttribute("tabindex","-1"),a.setAttribute("aria-hidden","true"),a.toggleAttribute("inert",!0),a.style.width=`${this.itemWidth}px`,a.style.flexShrink="0",s.push(a),this.toggleFocusabilityWithin(a,!0),this.track.appendChild(a)}this.originalItems.forEach((n,l)=>{const a=n.cloneNode(!0);a.classList.add("carousel-slide"),a.setAttribute("data-index",l.toString()),a.setAttribute("tabindex","-1"),a.style.width=`${this.itemWidth}px`,a.style.flexShrink="0",this.track.appendChild(a)});for(let n=0;n<e;n++){const l=this.originalItems[n].cloneNode(!0);l.classList.add("carousel-slide","carousel-cloned"),l.setAttribute("data-index",(i+n).toString()),l.setAttribute("tabindex","-1"),l.setAttribute("aria-hidden","true"),l.toggleAttribute("inert",!0),l.style.width=`${this.itemWidth}px`,l.style.flexShrink="0",this.track.appendChild(l),this.toggleFocusabilityWithin(l,!0)}this.items=Array.from(this.track.children);const r=this.parseGap(t.gap),o=this.items.length*this.itemWidth+(this.items.length-1)*r;this.track.style.width=o+"px",this.currentSlideIndex=0,this.activeStartIndex=e,this.updateInfinitePosition(),this.updateActiveSlides(),this.isInfinite=!0}calculateSlidePositions(){if(this.config.infinite){this.slidePositions=[];for(let n=0;n<this.originalItems.length;n++)this.slidePositions.push(n);return}const t=this.getCurrentConfig(),e=this.items.length,i=t.itemsToShow,s=t.itemsToScroll;this.slidePositions=[];let r=0;const o=Math.max(0,e-i);for(;r<=o&&(this.slidePositions.push(r),!(r>=o));){const n=r+s;n>o&&r<o?r=o:r=n}}getCurrentFirstVisibleItemIndex(){if(this.config.infinite)return this.currentIndex;if(this.slidePositions&&this.slidePositions[this.currentIndex]!==void 0)return this.slidePositions[this.currentIndex];const t=this.getCurrentConfig();return Math.min(this.currentIndex*t.itemsToScroll,Math.max(0,this.items.length-t.itemsToShow))}updateCarouselTransform(){const t=this.getCurrentConfig(),e=this.parseGap(t.gap),i=this.carousel.dataset.vertical==="true",s=-this.getCurrentFirstVisibleItemIndex()*(this.itemWidth+e);this.track.style.setProperty("--carousel-speed",`${this.config.speed}ms`),this.writeTransform(s,i)}announceSlideChange(){const t=`Slide ${this.config.infinite?this.currentSlideIndex+1:this.currentIndex+1} of ${this.config.infinite?this.originalItems.length:this.totalSlides}`;let e=this.carousel.querySelector(".carousel-live-region");e||(e=document.createElement("div"),e.className="carousel-live-region",e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),e.style.cssText="position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden;",this.carousel.appendChild(e)),e.textContent=t}announceAutoplayState(t){let e=this.carousel.querySelector(".carousel-autoplay-region");
1e||(e=document.createElement("div"),e.className="carousel-autoplay-region",e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),e.style.cssText="position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden;",this.carousel.appendChild(e)),e.textContent=`Carousel autoplay ${t}`}updateCarousel(){this.config.infinite?(this.updateDots(),this.updateInfiniteScrollbar(),this.updateArrows()):(this.updateCarouselTransform(),this.updateDots(),this.updateScrollbar(),this.updateArrows(),this.updateActiveSlideStates());const t=this.carousel.dataset.vertical==="true";(this.config.adaptiveHeight||t)&&this.scheduleHeightUpdate(),this.carousel.dispatchEvent(new CustomEvent("carousel:slide",{detail:{currentIndex:this.currentIndex,totalSlides:this.config.infinite?this.items.length:this.totalSlides,realIndex:this.currentIndex}}))}updateArrows(){const t=this.getCurrentConfig();(this.originalItems?this.originalItems.length:this.items.length)<=t.itemsToShow?(this.prevButton&&(this.prevButton.style.display="none"),this.nextButton&&(this.nextButton.style.display="none")):(this.prevButton&&(this.prevButton.style.display=""),this.nextButton&&(this.nextButton.style.display=""),this.config.infinite?(this.prevButton&&(this.prevButton.disabled=!1),this.nextButton&&(this.nextButton.disabled=!1)):(this.prevButton&&(this.prevButton.disabled=this.currentIndex===0),this.nextButton&&(this.nextButton.disabled=this.currentIndex>=this.totalSlides-1)))}startAutoplay(){this.config.autoplay&&(this.stopAutoplay(),this.autoplayInterval=setInterval(()=>{this.nextSlide()},this.config.autoplaySpeed))}stopAutoplay(){this.autoplayInterval!==null&&(clearInterval(this.autoplayInterval),this.autoplayInterval=null)}handleArrowClick(t){const e=Date.now(),i=e-this.lastArrowClickTime,s=this.config.speed+50;this.isTransitioning||i<s||(this.lastArrowClickTime=e,this.isTransitioning=!0,t(),this.announceSlideChange(),setTimeout(()=>{this.isTransitioning=!1},this.config.speed))}destroy(){this.stopAutoplay()}};document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".carousel").forEach(t=>new b(t))});window.initCarousel=t=>new b(t);

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.