{"version":3,"sources":["webpack://umbro-global/./src/assets/scripts/components/slider.js"],"names":["config","viewport","width","height","getSliderConfig","sliderId","key","sliderObject","getSliderVisibleWidth","$slider","sliderWidth","getElementWidth","sliderPadding","window","getComputedStyle","getPropertyValue","substring","indexOf","atTheStart","currentSlide","atTheEnd","lastVisibleSlidePastEnd","visibleWidth","slidesWidth","querySelector","needToHideButton","action","$prev","$next","fadeElement","resetPicture","$image","$srcs","parentNode","querySelectorAll","length","forEach","$src","resetAttributes","initLazyload","$element","attribute","foundAttribute","getAttribute","setAttribute","hasAttribute","removeAttribute","resetSlider","$buttons","slider","gsap","clearProps","destroy","$images","classList","remove","resetImages","initSlider","direction","getTextDirection","$slides","visibleSlides","rounded","$slide","numOfVisibleSlides","Math","floor","calcVisibleSlides","alreadyBound","Splide","autoWidth","arrows","pagination","perMove","waitForTransition","mount","on","newSlide","$button","i","addEventListener","e","go","bindButtons","findSliders","getViewportDimensions","$sliders","document","bindSlider","init","reset","debounce","innerWidth"],"mappings":"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","file":"scripts/chunks/883.db5162981ba64c040571.js","sourcesContent":["import { gsap } from 'gsap';\r\nimport Splide from '@splidejs/splide';\r\nimport { debounce, fadeElement, getElementWidth, getTextDirection, getViewportDimensions } from './../global/utils';\r\nimport initLazyload from './../global/lazyload';\r\n\r\nlet config = {};\r\nlet viewport = {\r\n width: 0,\r\n height: 0\r\n};\r\n\r\nconst getSliderConfig = (sliderId, key) => {\r\n\r\n const sliderObject = config[sliderId];;\r\n\r\n if (!sliderObject) return false;\r\n\r\n if (!key) return sliderObject;\r\n\r\n return sliderObject[key];\r\n\r\n}\r\n\r\nconst getSliderVisibleWidth = ($slider) => {\r\n\r\n const sliderWidth = getElementWidth($slider);\r\n const sliderPadding = window.getComputedStyle($slider).getPropertyValue('padding-left')\r\n const sliderOffset = sliderPadding.substring(0, sliderPadding.indexOf('px'));\r\n const sliderVisible = (sliderWidth - sliderOffset);\r\n\r\n return sliderVisible;\r\n\r\n}\r\n\r\nconst atTheStart = (currentSlide) => (currentSlide === 0);\r\n\r\nconst atTheEnd = ($slider, currentSlide, sliderId) => {\r\n\r\n const lastVisibleSlidePastEnd = ((currentSlide + getSliderConfig(sliderId, 'visibleSlides')) >= getSliderConfig(sliderId, 'length'));\r\n const visibleWidth = getSliderVisibleWidth($slider);;\r\n const slideWidth = getElementWidth($slider.querySelector('[data-slider-slide]'));\r\n const slidesWidth = (slideWidth * getSliderConfig(sliderId, 'length'));\r\n const slidesOverflowSlider = (slidesWidth > visibleWidth);\r\n const areWeAtTheEnd = (lastVisibleSlidePastEnd || !slidesOverflowSlider);\r\n\r\n return areWeAtTheEnd;\r\n\r\n}\r\n\r\nconst needToHideButton = ($slider, sliderId, currentSlide) => {\r\n\r\n const $prev = $slider.querySelector('[data-slider-button=\"prev\"]');\r\n const $next = $slider.querySelector('[data-slider-button=\"next\"]');\r\n\r\n let action;\r\n\r\n switch (true) {\r\n\r\n case (atTheStart(currentSlide) && atTheEnd($slider, currentSlide, sliderId)):\r\n fadeElement($next, true);\r\n fadeElement($prev, true);\r\n action = 'hide both';\r\n break;\r\n\r\n case atTheStart(currentSlide):\r\n fadeElement($next, false);\r\n fadeElement($prev, true);\r\n action = 'hide first';\r\n break;\r\n\r\n case atTheEnd($slider, currentSlide, sliderId):\r\n fadeElement($prev, false);\r\n fadeElement($next, true);\r\n action = 'hide last';\r\n break;\r\n\r\n default:\r\n fadeElement($prev, false);\r\n fadeElement($next, false);\r\n action = 'show all';\r\n break;\r\n\r\n }\r\n\r\n return action;\r\n\r\n}\r\n\r\nconst calcVisibleSlides = ($slider, rounded) => {\r\n\r\n const $slide = $slider.querySelector('[data-slider-slide]');\r\n const visibleWidth = getSliderVisibleWidth($slider);\r\n const slideWidth = getElementWidth($slide);\r\n\r\n let numOfVisibleSlides = (visibleWidth / slideWidth);\r\n\r\n if (rounded) numOfVisibleSlides = Math.floor(numOfVisibleSlides);\r\n\r\n return numOfVisibleSlides;\r\n\r\n}\r\n\r\nconst bindButtons = ($buttons, sliderId) => {\r\n\r\n $buttons.forEach(($button, i) => {\r\n\r\n $button.addEventListener('click', (e) => {\r\n\r\n const direction = $button.getAttribute('data-slider-button');\r\n const slider = getSliderConfig(sliderId, 'slider');\r\n const action = (direction === 'next') ? '+' : '-';\r\n\r\n slider.go(action);\r\n\r\n return direction;\r\n\r\n });\r\n\r\n });\r\n\r\n}\r\n\r\nconst resetImages = ($slider) => {\r\n\r\n const $images = $slider.querySelectorAll('.b-loaded');\r\n\r\n if (!$images.length) return false \r\n\r\n $images.forEach($image => {\r\n\r\n $image.classList.remove('b-loaded');\r\n\r\n resetAttributes($image, 'src');\r\n resetPicture($image);\r\n\r\n });\r\n\r\n return $images;\r\n\r\n}\r\n\r\nconst resetPicture = ($image) => {\r\n\r\n const $picture = $image.parentNode;\r\n const $srcs = $picture.querySelectorAll('[srcset]');\r\n\r\n if (!$srcs.length) return false;\r\n\r\n $srcs.forEach($src => resetAttributes($src, 'srcset'));\r\n\r\n initLazyload();\r\n\r\n return $srcs;\r\n\r\n}\r\n\r\nconst resetAttributes = ($element, attribute) => {\r\n\r\n const foundAttribute = $element.getAttribute(attribute);\r\n\r\n $element.setAttribute(`data-${attribute}`, foundAttribute);\r\n\r\n if ($element.hasAttribute(attribute)) $element.removeAttribute(attribute); \r\n\r\n return foundAttribute;\r\n\r\n}\r\n\r\nconst resetSlider = ($buttons, sliderId, $slider) => {\r\n\r\n const slider = getSliderConfig(sliderId, 'slider');\r\n\r\n if ($buttons) gsap.set($buttons, { clearProps: 'all' });\r\n\r\n if (slider && slider.destroy) slider.destroy(true);\r\n\r\n resetImages($slider);\r\n\r\n return $buttons;\r\n\r\n}\r\n\r\nconst initSlider = ($slider, $buttons, sliderId) => {\r\n\r\n const direction = getTextDirection();\r\n const $slides = $slider.querySelectorAll('[data-slider-slide]');\r\n const visibleSlides = calcVisibleSlides($slider);\r\n const alreadyBound = config[sliderId] ? config[sliderId].alreadyBound : false;\r\n const slider = new Splide($slider, {\r\n direction: direction,\r\n autoWidth: true,\r\n arrows: false,\r\n pagination: false,\r\n\t perMove: 1,\r\n waitForTransition: false\r\n }).mount();\r\n\r\n config[sliderId] = {\r\n slider: slider,\r\n length: $slides.length,\r\n visibleSlides: visibleSlides,\r\n alreadyBound: alreadyBound\r\n };\r\n\r\n const handleSlideUpdate = (newSlide) => {\r\n\r\n const action = needToHideButton($slider, sliderId, newSlide);\r\n\r\n initLazyload();\r\n\r\n return action;\r\n\r\n }\r\n\r\n slider.on('moved', handleSlideUpdate);\r\n\r\n if (getSliderConfig(sliderId, 'alreadyBound')) return false;\r\n\r\n config[sliderId].alreadyBound = true;\r\n\r\n bindButtons($buttons, sliderId);\r\n\r\n return slider;\r\n\r\n}\r\n\r\nconst bindSlider = ($slider) => {\r\n\r\n const $buttons = $slider.querySelectorAll('[data-slider-button]');\r\n const sliderId = $slider.getAttribute('data-slider');\r\n\r\n resetSlider($buttons, sliderId, $slider);\r\n\r\n initSlider($slider, $buttons, sliderId);\r\n\r\n needToHideButton($slider, sliderId, 0);\r\n\r\n return $slider;\r\n\r\n}\r\n\r\nconst findSliders = () => {\r\n\r\n viewport = getViewportDimensions();\r\n\r\n const $sliders = document.querySelectorAll('[data-slider]');\r\n\r\n if (!$sliders) return false;\r\n\r\n $sliders.forEach(($slider, i) => bindSlider($slider));\r\n\r\n return $sliders;\r\n\r\n}\r\n\r\nconst bindResize = () => {\r\n\r\n const reset = debounce((e) => (window.innerWidth !== viewport.width) && findSliders(), 100);\r\n\r\n window.addEventListener('resize', reset);\r\n window.addEventListener('orientationchange', reset);\r\n\r\n return reset;\r\n\r\n}\r\n\r\nconst init = () => {\r\n\r\n findSliders();\r\n bindResize();\r\n\r\n}\r\n\r\nexport {\r\n init\r\n};\r\n"],"sourceRoot":""}