PageSourceSearch

https://www.doomlings.com/cdn/shop/t/271/assets/testimonial-slider.js?v=19960683025955712681788975975

js doomlings.com collected 2026-09-26 03:30:42 UTC 15,008 bytes, 9 lines download raw bytes

1import{throttle,isMobileBreakpoint,isRTL}from"@theme/utilities";export function createSlider(config){const{elId,containerId,trackId,slidesSelector,thumbnailsId,paginationId,prevBtnId,nextBtnId,counterId,enableWheel=!1,slideWidth,autoplay=!1,autoplayDelay=5e3,pauseOnHover=!0}=config,el=document.getElementById(elId),container=document.getElementById(containerId),track=document.getElementById(trackId),slides=track?.querySelectorAll(slidesSelector)||[],thumbnailsContainer=document.getElementById(thumbnailsId),thumbnails=thumbnailsContainer?thumbnailsContainer.querySelectorAll(".testimonial-slider__thumbnail"):[],paginationContainer=document.getElementById(paginationId),progressBar=paginationContainer?paginationContainer.querySelector(".testimonial-slider__progress"):null,prevBtn=document.getElementById(prevBtnId),nextBtn=document.getElementById(nextBtnId),counter=document.getElementById(counterId);if(!el||!container||!track)return console.error(`Slider: Required elements not found for ${elId}`),null;let activeIndex=0,isDragging=!1,isAnimating=!1,dragDirection=null,startX=0,startY=0,startTime=0,currentX=0,currentTranslate=0,prevTranslate=0,isClick=!0,isMobile=window.innerWidth<768,resizeTimeout=null,autoplayTimer=null,isInViewport=!1,intersectionObserver=null;const rtl=isRTL();function applyDefaults(){slideWidth&&container.style.setProperty("--slide-width",`${slideWidth}px`),progressBar&&(autoplay?(progressBar.style.transition="none",progressBar.style.width="0%"):progressBar.style.setProperty("--progress-width","0%"))}function calculateOffset(targetIndex){let offset=0;if(isMobileBreakpoint()){const containerWidth=container.offsetWidth;offset=targetIndex*(containerWidth+20)}else{const elStyles=getComputedStyle(el),containerStyles=getComputedStyle(container),avatarSizeValue=parseInt(elStyles.getPropertyValue("--avatar-size"))||170,itemGapValue=parseInt(containerStyles.getPropertyValue("--item-gap"))||10;for(let i=0;i<targetIndex;i++)offset+=avatarSizeValue,offset+=itemGapValue}return rtl?offset:-offset}function disableTransitions(){track.style.transition="none",slides.forEach(sli
1de=>{slide.style.transition="none";const content=slide.querySelector(".testimonial-slider__slide-content");content&&(content.style.transition="none")})}function enableTransitions(){track.style.transition="",slides.forEach(slide=>{slide.style.transition="";const content=slide.querySelector(".testimonial-slider__slide-content");content&&(content.style.transition="")})}function activate(targetIndex,force=!1,skipScroll=!1,skipCSSVars=!1){if(!force&&targetIndex===activeIndex||targetIndex<0||targetIndex>=slides.length||!force&&isAnimating)return;isAnimating=!0,thumbnails.forEach(t=>t.classList.remove("testimonial-slider__thumbnail--active")),thumbnails[targetIndex]&&thumbnails[targetIndex].classList.add("testimonial-slider__thumbnail--active"),!skipScroll&&isMobile&&thumbnails[targetIndex]&&thumbnails[targetIndex].scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"}),skipCSSVars||updateCSSVariables();const slideDuration=600,heightDuration=400,transformEasing="cubic-bezier(0.25, 0.1, 0.25, 1)",marginEasing="cubic-bezier(0.25, 0.1, 0.25, 1)";if(track.style.transition=`transform ${slideDuration}ms ${transformEasing}, height ${heightDuration}ms ${transformEasing}
1`,slides.forEach(slide=>{slide.style.transition=`margin ${slideDuration}ms ${marginEasing}`;const content=slide.querySelector(".testimonial-slider__slide-content");if(content){const isBecomingActive=slide===slides[targetIndex];if(isMobile){const mobileDuration=isBecomingActive?350:200;content.style.transition=`
2            opacity ${mobileDuration}ms ease-out,
3            visibility ${mobileDuration}ms ease-out
4          `}else{const opacityDuration=isBecomingActive?400:250,opacityDelay=isBecomingActive?100:0;content.style.transition=`
5            clip-path ${slideDuration}ms ${marginEasing},
6            opacity ${opacityDuration}ms ${marginEasing} ${opacityDelay}ms,
7            visibility ${opacityDuration}ms ${marginEasing} ${opacityDelay}ms
8          `}}}),requestAnimationFrame(()=>{slides.forEach(s=>{s.classList.remove("testimonial-slider__slide--active","testimonial-slider__slide--prev","testimonial-slider__slide--next","testimonial-slider__slide--done"),s.classList.add("testimonial-slider__slide--inactive")}),slides[targetIndex].classList.remove("testimonial-slider__slide--inactive"),slides[targetIndex].classList.add("testimonial-slider__slide--active");for(let i=0;i<targetIndex;i++)slides[i].classList.add("testimonial-slider__slide--prev");for(let i=targetIndex+1;i<slides.length;i++)slides[i].classList.add("testimonial-slider__slide--next");const offset=calculateOffset(targetIndex);track.style.transform=`translate3d(${offset}px, 0, 0)`,currentTranslate=offset,prevTranslate=offset,setTimeout(()=>{const activeSlideHeight=slides[targetIndex].offsetHeight;track.style.height=`${activeSlideHeight}px`},400),setTimeout(()=>{slides[targetIndex].classList.add("testimonial-slider__slide--done"),track.style.transition="",slides.forEach(sli
8de=>{slide.style.transition="";const content=slide.querySelector(".testimonial-slider__slide-content");content&&(content.style.transition="")}),isAnimating=!1},slideDuration)}),progressBar&&slides.length>1){const progress=(targetIndex+1)/slides.length*100;autoplay||progressBar.style.setProperty("--progress-width",`${progress}%`);const progressContainer=progressBar.closest('[role="progressbar"]');progressContainer&&(progressContainer.setAttribute("aria-valuenow",Math.round(progress)),progressContainer.setAttribute("aria-valuemin","0"),progressContainer.setAttribute("aria-valuemax","100"))}counter&&(counter.textContent=`${targetIndex+1}/${slides.length}`),prevBtn&&(prevBtn.disabled=targetIndex===0),nextBtn&&(nextBtn.disabled=targetIndex===slides.length-1);const isAtStart=targetIndex===0,isAtEnd=targetIndex===slides.length-1;el.classList.toggle("is-at-start",isAtStart),el.classList.toggle("is-at-end",isAtEnd),slides.forEach((slide,i)=>{slide.setAttribute("tabindex",i===targetIndex?"0":"-1"),slide.setAttribute("aria-label",`Testimonial ${i+1} of ${slides.length}`)}),document.activeElement&&document.activeElement.classList.contains("testimonial-slider__slide")&&slides[targetIndex].focus({preventScroll:!0});const srAnnouncements=document.getElementById("sr-announcements")||container.closest(".testimonial-slider__wrapper")?.querySelector(".visually-hidden[aria-live]");srAnnouncements&&(srAnnouncements.textContent=`Showing slide ${targetIndex+1} of ${slides.length}`),activeIndex=targetIndex,autoplay&&(stopAutoplay(),startAutoplay())}function startAutoplay(){!autoplay||slides.length<=1||isInViewport&&(stopAutoplay(),progressBar&&(progressBar.style.transition=`width ${autoplayDelay}ms linear`,progressBar.style.width="100%"),autoplayTimer=setTimeout(()=>{const nextIndex=activeIndex<slides.length-1?activeIndex+1:0;activate(nextIndex)},autoplayDelay))}function stopAutoplay(){autoplayTimer&&(clearTimeout(autoplayTimer),autoplayTimer=null),progressBar&&(progressBar.style.transition="none",progressBar.style.width="0%",progressBar.offsetWidth)}function getPositionX(e){return e.type.includes("mouse")?e.pageX:e.touches[0].clientX}function getPositionY(e){return e.type.includes("mouse")?e.pageY:e.touches[0].clientY}function dragStart(e){slides.length<=1||(isDragging=!1,dragDirection=null,isClick=!0,startX=getPositionX(e),startY=getPositionY(e),startTime=Date.now(),autoplay&&stopAutoplay())}function drag(e){if(startX===0&&startY===0)return;currentX=getPositionX(e);const currentY=getPositionY(e),diffX=currentX-startX,diffY=currentY-startY;if(dragDirection===null&&(Math.abs(diffX)>10||Math.abs(diffY)>10))if(dragDirection=Math.abs(diffX)>Math.abs(diffY)?"horizontal":"vertical",dragDirection==="horizontal")isDragging=!0,container.classList.add("testimonial-slider__container--dragging"),track.style.transition="none";else return;if(!(!isDragging||dragDirection!=="horizontal")&&(e.cancelable&&e.preventDefault(),(Math.abs(diffX)>10||Math.abs(diffY)>10)&&(isClick=!1),!isClick&&Math.abs(diffX)>5)){let dragOffset=currentTranslate+diffX*(rtl?-1:1);const maxOffset=rtl?calculateOffset(slides.length-1):0,minOffset=rtl?0:calculateOffset(slides.length-1);if(dragOffset>maxOffset){const overflow=dragOffset-maxOffset;dragOffset=maxOffset+overflow*.3}else if(dragOffset<minOffset){const overflow=minOffset-dragOffset;dragOffset=minOffset-overflow*.3}track.style.transform=`translate3d(${dragOffset}px, 0, 0)`}}function dragEnd(e){if(!isDragging){dragDirection=null,startX=0,startY=0;return}isDragging=!1,dragDirection=null,container.classList.remove("testimonial-slider__container--dragging"),isAnimating=!1;const diffX=currentX-startX,diffTime=Date.now()-startTime,activeSlide=slides[activeIndex],distanceThreshold=(activeSlide?activeSlide.offsetWidth:container.offsetWidth)*.5,isQuickSwipe=(diffTime>0?Math.abs(diffX)/Math.max(diffTime,1):0)>.3&&Math.abs(diffX)>50;let shouldChangeSlide=!1,targetIndex=activeIndex;const dragFactor=rtl?-1:1;
8if(!isClick&&(Math.abs(diffX)>distanceThreshold||isQuickSwipe)&&(diffX*dragFactor>0&&activeIndex>0?(shouldChangeSlide=!0,targetIndex=activeIndex-1):diffX*dragFactor<0&&activeIndex<slides.length-1&&(shouldChangeSlide=!0,targetIndex=activeIndex+1)),shouldChangeSlide)activate(targetIndex);else{track.style.transition="transform 300ms ease-out";const offset=calculateOffset(activeIndex);track.style.transform=`translate3d(${offset}px, 0, 0)`,setTimeout(()=>{track.style.transition="",isAnimating=!1},300),autoplay&&startAutoplay()}startX=0,startY=0}function handleKeydown(e){if(e.target.closest(".testimonial-slider__wrapper")!==container)return;const dirFactor=rtl?-1:1;switch(e.key){case"ArrowLeft":e.preventDefault(),activeIndex>0&&activate(activeIndex-dirFactor);break;case"ArrowRight":e.preventDefault(),activeIndex<slides.length-1&&activate(activeIndex+dirFactor);break;case"Home":e.preventDefault(),activate(0);break;case"End":e.preventDefault(),activate(slides.length-1);break}}function updateCSSVariables(){if(isMobile){el.style.removeProperty("--slide-active-width"),el.style.removeProperty("--slide-active-height"),el.style.removeProperty("--slide-active-content-width");return}const activeSlide=slides[activeIndex];activeSlide&&setTimeout(()=>{const activeWidth=activeSlide.offsetWidth,activeHeight=activeSlide.offsetHeight,contentElement=activeSlide.querySelector(".testimonial-slider__slide-content"),contentWidth=contentElement?contentElement.offsetWidth:0;el.style.setProperty("--slide-active-width",`${activeWidth}px`),el.style.setProperty("--slide-active-height",`${activeHeight}px`),el.style.setProperty("--slide-active-content-width",`${contentWidth}px`)},100)}function handleResize(){resizeTimeout&&clearTimeout(resizeTimeout),resizeTimeout=setTimeout(()=>{const wasMobile=isMobile;isMobile=window.innerWidth<=768,disableTransitions(),setTimeout(()=>{const offset=calculateOffset(activeIndex),activeHeight=slides[activeIndex].offsetHeight;track.style.transform=`translate3d(${offset}px, 0, 0)`,track.style.height=`${activeHeight}px`,currentTranslate=offset,prevTranslate=offset,enableTransitions(),updateCSSVariables()},100)},150)}function initSlider(){if(applyDefaults(),slides.length<=1){const controlsEl=container.closest(".testimonial-slider__wrapper")?.querySelector(".testimonial-slider__controls");
8controlsEl&&(controlsEl.style.display="none"),container.classList.add("testimonial-slider__container--single"),slides[0]&&setTimeout(()=>{const initialHeight=slides[0].offsetHeight;track.style.height=`${initialHeight}px`},100);return}const scrollX=window.pageXOffset||document.documentElement.scrollLeft,scrollY=window.pageYOffset||document.documentElement.scrollTop;thumbnailsContainer&&(thumbnailsContainer.style.scrollBehavior="auto"),disableTransitions(),slides[0].classList.add("testimonial-slider__slide--active");for(let i=1;i<slides.length;i++)slides[i].classList.add("testimonial-slider__slide--inactive");setTimeout(()=>{const initialHeight=slides[0].offsetHeight;track.style.height=`${initialHeight}px`,enableTransitions(),activate(0,!0,!0,!0),updateCSSVariables(),(window.pageYOffset||document.documentElement.scrollTop)!==scrollY&&window.scrollTo(scrollX,scrollY),thumbnailsContainer&&(thumbnailsContainer.style.scrollBehavior="")},100)}function addEventListeners(){container.addEventListener("mousedown",dragStart),document.addEventListener("mousemove",drag),document.addEventListener("mouseup",dragEnd),container.addEventListener("touchstart",dragStart,{passive:!1}),container.addEventListener("touchmove",drag,{passive:!1}),container.addEventListener("touchend",dragEnd,{passive:!0}),slides.forEach((slide,i)=>{slide.addEventListener("click",e=>{slides.length<=1||i===activeIndex||(isClick||isMobile)&&activate(i)})}),thumbnails.forEach((thumb,i)=>{thumb.addEventListener("click",()=>{activate(i)})}),prevBtn&&prevBtn.addEventListener("click",()=>{activeIndex>0&&activate(activeIndex-1)}),nextBtn&&nextBtn.addEventListener("click",()=>{activeIndex<slides.length-1&&activate(activeIndex+1)}),document.addEventListener("keydown",handleKeydown),autoplay&&pauseOnHover&&(el.addEventListener("mouseenter",stopAutoplay),el.addEventListener("mouseleave",startAutoplay),el.addEventListener("focusin",stopAutoplay),el.addEventListener("focusout",startAutoplay));const debouncedResize=throttle(handleResize,150);if(window.addEventListener("resize",debouncedResize),autoplay){intersectionObserver=new IntersectionObserver(entries=>{entries.forEach(entry=>{isInViewport=entry.isIntersecting,entry.isIntersecting?startAutoplay():stopAutoplay()})},{root:null,rootMargin:"0px",threshold:.5}),intersectionObserver.observe(el);const rect=el.getBoundingClientRect(),viewportHeight=window.innerHeight||document.documentElement.clientHeight;rect.top<viewportHeight&&rect.bottom>0&&(isInViewport=!0,setTimeout(()=>{isInViewport&&startAutoplay()},100))}return()=>{stopAutoplay(),container.removeEventListener("mousedown",dragStart),document.removeEventListener("mousemove",drag),document.removeEventListener("mouseup",dragEnd),container.removeEventListener("touchstart",dragStart,{passive:!1}),container.removeEventListener("touchmove",drag,{passive:!1}),container.removeEventListener("touchend",dragEnd,{passive:!0}),document.removeEventListener("keydown",handleKeydown),window.removeEventListener("resize",debouncedResize),autoplay&&pauseOnHover&&(el.removeEventListener("mouseenter",stopAutoplay),el.removeEventListener("mouseleave",startAutoplay),el.removeEventListener("focusin",stopAutoplay),el.removeEventListener("focusout",startAutoplay)),intersectionObserver&&(intersectionObserver.disconnect(),intersectionObserver=null)}}initSlider();const cleanup=addEventListeners();return{activate,getCurrentIndex:()=>activeIndex,getSlides:()=>slides,destroy:cleanup,updateOptions:newOptions=>{Object.assign({slideWidth,enableWheel},newOptions),activate(activeIndex,!0)}}}
9//# sourceMappingURL=/cdn/shop/t/271/assets/testimonial-slider.js.map?v=19960683025955712681788975975

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.