@leaflink/stash 42.5.2 → 42.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Carousel.js +180 -176
- package/dist/Carousel.js.map +1 -1
- package/dist/Carousel.vue.d.ts +6 -0
- package/dist/components.css +1 -1
- package/package.json +1 -1
package/dist/Carousel.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Carousel.js","sources":["../node_modules/vue3-carousel/dist/carousel.es.js","../src/components/Carousel/Carousel.vue"],"sourcesContent":["/**\n * Vue 3 Carousel 0.3.1\n * (c) 2023\n * @license MIT\n */\nimport { Fragment, defineComponent, inject, reactive, ref, h, 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 i18n: {\r\n ariaNextSlide: 'Navigate to next slide',\r\n ariaPreviousSlide: 'Navigate to previous slide',\r\n ariaNavigateToSlide: 'Navigate to slide {slideNumber}',\r\n ariaGallery: 'Gallery',\r\n itemXofY: 'Item {currentSlide} of {slidesCount}',\r\n iconArrowUp: 'Arrow pointing upwards',\r\n iconArrowDown: 'Arrow pointing downwards',\r\n iconArrowRight: 'Arrow pointing to the right',\r\n iconArrowLeft: 'Arrow pointing to the left',\r\n },\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 // aria-labels and additional text labels\r\n i18n: {\r\n default: defaultConfigs.i18n,\r\n type: Object,\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 if (!vNode)\r\n return [];\r\n return vNode.reduce((acc, node) => {\r\n var _a;\r\n if (node.type === Fragment) {\r\n return [...acc, ...getSlidesVNodes(node.children)];\r\n }\r\n if (((_a = node.type) === null || _a === void 0 ? void 0 : _a.name) === 'CarouselSlide') {\r\n return [...acc, node];\r\n }\r\n return acc;\r\n }, []);\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\nfunction i18nFormatter(string = '', values = {}) {\r\n return Object.entries(values).reduce((acc, [key, value]) => acc.replace(`{${key}}`, String(value)), string);\r\n}\n\nvar ARIAComponent = defineComponent({\r\n name: 'ARIA',\r\n setup() {\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\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 }, i18nFormatter(config.i18n['itemXofY'], {\r\n currentSlide: currentSlide.value + 1,\r\n slidesCount: slidesCount.value,\r\n }));\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 // current config\r\n const config = reactive(Object.assign({}, defaultConfigs));\r\n // default carousel configs\r\n let __defaultConfig = Object.assign({}, defaultConfigs);\r\n // breakpoints configs\r\n let breakpoints;\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 breakpoints = Object.assign({}, props.breakpoints);\r\n __defaultConfig = Object.assign(Object.assign(Object.assign({}, __defaultConfig), props), { i18n: Object.assign(Object.assign({}, __defaultConfig.i18n), props.i18n), breakpoints: undefined });\r\n bindConfigs(__defaultConfig);\r\n }\r\n function updateBreakpointsConfigs() {\r\n if (!breakpoints || !Object.keys(breakpoints).length)\r\n return;\r\n const breakpointsArray = Object.keys(breakpoints)\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[breakpoint]);\r\n }\r\n return isMatched;\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 updateBreakpointsConfigs();\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 nextTick(() => updateSlideWidth());\r\n // Overcome some edge cases\r\n setTimeout(() => updateSlideWidth(), 1000);\r\n updateBreakpointsConfigs();\r\n initAutoplay();\r\n window.addEventListener('resize', handleWindowResize, { passive: true });\r\n emit('init');\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 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 isDragging = 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', 'SELECT'].includes(event.target.tagName)) {\r\n return;\r\n }\r\n isTouch = event.type === 'touchstart';\r\n if (!isTouch) {\r\n event.preventDefault();\r\n }\r\n if ((!isTouch && event.button !== 0) || isSliding.value) {\r\n return;\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 const handleDragging = throttle((event) => {\r\n isDragging.value = true;\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 }, config.throttle);\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 isDragging.value = false;\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 return;\r\n }\r\n slideTo(Number(val));\r\n });\r\n // Handel when slides added/removed\r\n watch(slidesCount, updateSlidesData);\r\n // Init carousel\r\n emit('before-init');\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 ? handleDragStart : null,\r\n onTouchstartPassiveCapture: config.touchDrag ? handleDragStart : 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 'is-sliding': isSliding.value,\r\n 'is-dragging': isDragging.value,\r\n 'is-hover': isHover.value,\r\n 'carousel--rtl': config.dir === 'rtl',\r\n },\r\n dir: config.dir,\r\n 'aria-label': config.i18n['ariaGallery'],\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\nvar IconName;\r\n(function (IconName) {\r\n IconName[\"arrowUp\"] = \"arrowUp\";\r\n IconName[\"arrowDown\"] = \"arrowDown\";\r\n IconName[\"arrowRight\"] = \"arrowRight\";\r\n IconName[\"arrowLeft\"] = \"arrowLeft\";\r\n})(IconName || (IconName = {}));\r\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\nfunction isIconName(candidate) {\r\n return candidate in IconName;\r\n}\r\nconst Icon = (props) => {\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\r\n const iconName = String(props.name);\r\n const iconI18n = `icon${iconName.charAt(0).toUpperCase() + iconName.slice(1)}`;\r\n if (!iconName || typeof iconName !== 'string' || !isIconName(iconName)) {\r\n return;\r\n }\r\n const path = icons[iconName];\r\n const pathEl = h('path', { d: path });\r\n const iconTitle = config.i18n[iconI18n] || 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 'aria-label': 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, i18n } = 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': i18n['ariaPreviousSlide'],\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': i18n['ariaNextSlide'],\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 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 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': i18nFormatter(config.i18n['ariaNavigateToSlide'], {\r\n slideNumber: slide + 1,\r\n }),\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 isSliding = inject('isSliding', ref(false));\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: { width: `${100 / config.itemsToShow}%` },\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","<script setup lang=\"ts\" generic=\"Slide extends CarouselSlide\">\n import 'vue3-carousel/dist/carousel.css';\n import { ref, useAttrs } from 'vue';\n import { Carousel, Navigation, Slide } from 'vue3-carousel';\n\n import { t } from '../../locale';\n import { CarouselInstanceRef, CarouselSlide } from './Carousel.types';\n\n interface CarouselProps {\n slides: Slide[];\n /**\n * Time, in ms, before slides will automatically transition.\n * If not specified, slides are static until manually transitioned.\n */\n autoplayInterval?: number;\n loop?: boolean;\n pagination?: 'tile' | 'dot';\n paginationTileRadius?: 'standard' | 'full';\n /**\n * Prevents slides from automatically transitioning when hovering\n * over the slide.\n */\n pauseAutoplayOnHover?: boolean;\n roundBorders?: boolean;\n staticPaginationDots?: boolean;\n }\n\n const props = withDefaults(defineProps<CarouselProps>(), {\n slides: () => [],\n autoplayInterval: 0,\n loop: false,\n pagination: 'tile',\n paginationTileRadius: 'standard',\n pauseAutoplayOnHover: false,\n roundBorders: false,\n staticPaginationDots: false,\n });\n\n const attrs = useAttrs();\n const carouselRef = ref<CarouselInstanceRef>();\n\n /**\n * Expose the carousel's next and prev methods to the parent component\n */\n defineExpose({\n next: () => carouselRef.value?.next(),\n prev: () => carouselRef.value?.prev(),\n });\n\n const emit =\n defineEmits<{\n (e: 'click', slide: Slide): void;\n (e: 'transition', slide: Slide): void;\n }>();\n\n const currentIndex = ref(0);\n\n const onCarouselInit = () => {\n // carousel does not fire a transition event to the first slide when mounted.\n // subsequent transition events are fired in the slide-end event handler.\n onSlideTransition();\n };\n\n const onSlideClick = () => {\n emit('click', props.slides[currentIndex.value]);\n };\n\n const onSlideTransition = () => {\n emit('transition', props.slides[currentIndex.value]);\n };\n</script>\n\n<template>\n <Carousel\n v-bind=\"attrs\"\n ref=\"carouselRef\"\n v-model=\"currentIndex\"\n aria-live=\"polite\"\n aria-roledescription=\"carousel\"\n class=\"stash-carousel tw-mb-6\"\n data-test=\"stash-carousel\"\n :i18n=\"{\n ariaNextSlide: t('ll.next'),\n ariaPreviousSlide: t('ll.previous'),\n iconArrowLeft: t('ll.previous'),\n iconArrowRight: t('ll.next'),\n }\"\n :autoplay=\"autoplayInterval\"\n :pause-autoplay-on-hover=\"pauseAutoplayOnHover\"\n :wrap-around=\"props.loop\"\n @init=\"onCarouselInit\"\n @slide-end=\"onSlideTransition\"\n >\n <Slide\n v-for=\"(slide, index) in props.slides\"\n :key=\"slide.id\"\n data-test=\"stash-carousel|slide\"\n class=\"tw-cursor-pointer\"\n @click=\"onSlideClick\"\n >\n <slot name=\"slide\" :slide=\"slide\" :index=\"index\">\n <img\n class=\"tw-h-full tw-w-full\"\n :class=\"[{ 'tw-rounded': props.roundBorders }]\"\n :src=\"slide.imageUrl\"\n :title=\"t('ll.carousel.imageLabel', { index: index + 1, total: slides.length })\"\n />\n </slot>\n </Slide>\n\n <template #addons>\n <Navigation v-if=\"props.slides.length > 1\" />\n </template>\n </Carousel>\n\n <!-- Pagination Tiles -->\n <ul v-if=\"props.pagination === 'tile'\" class=\"tw-flex tw-list-none\" data-test=\"stash-carousel|pagination-tiles\">\n <li\n v-for=\"(slide, index) in slides\"\n :key=\"slide.imageUrl\"\n class=\"tw-mr-3 tw-cursor-pointer\"\n :aria-current=\"currentIndex === index\"\n @click=\"currentIndex = index\"\n >\n <img\n class=\"tw-rounded pagination-tile\"\n :class=\"[\n {\n 'is-current-tile': currentIndex === index,\n 'tw-rounded-full': props.paginationTileRadius === 'full',\n },\n ]\"\n :data-test=\"`stash-carousel|pagination-tile-${index}`\"\n :src=\"slide.imageUrl\"\n :title=\"t('ll.carousel.paginationLabel', { index: index + 1 })\"\n />\n </li>\n </ul>\n\n <!-- Pagination Dots -->\n <ul\n v-else\n class=\"tw-text-center\"\n data-test=\"stash-carousel|pagination-dots\"\n :class=\"[!staticPaginationDots && 'lg:tw-hidden']\"\n >\n <li\n v-for=\"(slide, index) in slides\"\n :key=\"slide.imageUrl\"\n class=\"tw-rounded-full tw-inline-block\"\n :class=\"['pagination-dot', [currentIndex === index ? 'tw-bg-blue-500' : 'tw-bg-blue-100']]\"\n />\n </ul>\n</template>\n\n<style scoped>\n .stash-carousel :deep(.carousel__icon) {\n background-color: var(--color-white);\n border-radius: theme('borderRadius.DEFAULT');\n color: var(--color-blue-500);\n height: theme('spacing.9');\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__icon:hover) {\n background-color: var(--color-ice-100);\n color: var(--color-blue-700);\n }\n\n .stash-carousel :deep(.carousel__next) {\n padding-right: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__next--disabled) {\n display: none;\n }\n\n .stash-carousel :deep(.carousel__prev) {\n padding-left: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__prev--disabled) {\n display: none;\n }\n\n .pagination-dot {\n height: 4px;\n margin-right: 2px;\n width: 4px;\n }\n\n .pagination-tile {\n height: theme('spacing.12');\n opacity: 0.4;\n object-fit: cover;\n width: theme('spacing.12');\n }\n\n .pagination-tile.is-current-tile {\n opacity: 1;\n }\n</style>\n"],"names":["defaultConfigs","carouselProps","value","getMaxSlideIndex","config","slidesCount","snapAlign","wrapAround","itemsToShow","output","getMinSlideIndex","getNumberInRange","val","max","min","getSlidesToScroll","currentSlide","getSlidesVNodes","vNode","acc","node","_a","Fragment","mapNumberToRange","throttle","fn","limit","inThrottle","args","self","debounce","delay","timerId","i18nFormatter","string","values","key","ARIAComponent","defineComponent","inject","reactive","ref","h","Carousel","props","slots","emit","expose","root","slides","slideWidth","__defaultConfig","breakpoints","currentSlideIndex","prevSlideIndex","middleSlideIndex","maxSlideIndex","minSlideIndex","autoplayTimer","transitionTimer","provide","initDefaultConfigs","bindConfigs","updateBreakpointsConfigs","breakpointsArray","a","b","newConfig","breakpoint","isMatched","handleWindowResize","updateSlideWidth","rect","updateSlidesData","onMounted","nextTick","initAutoplay","onUnmounted","isTouch","startPosition","endPosition","dragged","isHover","isDragging","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","IconName","icons","isIconName","candidate","Icon","iconName","iconI18n","path","pathEl","iconTitle","titleEl","Navigation","attrs","slotNext","slotPrev","maxSlide","minSlide","dir","i18n","isRTL","prevButton","nextButton","Slide","isActive","isPrev","isNext","isVisible","useAttrs","carouselRef","__expose","currentIndex","onCarouselInit","onSlideTransition","onSlideClick"],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"Carousel.js","sources":["../node_modules/vue3-carousel/dist/carousel.es.js","../src/components/Carousel/Carousel.vue"],"sourcesContent":["/**\n * Vue 3 Carousel 0.3.1\n * (c) 2023\n * @license MIT\n */\nimport { Fragment, defineComponent, inject, reactive, ref, h, 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 i18n: {\r\n ariaNextSlide: 'Navigate to next slide',\r\n ariaPreviousSlide: 'Navigate to previous slide',\r\n ariaNavigateToSlide: 'Navigate to slide {slideNumber}',\r\n ariaGallery: 'Gallery',\r\n itemXofY: 'Item {currentSlide} of {slidesCount}',\r\n iconArrowUp: 'Arrow pointing upwards',\r\n iconArrowDown: 'Arrow pointing downwards',\r\n iconArrowRight: 'Arrow pointing to the right',\r\n iconArrowLeft: 'Arrow pointing to the left',\r\n },\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 // aria-labels and additional text labels\r\n i18n: {\r\n default: defaultConfigs.i18n,\r\n type: Object,\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 if (!vNode)\r\n return [];\r\n return vNode.reduce((acc, node) => {\r\n var _a;\r\n if (node.type === Fragment) {\r\n return [...acc, ...getSlidesVNodes(node.children)];\r\n }\r\n if (((_a = node.type) === null || _a === void 0 ? void 0 : _a.name) === 'CarouselSlide') {\r\n return [...acc, node];\r\n }\r\n return acc;\r\n }, []);\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\nfunction i18nFormatter(string = '', values = {}) {\r\n return Object.entries(values).reduce((acc, [key, value]) => acc.replace(`{${key}}`, String(value)), string);\r\n}\n\nvar ARIAComponent = defineComponent({\r\n name: 'ARIA',\r\n setup() {\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\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 }, i18nFormatter(config.i18n['itemXofY'], {\r\n currentSlide: currentSlide.value + 1,\r\n slidesCount: slidesCount.value,\r\n }));\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 // current config\r\n const config = reactive(Object.assign({}, defaultConfigs));\r\n // default carousel configs\r\n let __defaultConfig = Object.assign({}, defaultConfigs);\r\n // breakpoints configs\r\n let breakpoints;\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 breakpoints = Object.assign({}, props.breakpoints);\r\n __defaultConfig = Object.assign(Object.assign(Object.assign({}, __defaultConfig), props), { i18n: Object.assign(Object.assign({}, __defaultConfig.i18n), props.i18n), breakpoints: undefined });\r\n bindConfigs(__defaultConfig);\r\n }\r\n function updateBreakpointsConfigs() {\r\n if (!breakpoints || !Object.keys(breakpoints).length)\r\n return;\r\n const breakpointsArray = Object.keys(breakpoints)\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[breakpoint]);\r\n }\r\n return isMatched;\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 updateBreakpointsConfigs();\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 nextTick(() => updateSlideWidth());\r\n // Overcome some edge cases\r\n setTimeout(() => updateSlideWidth(), 1000);\r\n updateBreakpointsConfigs();\r\n initAutoplay();\r\n window.addEventListener('resize', handleWindowResize, { passive: true });\r\n emit('init');\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 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 isDragging = 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', 'SELECT'].includes(event.target.tagName)) {\r\n return;\r\n }\r\n isTouch = event.type === 'touchstart';\r\n if (!isTouch) {\r\n event.preventDefault();\r\n }\r\n if ((!isTouch && event.button !== 0) || isSliding.value) {\r\n return;\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 const handleDragging = throttle((event) => {\r\n isDragging.value = true;\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 }, config.throttle);\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 isDragging.value = false;\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 return;\r\n }\r\n slideTo(Number(val));\r\n });\r\n // Handel when slides added/removed\r\n watch(slidesCount, updateSlidesData);\r\n // Init carousel\r\n emit('before-init');\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 ? handleDragStart : null,\r\n onTouchstartPassiveCapture: config.touchDrag ? handleDragStart : 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 'is-sliding': isSliding.value,\r\n 'is-dragging': isDragging.value,\r\n 'is-hover': isHover.value,\r\n 'carousel--rtl': config.dir === 'rtl',\r\n },\r\n dir: config.dir,\r\n 'aria-label': config.i18n['ariaGallery'],\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\nvar IconName;\r\n(function (IconName) {\r\n IconName[\"arrowUp\"] = \"arrowUp\";\r\n IconName[\"arrowDown\"] = \"arrowDown\";\r\n IconName[\"arrowRight\"] = \"arrowRight\";\r\n IconName[\"arrowLeft\"] = \"arrowLeft\";\r\n})(IconName || (IconName = {}));\r\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\nfunction isIconName(candidate) {\r\n return candidate in IconName;\r\n}\r\nconst Icon = (props) => {\r\n const config = inject('config', reactive(Object.assign({}, defaultConfigs)));\r\n const iconName = String(props.name);\r\n const iconI18n = `icon${iconName.charAt(0).toUpperCase() + iconName.slice(1)}`;\r\n if (!iconName || typeof iconName !== 'string' || !isIconName(iconName)) {\r\n return;\r\n }\r\n const path = icons[iconName];\r\n const pathEl = h('path', { d: path });\r\n const iconTitle = config.i18n[iconI18n] || 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 'aria-label': 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, i18n } = 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': i18n['ariaPreviousSlide'],\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': i18n['ariaNextSlide'],\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 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 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': i18nFormatter(config.i18n['ariaNavigateToSlide'], {\r\n slideNumber: slide + 1,\r\n }),\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 isSliding = inject('isSliding', ref(false));\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: { width: `${100 / config.itemsToShow}%` },\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","<script setup lang=\"ts\" generic=\"Slide extends CarouselSlide\">\n import 'vue3-carousel/dist/carousel.css';\n import { ref, useAttrs } from 'vue';\n import { Carousel, Navigation, Slide } from 'vue3-carousel';\n\n import { t } from '../../locale';\n import { CarouselInstanceRef, CarouselSlide } from './Carousel.types';\n\n interface CarouselProps {\n slides: Slide[];\n /**\n * Time, in ms, before slides will automatically transition.\n * If not specified, slides are static until manually transitioned.\n */\n autoplayInterval?: number;\n /**\n * Hide the navigation buttons\n */\n hideNavigation?: boolean;\n /**\n * Hide the pagination dots/tile\n */\n hidePagination?: boolean;\n loop?: boolean;\n pagination?: 'tile' | 'dot';\n paginationTileRadius?: 'standard' | 'full';\n /**\n * Prevents slides from automatically transitioning when hovering\n * over the slide.\n */\n pauseAutoplayOnHover?: boolean;\n roundBorders?: boolean;\n staticPaginationDots?: boolean;\n }\n\n const props = withDefaults(defineProps<CarouselProps>(), {\n slides: () => [],\n autoplayInterval: 0,\n hideNavigation: false,\n hidePagination: false,\n loop: false,\n pagination: 'tile',\n paginationTileRadius: 'standard',\n pauseAutoplayOnHover: false,\n roundBorders: false,\n staticPaginationDots: false,\n });\n\n const attrs = useAttrs();\n const carouselRef = ref<CarouselInstanceRef>();\n\n /**\n * Expose the carousel's next and prev methods to the parent component\n */\n defineExpose({\n next: () => carouselRef.value?.next(),\n prev: () => carouselRef.value?.prev(),\n });\n\n const emit =\n defineEmits<{\n (e: 'click', slide: Slide): void;\n (e: 'transition', slide: Slide): void;\n }>();\n\n const currentIndex = ref(0);\n\n const onCarouselInit = () => {\n // carousel does not fire a transition event to the first slide when mounted.\n // subsequent transition events are fired in the slide-end event handler.\n onSlideTransition();\n };\n\n const onSlideClick = () => {\n emit('click', props.slides[currentIndex.value]);\n };\n\n const onSlideTransition = () => {\n emit('transition', props.slides[currentIndex.value]);\n };\n</script>\n\n<template>\n <Carousel\n v-bind=\"attrs\"\n ref=\"carouselRef\"\n v-model=\"currentIndex\"\n aria-live=\"polite\"\n aria-roledescription=\"carousel\"\n class=\"stash-carousel tw-mb-6\"\n data-test=\"stash-carousel\"\n :i18n=\"{\n ariaNextSlide: t('ll.next'),\n ariaPreviousSlide: t('ll.previous'),\n iconArrowLeft: t('ll.previous'),\n iconArrowRight: t('ll.next'),\n }\"\n :autoplay=\"autoplayInterval\"\n :pause-autoplay-on-hover=\"pauseAutoplayOnHover\"\n :wrap-around=\"props.loop\"\n @init=\"onCarouselInit\"\n @slide-end=\"onSlideTransition\"\n >\n <Slide\n v-for=\"(slide, index) in props.slides\"\n :key=\"slide.id\"\n data-test=\"stash-carousel|slide\"\n class=\"tw-cursor-pointer\"\n @click=\"onSlideClick\"\n >\n <slot name=\"slide\" :slide=\"slide\" :index=\"index\">\n <img\n class=\"tw-h-full tw-w-full\"\n :class=\"[{ 'tw-rounded': props.roundBorders }]\"\n :src=\"slide.imageUrl\"\n :title=\"t('ll.carousel.imageLabel', { index: index + 1, total: slides.length })\"\n />\n </slot>\n </Slide>\n\n <template #addons>\n <Navigation v-if=\"props.slides.length > 1 && !props.hideNavigation\" />\n </template>\n </Carousel>\n\n <template v-if=\"!props.hidePagination\">\n <!-- Pagination Tiles -->\n <ul v-if=\"props.pagination === 'tile'\" class=\"tw-flex tw-list-none\" data-test=\"stash-carousel|pagination-tiles\">\n <li\n v-for=\"(slide, index) in slides\"\n :key=\"slide.imageUrl\"\n class=\"tw-mr-3 tw-cursor-pointer\"\n :aria-current=\"currentIndex === index\"\n @click=\"currentIndex = index\"\n >\n <img\n class=\"tw-rounded pagination-tile\"\n :class=\"[\n {\n 'is-current-tile': currentIndex === index,\n 'tw-rounded-full': props.paginationTileRadius === 'full',\n },\n ]\"\n :data-test=\"`stash-carousel|pagination-tile-${index}`\"\n :src=\"slide.imageUrl\"\n :title=\"t('ll.carousel.paginationLabel', { index: index + 1 })\"\n />\n </li>\n </ul>\n\n <!-- Pagination Dots -->\n <ul\n v-else\n class=\"tw-text-center\"\n data-test=\"stash-carousel|pagination-dots\"\n :class=\"[!staticPaginationDots && 'lg:tw-hidden']\"\n >\n <li\n v-for=\"(slide, index) in slides\"\n :key=\"slide.imageUrl\"\n class=\"tw-rounded-full tw-inline-block\"\n :class=\"['pagination-dot', [currentIndex === index ? 'tw-bg-blue-500' : 'tw-bg-blue-100']]\"\n />\n </ul>\n </template>\n</template>\n\n<style scoped>\n .stash-carousel :deep(.carousel__icon) {\n background-color: var(--color-white);\n border-radius: theme('borderRadius.DEFAULT');\n color: var(--color-blue-500);\n height: theme('spacing.9');\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n width: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__icon:hover) {\n background-color: var(--color-ice-100);\n color: var(--color-blue-700);\n }\n\n .stash-carousel :deep(.carousel__next) {\n padding-right: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__next--disabled) {\n display: none;\n }\n\n .stash-carousel :deep(.carousel__prev) {\n padding-left: theme('spacing.9');\n }\n\n .stash-carousel :deep(.carousel__prev--disabled) {\n display: none;\n }\n\n .pagination-dot {\n height: 4px;\n margin-right: 2px;\n width: 4px;\n }\n\n .pagination-tile {\n height: theme('spacing.12');\n opacity: 0.4;\n object-fit: cover;\n width: theme('spacing.12');\n }\n\n .pagination-tile.is-current-tile {\n opacity: 1;\n }\n</style>\n"],"names":["defaultConfigs","carouselProps","value","getMaxSlideIndex","config","slidesCount","snapAlign","wrapAround","itemsToShow","output","getMinSlideIndex","getNumberInRange","val","max","min","getSlidesToScroll","currentSlide","getSlidesVNodes","vNode","acc","node","_a","Fragment","mapNumberToRange","throttle","fn","limit","inThrottle","args","self","debounce","delay","timerId","i18nFormatter","string","values","key","ARIAComponent","defineComponent","inject","reactive","ref","h","Carousel","props","slots","emit","expose","root","slides","slideWidth","__defaultConfig","breakpoints","currentSlideIndex","prevSlideIndex","middleSlideIndex","maxSlideIndex","minSlideIndex","autoplayTimer","transitionTimer","provide","initDefaultConfigs","bindConfigs","updateBreakpointsConfigs","breakpointsArray","a","b","newConfig","breakpoint","isMatched","handleWindowResize","updateSlideWidth","rect","updateSlidesData","onMounted","nextTick","initAutoplay","onUnmounted","isTouch","startPosition","endPosition","dragged","isHover","isDragging","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","IconName","icons","isIconName","candidate","Icon","iconName","iconI18n","path","pathEl","iconTitle","titleEl","Navigation","attrs","slotNext","slotPrev","maxSlide","minSlide","dir","i18n","isRTL","prevButton","nextButton","Slide","isActive","isPrev","isNext","isVisible","useAttrs","carouselRef","__expose","currentIndex","onCarouselInit","onSlideTransition","onSlideClick"],"mappings":"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","x_google_ignoreList":[0]}
|
package/dist/Carousel.vue.d.ts
CHANGED
|
@@ -21,6 +21,8 @@ declare const _default: <Slide extends CarouselSlide>(__VLS_props: {
|
|
|
21
21
|
onTransition?: ((slide: Slide) => any) | undefined;
|
|
22
22
|
slides: Slide[];
|
|
23
23
|
autoplayInterval?: number | undefined;
|
|
24
|
+
hideNavigation?: boolean | undefined;
|
|
25
|
+
hidePagination?: boolean | undefined;
|
|
24
26
|
loop?: boolean | undefined;
|
|
25
27
|
pagination?: "dot" | "tile" | undefined;
|
|
26
28
|
paginationTileRadius?: "standard" | "full" | undefined;
|
|
@@ -48,6 +50,8 @@ declare const _default: <Slide extends CarouselSlide>(__VLS_props: {
|
|
|
48
50
|
onTransition?: ((slide: Slide) => any) | undefined;
|
|
49
51
|
slides: Slide[];
|
|
50
52
|
autoplayInterval?: number | undefined;
|
|
53
|
+
hideNavigation?: boolean | undefined;
|
|
54
|
+
hidePagination?: boolean | undefined;
|
|
51
55
|
loop?: boolean | undefined;
|
|
52
56
|
pagination?: "dot" | "tile" | undefined;
|
|
53
57
|
paginationTileRadius?: "standard" | "full" | undefined;
|
|
@@ -79,6 +83,8 @@ declare const _default: <Slide extends CarouselSlide>(__VLS_props: {
|
|
|
79
83
|
onTransition?: ((slide: Slide) => any) | undefined;
|
|
80
84
|
slides: Slide[];
|
|
81
85
|
autoplayInterval?: number | undefined;
|
|
86
|
+
hideNavigation?: boolean | undefined;
|
|
87
|
+
hidePagination?: boolean | undefined;
|
|
82
88
|
loop?: boolean | undefined;
|
|
83
89
|
pagination?: "dot" | "tile" | undefined;
|
|
84
90
|
paginationTileRadius?: "standard" | "full" | undefined;
|