{"version":3,"sources":["carousel.js"],"names":["window","addEventListener","cnfsd_carousel_script_loaded","carouselNodes","document","querySelectorAll","length","Carousel","constructor","carousel","this","slider","querySelector","outer","slides","navButtonsContainer","navButtons","carouselLeftPosition","eachSlideWidth","sliderPosition","maxScroll","windowWidth","sliderGap","init","initCarouselWidths","handleTouchEvents","handleMouseEvents","handleButtonEvents","handleTransitionEndEvent","addSlideIndexLabels","setSlideActiveState","getWindowWidth","getSliderGap","setSlideWidth","setSliderWidth","setMaxScroll","getCarouselLeftPosition","toggleButtonVisibility","sliderWidth","offsetWidth","style","display","getBoundingClientRect","left","reCalcOnResize","setSliderPosition","positionSliderOnScrollEnd","handleDisableButtons","prevBttn","nextBttn","e","rotateSliderOnButtonPress","distance","newSliderPosition","checkCarouselBoundaries","forEach","slide","removeAttribute","carouselPositionOnMouseDown","initialX","moving","classList","add","clientX","self","moveSliderWithMouse","preventDefault","removeEventListener","scrollSliderOnDrag","mouseSliderEnd","carouselPositionOnTouchStart","initialY","touches","clientY","xPosition","Math","abs","tagName","target","parentTagName","parentNode","contains","href","location","movement","carouselPosition","transform","leftSlideIndex","index","slideBoundings","right","remove","setAttribute","round","scrollMargin","documentElement","clientWidth","parseInt","getComputedStyle","getPropertyValue","width","maxSlidesInOuter","floor","timeout","carouselInstances","carouselInstance","push","clearTimeout","setTimeout"],"mappings":"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","file":"cms2-carousel.min.js","sourcesContent":["\r\nwindow.addEventListener('load', () => {\r\n\r\n\tif (typeof window.cnfsd_carousel_script_loaded !== 'undefined') {\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst carouselNodes = document.querySelectorAll('.mod-carousel');\r\n\tif (!carouselNodes.length) return;\r\n\r\n\t\r\n\tclass Carousel {\r\n\t\tconstructor(carousel) {\r\n\t\t\tthis.carousel = carousel;\r\n\t\t\tthis.slider = this.carousel.querySelector('.mod-carousel__slides');\r\n\t\t\tthis.outer = this.carousel.querySelector('.mod-carousel__outer');\r\n\t\t\tthis.slides = this.carousel.querySelectorAll('.mod-carousel__slide');\r\n\t\t\tthis.navButtonsContainer = this.carousel.querySelector('.mod-carousel__buttons');\r\n\t\t\tthis.navButtons = this.carousel.querySelectorAll('.mod-carousel__buttons > button');\r\n\t\t\tthis.carouselLeftPosition = 0;\r\n\t\t\tthis.eachSlideWidth = 0;\r\n\t\t\tthis.sliderPosition = 0;\r\n\t\t\tthis.maxScroll = 0;\r\n\t\t\tthis.windowWidth = 0;\r\n\t\t\tthis.sliderGap = 0;\r\n\t\t};\r\n\r\n\r\n\t\tinit = () => {\r\n\t\t\tif (!this.slider) return false; //IF CAROUSEL HAS NO SLIDER, THE CAROUSEL CLASS IS ADDED FOR STYLISTIC PURPOSES\r\n\r\n\t\t\tthis.initCarouselWidths();\r\n\r\n\t\t\tthis.handleTouchEvents();\r\n\t\t\tthis.handleMouseEvents();\r\n\t\t\tthis.handleButtonEvents();\r\n\t\t\tthis.handleTransitionEndEvent();\r\n\r\n\t\t\tthis.addSlideIndexLabels();\r\n\t\t\tthis.setSlideActiveState();\r\n\t\t}\r\n\r\n\t\tinitCarouselWidths = () => {\r\n\t\t\tthis.getWindowWidth();\r\n\t\t\tthis.getSliderGap();\r\n\r\n\t\t\tthis.setSlideWidth();\r\n\r\n\t\t\tthis.setSliderWidth();\r\n\t\t\tthis.setMaxScroll();\r\n\r\n\t\t\tthis.getCarouselLeftPosition();\r\n\t\t}\r\n\t\t\r\n\t\ttoggleButtonVisibility = (sliderWidth) => {\r\n\t\t\tif (sliderWidth <= this.outer.offsetWidth) {\r\n\t\t\t\tthis.navButtonsContainer.style.display = 'none';\r\n\t\t\t} else {\r\n\t\t\t\tthis.navButtonsContainer.style.display = '';\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgetCarouselLeftPosition = () => {\r\n\t\t\tthis.carouselLeftPosition = this.outer.getBoundingClientRect().left;\r\n\t\t}\r\n\r\n\r\n\r\n\t\treCalcOnResize = () => {\r\n\r\n\t\t\tif (!this.slider) return false; //IF CAROUSEL HAS NO SLIDER, THE CAROUSEL CLASS IS ADDED FOR STYLISTIC PURPOSES\r\n\t\t\tthis.initCarouselWidths();\r\n\t\t\t\r\n\t\t\tif (this.maxScroll < 0) {\r\n\t\t\t\tthis.setSliderPosition(0);\r\n\t\t\t} else if (this.sliderPosition * -1 > this.maxScroll) {\r\n\t\t\t\tthis.setSliderPosition(this.maxScroll * -1);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.positionSliderOnScrollEnd();\r\n\t\t\tthis.setSlideActiveState();\r\n\t\t}\r\n\r\n\t\thandleTransitionEndEvent = () => {\r\n\t\t\tthis.slider.addEventListener('transitionend', this.setSlideActiveState);\r\n\t\t}\r\n\r\n\t\thandleButtonEvents = () => {\r\n\r\n\t\t\tif (!this.navButtons.length) return;\r\n\r\n\t\t\tthis.handleDisableButtons(0);\r\n\r\n\t\t\tconst [prevBttn, nextBttn] = this.navButtons;\r\n\t\t\tprevBttn.addEventListener('click', (e) => this.rotateSliderOnButtonPress(this.eachSlideWidth));\r\n\t\t\tnextBttn.addEventListener('click', (e) => this.rotateSliderOnButtonPress(this.eachSlideWidth * -1));\r\n\t\t}\r\n\r\n\r\n\t\trotateSliderOnButtonPress = (distance) => {\r\n\t\t\tconst newSliderPosition = distance + this.sliderPosition;\r\n\t\t\tif (this.checkCarouselBoundaries(newSliderPosition)) this.setSliderPosition(newSliderPosition);\r\n\r\n\t\t\t//MAKE ALL SLIDES VISIBLE\r\n\t\t\tthis.slides.forEach(slide => {\r\n\t\t\t\tslide.removeAttribute('aria-hidden');\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\r\n\t\thandleMouseEvents = () => {\r\n\t\t\tlet carouselPositionOnMouseDown = 0,\r\n\t\t\tinitialX = 0,\r\n\t\t\tmoving = false;\r\n\r\n\t\t\tthis.slider.addEventListener('mousedown', (e) => {\r\n\t\t\t\tcarouselPositionOnMouseDown = this.sliderPosition;\r\n\t\t\t\tthis.slider.classList.add('mod-carousel__slides--grab');\r\n\t\t\t\tinitialX = e.clientX;\r\n\t\t\t\tmoving = true;\r\n\r\n\t\t\t\tlet self = this;\r\n\r\n\t\t\t\t//MAKE ALL SLIDES VISIBLE\r\n\t\t\t\tself.slides.forEach(slide => {\r\n\t\t\t\t\tslide.removeAttribute('aria-hidden');\r\n\t\t\t\t})\r\n\r\n\t\t\t\twindow.addEventListener('mousemove', function moveSliderWithMouse(e) {\r\n\t\t\t\t\te.preventDefault();\r\n\r\n\t\t\t\t\tif(!moving) {\r\n\t\t\t\t\t\tthis.window.removeEventListener('mousemove', moveSliderWithMouse);\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tself.slider.classList.add('mod-carousel__slides--moving');\r\n\t\t\t\t\tself.scrollSliderOnDrag(initialX, e.clientX, carouselPositionOnMouseDown);\r\n\t\t\t\t});\r\n\r\n\t\t\t\twindow.addEventListener('mouseup', function mouseSliderEnd(e) {\r\n\t\t\t\t\tmoving = false;\r\n\t\t\t\t\tself.positionSliderOnScrollEnd();\r\n\r\n\t\t\t\t\twindow.removeEventListener('mouseup', mouseSliderEnd);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t\r\n\t\t}\r\n\r\n\r\n\t\thandleTouchEvents = () => {\r\n\t\t\tlet carouselPositionOnTouchStart = 0,\r\n\t\t\tinitialX = 0,\r\n\t\t\tinitialY = 0;\r\n\r\n\r\n\t\t\tthis.slider.addEventListener('touchstart', (e) => {\r\n\t\t\t\r\n\t\t\t\t//SNAPSHOT OF CAROUSEL ON INITAL INTERACTION\r\n\t\t\t\tcarouselPositionOnTouchStart = this.sliderPosition;\r\n\t\t\t\tthis.slider.classList.add('mod-carousel__slides--grab');\r\n\t\t\t\tinitialX = e.touches[0].clientX;\r\n\t\t\t\tinitialY = e.touches[0].clientY;\r\n\r\n\r\n\t\t\t\t//MAKE ALL SLIDES VISIBLE\r\n\t\t\t\tthis.slides.forEach(slide => {\r\n\t\t\t\t\tslide.removeAttribute('aria-hidden');\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.slider.addEventListener('touchmove', (e) => {\r\n\t\t\t\tthis.slider.classList.add('mod-carousel__slides--moving');\r\n\r\n\t\t\t\tconst xPosition = Math.abs(e.touches[0].clientX - initialX),\r\n\t\t\t\tyPosition = Math.abs(e.touches[0].clientY - initialY);\r\n\r\n\t\t\t\t//IF USER SCROLLS MORE VIRTICALLY SCROLL WINDOW OVER CAROUSEL\r\n\t\t\t\tif (yPosition > xPosition) return;\r\n\r\n\t\t\t\tthis.scrollSliderOnDrag(initialX, e.touches[0].clientX, carouselPositionOnTouchStart);\r\n\t\t\t});\r\n\r\n\t\t\tthis.slider.addEventListener('touchend', (e) => {\r\n\t\t\t\tconst tagName = e.target.tagName;\r\n\t\t\t\tconst parentTagName = e.target.parentNode.tagName;\r\n\r\n\t\t\t\tif (!this.slider.classList.contains('mod-carousel__slides--moving')) {\r\n\t\t\t\t\tif (tagName === 'A' && e.target.href) return document.location = e.target.href;\r\n\t\t\t\t\tif (parentTagName === 'A' && e.target.parentNode.href) return document.location = e.target.parentNode.href;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.positionSliderOnScrollEnd();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\tscrollSliderOnDrag = (initialX, movement, carouselPosition) => {\r\n\t\t\t//CALCULATE THE NEW POSITION FOR THE CAROUSEL\r\n\r\n\t\t\tconst distance = initialX - movement,\r\n\t\t\tnewSliderPosition = carouselPosition + distance * -1;\r\n\r\n\t\t\tif (this.checkCarouselBoundaries(newSliderPosition, 40)) this.setSliderPosition(newSliderPosition);\r\n\t\t}\r\n\r\n\t\tsetSliderPosition = (newSliderPosition) => {\r\n\t\t\t//SETS THE CAROUSEL POSITION\r\n\r\n\t\t\tthis.slider.style.transform = `translate3d(${newSliderPosition}px, 0px, 0px)`;\r\n\t\t\tthis.sliderPosition = newSliderPosition;\r\n\r\n\t\t\tthis.handleDisableButtons(newSliderPosition);\r\n\t\t}\r\n\r\n\t\tsetSlideActiveState = () => {\r\n\t\t\tconst leftSlideIndex = Math.abs(this.sliderPosition * -1 / this.eachSlideWidth);\r\n\t\r\n\t\t\tthis.slides.forEach((slide, index) => {\r\n\t\r\n\t\t\t\tconst slideBoundings = slide.getBoundingClientRect();\r\n\t\t\t\t\r\n\t\r\n\t\t\t\tif (index >= leftSlideIndex && slideBoundings.right > 0 && slideBoundings.left < this.windowWidth) {\r\n\t\t\t\t\t//IF SLIDE IS NOT INSIDE CAROUSEL BUT IS ON SCREEN, SET INACTIVE BUT NOT HIDDEN\t\r\n\t\t\t\t\tslide.classList.add('active');\r\n\t\t\t\t\tslide.removeAttribute('aria-hidden');\r\n\t\t\t\t\tslide.removeAttribute('inert', true);\r\n\t\t\t\t} else if (index < leftSlideIndex && slideBoundings.right > 0) {\r\n\t\t\t\t\t//IF SLIDE IS INSIDE OF CAROUSEL AREA, SET TO ACTIVE\r\n\t\t\t\t\tslide.classList.remove('active');\r\n\t\t\t\t\tslide.removeAttribute('aria-hidden');\r\n\t\t\t\t\tslide.setAttribute('inert', true);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//IF SLIDE IS NOT ON SCREEN, SET TO INACTIVE AND ARIA-HIDDEN\r\n\t\t\t\t\tslide.setAttribute('aria-hidden', true);\r\n\t\t\t\t\tslide.setAttribute('inert', true);\r\n\t\t\t\t\tslide.classList.remove('active');\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\thandleDisableButtons = (newSliderPosition) => {\r\n\t\t\t//DISABLES BUTTONS IF END OF CAROUSEL REACHED\r\n\t\t\t\r\n\t\t\tif (!this.navButtons.length) return;\r\n\r\n\t\t\tconst [prevBttn, nextBttn] = this.navButtons;\r\n\r\n\t\t\tprevBttn.removeAttribute('aria-disabled');\r\n\t\t\tnextBttn.removeAttribute('aria-disabled');\r\n\t\t\t\r\n\t\t\tif (newSliderPosition >= 0) {\r\n\t\t\t\tprevBttn.setAttribute('aria-disabled', true);\r\n\t\t\t}\r\n\r\n\t\t\tif ((newSliderPosition * -1) >= this.maxScroll) {\r\n\t\t\t\tnextBttn.setAttribute('aria-disabled', true);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tpositionSliderOnScrollEnd = () => {\r\n\t\t\t//ROTATES THE CAROUSEL TO LEFT-ALIGNED ON SCROLL END\r\n\r\n\t\t\tconst slidePositionedLeft = Math.round(this.sliderPosition * -1 / this.eachSlideWidth),\r\n\t\t\tnewSliderPosition = (slidePositionedLeft * this.eachSlideWidth) * -1;\r\n\r\n\r\n\t\t\tthis.slider.classList.remove('mod-carousel__slides--moving');\r\n\t\t\tthis.slider.classList.remove('mod-carousel__slides--grab');\r\n\t\t\tthis.setSliderPosition(newSliderPosition);\r\n\t\t}\r\n\r\n\r\n\r\n\t\tcheckCarouselBoundaries = (newSliderPosition, scrollMargin = 0) => {\r\n\t\t\t//RETURN FALSE IF CAROUSEL BOUNDARY REACHED, ELSE RETURN TRUE\r\n\r\n\t\t\tif ((newSliderPosition * -1 ) > (this.maxScroll + scrollMargin)) return false;\r\n\t\t\tif (newSliderPosition > scrollMargin ) return false;\r\n\t\t\treturn true;\r\n\t\t}\r\n\r\n\r\n\t\taddSlideIndexLabels = () => {\r\n\t\t\tthis.slides.forEach((slide, index) => {\r\n\t\t\t\tslide.setAttribute('aria-label', `${index + 1} of ${this.slides.length}`);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\tgetWindowWidth = () => {\r\n\t\t\tthis.windowWidth = document.documentElement.clientWidth;\r\n\t\t}\r\n\r\n\r\n\t\tgetSliderGap = () => {\r\n\t\t\tthis.sliderGap = parseInt(window.getComputedStyle(this.slider).getPropertyValue('gap'));\r\n\t\t}\r\n\r\n\r\n\t\tsetSlideWidth = () => {\r\n\t\t\tif (!this.slides.length) return;\r\n\r\n\t\t\tthis.slider.style.width = `auto`;\r\n\r\n\r\n\t\t\tthis.slides.forEach(slide => {\r\n\t\t\t\tslide.style.width = '';\r\n\r\n\t\t\t\tif (slide.offsetWidth > this.outer.offsetWidth) {\r\n\t\t\t\t\tslide.style.width = `${this.outer.offsetWidth}px`;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tslide.style.width = `${slide.offsetWidth}px`;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.eachSlideWidth = this.slides[0].offsetWidth + this.sliderGap;\r\n\t\t}\r\n\r\n\r\n\t\tsetSliderWidth = () => {\r\n\t\t\t//CAROUSEL WIDTH IS SLIDE WIDTH * NUMBER OF SLIDES - 1 SLIDER GAP\r\n\t\t\tconst sliderWidth = (this.eachSlideWidth * this.slides.length) - this.sliderGap;\r\n\r\n\t\t\tthis.slider.style.width = `${sliderWidth}px`;\r\n\r\n\t\t\tthis.toggleButtonVisibility(sliderWidth);\r\n\t\t}\r\n\r\n\r\n\t\tsetMaxScroll = () => {\r\n\t\t\t//CALCULATE NUMBER OF SLIDES THAT CAN FIT IN THE OUTER CONTAINER\r\n\r\n\t\t\tconst maxSlidesInOuter = Math.floor(this.outer.offsetWidth / this.eachSlideWidth);\r\n\r\n\t\t\tif (maxSlidesInOuter > 0) {\r\n\t\t\t\tthis.maxScroll = (this.slides.length - maxSlidesInOuter) * this.eachSlideWidth;\r\n\t\t\t} else {\r\n\t\t\t\tthis.maxScroll = (this.slides.length - 1) * this.eachSlideWidth;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlet carouselInstances = [];\r\n\tcarouselNodes.forEach(carouselInstance => {\r\n\t\tconst carousel = new Carousel(carouselInstance);\r\n\t\tcarousel.init();\r\n\t\tcarouselInstances.push(carousel);\r\n\t});\r\n\r\n\r\n\tlet timeout;\r\n\twindow.addEventListener('resize', function(e) {\r\n\t\tclearTimeout(timeout);\r\n\t\ttimeout = setTimeout(function() {\r\n\t\t\tcarouselInstances.forEach((carousel) => {\r\n\t\t\t\tcarousel.reCalcOnResize();\r\n\t\t\t});\r\n\t\t}, 100);\r\n\t});\r\n\r\n\tif (typeof cnfsd_carousel_script_loaded === 'undefined') {\r\n\t\twindow.cnfsd_carousel_script_loaded = true;\r\n\t}\r\n});"]}