{"version":3,"file":"carousel.es-61c7dd0d.js","sources":["../../node_modules/vue3-carousel/dist/carousel.es.js"],"sourcesContent":["/**\n * Vue 3 Carousel 0.2.12\n * (c) 2023\n * @license MIT\n */\nimport { defineComponent, inject, ref, h, reactive, provide, onMounted, nextTick, onUnmounted, computed, watch, cloneVNode } from 'vue';\n\nconst defaultConfigs = {\r\n itemsToShow: 1,\r\n itemsToScroll: 1,\r\n modelValue: 0,\r\n transition: 300,\r\n autoplay: 0,\r\n snapAlign: 'center',\r\n wrapAround: false,\r\n throttle: 16,\r\n pauseAutoplayOnHover: false,\r\n mouseDrag: true,\r\n touchDrag: true,\r\n dir: 'ltr',\r\n breakpoints: undefined,\r\n};\n\nconst carouselProps = {\r\n // count of items to showed per view\r\n itemsToShow: {\r\n default: defaultConfigs.itemsToShow,\r\n type: Number,\r\n },\r\n // count of items to be scrolled\r\n itemsToScroll: {\r\n default: defaultConfigs.itemsToScroll,\r\n type: Number,\r\n },\r\n // control infinite scrolling mode\r\n wrapAround: {\r\n default: defaultConfigs.wrapAround,\r\n type: Boolean,\r\n },\r\n // control max drag\r\n throttle: {\r\n default: defaultConfigs.throttle,\r\n type: Number,\r\n },\r\n // control snap position alignment\r\n snapAlign: {\r\n default: defaultConfigs.snapAlign,\r\n validator(value) {\r\n // The value must match one of these strings\r\n return ['start', 'end', 'center', 'center-even', 'center-odd'].includes(value);\r\n },\r\n },\r\n // sliding transition time in ms\r\n transition: {\r\n default: defaultConfigs.transition,\r\n type: Number,\r\n },\r\n // an object to store breakpoints\r\n breakpoints: {\r\n default: defaultConfigs.breakpoints,\r\n type: Object,\r\n },\r\n // time to auto advance slides in ms\r\n autoplay: {\r\n default: defaultConfigs.autoplay,\r\n type: Number,\r\n },\r\n // pause autoplay when mouse hover over the carousel\r\n pauseAutoplayOnHover: {\r\n default: defaultConfigs.pauseAutoplayOnHover,\r\n type: Boolean,\r\n },\r\n // slide number number of initial slide\r\n modelValue: {\r\n default: undefined,\r\n type: Number,\r\n },\r\n // toggle mouse dragging.\r\n mouseDrag: {\r\n default: defaultConfigs.mouseDrag,\r\n type: Boolean,\r\n },\r\n // toggle mouse dragging.\r\n touchDrag: {\r\n default: defaultConfigs.touchDrag,\r\n type: Boolean,\r\n },\r\n // control snap position alignment\r\n dir: {\r\n default: defaultConfigs.dir,\r\n validator(value) {\r\n // The value must match one of these strings\r\n return ['rtl', 'ltr'].includes(value);\r\n },\r\n },\r\n // an object to pass all settings\r\n settings: {\r\n default() {\r\n return {};\r\n },\r\n type: Object,\r\n },\r\n};\n\nfunction getMaxSlideIndex({ config, slidesCount }) {\r\n const { snapAlign, wrapAround, itemsToShow = 1 } = config;\r\n if (wrapAround) {\r\n return Math.max(slidesCount - 1, 0);\r\n }\r\n let output;\r\n switch (snapAlign) {\r\n case 'start':\r\n output = slidesCount - itemsToShow;\r\n break;\r\n case 'end':\r\n output = slidesCount - 1;\r\n break;\r\n case 'center':\r\n case 'center-odd':\r\n output = slidesCount - Math.ceil((itemsToShow - 0.5) / 2);\r\n break;\r\n case 'center-even':\r\n output = slidesCount - Math.ceil(itemsToShow / 2);\r\n break;\r\n default:\r\n output = 0;\r\n break;\r\n }\r\n return Math.max(output, 0);\r\n}\n\nfunction getMinSlideIndex({ config, slidesCount }) {\r\n const { wrapAround, snapAlign, itemsToShow = 1 } = config;\r\n let output = 0;\r\n if (wrapAround || itemsToShow > slidesCount) {\r\n return output;\r\n }\r\n switch (snapAlign) {\r\n case 'start':\r\n output = 0;\r\n break;\r\n case 'end':\r\n output = itemsToShow - 1;\r\n break;\r\n case 'center':\r\n case 'center-odd':\r\n output = Math.floor((itemsToShow - 1) / 2);\r\n break;\r\n case 'center-even':\r\n output = Math.floor((itemsToShow - 2) / 2);\r\n break;\r\n default:\r\n output = 0;\r\n break;\r\n }\r\n return output;\r\n}\n\nfunction getNumberInRange({ val, max, min }) {\r\n if (max < min) {\r\n return val;\r\n }\r\n return Math.min(Math.max(val, min), max);\r\n}\n\nfunction getSlidesToScroll({ config, currentSlide, slidesCount }) {\r\n const { snapAlign, wrapAround, itemsToShow = 1 } = config;\r\n let output = currentSlide;\r\n switch (snapAlign) {\r\n case 'center':\r\n case 'center-odd':\r\n output -= (itemsToShow - 1) / 2;\r\n break;\r\n case 'center-even':\r\n output -= (itemsToShow - 2) / 2;\r\n break;\r\n case 'end':\r\n output -= itemsToShow - 1;\r\n break;\r\n }\r\n if (wrapAround) {\r\n return output;\r\n }\r\n return getNumberInRange({\r\n val: output,\r\n max: slidesCount - itemsToShow,\r\n min: 0,\r\n });\r\n}\n\nfunction getSlidesVNodes(vNode) {\r\n var _a, _b, _c, _d;\r\n // Return empty array if there's any node\r\n if (!vNode)\r\n return [];\r\n // Check if the Slides components are added directly without v-for (#72)\r\n if (((_a = vNode[0]) === null || _a === void 0 ? void 0 : _a.children) === \"v-if\" || ((_c = (_b = vNode[0]) === null || _b === void 0 ? void 0 : _b.type) === null || _c === void 0 ? void 0 : _c.name) === 'CarouselSlide')\r\n return vNode.filter((node) => { var _a; return ((_a = node.type) === null || _a === void 0 ? void 0 : _a.name) === \"CarouselSlide\"; });\r\n return ((_d = vNode[0]) === null || _d === void 0 ? void 0 : _d.children) || [];\r\n}\n\nfunction mapNumberToRange({ val, max, min = 0 }) {\r\n if (val > max) {\r\n return mapNumberToRange({ val: val - (max + 1), max, min });\r\n }\r\n if (val < min) {\r\n return mapNumberToRange({ val: val + (max + 1), max, min });\r\n }\r\n return val;\r\n}\n\n/**\r\n * return a throttle version of the function\r\n * Throttling\r\n *\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction throttle(fn, limit) {\r\n let inThrottle;\r\n if (!limit) {\r\n return fn;\r\n }\r\n return function (...args) {\r\n const self = this;\r\n if (!inThrottle) {\r\n fn.apply(self, args);\r\n inThrottle = true;\r\n setTimeout(() => (inThrottle = false), limit);\r\n }\r\n };\r\n}\n\n/**\r\n * return a debounced version of the function\r\n * @param fn\r\n * @param delay\r\n */\r\n// eslint-disable-next-line no-unused-vars\r\nfunction debounce(fn, delay) {\r\n let timerId;\r\n return function (...args) {\r\n if (timerId) {\r\n clearTimeout(timerId);\r\n }\r\n timerId = setTimeout(() => {\r\n fn(...args);\r\n timerId = null;\r\n }, delay);\r\n };\r\n}\n\nvar ARIAComponent = defineComponent({\r\n name: 'ARIA',\r\n setup() {\r\n const currentSlide = inject('currentSlide', ref(0));\r\n const slidesCount = inject('slidesCount', ref(0));\r\n return () => h('div', {\r\n class: ['carousel__liveregion', 'carousel__sr-only'],\r\n 'aria-live': 'polite',\r\n 'aria-atomic': 'true',\r\n }, `Item ${currentSlide.value + 1} of ${slidesCount.value}`);\r\n },\r\n});\n\nvar Carousel = defineComponent({\r\n name: 'Carousel',\r\n props: carouselProps,\r\n setup(props, { slots, emit, expose }) {\r\n var _a;\r\n const root = ref(null);\r\n const slides = ref([]);\r\n const slideWidth = ref(0);\r\n const slidesCount = ref(0);\r\n let breakpoints = ref({});\r\n // generate carousel configs\r\n let __defaultConfig = Object.assign({}, defaultConfigs);\r\n // current config\r\n const config = reactive(Object.assign({}, __defaultConfig));\r\n // slides\r\n const currentSlideIndex = ref((_a = props.modelValue) !== null && _a !== void 0 ? _a : 0);\r\n const prevSlideIndex = ref(0);\r\n const middleSlideIndex = ref(0);\r\n const maxSlideIndex = ref(0);\r\n const minSlideIndex = ref(0);\r\n let autoplayTimer;\r\n let transitionTimer;\r\n provide('config', config);\r\n provide('slidesCount', slidesCount);\r\n provide('currentSlide', currentSlideIndex);\r\n provide('maxSlide', maxSlideIndex);\r\n provide('minSlide', minSlideIndex);\r\n provide('slideWidth', slideWidth);\r\n /**\r\n * Configs\r\n */\r\n function initDefaultConfigs() {\r\n // generate carousel configs\r\n const mergedConfigs = Object.assign(Object.assign({}, props), props.settings);\r\n // Set breakpoints\r\n breakpoints = ref(Object.assign({}, mergedConfigs.breakpoints));\r\n // remove extra values\r\n __defaultConfig = Object.assign(Object.assign({}, mergedConfigs), { settings: undefined, breakpoints: undefined });\r\n bindConfigs(__defaultConfig);\r\n }\r\n function updateBreakpointsConfigs() {\r\n const breakpointsArray = Object.keys(breakpoints.value)\r\n .map((key) => Number(key))\r\n .sort((a, b) => +b - +a);\r\n let newConfig = Object.assign({}, __defaultConfig);\r\n breakpointsArray.some((breakpoint) => {\r\n const isMatched = window.matchMedia(`(min-width: ${breakpoint}px)`).matches;\r\n if (isMatched) {\r\n newConfig = Object.assign(Object.assign({}, newConfig), breakpoints.value[breakpoint]);\r\n return true;\r\n }\r\n return false;\r\n });\r\n bindConfigs(newConfig);\r\n }\r\n function bindConfigs(newConfig) {\r\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n //@ts-ignore\r\n Object.entries(newConfig).forEach(([key, val]) => (config[key] = val));\r\n }\r\n const handleWindowResize = debounce(() => {\r\n if (Object.keys(breakpoints.value).length) {\r\n updateBreakpointsConfigs();\r\n updateSlidesData();\r\n }\r\n updateSlideWidth();\r\n }, 16);\r\n /**\r\n * Setup functions\r\n */\r\n function updateSlideWidth() {\r\n if (!root.value)\r\n return;\r\n const rect = root.value.getBoundingClientRect();\r\n slideWidth.value = rect.width / config.itemsToShow;\r\n }\r\n function updateSlidesData() {\r\n if (slidesCount.value <= 0)\r\n return;\r\n middleSlideIndex.value = Math.ceil((slidesCount.value - 1) / 2);\r\n maxSlideIndex.value = getMaxSlideIndex({ config, slidesCount: slidesCount.value });\r\n minSlideIndex.value = getMinSlideIndex({ config, slidesCount: slidesCount.value });\r\n if (!config.wrapAround) {\r\n currentSlideIndex.value = getNumberInRange({\r\n val: currentSlideIndex.value,\r\n max: maxSlideIndex.value,\r\n min: minSlideIndex.value,\r\n });\r\n }\r\n }\r\n onMounted(() => {\r\n if (Object.keys(breakpoints.value).length) {\r\n updateBreakpointsConfigs();\r\n }\r\n nextTick(() => {\r\n updateSlidesData();\r\n updateSlideWidth();\r\n createDragListener();\r\n emit('init');\r\n });\r\n initAutoplay();\r\n window.addEventListener('resize', handleWindowResize, { passive: true });\r\n });\r\n onUnmounted(() => {\r\n if (transitionTimer) {\r\n clearTimeout(transitionTimer);\r\n }\r\n if (autoplayTimer) {\r\n clearInterval(autoplayTimer);\r\n }\r\n /**\r\n * use the same options as in onMounted\r\n * https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/removeEventListener#Matching_event_listeners_for_removal\r\n */\r\n window.removeEventListener('resize', handleWindowResize, {\r\n passive: true,\r\n });\r\n });\r\n /**\r\n * Carousel Event listeners\r\n */\r\n let isTouch = false;\r\n const startPosition = { x: 0, y: 0 };\r\n const endPosition = { x: 0, y: 0 };\r\n const dragged = reactive({ x: 0, y: 0 });\r\n const isHover = ref(false);\r\n const handleMouseEnter = () => {\r\n isHover.value = true;\r\n };\r\n const handleMouseLeave = () => {\r\n isHover.value = false;\r\n };\r\n function handleDragStart(event) {\r\n if (['INPUT', 'TEXTAREA'].includes(event.target.tagName)) {\r\n return;\r\n }\r\n isTouch = event.type === 'touchstart';\r\n if ((!isTouch && event.button !== 0) || isSliding.value) {\r\n return;\r\n }\r\n if (!isTouch) {\r\n event.preventDefault();\r\n }\r\n startPosition.x = isTouch ? event.touches[0].clientX : event.clientX;\r\n startPosition.y = isTouch ? event.touches[0].clientY : event.clientY;\r\n document.addEventListener(isTouch ? 'touchmove' : 'mousemove', handleDragging, true);\r\n document.addEventListener(isTouch ? 'touchend' : 'mouseup', handleDragEnd, true);\r\n }\r\n let handleDragging = () => { };\r\n function createDragListener() {\r\n var _a;\r\n handleDragging = throttle((event) => {\r\n endPosition.x = isTouch ? event.touches[0].clientX : event.clientX;\r\n endPosition.y = isTouch ? event.touches[0].clientY : event.clientY;\r\n const deltaX = endPosition.x - startPosition.x;\r\n const deltaY = endPosition.y - startPosition.y;\r\n dragged.y = deltaY;\r\n dragged.x = deltaX;\r\n }, (_a = config.throttle) !== null && _a !== void 0 ? _a : 16);\r\n }\r\n function handleDragEnd() {\r\n const direction = config.dir === 'rtl' ? -1 : 1;\r\n const tolerance = Math.sign(dragged.x) * 0.4;\r\n const draggedSlides = Math.round(dragged.x / slideWidth.value + tolerance) * direction;\r\n // Prevent clicking if there is clicked slides\r\n if (draggedSlides && !isTouch) {\r\n const captureClick = (e) => {\r\n e.stopPropagation();\r\n window.removeEventListener('click', captureClick, true);\r\n };\r\n window.addEventListener('click', captureClick, true);\r\n }\r\n slideTo(currentSlideIndex.value - draggedSlides);\r\n dragged.x = 0;\r\n dragged.y = 0;\r\n document.removeEventListener(isTouch ? 'touchmove' : 'mousemove', handleDragging, true);\r\n document.removeEventListener(isTouch ? 'touchend' : 'mouseup', handleDragEnd, true);\r\n }\r\n /**\r\n * Autoplay\r\n */\r\n function initAutoplay() {\r\n if (!config.autoplay || config.autoplay <= 0) {\r\n return;\r\n }\r\n autoplayTimer = setInterval(() => {\r\n if (config.pauseAutoplayOnHover && isHover.value) {\r\n return;\r\n }\r\n next();\r\n }, config.autoplay);\r\n }\r\n function resetAutoplay() {\r\n if (autoplayTimer) {\r\n clearInterval(autoplayTimer);\r\n autoplayTimer = null;\r\n }\r\n initAutoplay();\r\n }\r\n /**\r\n * Navigation function\r\n */\r\n const isSliding = ref(false);\r\n function slideTo(slideIndex) {\r\n const currentVal = config.wrapAround\r\n ? slideIndex\r\n : getNumberInRange({\r\n val: slideIndex,\r\n max: maxSlideIndex.value,\r\n min: minSlideIndex.value,\r\n });\r\n if (currentSlideIndex.value === currentVal || isSliding.value) {\r\n return;\r\n }\r\n emit('slide-start', {\r\n slidingToIndex: slideIndex,\r\n currentSlideIndex: currentSlideIndex.value,\r\n prevSlideIndex: prevSlideIndex.value,\r\n slidesCount: slidesCount.value,\r\n });\r\n isSliding.value = true;\r\n prevSlideIndex.value = currentSlideIndex.value;\r\n currentSlideIndex.value = currentVal;\r\n transitionTimer = setTimeout(() => {\r\n if (config.wrapAround) {\r\n const mappedNumber = mapNumberToRange({\r\n val: currentVal,\r\n max: maxSlideIndex.value,\r\n min: 0,\r\n });\r\n if (mappedNumber !== currentSlideIndex.value) {\r\n currentSlideIndex.value = mappedNumber;\r\n emit('loop', {\r\n currentSlideIndex: currentSlideIndex.value,\r\n slidingToIndex: slideIndex,\r\n });\r\n }\r\n }\r\n emit('update:modelValue', currentSlideIndex.value);\r\n emit('slide-end', {\r\n currentSlideIndex: currentSlideIndex.value,\r\n prevSlideIndex: prevSlideIndex.value,\r\n slidesCount: slidesCount.value,\r\n });\r\n isSliding.value = false;\r\n resetAutoplay();\r\n }, config.transition);\r\n }\r\n function next() {\r\n slideTo(currentSlideIndex.value + config.itemsToScroll);\r\n }\r\n function prev() {\r\n slideTo(currentSlideIndex.value - config.itemsToScroll);\r\n }\r\n const nav = { slideTo, next, prev };\r\n provide('nav', nav);\r\n provide('isSliding', isSliding);\r\n /**\r\n * Track style\r\n */\r\n const slidesToScroll = computed(() => getSlidesToScroll({\r\n config,\r\n currentSlide: currentSlideIndex.value,\r\n slidesCount: slidesCount.value,\r\n }));\r\n provide('slidesToScroll', slidesToScroll);\r\n const trackStyle = computed(() => {\r\n const direction = config.dir === 'rtl' ? -1 : 1;\r\n const xScroll = slidesToScroll.value * slideWidth.value * direction;\r\n return {\r\n transform: `translateX(${dragged.x - xScroll}px)`,\r\n transition: `${isSliding.value ? config.transition : 0}ms`,\r\n margin: config.wrapAround ? `0 -${slidesCount.value * slideWidth.value}px` : '',\r\n width: `100%`,\r\n };\r\n });\r\n function restartCarousel() {\r\n initDefaultConfigs();\r\n updateBreakpointsConfigs();\r\n updateSlidesData();\r\n updateSlideWidth();\r\n resetAutoplay();\r\n }\r\n // Update the carousel on props change\r\n Object.keys(carouselProps).forEach((prop) => {\r\n if (['modelValue'].includes(prop))\r\n return;\r\n watch(() => props[prop], restartCarousel);\r\n });\r\n // Handle changing v-model value\r\n watch(() => props['modelValue'], (val) => {\r\n if (val !== currentSlideIndex.value) {\r\n slideTo(Number(val));\r\n }\r\n });\r\n // Handel when slides added/removed\r\n watch(slidesCount, updateSlidesData);\r\n // Init carousel\r\n initDefaultConfigs();\r\n const data = {\r\n config,\r\n slidesCount,\r\n slideWidth,\r\n next,\r\n prev,\r\n slideTo,\r\n currentSlide: currentSlideIndex,\r\n maxSlide: maxSlideIndex,\r\n minSlide: minSlideIndex,\r\n middleSlide: middleSlideIndex,\r\n };\r\n expose({\r\n updateBreakpointsConfigs,\r\n updateSlidesData,\r\n updateSlideWidth,\r\n initDefaultConfigs,\r\n restartCarousel,\r\n slideTo,\r\n next,\r\n prev,\r\n nav,\r\n data,\r\n });\r\n const slotSlides = slots.default || slots.slides;\r\n const slotAddons = slots.addons;\r\n const slotsProps = reactive(data);\r\n return () => {\r\n const slidesElements = getSlidesVNodes(slotSlides === null || slotSlides === void 0 ? void 0 : slotSlides(slotsProps));\r\n const addonsElements = (slotAddons === null || slotAddons === void 0 ? void 0 : slotAddons(slotsProps)) || [];\r\n slidesElements.forEach((el, index) => (el.props.index = index));\r\n let output = slidesElements;\r\n if (config.wrapAround) {\r\n const slidesBefore = slidesElements.map((el, index) => cloneVNode(el, {\r\n index: -slidesElements.length + index,\r\n isClone: true,\r\n key: `clone-before-${index}`,\r\n }));\r\n const slidesAfter = slidesElements.map((el, index) => cloneVNode(el, {\r\n index: slidesElements.length + index,\r\n isClone: true,\r\n key: `clone-after-${index}`,\r\n }));\r\n output = [...slidesBefore, ...slidesElements, ...slidesAfter];\r\n }\r\n slides.value = slidesElements;\r\n slidesCount.value = Math.max(slidesElements.length, 1);\r\n const trackEl = h('ol', {\r\n class: 'carousel__track',\r\n style: trackStyle.value,\r\n onMousedownCapture: config.mouseDrag\r\n ? handleDragStart\r\n : null,\r\n onTouchstartPassiveCapture: config.touchDrag\r\n ? handleDragStart\r\n : null,\r\n }, output);\r\n const viewPortEl = h('div', { class: 'carousel__viewport' }, trackEl);\r\n return h('section', {\r\n ref: root,\r\n class: {\r\n carousel: true,\r\n 'carousel--rtl': config.dir === 'rtl',\r\n },\r\n dir: config.dir,\r\n 'aria-label': 'Gallery',\r\n tabindex: '0',\r\n onMouseenter: handleMouseEnter,\r\n onMouseleave: handleMouseLeave,\r\n }, [viewPortEl, addonsElements, h(ARIAComponent)]);\r\n };\r\n },\r\n});\n\nconst icons = {\r\n arrowUp: 'M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z',\r\n arrowDown: 'M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z',\r\n arrowRight: 'M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z',\r\n arrowLeft: 'M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z',\r\n};\n\nconst Icon = (props) => {\r\n const iconName = props.name;\r\n if (!iconName || typeof iconName !== 'string') {\r\n return;\r\n }\r\n const path = icons[iconName];\r\n const pathEl = h('path', { d: path });\r\n const iconTitle = (props.title || iconName);\r\n const titleEl = h('title', iconTitle);\r\n return h('svg', {\r\n class: 'carousel__icon',\r\n viewBox: '0 0 24 24',\r\n role: 'img',\r\n ariaLabel: iconTitle,\r\n }, [titleEl, pathEl]);\r\n};\r\nIcon.props = { name: String, title: String };\n\nconst Navigation = (props, { slots, attrs }) => {\r\n const { next: slotNext, prev: slotPrev } = slots || {};\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\r\n const maxSlide = inject('maxSlide', ref(1));\r\n const minSlide = inject('minSlide', ref(1));\r\n const currentSlide = inject('currentSlide', ref(1));\r\n const nav = inject('nav', {});\r\n const { dir, wrapAround } = config;\r\n const isRTL = dir === 'rtl';\r\n const prevButton = h('button', {\r\n type: 'button',\r\n class: [\r\n 'carousel__prev',\r\n !wrapAround && currentSlide.value <= minSlide.value && 'carousel__prev--disabled',\r\n attrs === null || attrs === void 0 ? void 0 : attrs.class,\r\n ],\r\n 'aria-label': `Navigate to previous slide`,\r\n onClick: nav.prev,\r\n }, (slotPrev === null || slotPrev === void 0 ? void 0 : slotPrev()) || h(Icon, { name: isRTL ? 'arrowRight' : 'arrowLeft' }));\r\n const nextButton = h('button', {\r\n type: 'button',\r\n class: [\r\n 'carousel__next',\r\n !wrapAround && currentSlide.value >= maxSlide.value && 'carousel__next--disabled',\r\n attrs === null || attrs === void 0 ? void 0 : attrs.class,\r\n ],\r\n 'aria-label': `Navigate to next slide`,\r\n onClick: nav.next,\r\n }, (slotNext === null || slotNext === void 0 ? void 0 : slotNext()) || h(Icon, { name: isRTL ? 'arrowLeft' : 'arrowRight' }));\r\n return [prevButton, nextButton];\r\n};\n\nconst Pagination = () => {\r\n const maxSlide = inject('maxSlide', ref(1));\r\n const minSlide = inject('minSlide', ref(1));\r\n const currentSlide = inject('currentSlide', ref(1));\r\n const nav = inject('nav', {});\r\n const isActive = (slide) => mapNumberToRange({\r\n val: currentSlide.value,\r\n max: maxSlide.value,\r\n min: 0,\r\n }) === slide;\r\n const children = [];\r\n for (let slide = minSlide.value; slide < maxSlide.value + 1; slide++) {\r\n const button = h('button', {\r\n type: 'button',\r\n class: {\r\n 'carousel__pagination-button': true,\r\n 'carousel__pagination-button--active': isActive(slide),\r\n },\r\n 'aria-label': `Navigate to slide ${slide + 1}`,\r\n onClick: () => nav.slideTo(slide),\r\n });\r\n const item = h('li', { class: 'carousel__pagination-item', key: slide }, button);\r\n children.push(item);\r\n }\r\n return h('ol', { class: 'carousel__pagination' }, children);\r\n};\n\nvar Slide = defineComponent({\r\n name: 'CarouselSlide',\r\n props: {\r\n index: {\r\n type: Number,\r\n default: 1,\r\n },\r\n isClone: {\r\n type: Boolean,\r\n default: false,\r\n },\r\n },\r\n setup(props, { slots }) {\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\r\n const currentSlide = inject('currentSlide', ref(0));\r\n const slidesToScroll = inject('slidesToScroll', ref(0));\r\n const slideWidth = inject('slideWidth', ref(0));\r\n const isSliding = inject('isSliding', ref(false));\r\n const slideStyle = computed(() => ({\r\n width: slideWidth.value ? `${slideWidth.value}px` : `100%`,\r\n }));\r\n const isActive = () => props.index === currentSlide.value;\r\n const isPrev = () => props.index === currentSlide.value - 1;\r\n const isNext = () => props.index === currentSlide.value + 1;\r\n const isVisible = () => {\r\n const min = Math.floor(slidesToScroll.value);\r\n const max = Math.ceil(slidesToScroll.value + config.itemsToShow - 1);\r\n return props.index >= min && props.index <= max;\r\n };\r\n return () => {\r\n var _a;\r\n return h('li', {\r\n style: slideStyle.value,\r\n class: {\r\n carousel__slide: true,\r\n 'carousel_slide--clone': props.isClone,\r\n 'carousel__slide--visible': isVisible(),\r\n 'carousel__slide--active': isActive(),\r\n 'carousel__slide--prev': isPrev(),\r\n 'carousel__slide--next': isNext(),\r\n 'carousel__slide--sliding': isSliding.value,\r\n },\r\n 'aria-hidden': !isVisible(),\r\n }, (_a = slots.default) === null || _a === void 0 ? void 0 : _a.call(slots));\r\n };\r\n },\r\n});\n\nexport { Carousel, Icon, Navigation, Pagination, Slide };\n"],"names":["defaultConfigs","carouselProps","value","getMaxSlideIndex","config","slidesCount","snapAlign","wrapAround","itemsToShow","output","getMinSlideIndex","getNumberInRange","val","max","min","getSlidesToScroll","currentSlide","getSlidesVNodes","vNode","_a","_b","_c","_d","node","mapNumberToRange","throttle","fn","limit","inThrottle","args","self","debounce","delay","timerId","ARIAComponent","defineComponent","inject","ref","h","Carousel","props","slots","emit","expose","root","slides","slideWidth","breakpoints","__defaultConfig","reactive","currentSlideIndex","prevSlideIndex","middleSlideIndex","maxSlideIndex","minSlideIndex","autoplayTimer","transitionTimer","provide","initDefaultConfigs","mergedConfigs","bindConfigs","updateBreakpointsConfigs","breakpointsArray","key","a","b","newConfig","breakpoint","handleWindowResize","updateSlidesData","updateSlideWidth","rect","onMounted","nextTick","createDragListener","initAutoplay","onUnmounted","isTouch","startPosition","endPosition","dragged","isHover","handleMouseEnter","handleMouseLeave","handleDragStart","event","isSliding","handleDragging","handleDragEnd","deltaX","deltaY","direction","tolerance","draggedSlides","captureClick","e","slideTo","next","resetAutoplay","slideIndex","currentVal","mappedNumber","prev","nav","slidesToScroll","computed","trackStyle","xScroll","restartCarousel","prop","watch","data","slotSlides","slotAddons","slotsProps","slidesElements","addonsElements","el","index","slidesBefore","cloneVNode","slidesAfter","trackEl","viewPortEl","Pagination","maxSlide","minSlide","isActive","slide","children","button","item","Slide","slideStyle","isPrev","isNext","isVisible"],"mappings":"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"}