{"version":3,"file":"431.min.js?t=1743173738202","mappings":"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","sources":["webpack://@hero-digital/masonite/./src/components/modules/Carousel/Carousel.js"],"sourcesContent":["// core version + navigation, pagination modules:\nimport Swiper, { A11y, Navigation, Pagination, EffectFade } from 'swiper'\n\n// Utils\nimport Services from 'services'\n\n/**\n * Carousel Component Class\n */\n\nexport default class Carousel {\n\tstatic SELECTORS = {\n\t\tCAROUSEL: '[data-carousel]',\n\t\tCONTROL_PAGINATION: '[data-carousel-control=\"pagination\"',\n\t\tCONTROL_NEXT: '[data-carousel-control=\"next\"]',\n\t\tCONTROL_PREV: '[data-carousel-control=\"prev\"]'\n\t}\n\n\tstatic CLASSES = {\n\t\tPAGINATION_BULLET: 'mod-carousel__pagination-bullet',\n\t\tPAGINATION_BULLET_ACTIVE: 'mod-carousel__pagination-bullet--active',\n\t\tPAGINATION_HIDDEN: 'mod-carousel__pagination--hidden',\n\t\tBUTTON_HIDDEN: 'mod-carousel__button--hidden',\n\t\tDISPLAY_OVERFLOW: 'mod-carousel__slides-container--display-overflow',\n\n\t\tGOTO_PREVIOUS: 'goto-prev',\n\t\tGOTO_NEXT: 'goto-next',\n\t\tSLIDE_IN_TRANSIT: 'slide-in-transit'\n\t}\n\n\tstatic BREAKPOINTS = {\n\t\tSMALL: 360,\n\t\tMEDIUM: 768,\n\t\tLARGE: 1440\n\t}\n\n\tstatic TRANSITIONS = {\n\t\tSLIDE: 'slide',\n\t\tFADE: 'fade'\n\t}\n\n\tstatic EVENTS = {\n\t\tSLIDE_RESIZE: 'carouselSlideResize'\n\t}\n\n\tconstructor(element) {\n\t\tthis.element = element\n\t\tthis.id = this.element.id\n\t\tthis.carousel = null\n\t\tthis.service = Services.getInstance()\n\n\t\tthis.cacheDom()\n\t\tthis.createCarousel()\n\t\tthis.attachEvents()\n\t\tthis.toggleControls()\n\t}\n\n\t/**\n\t * Cache DOM elements\n\t */\n\tcacheDom() {\n\t\tthis.carouselEl = this.element.querySelector(Carousel.SELECTORS.CAROUSEL)\n\t\tthis.controlPagination = this.element.querySelector(\n\t\t\tCarousel.SELECTORS.CONTROL_PAGINATION\n\t\t)\n\t\tthis.controlNext = this.element.querySelector(\n\t\t\tCarousel.SELECTORS.CONTROL_NEXT\n\t\t)\n\t\tthis.controlPrev = this.element.querySelector(\n\t\t\tCarousel.SELECTORS.CONTROL_PREV\n\t\t)\n\t}\n\n\t/**\n\t * Add event listeners\n\t */\n\tattachEvents() {\n\t\tthis.service.EventEmitterService.on(\n\t\t\tCarousel.EVENTS.SLIDE_RESIZE,\n\t\t\tthis.updateHeight\n\t\t)\n\n\t\tthis.carousel.on('resize', this.toggleControls)\n\n\t\t// Listen for Swiper's slideChange event and emit a custom slide change event\n\t\tthis.carousel.on('slideChange', this.emitSlideChangeEvent)\n\t}\n\n\t/**\n\t * Remove event listeners\n\t */\n\tremoveEvents() {\n\t\tthis.service.EventEmitterService.off(\n\t\t\tCarousel.EVENTS.SLIDE_RESIZE,\n\t\t\tthis.updateHeight\n\t\t)\n\n\t\tthis.carousel.off('resize', this.toggleControls)\n\n\t\tthis.carousel.off('slideChange', this.emitSlideChangeEvent)\n\t}\n\n\t/**\n\t * Destroy the carousel instance and remove event listeners\n\t */\n\tdestroy() {\n\t\tthis.removeEvents()\n\t\tthis.carousel.destroy()\n\t}\n\n\t/**\n\t * Create the carousel instance and add the navigation and pagination\n\t */\n\tcreateCarousel() {\n\t\tconst config = {\n\t\t\tpagination: {\n\t\t\t\tel: this.controlPagination,\n\t\t\t\ttype: 'bullets',\n\t\t\t\tbulletClass: Carousel.CLASSES.PAGINATION_BULLET,\n\t\t\t\tbulletActiveClass: Carousel.CLASSES.PAGINATION_BULLET_ACTIVE,\n\t\t\t\tclickable: false\n\t\t\t},\n\t\t\tnavigation: {\n\t\t\t\tnextEl: this.controlNext,\n\t\t\t\tprevEl: this.controlPrev\n\t\t\t},\n\t\t\ta11y: {\n\t\t\t\tprevSlideMessage: this.controlPrev.getAttribute('aria-label'),\n\t\t\t\tnextSlideMessage: this.controlNext.getAttribute('aria-label')\n\t\t\t},\n\t\t\tsimulateTouch: false,\n\t\t\tmodules: [A11y, Navigation, Pagination]\n\t\t}\n\t\tconst transition = this.element.dataset.transition\n\t\tconst isLoop = this.element.dataset.loop === 'true'\n\t\tconst breakpoints = this.#getCarouselBreakpointsConfig()\n\n\t\tif (this.element.dataset.displayOverflow === 'true') {\n\t\t\tthis.carouselEl.classList.add(Carousel.CLASSES.DISPLAY_OVERFLOW)\n\t\t}\n\n\t\tif (isLoop) {\n\t\t\tconfig.loop = true\n\t\t}\n\n\t\tif (breakpoints) {\n\t\t\tconfig.breakpoints = breakpoints\n\t\t}\n\n\t\tif (transition === Carousel.TRANSITIONS.FADE) {\n\t\t\t// cross fade options\n\t\t\tconfig.effect = 'fade'\n\t\t\tconfig.fadeEffect = {\n\t\t\t\tcrossFade: true\n\t\t\t}\n\t\t\tconfig.autoHeight = true\n\t\t\tconfig.modules.push(EffectFade)\n\t\t}\n\n\t\tthis.carousel = new Swiper(this.carouselEl, config)\n\t}\n\n\t#getCarouselBreakpointsConfig = () => {\n\t\tconst slidesCountSm = this.element.dataset.slidesCountSm\n\t\tconst slidesCountMd = this.element.dataset.slidesCountMd\n\t\tconst slidesCountLg = this.element.dataset.slidesCountLg\n\n\t\tconst breakpoints = {}\n\n\t\tif (slidesCountSm) {\n\t\t\tbreakpoints[Carousel.BREAKPOINTS.SMALL] = {\n\t\t\t\tslidesPerView: slidesCountSm,\n\t\t\t\tspaceBetween: 20\n\t\t\t}\n\t\t}\n\n\t\tif (slidesCountMd) {\n\t\t\tbreakpoints[Carousel.BREAKPOINTS.MEDIUM] = {\n\t\t\t\tslidesPerView: slidesCountMd,\n\t\t\t\tspaceBetween: 24\n\t\t\t}\n\t\t}\n\n\t\tif (slidesCountLg) {\n\t\t\tbreakpoints[Carousel.BREAKPOINTS.LARGE] = {\n\t\t\t\tslidesPerView: slidesCountLg,\n\t\t\t\tspaceBetween: 32\n\t\t\t}\n\t\t}\n\n\t\treturn Object.keys(breakpoints).length > 0 ? breakpoints : null\n\t}\n\n\t/**\n\t * Toggle the visibility of the pagination and navigation controls based on the number of visible slides\n\t */\n\ttoggleControls = () => {\n\t\tconst totalVisibleSlides = this.#getTotalVisibleSlides()\n\t\tconst totalSlides = this.carousel?.slides?.length || 0\n\t\tconst action = totalVisibleSlides >= totalSlides ? 'add' : 'remove'\n\n\t\tthis.controlPagination.classList[action](Carousel.CLASSES.PAGINATION_HIDDEN)\n\t\tthis.controlNext.classList[action](Carousel.CLASSES.BUTTON_HIDDEN)\n\t\tthis.controlPrev.classList[action](Carousel.CLASSES.BUTTON_HIDDEN)\n\t}\n\n\t/**\n\t * Get the number of visible slides in the carousel\n\t * @returns {Number} - the number of visible slides\n\t */\n\t#getTotalVisibleSlides = () => {\n\t\tif (this.carousel.params.effect === 'fade') {\n\t\t\treturn this.carousel.visibleSlides?.length || 1\n\t\t}\n\n\t\tconst container = this.carousel.el\n\t\tconst slides = Array.from(this.carousel?.slides || [])\n\n\t\tconst visibleSlides = slides.filter((slide) => {\n\t\t\tconst slideRect = slide.getBoundingClientRect()\n\t\t\tconst containerRect = container.getBoundingClientRect()\n\n\t\t\treturn (\n\t\t\t\tMath.floor(slideRect.right) <= Math.floor(containerRect.right) &&\n\t\t\t\tMath.floor(slideRect.left) >= Math.floor(containerRect.left)\n\t\t\t)\n\t\t})\n\n\t\treturn visibleSlides.length\n\t}\n\n\t/**\n\t * Emit an event on slide change\n\t */\n\temitSlideChangeEvent = () => {\n\t\tthis.service.EventEmitterService.emit('slideChanged', this.id)\n\t}\n\n\t/**\n\t *  Update the height of the carousel when a slide is resized\n\t * @param {String} id - the id of the carousel\n\t * @returns\n\t */\n\tupdateHeight = (id) => {\n\t\tif (id === this.id) {\n\t\t\tthis.carousel.update()\n\t\t}\n\t}\n}\n"],"names":["Carousel","static","CAROUSEL","CONTROL_PAGINATION","CONTROL_NEXT","CONTROL_PREV","PAGINATION_BULLET","PAGINATION_BULLET_ACTIVE","PAGINATION_HIDDEN","BUTTON_HIDDEN","DISPLAY_OVERFLOW","GOTO_PREVIOUS","GOTO_NEXT","SLIDE_IN_TRANSIT","SMALL","MEDIUM","LARGE","SLIDE","FADE","SLIDE_RESIZE","constructor","element","this","id","carousel","service","Services","getInstance","cacheDom","createCarousel","attachEvents","toggleControls","carouselEl","querySelector","SELECTORS","controlPagination","controlNext","controlPrev","EventEmitterService","on","EVENTS","updateHeight","emitSlideChangeEvent","removeEvents","off","destroy","config","pagination","el","type","bulletClass","CLASSES","bulletActiveClass","clickable","navigation","nextEl","prevEl","a11y","prevSlideMessage","getAttribute","nextSlideMessage","simulateTouch","modules","A11y","Navigation","Pagination","transition","dataset","isLoop","loop","breakpoints","displayOverflow","classList","add","TRANSITIONS","effect","fadeEffect","crossFade","autoHeight","push","EffectFade","Swiper","#getCarouselBreakpointsConfig","slidesCountSm","slidesCountMd","slidesCountLg","BREAKPOINTS","slidesPerView","spaceBetween","Object","keys","length","action","slides","#getTotalVisibleSlides","params","visibleSlides","container","Array","from","filter","slide","slideRect","getBoundingClientRect","containerRect","Math","floor","right","left","emit","update"],"sourceRoot":""}