{"version":3,"file":"Carousel.js","names":["Carousel","a","setters","Registry","default","Component","Swiper","mix","deepMerge","Event","on","off","trigger","throttle","debounce","mediaQuery","Accessibility","checkContrast","execute","with","constructor","element","options","arguments","length","config","slidesPerView","spaceBetween","containerOffset","centerSlides","centerActiveSlide","zoomInActiveSlide","loop","loopAdditionalSlides","showPagination","showArrows","arrowsOutsideContainer","showScrollbar","mouseWheel","direction","containerClass","breakpoints","initialSlide","autoplay","autoplayDelay","freeMode","bulletMessage","sliderWithBackground","carouselTheme","a11y","carouselItemAriaLabel","autoplayAriaLabelStop","autoplayAriaLabelPlay","selectedIndex","isDynamicContent","touchStartPreventDefault","disableDefaultAriaMessage","classNames","carouselItem","wrapper","nextArrow","prevArrow","bullet","bulletCustom","pagination","scrollbar","trackSwipe","initCache","slider","selectors","carousel","querySelector","container","carouselAria","carouselAutoplay","carouselArrows","querySelectorAll","carouselPagination","firstSlide","slides","Array","from","parentElement","children","parentSlide","closest","classes","ready","unready","disabled","hidden","vertical","horizontal","visible","expanded","active","animated","lightMode","darkMode","light","dark","initState","state","isAutoplayEnabled","hasVideos","currentVideo","isSlideChangeTransitionEnd","mutationObserver","touches","afterInit","setDirection","setContainerClass","createSlider","isExpanded","expandSlides","unexpandSlides","showAutoplayButton","initMutationObserver","setSlidesIndex","updateCarouselBackground","updateCarouselBackgroundImage","setCarouselTheme","updateNavigationState","MutationObserver","onMutation","bind","observe","subtree","childList","updateAccessibility","bindEvents","onScrollTo","is","onMouseEnter","onMouseLeave","onFocusIn","onFocusOut","updateSlider","onCarouselClick","bindSliderEvents","params","navigation","nextEl","onNextArrowClick","onControlMove","passive","prevEl","onPrevArrowClick","el","onPaginationClick","onCarouselAutoplayToggle","navigationNextDisabled","stopAutoplay","nextSlide","navigationPrevDisabled","prevSlide","carouselOptions","getCarouselOptions","disabledClass","classList","contains","event","stopPropagation","bulletClass","customPagination","isBullet","target","index","dataset","slideto","paginationClicked","Number","isNaN","bulletChange","slideToLoop","slideTo","onPaginationRender","realIndex","focus","onSlideResetTransitionEnd","updateSlidesOnTransition","setSearchAria","activeSlide","activeIndex","activeSlideAriaLabel","getAttribute","innerHTML","startAutoplay","setTimeout","analyticsData","getAnalyticsData","extraData","click_action","emit","category","action","label","nodeName","mouseEvent","MouseEvent","dispatchEvent","swipeSlide","swipeDirection","JSON","stringify","slide","swipeData","Object","assign","nextVisibleSlide","visibleSlides","prevVisibleSlide","toggleCarouselExpand","stateToActivate","getExpandedCarouselOptions","unbindSliderEvents","destroy","removeAttribute","add","forEach","setAttribute","remove","slidesPerColumn","Math","ceil","slidesPerViewDynamic","slidesPerColumnFill","destroyed","enabled","getCurrentSlide","wrapperClass","update","updateVerticalSlider","updateHorizontalSlider","setOffsetSlider","updateArrowsVisibility","bubbles","updateScrollbar","tile","tileBackground","transparentTileColor","section","isBackgroundImageSet","style","backgroundColor","setColorForTransparentTile","setOppositeColor","item","setSectionColor","setCarouselTileColor","color","addNavigationClass","removeNavigationClass","tileBackgroundImage","backgroundImage","theme","centeredSlides","totalSlides","scrollContainerSize","offsetHeight","offsetWidth","dragSize","round","updateSize","variation","rating","intensity","cssClass","arrows","append","appendSlide","showElement","hideElement","getSlidesHeight","disableCarousel","enableCarousel","css","getSlidesWidth","slidesHeight","visibleSlide","positionInfo","getBoundingClientRect","height","marginBottom","parseInt","slidesWidth","width","marginRight","centerInsufficientSlides","preloadImages","freeModeMomentum","watchSlidesProgress","watchSlidesVisibility","nested","containerModifierClass","slideClass","slideActiveClass","slideNextClass","slidePrevClass","slideDuplicateClass","slideDuplicateNextClass","slideDuplicatePrevClass","slideDuplicateActiveClass","slideVisibleClass","init","onCarouselInit","resize","onSliderResize","slideChangeTransitionEnd","onSlideChangeTransitionEnd","slideChange","onSlideChange","sliderMove","onSliderMove","paginationRender","slideResetTransitionEnd","notificationClass","paginationBulletMessage","slideLabelMessage","prevSlideMessage","nextSlideMessage","getPaginationOptions","hide","draggable","lockClass","dragClass","mousewheel","forceToAxis","invert","delay","hiddenClass","setUniqueArrows","type","renderCustom","swiper","current","total","html","i","isCurrent","currentClass","bulletActiveClass","clickableClass","clickable","modifierClass","totalClass","id","slidesMargin","slidesPadding","marginLeft","paddingLeft","paddingRight","slidesToInit","setDuplicateSlideState","playSlideVideo","isBeginning","blur","isEnd","bullets","previousBullet","previousIndex","currentBullet","nestedCarousel","afterRegistered","then","firstElementChild","array","hasAttribute","ariaLabel","replace","detail","goTo","speed","onMediaQueryChange","currentSlide","isVideo","data","analytics","parse","e","window","lora","debug","console","error","detachEvents","wrapperEl","attachEvents","start","stop","next","slideNext","previous","slidePrev","reset","time","useHiddenClass","HTMLElement","jsCarouselItemVisible","focusableElements","getFocusableElements","disconnect"],"sources":["components/global/Carousel.js"],"sourcesContent":["/* eslint max-lines: off */\nimport Registry from 'core/ComponentRegistry';\nimport Component from 'core/Component';\nimport Swiper from 'swiper';\nimport { mix } from 'core/mixwith';\nimport { deepMerge } from 'toolbox/deepMerge';\nimport { Event } from 'services/EventEmitter';\nimport { on, off, trigger } from 'toolbox/event';\nimport { throttle } from 'toolbox/throttle';\nimport { debounce } from 'toolbox/debounce';\nimport { mediaQuery } from 'toolbox/mediaQuery';\nimport Accessibility from 'mixins/Accessibility';\nimport { checkContrast } from 'toolbox/color';\n\n/**\n * See documentation for API: http://idangero.us/swiper/api/\n * This is a description of the Carousel constructor function.\n * @class\n * @classdesc This is a description of the Carousel class.\n * @extends Component\n */\nexport default class Carousel extends mix(Component).with(Accessibility) {\n /**\n * @typedef {Object} optionsObject\n * @property {number or 'auto'} slidesPerView - Number of slides per view\n * (slides visible at the same time on slider's container).\n * @property {number} spaceBetween - Distance between slides in px.\n * @property {number} containerOffset - Offset for the container (before and after all slides) in px.\n * @property {boolean} centerSlides - Centered carousel slides if the amount of slides less than `slidesPerView`\n * @property {boolean} centerActiveSlide - If true, then active slide will be centered, not always on the left side.\n * @property {boolean} zoomInActiveSlide - If true, then active slide will be animated and other slides will be hidden\n * only Images will be shown\n * @property {boolean} sliderWithBackground - update carousel wrapper [data-js-section]\n * with new background based on active slide\n * @property {'light' or 'dark'} carouselTheme - set carousel colors according to the theme\n * @property {boolean} loop - Set to true to enable continuous loop mode\n * @property {number} loopAdditionalSlides - Addition number of slides that will be cloned after creating of loop\n * @property {boolean} showPagination - Set to true to show pagination bullets\n * @property {boolean} showArrows - Set to true to show navigation arrows\n * @property {boolean} arrowsOutsideContainer - Set to true to render navigation arrows outside of carousel container\n * @property {boolean} showScrollbar - Set to true to show scrollbar\n * @property {boolean} mouseWheel - Set to true to enable mouseWheel control\n * @property {'horizontal' or 'vertical'} direction - Carousel direction\n * @property {Object} breakpoints - Allows to set different parameter for different responsive breakpoints (screen sizes).\n * Not all parameters can be changed in breakpoints, only those which are not required\n * different layout and logic, like slidesPerView, slidesPerGroup, spaceBetween.\n * Such parameters like slidesPerColumn, loop, direction, effect won't work.\n * @property {number} initialSlide - Index number of initial slide.\n * @property {boolean} autoplay - Set to true to enable autoplay\n * @property {number} autoplayDelay - default delay of autoplay in ms\n * @property {boolean} freeMode - If true then slides will not have fixed positions\n * @property {Object} classNames - Carousel namespace (see API)\n * @property {text} autoplayAriaLabelStop - Autoplay aria label bullet text for accessibility (Pause slider)\n * @property {text} autoplayAriaLabelPlay - Autoplay aria label bullet text for accessibility (Play slider)\n * @property {boolean} isDynamicContent - set to true if carousel has dynamic content\n * (e.g. product tiles with lazy loaded components or HTML content loaded from 3PI)\n * @property {boolean} touchStartPreventDefault - If disabled, pointerdown event won't be prevented\n * @property {boolean} trackSwipe - If true, then swipe event will be tracked and fired analytics event\n * @property {boolean} nested - Set to true on Swiper for correct touch events interception.\n * Use only on swipers that use same direction as the parent one\n * @property {boolean} disableDefaultAriaMessage - Set to true to disable default aria message for carousel.\n * Use only if custom aria message is provided.\n */\n /**\n * @constructor\n * @param {object} element - DOM node of component\n * @param {optionsObject} options - Component Options\n */\n constructor(element, options = {}) {\n const config = deepMerge({\n slidesPerView: 1,\n spaceBetween: 0,\n containerOffset: 0,\n centerSlides: false,\n centerActiveSlide: false,\n zoomInActiveSlide: false,\n loop: false,\n loopAdditionalSlides: 0,\n showPagination: false,\n showArrows: false,\n arrowsOutsideContainer: false,\n showScrollbar: false,\n mouseWheel: true,\n direction: 'horizontal',\n containerClass: null,\n breakpoints: null,\n initialSlide: 0,\n autoplay: false,\n autoplayDelay: 10000,\n freeMode: false,\n bulletMessage: '',\n sliderWithBackground: false,\n carouselTheme: null,\n a11y: {\n carouselItemAriaLabel: 'Slide {0} of {1}',\n autoplayAriaLabelStop: '',\n autoplayAriaLabelPlay: '',\n },\n selectedIndex: null,\n isDynamicContent: false,\n touchStartPreventDefault: true,\n disableDefaultAriaMessage: false,\n\n // Classnames options\n classNames: {\n carouselItem: 'c-carousel__item',\n wrapper: 'c-carousel__content',\n nextArrow: 'js-carousel__arrow-next',\n prevArrow: 'js-carousel__arrow-prev',\n bullet: 'c-carousel__pagination-bullet',\n bulletCustom: 'c-carousel__pagination-bullet-custom',\n pagination: 'js-carousel__pagination',\n scrollbar: 'js-carousel__scrollbar',\n },\n trackSwipe: false,\n }, options);\n\n super(element, config);\n }\n\n /**\n * All selectors must be cached. Never cache elements that are out of the component scope\n */\n initCache() {\n this.slider = null;\n this.selectors.carousel = this.element.querySelector('[data-js-carousel]');\n this.selectors.container = this.element.querySelector('[data-js-container]');\n this.selectors.carouselAria = this.element.querySelector('[data-js-carousel-aria]');\n this.selectors.carouselAutoplay = this.element.querySelector('[data-js-carousel-autoplay]');\n this.selectors.carouselArrows = this.element.querySelectorAll('[data-js-carousel-arrows]');\n this.selectors.carouselPagination = this.element.querySelector('[data-js-carousel-pagination]');\n\n // Get only closest slides to exclude nested carousel slides\n this.selectors.firstSlide = this.element.querySelector('[data-js-carousel-item]');\n this.selectors.slides = Array.from(this.selectors.firstSlide.parentElement.children);\n\n // Check if there is a parent carousel slide (e.g. one carousel is nested within another)\n this.selectors.parentSlide = this.element.closest('[data-js-carousel-item]');\n\n // force to turn off infinite loop if 1 slide only to prevent duplicate slide creation\n this.options.loop = (this.selectors.slides.length > 1) ? this.options.loop : false;\n\n this.classes = {\n ready: 'm-ready',\n unready: 'm-unready',\n disabled: 'm-disabled',\n hidden: 'h-hidden',\n vertical: 'm-vertical',\n horizontal: 'm-horizontal',\n visible: 'm-visible',\n expanded: 'm-expanded',\n active: 'm-active',\n animated: 'm-animated',\n lightMode: 'm-color-light',\n darkMode: 'm-color-dark',\n light: 'm-light',\n dark: 'm-dark',\n };\n }\n\n /**\n * Init the different state of the component\n * It helps to avoid heavy DOM manipulation\n */\n initState() {\n this.state.isAutoplayEnabled = this.options.autoplay;\n this.state.hasVideos = !!this.element.querySelectorAll('[data-js-video-container]').length;\n this.state.currentVideo = null;\n this.state.expanded = !!this.state.expanded;\n this.state.isSlideChangeTransitionEnd = null;\n this.state.mutationObserver = null;\n this.state.touches = null;\n }\n\n /* eslint-disable complexity */\n /**\n * After init\n * Run any script after the component is fully initialized\n */\n afterInit() {\n this.setDirection();\n this.setContainerClass();\n this.createSlider();\n\n // create carousel in expanded state\n if (this.options.isExpanded && !this.state.expanded) {\n this.expandSlides();\n } else if (!this.options.isExpanded && this.state.expanded) {\n this.unexpandSlides();\n }\n if (this.options.autoplay) {\n this.showAutoplayButton();\n }\n if (this.options.isDynamicContent) {\n this.initMutationObserver();\n }\n\n this.setSlidesIndex();\n\n if (this.options.sliderWithBackground) {\n this.updateCarouselBackground();\n this.updateCarouselBackgroundImage();\n }\n if (this.options.carouselTheme) {\n this.setCarouselTheme(this.options.carouselTheme);\n }\n\n this.updateNavigationState();\n }\n /* eslint-enable complexity */\n\n /**\n * Initialize a mutation observer for the carousel to watch dynamic changes\n */\n initMutationObserver() {\n const mutationObserver = new MutationObserver(throttle(this.onMutation.bind(this), 1000));\n mutationObserver.observe(this.element, { subtree: true, childList: true });\n this.state.mutationObserver = mutationObserver;\n }\n\n /**\n * Mutation observer handler\n * If new content is added, update accessibility,\n * in particular prevent new content from receiving focus in invisible carousel slides\n */\n onMutation() {\n if (this.slider) {\n this.updateAccessibility();\n }\n }\n\n /**\n * Should contain only event listeners and nothing else\n * All the event handlers should be into a separated function. No usage of anonyous function\n */\n bindEvents() {\n on('carousel.scrollto', this.element, this.onScrollTo.bind(this));\n\n if (mediaQuery.is('large')) {\n on('mouseenter', this.selectors.carousel, this.onMouseEnter.bind(this));\n on('mouseleave', this.selectors.carousel, debounce(this.onMouseLeave.bind(this)));\n }\n on('focusin', this.selectors.carousel, this.onFocusIn.bind(this));\n on('focusout', this.selectors.carousel, this.onFocusOut.bind(this));\n on('carousel.update', this.element, this.updateSlider.bind(this));\n if (this.options.touchStartPreventDefault) {\n on('click', this.selectors.carousel, this.onCarouselClick.bind(this));\n }\n }\n\n /**\n * Bind events for created Slider\n */\n bindSliderEvents() {\n if (this.slider.params.showArrows) {\n if (this.slider.navigation.nextEl) {\n on('click', this.slider.navigation.nextEl, this.onNextArrowClick.bind(this));\n on('mousemove pointermove touchmove', this.slider.navigation.nextEl, this.onControlMove.bind(this), {\n passive: true,\n });\n }\n if (this.slider.navigation.prevEl) {\n on('click', this.slider.navigation.prevEl, this.onPrevArrowClick.bind(this));\n on('mousemove pointermove touchmove', this.slider.navigation.prevEl, this.onControlMove.bind(this), {\n passive: true,\n });\n }\n }\n if (this.slider.params.showPagination && this.slider.pagination.el) {\n on('click', this.slider.pagination.el, this.onPaginationClick.bind(this));\n on('mousemove pointermove touchmove', this.slider.pagination.el, this.onControlMove.bind(this), {\n passive: true,\n });\n }\n if (this.options.autoplay && this.selectors.carouselAutoplay) {\n on('click', this.selectors.carouselAutoplay, this.onCarouselAutoplayToggle.bind(this));\n }\n }\n\n /**\n * NextArrow Click event handler\n */\n onNextArrowClick() {\n if (!this.state.navigationNextDisabled) {\n this.state.isAutoplayEnabled = false;\n this.stopAutoplay();\n this.nextSlide();\n }\n this.updateNavigationState();\n }\n\n /**\n * PrevArrow Click event handler\n */\n onPrevArrowClick() {\n if (!this.state.navigationPrevDisabled) {\n this.state.isAutoplayEnabled = false;\n this.stopAutoplay();\n this.prevSlide();\n }\n this.updateNavigationState();\n }\n\n /**\n * Updates the disabling state for the navigation arrows\n */\n updateNavigationState() {\n const carouselOptions = this.getCarouselOptions();\n const { disabledClass } = carouselOptions.navigation;\n\n this.state.navigationPrevDisabled = this.slider.navigation.prevEl.classList.contains(disabledClass);\n this.state.navigationNextDisabled = this.slider.navigation.nextEl.classList.contains(disabledClass);\n }\n\n /**\n * Carousel Control Move event handler\n * pagination, navigation (arrows)\n *\n * @param {Object} event Event object\n */\n onControlMove(event) {\n event.stopPropagation();\n }\n\n /**\n * Pagination Click event handler\n *\n * @param {Object} event Event object\n */\n onPaginationClick(event) {\n const bulletClass = this.options.customPagination ? this.options.classNames.bulletCustom : this.options.classNames.bullet;\n const isBullet = event.target.classList.contains(bulletClass);\n const index = event.target.dataset.slideto;\n\n this.state.isAutoplayEnabled = false;\n this.state.paginationClicked = true;\n\n this.stopAutoplay();\n\n if (!Number.isNaN(index)) {\n if (isBullet) {\n this.bulletChange(index);\n }\n\n if (this.options.loop) {\n this.slider.slideToLoop(index);\n } else {\n this.slider.slideTo(index);\n }\n }\n }\n\n /**\n * Carousel pagination render event handler\n * Restore the focus on the clicked pagination element after pagination is re-rendered\n */\n onPaginationRender() {\n if (this.slider && this.state.paginationClicked) {\n this.slider.pagination.el.querySelector(`[data-slideto=\"${this.slider.realIndex}\"]`).focus();\n this.state.paginationClicked = false;\n }\n }\n\n /**\n * Slide Reset Transition End event handler\n * Event will be fired in the end of animation of resetting slide to current one\n */\n onSlideResetTransitionEnd() {\n this.updateSlidesOnTransition();\n }\n\n /**\n * Set Carousel field aria\n */\n setSearchAria() {\n if (this.options.disableDefaultAriaMessage) {\n return;\n }\n const activeSlide = this.slider.slides[this.slider.activeIndex];\n const activeSlideAriaLabel = activeSlide && activeSlide.getAttribute('aria-label');\n if (activeSlideAriaLabel && this.selectors.carouselAria) {\n this.selectors.carouselAria.innerHTML = activeSlideAriaLabel;\n }\n }\n\n /**\n * Mouse Enter event handler\n */\n onCarouselAutoplayToggle() {\n if (!this.state.isAutoplayEnabled) {\n this.state.isAutoplayEnabled = true;\n this.startAutoplay();\n } else {\n this.state.isAutoplayEnabled = false;\n this.stopAutoplay();\n }\n\n const activeSlide = this.slider.slides[this.slider.activeIndex];\n\n setTimeout(() => {\n const analyticsData = this.getAnalyticsData(activeSlide);\n\n if (analyticsData) {\n const { extraData } = analyticsData;\n\n if (extraData && extraData.click_action === '') {\n extraData.click_action = !this.state.isAutoplayEnabled ? 'display' : 'pause';\n }\n Event.emit('analytics.event', {\n category: 'slider',\n action: !this.state.isAutoplayEnabled ? 'display' : 'pause',\n label: analyticsData.label,\n extraData,\n });\n }\n }, 0);\n }\n\n /**\n * Mouse Enter event handler\n */\n onMouseEnter() {\n if (this.state.isAutoplayEnabled) {\n this.stopAutoplay();\n }\n }\n\n /**\n * Mouse Leave event handler\n */\n onMouseLeave() {\n if (this.state.isAutoplayEnabled) {\n this.startAutoplay();\n }\n }\n\n /**\n * Focus in event handler\n */\n onFocusIn() {\n if (this.state.isAutoplayEnabled) {\n this.stopAutoplay();\n }\n }\n\n /**\n * Focus out event handler\n */\n onFocusOut() {\n if (this.state.isAutoplayEnabled) {\n this.startAutoplay();\n }\n }\n\n /**\n * Click event handler\n * @param {Object} event Event object\n */\n onCarouselClick(event) {\n if (event.target.nodeName === 'SELECT') {\n const mouseEvent = new MouseEvent('click');\n\n event.target.dispatchEvent(mouseEvent);\n }\n }\n\n /**\n * Bullet Change according to current slide\n * @param {Integer} index slide\n */\n bulletChange(index) {\n const activeSlide = this.slider.slides[index] || this.slider.slides[this.slider.activeIndex];\n\n setTimeout(() => {\n const analyticsData = this.getAnalyticsData(activeSlide);\n\n if (analyticsData) {\n const { extraData } = analyticsData;\n\n if (extraData && extraData.click_action === '') {\n extraData.click_action = 'select';\n }\n Event.emit('analytics.event', {\n category: 'slider',\n action: 'select',\n label: analyticsData.label,\n extraData,\n });\n }\n }, 0);\n }\n\n /**\n * Fires slide analytics during slide swiping\n */\n swipeSlide() {\n // prevent action if slider was not swiped or swiped programmatically (not by user)\n if (!this.slider.swipeDirection || this.state.touches === JSON.stringify(this.slider.touches)) {\n return;\n }\n\n this.state.touches = JSON.stringify(this.slider.touches);\n\n const slide = this.slider.slides[this.slider.activeIndex];\n\n setTimeout(() => {\n let analyticsData = this.getAnalyticsData(slide);\n\n if (analyticsData) {\n if (analyticsData.swipeData) {\n analyticsData = Object.assign(analyticsData, analyticsData.swipeData);\n }\n const swipeDirection = this.slider.swipeDirection === 'prev' ? 'previous' : this.slider.swipeDirection;\n const action = analyticsData.action ? `${analyticsData.action}${swipeDirection}` : swipeDirection;\n const { extraData } = analyticsData;\n extraData.click_action = swipeDirection;\n\n Event.emit('analytics.event', {\n category: analyticsData.category || 'slider',\n action,\n label: analyticsData.label,\n extraData,\n });\n }\n }, 0);\n }\n\n /**\n * Next Slide prepare to show\n */\n nextSlide() {\n const nextVisibleSlide = this.slider.visibleSlides[this.slider.visibleSlides.length - 1];\n\n setTimeout(() => {\n const analyticsData = this.getAnalyticsData(nextVisibleSlide);\n if (analyticsData) {\n const action = analyticsData.action ? `${analyticsData.action}next` : 'next';\n const { extraData } = analyticsData;\n\n if (extraData && extraData.click_action === '') {\n extraData.click_action = 'next';\n }\n Event.emit('analytics.event', {\n category: analyticsData.category || 'slider',\n action,\n label: analyticsData.label,\n extraData,\n });\n }\n }, 0);\n }\n\n /**\n * Previous Slide prepare to show\n */\n prevSlide() {\n const prevVisibleSlide = this.slider.visibleSlides[0];\n\n setTimeout(() => {\n const analyticsData = this.getAnalyticsData(prevVisibleSlide);\n if (analyticsData) {\n const action = analyticsData.action ? `${analyticsData.action}previous` : 'previous';\n const { extraData } = analyticsData;\n\n if (extraData && extraData.click_action === '') {\n extraData.click_action = 'previous';\n }\n Event.emit('analytics.event', {\n category: analyticsData.category || 'slider',\n action,\n label: analyticsData.label,\n extraData,\n });\n }\n }, 0);\n }\n\n /**\n * Expand the Slides\n */\n expandSlides() {\n this.toggleCarouselExpand(true);\n }\n\n /**\n * Unexpand the Slides\n */\n unexpandSlides() {\n this.toggleCarouselExpand(false);\n }\n\n /**\n * Carousel Expand Toggle Handler\n * @Param {Boolean} stateToActivate (optional) toggle state to activate\n */\n toggleCarouselExpand(stateToActivate) {\n const state = (typeof stateToActivate === 'boolean') ? stateToActivate : !this.state.expanded;\n const carouselOptions = state ? this.getExpandedCarouselOptions() : this.getCarouselOptions();\n\n this.state.expanded = state;\n // The next line does not delete the Swiper instance.\n // It just clean all custom styles from slides, wrapper and container to permit a re-initialization.\n this.unbindSliderEvents();\n this.slider.destroy(false, true);\n this.createSlider(carouselOptions);\n\n if (state) {\n this.element.removeAttribute('role');\n this.element.removeAttribute('aria-roledescription');\n this.selectors.container.classList.add(this.classes.expanded);\n this.selectors.slides.forEach((slide) => {\n slide.removeAttribute('role');\n slide.removeAttribute('aria-roledescription');\n });\n } else {\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('aria-roledescription', 'carousel');\n this.selectors.container.classList.remove(this.classes.expanded);\n this.selectors.slides.forEach((slide) => {\n slide.setAttribute('role', 'group');\n slide.setAttribute('aria-roledescription', 'slide');\n });\n }\n }\n\n /**\n * Build Swiper options object with expanded carousel options\n * @returns {Object} options\n */\n getExpandedCarouselOptions() {\n const carouselOptions = this.getCarouselOptions();\n carouselOptions.slidesPerColumn = Math.ceil(this.slider.slides.length / this.slider.slidesPerViewDynamic());\n carouselOptions.slidesPerColumnFill = 'row';\n carouselOptions.initialSlide = 0;\n carouselOptions.showArrows = false;\n carouselOptions.showPagination = false;\n carouselOptions.showScrollbar = false;\n carouselOptions.autoplay = false;\n return carouselOptions;\n }\n\n /**\n * Show Autoplay button\n */\n showAutoplayButton() {\n if (this.selectors.carouselAutoplay) {\n this.selectors.carouselAutoplay.classList.remove('h-hidden');\n }\n }\n\n /**\n * Create slider\n * @param {Object} carouselOptions carousel options\n * @returns {Object} slider instance\n */\n createSlider(carouselOptions) {\n if (this.slider && !this.slider.destroyed) {\n return this.slider;\n }\n\n this.slider = new Swiper(this.selectors.carousel, carouselOptions || this.getCarouselOptions());\n this.selectors.container.removeAttribute('aria-live');\n this.slider.enabled = true;\n\n // set current video slide\n if (this.state.hasVideos && this.slider.slides.length) {\n this.state.currentVideo = this.getCurrentSlide().slide.querySelector('[data-js-video-container]');\n }\n\n this.updateSlider();\n this.bindSliderEvents();\n\n return this.slider;\n }\n\n /**\n * Set Carousel direction (horizontal or vertical).\n * Since Swiper is initialized on component's child node we need to bubble modifier class to the element\n */\n setDirection() {\n if (this.options.direction === 'vertical') {\n this.element.classList.add(this.classes.vertical);\n this.element.classList.remove(this.classes.horizontal);\n } else {\n this.element.classList.add(this.classes.horizontal);\n this.element.classList.remove(this.classes.vertical);\n }\n }\n\n /**\n * Set Carousel Container Class\n */\n setContainerClass() {\n if (this.options.wrapperClass) {\n this.selectors.container.classList.add(this.options.wrapperClass);\n }\n }\n\n /**\n * Refresh slider state.\n *\n * Function should be called first time right after Swiper's initialization,\n * as Swiper may set inline width/height to carousel slides\n * based on slidesPerView property (unless it set to 'auto').\n */\n updateSlider() {\n this.slider.update();\n\n if (this.options.selectedIndex && this.options.selectedIndex >= this.options.slidesPerView) {\n if (this.options.loop) {\n this.slider.slideToLoop(Number(this.options.selectedIndex));\n } else {\n this.slider.slideTo(Number(this.options.selectedIndex));\n }\n }\n\n if (!this.options.isExpanded) {\n if (this.options.direction === 'vertical') {\n this.updateVerticalSlider();\n } else {\n this.updateHorizontalSlider();\n }\n }\n\n this.setOffsetSlider();\n\n this.updateArrowsVisibility();\n\n this.updateAccessibility();\n\n trigger('carousel.updated', this.element, {\n bubbles: true,\n });\n\n if (this.options.showScrollbar) {\n this.updateScrollbar();\n }\n }\n\n /**\n * Update carousel background\n */\n updateCarouselBackground() {\n const activeSlide = this.slider.slides[this.slider.activeIndex];\n const tile = activeSlide && activeSlide.querySelector('[data-js-tile]');\n const tileBackground = tile && tile.getAttribute('data-background-color');\n const transparentTileColor = tile && tile.getAttribute('data-transparent-tile-color');\n const section = this.element.closest('[data-js-section]');\n\n if (this.isBackgroundImageSet(tile)) {\n section.style.backgroundColor = '';\n return;\n }\n if (transparentTileColor) {\n this.setColorForTransparentTile(tile);\n }\n if (tileBackground) {\n section.style.backgroundColor = tileBackground;\n if (!transparentTileColor) {\n this.setOppositeColor(tile, tileBackground);\n }\n }\n }\n\n /**\n * Check if background image is set for current display mediaQuery\n * @param {String} item product tile\n * @returns {Boolean} Returns true, if background image is set for current display mediaQuery\n */\n isBackgroundImageSet(item) {\n return (mediaQuery.is('small only') && item.getAttribute('data-background-image-mobile'))\n || (mediaQuery.is('medium only') && item.getAttribute('data-background-image-tablet'))\n || (mediaQuery.is('large') && item.getAttribute('data-background-image'));\n }\n\n /**\n * Set colors to section and product tile\n * @param {String} item product tile\n */\n setColorForTransparentTile(item) {\n const transparentTileColor = item && item.getAttribute('data-transparent-tile-color');\n if (transparentTileColor) {\n this.setSectionColor(transparentTileColor);\n this.setCarouselTileColor(item, transparentTileColor);\n }\n }\n\n /**\n * Set section color\n * @param {String} color hex string\n */\n setSectionColor(color) {\n const section = this.element.closest('[data-js-section]');\n\n if (section) {\n if (color === 'light') {\n section.classList.remove('h-color-dark');\n section.classList.add('h-color-light');\n this.addNavigationClass(this.classes.lightMode);\n } else {\n section.classList.remove('h-color-light');\n section.classList.add('h-color-dark');\n this.removeNavigationClass(this.classes.lightMode);\n }\n }\n }\n\n /**\n * Update carousel background image\n */\n updateCarouselBackgroundImage() {\n const activeSlide = this.slider.slides[this.slider.activeIndex];\n const tile = activeSlide && activeSlide.querySelector('[data-background-image]');\n let tileBackgroundImage = null;\n\n if (tile) {\n if (mediaQuery.is('small only')) {\n tileBackgroundImage = tile.getAttribute('data-background-image-mobile');\n } else if (mediaQuery.is('medium only')) {\n tileBackgroundImage = tile.getAttribute('data-background-image-tablet');\n } else {\n tileBackgroundImage = tile.getAttribute('data-background-image');\n }\n }\n\n const section = this.element.closest('[data-js-section]');\n section.style.backgroundImage = activeSlide && tileBackgroundImage && section ? `url('${tileBackgroundImage}')` : null;\n this.setColorForTransparentTile(tile);\n }\n\n /**\n * Set carousel background\n * @param {String} theme - carousel theme\n */\n setCarouselTheme(theme) {\n if (theme === 'dark') {\n this.selectors.slides.forEach((slide) => {\n this.setCarouselTileColor(slide, 'dark');\n });\n this.removeNavigationClass(this.classes.lightMode);\n } else if (theme === 'light') {\n this.selectors.slides.forEach((slide) => {\n this.setCarouselTileColor(slide, 'light');\n });\n this.addNavigationClass(this.classes.lightMode);\n }\n }\n\n /**\n * Update carousel scrollbar\n */\n updateScrollbar() {\n if (this.slider.params.centeredSlides) {\n const totalSlides = this.slider.slides.length;\n const scrollContainerSize = this.options.direction === 'vertical' ? this.slider.scrollbar.el.offsetHeight : this.slider.scrollbar.el.offsetWidth;\n\n this.slider.params.scrollbar.dragSize = Math.round(scrollContainerSize / totalSlides);\n this.slider.scrollbar.updateSize();\n }\n }\n\n /**\n * Update carousel colors opposite carousel background\n * @param {String} item product tile\n * @param {String} color hex string\n */\n setOppositeColor(item, color) {\n // Check background contrast with light foreground color\n if (checkContrast(color, '#ffffff') < 4.5) {\n this.setSectionColor('dark');\n this.setCarouselTileColor(item, 'dark');\n } else {\n this.setSectionColor('light');\n this.setCarouselTileColor(item, 'light');\n }\n }\n\n /* eslint-disable complexity */\n /**\n * Set carousel tile with light colors\n * @param {String} item product tile\n * @param {String} color hex string\n */\n setCarouselTileColor(item, color) {\n const tile = item.querySelector('[data-js-product-tile]');\n const variation = item.querySelector('[data-js-product-variation]');\n const rating = item.querySelector('[data-js-product-rating]');\n const intensity = item.querySelector('[data-js-product-intensity]');\n\n if (color === 'dark') {\n if (tile) {\n tile.classList.add(this.classes.darkMode);\n tile.classList.remove(this.classes.lightMode);\n }\n if (variation) {\n variation.classList.add(this.classes.dark);\n variation.classList.remove(this.classes.light);\n }\n if (rating) {\n rating.classList.add(this.classes.dark);\n rating.classList.remove(this.classes.light);\n }\n if (intensity) {\n intensity.classList.add(this.classes.dark);\n intensity.classList.remove(this.classes.light);\n }\n } else if (color === 'light') {\n if (tile) {\n tile.classList.add(this.classes.lightMode);\n tile.classList.remove(this.classes.darkMode);\n }\n if (variation) {\n variation.classList.add(this.classes.light);\n variation.classList.remove(this.classes.dark);\n }\n if (rating) {\n rating.classList.add(this.classes.light);\n rating.classList.remove(this.classes.dark);\n }\n if (intensity) {\n intensity.classList.add(this.classes.light);\n intensity.classList.remove(this.classes.dark);\n }\n }\n }\n /* eslint-enable complexity */\n\n /**\n * Add class to carousel navigations like arrows, pagination, scroll bar\n * @param {Text} cssClass css class\n */\n addNavigationClass(cssClass) {\n if (this.selectors.carouselArrows.length) {\n this.selectors.carouselArrows.forEach((arrows) => {\n arrows.classList.add(cssClass);\n });\n }\n\n if (this.selectors.carouselPagination) {\n this.selectors.carouselPagination.classList.add(cssClass);\n }\n\n if (this.options.showScrollbar) {\n this.slider.scrollbar.el.classList.add(cssClass);\n }\n }\n\n /**\n * Remove class to carousel navigations like arrows, pagination, scroll bar\n * @param {Text} cssClass css class\n */\n removeNavigationClass(cssClass) {\n if (this.selectors.carouselArrows.length) {\n this.selectors.carouselArrows.forEach((arrows) => {\n arrows.classList.remove(cssClass);\n });\n }\n\n if (this.selectors.carouselPagination) {\n this.selectors.carouselPagination.classList.remove(cssClass);\n }\n\n if (this.options.showScrollbar) {\n this.slider.scrollbar.el.classList.remove(cssClass);\n }\n }\n\n /**\n * Appends slides to the slider.\n * @param {Array} slides array of slides html\n */\n append(slides) {\n if (slides) {\n this.slider.appendSlide(slides);\n this.selectors.slides = Array.from(this.selectors.firstSlide.parentElement.children);\n Event.emit('registry.registerChildren', this.element);\n this.updateSlider();\n }\n }\n\n /**\n * Refresh slider arrows.\n *\n * Hide/show slider arrows based on breakpoint options\n */\n updateArrowsVisibility() {\n // Disable arrows focus if there is a parent carousel's hidden slide\n if (this.selectors.parentSlide && !this.selectors.parentSlide.classList.contains(this.classes.visible)) {\n this.slider.navigation.nextEl.setAttribute('tabindex', '-1');\n this.slider.navigation.nextEl.setAttribute('data-js-original-tabindex', '0');\n this.slider.navigation.prevEl.setAttribute('tabindex', '-1');\n this.slider.navigation.prevEl.setAttribute('data-js-original-tabindex', '0');\n }\n\n if (this.slider && this.slider.navigation) {\n if (this.slider.params.showArrows && this.slider.enabled) {\n this.showElement(this.slider.navigation.nextEl, true);\n this.showElement(this.slider.navigation.prevEl, true);\n } else {\n this.hideElement(this.slider.navigation.nextEl, true);\n this.hideElement(this.slider.navigation.prevEl, true);\n }\n }\n }\n\n /**\n * Refresh Vertical slider state.\n * If all slides are fit into visible area, detach all events, slide to first slide instantly and add class,\n * which disables arrows, pagination and duplicated slides of loop mode.\n * If overall slides height becomes greater than container size (i.e. due to screen resize or layout change),\n * enable the carousel again.\n */\n updateVerticalSlider() {\n if (this.slider.enabled && this.getSlidesHeight(this.selectors.slides) <= this.selectors.carousel.offsetHeight) {\n this.slider.slideTo(0, 0);\n this.disableCarousel();\n } else if (!this.slider.enabled && this.getSlidesHeight(this.selectors.slides) > this.selectors.carousel.offsetHeight) {\n this.enableCarousel();\n }\n\n if (this.slider.params.slidesPerView === 'auto') {\n // Fix Swiper issue: slidesPerView: 'auto' with breakpoints does not work\n // https://github.com/nolimits4web/Swiper/issues/2346\n this.slider.slides.css('height', '');\n }\n }\n\n /**\n * Refresh Horizontal slider state.\n * If all slides are fit into visible area, detach all events, slide to first slide instantly and add class,\n * which disables arrows, pagination and duplicated slides of loop mode.\n * If overall slides width becomes greater than container size (i.e. due to screen resize or layout change),\n * enable the carousel again.\n */\n updateHorizontalSlider() {\n if (this.slider.enabled\n && !this.options.loop\n && this.getSlidesWidth(this.selectors.slides) <= this.selectors.carousel.offsetWidth\n ) {\n this.slider.slideTo(0, 0);\n this.disableCarousel();\n } else if (!this.slider.enabled && this.getSlidesWidth(this.selectors.slides) > this.selectors.carousel.offsetWidth) {\n this.enableCarousel();\n }\n\n if (this.slider.params.slidesPerView === 'auto') {\n // Fix Swiper issue: slidesPerView: 'auto' with breakpoints does not work\n // https://github.com/nolimits4web/Swiper/issues/2346\n this.slider.slides.css('width', '');\n }\n }\n\n /**\n * Calculate total slides height, including margin between slides.\n * Swiper's logic is taken into account since it adds bottom margin equal to spaceBetween property\n *\n * @param {NodeList} slides List\n * @returns {Number} slidesWidth\n */\n getSlidesHeight(slides) {\n let slidesHeight = 0;\n let visibleSlide = 0;\n\n slides.forEach((slide) => {\n const positionInfo = slide.getBoundingClientRect();\n\n if (positionInfo.height !== 0) {\n visibleSlide += 1;\n slidesHeight += positionInfo.height;\n }\n });\n\n // Add margin if \"spaceBetween\" defined\n if (slides[0].style.marginBottom) {\n slidesHeight += parseInt(slides[0].style.marginBottom, 10) * (visibleSlide - 1);\n }\n\n return Math.round(slidesHeight);\n }\n\n /**\n * Calculate total slides width, including margin between slides.\n * Swiper's logic is taken into account since it adds right margin equal to spaceBetween property\n *\n * @param {NodeList} slides List\n * @returns {Number} slidesWidth\n */\n getSlidesWidth(slides) {\n let slidesWidth = 0;\n let visibleSlide = 0;\n\n slides.forEach((slide) => {\n const positionInfo = slide.getBoundingClientRect();\n\n if (positionInfo.width !== 0) {\n visibleSlide += 1;\n slidesWidth += positionInfo.width;\n }\n });\n\n // Add margin if \"spaceBetween\" defined\n if (slides[0].style.marginRight) {\n slidesWidth += parseInt(slides[0].style.marginRight, 10) * (visibleSlide - 1);\n }\n\n return Math.round(slidesWidth);\n }\n\n /* eslint-disable complexity */\n /**\n * Build Swiper options object based on component configuration (see API)\n * @returns {Object} options\n */\n getCarouselOptions() {\n const options = {\n slidesPerView: this.options.slidesPerView,\n spaceBetween: this.options.spaceBetween,\n containerOffset: this.options.containerOffset,\n centerInsufficientSlides: this.options.centerSlides,\n centeredSlides: this.options.centerActiveSlide,\n loop: this.options.loop,\n showPagination: this.options.showPagination,\n showScrollbar: this.options.showScrollbar,\n showArrows: this.options.showArrows,\n arrowsOutsideContainer: this.options.arrowsOutsideContainer,\n direction: this.options.direction,\n initialSlide: this.options.initialSlide,\n loopAdditionalSlides: this.options.loopAdditionalSlides,\n autoplay: this.options.autoplay,\n preloadImages: false,\n freeMode: this.options.freeMode,\n freeModeMomentum: false,\n watchSlidesProgress: true,\n watchSlidesVisibility: true,\n isExpanded: this.options.isExpanded,\n touchStartPreventDefault: this.options.touchStartPreventDefault,\n nested: this.options.nested,\n\n // Classnames\n containerModifierClass: 'm-',\n slideClass: this.options.classNames.carouselItem,\n wrapperClass: this.options.classNames.wrapper,\n slideActiveClass: 'm-active',\n slideNextClass: 'm-next',\n slidePrevClass: 'm-prev',\n slideDuplicateClass: 'm-duplicate',\n slideDuplicateNextClass: 'm-duplicate-next',\n slideDuplicatePrevClass: 'm-duplicate-prev',\n slideDuplicateActiveClass: 'm-duplicate-active',\n slideVisibleClass: this.classes.visible,\n\n on: {\n init: this.onCarouselInit.bind(this),\n resize: this.onSliderResize.bind(this),\n slideChangeTransitionEnd: this.onSlideChangeTransitionEnd.bind(this),\n slideChange: this.onSlideChange.bind(this),\n sliderMove: this.onSliderMove.bind(this),\n paginationRender: this.onPaginationRender.bind(this),\n slideResetTransitionEnd: this.onSlideResetTransitionEnd.bind(this),\n },\n\n // Accessibility Parameters\n a11y: {\n notificationClass: 'c-carousel__notification',\n paginationBulletMessage: `${this.options.bulletMessage} {{index}}`,\n slideLabelMessage: this.options.a11y.slideLabelMessage,\n prevSlideMessage: this.options.a11y.prevSlideMessage,\n nextSlideMessage: this.options.a11y.nextSlideMessage,\n },\n };\n\n if (this.options.breakpoints) {\n options.breakpoints = this.options.breakpoints;\n }\n\n if (options.showPagination) {\n // Pagination options\n options.pagination = this.getPaginationOptions();\n }\n\n if (options.showScrollbar) {\n // Scrollbar options\n options.scrollbar = {\n el: `.${this.options.classNames.scrollbar}`,\n hide: false,\n dragSize: 'auto',\n draggable: true,\n lockClass: 'm-lock',\n dragClass: 'c-carousel__scrollbar-drag',\n };\n }\n\n if (this.options.mouseWheel) {\n options.mousewheel = {\n forceToAxis: true,\n invert: true,\n };\n }\n\n if (this.options.autoplay && !this.options.autoplay.delay) {\n // Autoplay options\n options.autoplay = {\n delay: this.options.autoplayDelay,\n };\n }\n\n // Make sure that nested option is enabled if parentSlide is defined\n if (this.options.nested === undefined && this.selectors.parentSlide) {\n options.nested = true;\n }\n\n // Navigation options\n options.navigation = {\n nextEl: `.${this.options.classNames.nextArrow}`,\n prevEl: `.${this.options.classNames.prevArrow}`,\n disabledClass: 'm-disabled',\n hiddenClass: 'h-hidden',\n };\n\n options.navigation = this.setUniqueArrows(options.navigation);\n\n return options;\n }\n /* eslint-enable complexity */\n\n /**\n * Build Swiper options object based on component configuration (see API)\n * @returns {Object} pagination options\n */\n getPaginationOptions() {\n return {\n el: `.${this.options.classNames.pagination}`,\n type: 'custom',\n // eslint-disable-next-line require-jsdoc\n renderCustom(swiper, current, total) {\n let html = '';\n for (let i = 0; i < total; i++) {\n const isCurrent = current === i + 1;\n\n if (isCurrent) {\n html += `
`;\n } else {\n html += ``;\n }\n }\n return html;\n },\n clickable: true,\n bulletClass: this.options.customPagination ? this.options.classNames.bulletCustom : this.options.classNames.bullet,\n bulletActiveClass: 'm-active',\n bulletMessage: this.options.bulletMessage,\n modifierClass: 'm-',\n currentClass: 'm-current',\n totalClass: 'm-total',\n hiddenClass: 'h-hidden',\n clickableClass: 'm-clickable',\n };\n }\n\n /**\n * Add unique index to arrows if they are placed outside of carousel container\n * @param {Object} navigation - Swiper navigation properties\n * @returns {Object} navigation - modified properties block\n */\n setUniqueArrows(navigation) {\n this.element.querySelector(navigation.nextEl).classList.add(`m-${this.id}`);\n this.element.querySelector(navigation.prevEl).classList.add(`m-${this.id}`);\n\n navigation.nextEl += `.m-${this.id}`;\n navigation.prevEl += `.m-${this.id}`;\n\n return navigation;\n }\n\n /**\n * Add (in px) additional slide offset for the carousel container,\n * used to avoid cropping for slides with shadow\n */\n setOffsetSlider() {\n if (this.options.containerOffset) {\n const slidesMargin = `${this.options.containerOffset * (-1)}px`;\n const slidesPadding = `${this.options.containerOffset}px`;\n this.selectors.carousel.style.marginLeft = slidesMargin;\n this.selectors.carousel.style.marginRight = slidesMargin;\n this.selectors.carousel.style.paddingLeft = slidesPadding;\n this.selectors.carousel.style.paddingRight = slidesPadding;\n }\n }\n\n /**\n * Carousel initializing event handler\n */\n onCarouselInit() {\n this.element.classList.add(this.classes.ready);\n this.element.classList.remove(this.classes.unready);\n if (this.options.zoomInActiveSlide) {\n this.element.classList.add(this.classes.animated);\n }\n Event.emit('carousel.init', this.element);\n }\n\n /**\n * Slider Resize event handler\n */\n onSliderResize() {\n if (this.slider) {\n this.updateSlider();\n }\n }\n\n /**\n * Slide Change Transition End event handler\n */\n onSlideChangeTransitionEnd() {\n this.updateSlidesOnTransition();\n }\n\n /**\n * Update Slides on Transition\n */\n updateSlidesOnTransition() {\n if (this.slider) {\n // Because of nature of how the loop mode works, the carousel will add duplicated slides.\n // We have to emit registry.registerChildren event to initialize components on duplicated slides.\n if (this.options.loop) {\n const slidesToInit = this.element.querySelectorAll('.c-carousel__item.m-visible:not(.m-initialized)');\n if (slidesToInit) {\n slidesToInit.forEach((slide) => {\n slide.classList.add('m-initialized');\n this.setDuplicateSlideState(slide);\n Event.emit('registry.registerChildren', slide);\n });\n }\n\n // Update slider in first transition changes to set correct attributes for duplicated slides.\n if (!this.state.isSlideChangeTransitionEnd) {\n setTimeout(this.updateSlider.bind(this), 0);\n }\n }\n if (!this.state.isAutoplayEnabled) {\n this.setSearchAria();\n }\n if (this.state.isSlideChangeTransitionEnd || !this.options.loop) {\n this.updateAccessibility();\n }\n this.state.isSlideChangeTransitionEnd = true;\n }\n }\n\n /**\n * Trigger slide change event\n */\n onSlideChange() {\n if (!this.slider) {\n return;\n }\n\n this.playSlideVideo();\n if (this.options.sliderWithBackground) {\n this.updateCarouselBackground();\n this.updateCarouselBackgroundImage();\n }\n\n if (!this.options.loop) {\n // Unfocus navigation arrows in case if disabled. NVDA fix for disabled buttons\n if (this.slider.isBeginning) {\n this.slider.navigation.prevEl.blur();\n } else if (this.slider.isEnd) {\n this.slider.navigation.nextEl.blur();\n }\n }\n\n // check if slide was changed by swiping\n if (this.options.trackSwipe && this.slider.swipeDirection) {\n this.swipeSlide();\n }\n\n trigger('carousel.slidechanged', this.element, {\n index: this.slider.realIndex,\n bubbles: true,\n });\n }\n\n /**\n * Carousel Slider Move event handler\n */\n onSliderMove() {\n this.state.isAutoplayEnabled = false;\n this.stopAutoplay();\n }\n\n /**\n * Update accessibility attributes\n * Add aria-hidden attribute for slides outside of the viewport to hide them from screen readers,\n * add tabindex='-1' on all focusable elements inside invisible slides to block gaining focus (i.e. with Tab key).\n * Remove this attributes if the slide becomes visible.\n * Add aria-current attribute to the active pagination bullet, remove it otherwise\n * Visibility class is handled by Swiper,\n * see 'watchSlidesProgress', 'watchSlidesVisibility' and 'slideVisibleClass' properties in APi documentation\n */\n updateAccessibility() {\n if (this.slider.pagination && this.slider.pagination.bullets) {\n const previousBullet = this.slider.pagination.bullets[this.slider.previousIndex];\n const currentBullet = this.slider.pagination.bullets[this.slider.activeIndex];\n if (previousBullet) {\n previousBullet.removeAttribute('aria-current');\n }\n if (currentBullet) {\n currentBullet.setAttribute('aria-current', 'true');\n }\n }\n\n // Do not update slide visibility if there is a parent carousel's hidden slide\n if (this.selectors.parentSlide && !this.selectors.parentSlide.classList.contains(this.classes.visible)) {\n return;\n }\n Array.from(this.slider.slides).forEach((slide) => {\n if (slide.classList.contains(this.classes.visible) || this.state.expanded) {\n this.showElement(slide, false);\n } else {\n this.hideElement(slide, false);\n }\n slide.querySelectorAll('[data-component=\"global/Carousel\"]').forEach((nestedCarousel) => {\n Registry.afterRegistered(nestedCarousel).then(() => {\n trigger('carousel.update', nestedCarousel);\n });\n });\n });\n }\n\n /**\n * Sets duplicate slide data to first child\n * It is used in analytics\n * @param {HTMLElement} slide element\n */\n setDuplicateSlideState(slide) {\n if (slide.firstElementChild) {\n slide.firstElementChild.setAttribute('data-is-duplicate', true);\n }\n }\n\n /**\n * Sets data-index attribute to first childs of carousel slides\n * It is used in analytics\n */\n setSlidesIndex() {\n Array.from(this.slider.slides).forEach((slide, index, array) => {\n if (slide.firstElementChild) {\n slide.firstElementChild.setAttribute('data-index', slide.getAttribute('data-swiper-slide-index') || index);\n }\n if (!slide.hasAttribute('aria-label')) {\n const ariaLabel = this.options.a11y.carouselItemAriaLabel.replace('{0}', index + 1).replace('{1}', array.length);\n slide.setAttribute('aria-label', ariaLabel);\n }\n if (!slide.hasAttribute('data-index')) {\n slide.setAttribute('data-index', index);\n }\n });\n }\n\n /**\n * ScrollTo event handler\n *\n * @param {Object} event Event object\n */\n onScrollTo(event) {\n const { index } = event.detail;\n\n this.goTo(index, event.detail.speed);\n }\n\n /**\n * If breakpoint is changed (i.e. Tablet rotation or browser resize) Re-init Swiper carousel with new options\n */\n onMediaQueryChange() {\n if (this.slider) {\n this.unbindSliderEvents();\n this.slider.destroy(false, true);\n this.initState();\n this.afterInit();\n }\n }\n\n /**\n * Get current slide\n *\n * @returns {Number} Active index of the current slide\n */\n getCurrentSlide() {\n const currentSlide = this.slider.slides[this.slider.activeIndex];\n\n return {\n index: this.slider.activeIndex,\n slide: currentSlide,\n isVideo: currentSlide ? currentSlide.hasAttribute('data-video') : false,\n };\n }\n\n /**\n * Gets analytics data of carousel item\n *\n * @param {HTMLElement} carouselItem element\n * @returns {Object} analytics data\n */\n getAnalyticsData(carouselItem) {\n let data;\n\n if (!carouselItem) {\n return data;\n }\n\n const analytics = carouselItem.getAttribute('data-analytics');\n\n if (analytics) {\n try {\n data = JSON.parse(analytics);\n } catch (e) {\n if (window.lora.debug) {\n console.error(`Please check that the data-analytics you have passed for \"${carouselItem}\" respect JSON format`);\n }\n }\n }\n\n return data;\n }\n\n /**\n * Disable Carousel - detach all events and hidden navigation elements\n */\n disableCarousel() {\n this.slider.detachEvents();\n this.slider.enabled = false;\n // Update classes\n this.element.classList.add(this.classes.disabled);\n this.element.removeAttribute('aria-roledescription');\n this.slider.wrapperEl.classList.add(this.classes.disabled);\n Array.from(this.slider.slides).forEach((slide) => {\n slide.removeAttribute('aria-roledescription');\n slide.removeAttribute('role');\n });\n if (this.options.showPagination) {\n this.hideElement(this.slider.pagination.el, true);\n }\n if (this.options.showScrollbar) {\n this.hideElement(this.slider.scrollbar.el, true);\n }\n }\n\n /**\n * Enable Carousel - attach all events and show navigation elements\n */\n enableCarousel() {\n this.slider.attachEvents();\n this.slider.enabled = true;\n // Update classes\n this.element.classList.remove(this.classes.disabled);\n this.element.setAttribute('aria-roledescription', 'carousel');\n this.slider.wrapperEl.classList.remove(this.classes.disabled);\n Array.from(this.slider.slides).forEach((slide) => {\n slide.setAttribute('aria-roledescription', 'slide');\n slide.setAttribute('role', 'group');\n });\n\n if (this.options.showPagination) {\n this.showElement(this.slider.pagination.el, true);\n }\n if (this.options.showScrollbar) {\n this.showElement(this.slider.scrollbar.el, true);\n }\n }\n\n /** Actions * */\n\n /**\n * Start Autoplay\n */\n startAutoplay() {\n if (this.selectors.carouselAutoplay) {\n this.selectors.carouselAutoplay.classList.remove('m-active');\n this.selectors.carouselAutoplay.setAttribute('aria-label', this.options.a11y.autoplayAriaLabelStop);\n }\n\n this.slider.autoplay.start();\n }\n\n /**\n * Stop Autoplay\n */\n stopAutoplay() {\n if (this.selectors.carouselAutoplay) {\n this.selectors.carouselAutoplay.classList.add('m-active');\n this.selectors.carouselAutoplay.setAttribute('aria-label', this.options.a11y.autoplayAriaLabelPlay);\n }\n\n this.slider.autoplay.stop();\n }\n\n /**\n * Next Slide\n */\n next() {\n this.slider.slideNext();\n }\n\n /**\n * Previous Slide\n */\n previous() {\n this.slider.slidePrev();\n }\n\n /**\n * Reset to first slide\n */\n reset() {\n if (this.options.loop) {\n this.slider.slideToLoop(0);\n } else {\n this.slider.slideTo(0);\n }\n }\n\n /**\n * Go to needed slide\n *\n * @param {Number} index of needed slide\n * @param {Number} speed of slide animation\n */\n goTo(index, speed) {\n if (typeof index === 'number' && !this.state.expanded) {\n if (this.options.loop) {\n this.slider.slideToLoop(index, speed);\n } else {\n this.slider.slideTo(index, speed);\n }\n }\n }\n\n /**\n * Pause not active slide or start playing active one\n */\n playSlideVideo() {\n if (!this.state.hasVideos) {\n return;\n }\n\n // stop previous video slide, if any\n if (this.state.currentVideo) {\n trigger('video.player.pause', this.state.currentVideo);\n }\n\n // play current video slide\n const currentSlide = this.getCurrentSlide();\n this.state.currentVideo = currentSlide.slide && currentSlide.slide.querySelector('[data-js-video-container]');\n\n if (currentSlide.isVideo) {\n trigger('video.player.play', this.state.currentVideo, { time: 0 });\n }\n }\n\n /**\n * Hide element.\n * @param {HTMLElement} element - HTML element\n * @param {boolean} useHiddenClass - use a hidden class to hide the element visually,\n * if false, only aria attribute will be used (e.g. to hide the carousel slide outside of the viewport)\n */\n hideElement(element, useHiddenClass) {\n if (element && element instanceof HTMLElement) {\n if (useHiddenClass) {\n element.classList.add(this.classes.hidden);\n } else {\n element.setAttribute('aria-hidden', 'true');\n }\n\n element.dataset.jsCarouselItemVisible = false;\n\n const focusableElements = super.getFocusableElements(element, true, true);\n\n focusableElements.forEach((item) => {\n if (item.hasAttribute('tabindex') && item.getAttribute('tabindex') !== '-1') {\n item.setAttribute('data-js-original-tabindex', item.getAttribute('tabindex'));\n }\n item.setAttribute('tabindex', '-1');\n });\n }\n }\n\n /**\n * Show element.\n * @param {HTMLElement} element - HTML element\n * @param {boolean} useHiddenClass - use a hidden class to show the element hidden visually via class,\n * if false, only aria attribute will be used (e.g. to show the carousel slide coming into the viewport)\n */\n showElement(element, useHiddenClass) {\n if (element && element instanceof HTMLElement) {\n if (useHiddenClass) {\n element.classList.remove(this.classes.hidden);\n } else {\n element.removeAttribute('aria-hidden');\n }\n\n element.dataset.jsCarouselItemVisible = true;\n\n const focusableElements = super.getFocusableElements(element, true, true);\n\n focusableElements.forEach((item) => {\n // Do not show element if it's located within a hidden slide\n const slide = item.closest('[data-js-carousel-item]');\n if (slide && !slide.classList.contains(this.classes.visible)) {\n return;\n }\n if (item.getAttribute('tabindex') === '-1' && !item.getAttribute('disabled')) {\n if (item.hasAttribute('data-js-original-tabindex')) {\n item.setAttribute('tabindex', item.getAttribute('data-js-original-tabindex'));\n } else {\n item.removeAttribute('tabindex');\n }\n }\n });\n }\n }\n\n /**\n * Unbind custom select event\n */\n unbindSliderEvents() {\n if (this.slider.params.showArrows) {\n if (this.slider.navigation.nextEl) {\n off('click', this.slider.navigation.nextEl, this.onNextArrowClick.bind(this));\n off('mousemove pointermove touchmove', this.slider.navigation.nextEl);\n }\n if (this.slider.navigation.prevEl) {\n off('click', this.slider.navigation.prevEl, this.onPrevArrowClick.bind(this));\n off('mousemove pointermove touchmove', this.slider.navigation.prevEl);\n }\n }\n if (this.slider.params.showPagination && this.slider.pagination.el) {\n off('click', this.slider.pagination.el);\n off('mousemove pointermove touchmove', this.slider.pagination.el);\n }\n if (this.options.autoplay && this.selectors.carouselAutoplay) {\n off('click', this.selectors.carouselAutoplay);\n }\n }\n\n /**\n * Destroy is called automatically after the component is being removed from the DOM\n * You must always destroy the listeners attached to an element to avoid any memory leaks\n */\n destroy() {\n if (this.slider) {\n this.unbindSliderEvents();\n this.slider.destroy();\n this.slider = null;\n }\n if (this.options.isDynamicContent) {\n this.state.mutationObserver.disconnect();\n }\n off(this.element);\n }\n}\n"],"mappings":"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","ignoreList":[]}