1"use strict";import{EventDebouncer,EventDebouncerAnimationFrame}from"event-debouncer";const createNodeFromHTML=htmlString=>(new DOMParser).parseFromString(htmlString,"text/html").body.children[0]||null;class SlideShow{constructor(itemContainer,options={}){(this.this=this).sliderContainer=null,this.containerWidth=0,this.itemWidth=0,this.items=null,this.itemLefts=[],this.numItemsInViewport=0,this.maxLeft=0,this.minLeft=0,this.currentLeft=0,this.currentSlide=0,this.scrollingSteps=0,this.touchDisabled=!1,this.touchMoving=!1,this.snapThreshold=25,this.addControlSliders=!0,this.addOverlays=!1,this.backSlider=createNodeFromHTML('<div class="backSlider icon icon-angle-left"></div>'),this.forwardSlider=createNodeFromHTML('<div class="forwardSlider icon icon-angle-right"></div>'),this.overlayLeft=createNodeFromHTML('<div class="overlay left"></div>'),this.overlayRight=createNodeFromHTML('<div class="overlay right"></div>'),this.isTransitioning=!1,this.itemContainer=null,this.initialized=!1,this.startX=0,this.xDiff=0,this.startY=0,this.yDiff=0,this.originalLeft=0,this.threshold=1,this.scrollby=!1,this.scrollbyIsset=!1,this.moveDebouncer=new EventDebouncerAnimationFrame(()=>{var extraIndex;this.touchMoving&&(this.setLeft(this.originalLeft-this.xDiff),extraIndex=Math.max(0,Math.floor(Math.abs(this.xDiff)/this.itemWidth*100/100)),this.xDiff<-this.threshold?this.scrollingSteps=-1-extraIndex:this.xDiff>this.threshold?this.scrollingSteps=1+extraIndex:this.scrollingSteps=0,this.onScrollingCallback(this))}),this.sliderContainerWidth=0,this.windowHeight=0,this.onCompleteSlideCallback=()=>{options.onCompleteSlideCallback?.()},this.onScrollingCallback=()=>{},this.itemContainer=itemContainer}initialize(){if(this.initialized)throw new Error("Slide show has already been initialized!");this.itemContainer.classList.add("slider"),this.sliderContainer=document.createElement("div"),this.sliderContainer.classList.add("sliderContainer");for(var i=0;this.itemContainer.children.length;)this.itemContainer.children[0].slideID=i,this.sliderContainer.appendChild(this.itemContainer.children[0]),i++;null!==this.backSlider&&this.backSlider.addEventListener("click",this.handleBackClick.bind(this)),null!==this.forwardSlider&&this.forwardSlider.addEventListener("click",this.handleForwardClick.bind(this)),this.addControlSliders&&(this.itemContainer.appendChild(this.backSlider),this.itemContainer.appendChild(this.forwardSlider)),this.addOverlays&&(this.itemContainer.appendChild(this.overlayLeft),this.itemContainer.appendChild(this.overlayRight)),this.itemContainer.appendChild(this.sliderContainer),this.calculate(),this.touchMoving=!1,this.setLeft(this.currentLeft),window.addEventListener("bm:twDeviceChange",this.handleDeviceChange.bind(this)),this.itemContainer.addEventListener("touchstart",this.touchStart.bind(this),{passive:!0}),this.itemContainer.addEventListener("touchmove",this.touchMove.bind(this),{passive:!1}),this.itemContainer.addEventListener("touchend",this.touchEnd.bind(this),{passive:!0}),this.calculateLefts(),this.initialized=!0}handleBackClick(event){this.touchMoving||this.back()}handleForwardClick(event){this.touchMoving||this.forward()}handleDeviceChange(event){this.calculate(),this.calculateLefts(),this.setLeft(this.minMaxLeft(-(this.itemWidth*this.currentSlide)))}calculateLefts(){this.itemLefts=[];for(var i=0;i<this.items.length;i++)this.itemLefts["slide_"+this.items[i].slideID]=this.itemWidth*i}goToSlide(slideID,animate=!1){var newLeft;this.items&&this.items.length&&(slideID=Math.max(0,Math.min(slideID,this.items.length-1)),newLeft=-this.itemWidth*slideID,this.currentSlide=slideID,this.setLeft(newLeft,animate),this.onCompleteSlideCallback(this))}setLeft(newLeft,animate=!1){var firstItem;this.isAtEnd()&&newLeft<this.minLeft?(firstItem=this.sliderContainer.firstChild,newLeft+=this.itemWidth,this.originalLeft+=this.itemWidth,this.touchMoving||(setTimeout(()=>this.setLeft(this.minLeft,!0),20),newLeft+=this.itemWidth,animate=!1),this.sliderContainer.appendChild(firstItem),this.calculateLefts()):this.isAtStart()&&newLeft>this.maxLeft&&(firstItem=this.sliderContainer.lastChild,newLeft-=this.itemWidth,this.originalLeft-=this.itemWidth,this.touchMoving||(setTimeout(()=>this.setLeft(this.maxLeft,!0),20),newLeft-=this.itemWidth,animate=!1),this.sliderContainer.prepend(firstItem),this.calculateLefts()),this.currentLeft=this.minMaxLeft(newLeft),this.sliderContainer.classList[animate?"add":"remove"]("slideTransition"),animate&&(this.isTransitioning=!0,setTimeout(()=>{this.isTransitioning=!1},1e3*parseFloat(getComputedStyle(this.sliderContainer).transitionDuration))),this.sliderContainer.style.transform=`translateX(${this.currentLeft}%)`}minMaxLeft(value){return Math.min(this.maxLeft,Math.max(this.minLeft,value))}calculate(){this.items=this.sliderContainer.children;var containerRect=this.itemContainer.getBoundingClientRect(),containerRect=(this.containerWidth=containerRect.width,this.items[0].getBoundingClientRect());this.itemWidth=containerRect.width/this.containerWidth*100||100,this.numItemsInViewport=Math.floor(100/this.itemWidth),this.minLeft=100-this.itemWidth*this.items.length,this.autoHideSliders()}autoHideSliders(){var hide=this.items.length<=this.numItemsInViewport;
1this.touchDisabled=this.touchDisabled||hide,null!==this.backSlider&&null!==this.forwardSlider&&(this.backSlider.classList.toggle("hidden",hide),this.forwardSlider.classList.toggle("hidden",hide))}forward(steps=1,animate=!0){var effectiveSteps=steps%this.items.length;this.currentSlide=(this.currentSlide+effectiveSteps)%this.items.length,this.setLeft(this.currentLeft-this.itemWidth*steps,animate),this.onCompleteSlideCallback(this)}back(steps=1,animate=!0){var effectiveSteps=steps%this.items.length;this.currentSlide=(this.currentSlide-effectiveSteps+this.items.length)%this.items.length,this.setLeft(this.currentLeft+this.itemWidth*steps,animate),this.onCompleteSlideCallback(this)}isAtStart(){var isAtStart=this.currentLeft===this.maxLeft;return this.itemContainer.classList.toggle("isAtStart",isAtStart),isAtStart}isAtEnd(){var isAtEnd=this.currentLeft===this.minLeft;return this.itemContainer.classList.toggle("isAtEnd",isAtEnd),isAtEnd}scrollToStart(){this.setLeft(this.maxLeft,!0),this.onCompleteSlideCallback(this)}scrollToEnd(){this.setLeft(this.minLeft,!0),this.onCompleteSlideCallback(this)}getTouchEvent(event){return void 0===event.targetTouches&&void 0!==event.originalEvent?event.originalEvent:event}touchStart(event){this.touchDisabled||1<(event=this.getTouchEvent(event)).targetTouches.length||this.touchMoving||(this.xDiff=0,this.yDiff=0,this.startX=event.touches[0].clientX,this.startY=event.touches[0].clientY,this.originalLeft=this.currentLeft,this.threshold=this.snapThreshold/100*this.itemWidth,this.scrollbyIsset=!1,this.scrollby=!1,this.sliderContainerWidth=this.sliderContainer.offsetWidth,this.windowHeight=window.outerHeight)}touchMove(event){var radian;this.touchDisabled||1<(event=this.getTouchEvent(event)).targetTouches.length||(!1===this.scrollbyIsset&&(radian=Math.abs(Math.atan((event.touches[0].clientY-this.startY)/(event.touches[0].clientX-this.startX))),this.scrollby=45<radian*(180/Math.PI),this.scrollbyIsset=!0),!1===this.scrollby&&(this.touchMoving=!0,this.xDiff=(this.startX-event.touches[0].clientX)/this.sliderContainerWidth*100,this.yDiff=(this.startY-event.touches[0].clientY)/this.windowHeight*100,event.preventDefault(),this.moveDebouncer.event()))}touchEnd(event){this.touchDisabled||(event=this.getTouchEvent(event)).targetTouches&&1<event.targetTouches.length||this.touchMoving&&(this.currentLeft=this.originalLeft,event=Math.max(0,Math.floor(Math.abs(this.xDiff)/this.itemWidth*100/100)),this.xDiff<-this.threshold?this.back(1+event):this.xDiff>this.threshold?this.forward(1+event):this.setLeft(this.originalLeft,!0),this.touchMoving=!1)}autoScroll(interval){this.autoScroller=setInterval(this.handleForwardClick.bind(this),1e3*interval)}}export default SlideShow; 2//# sourceMappingURL=/resources/compiled/js/modules/slide-show.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.