{"version":3,"file":"carousel.cjs","sources":["../src/shared/constants.ts","../src/shared/injectSymbols.ts","../src/shared/slideRegistry.ts","../src/utils/calculateAverage.ts","../src/utils/createCloneSlides.ts","../src/utils/disableChildrenTabbing.ts","../src/utils/except.ts","../src/utils/getDraggedSlidesCount.ts","../src/utils/getNumberInRange.ts","../src/utils/getScaleMultipliers.ts","../src/utils/getSnapAlignOffset.ts","../src/utils/i18nFormatter.ts","../src/utils/mapNumberToRange.ts","../src/utils/throttle.ts","../src/utils/toCssValue.ts","../src/components/ARIA/ARIA.ts","../src/composables/useDrag.ts","../src/composables/useHover.ts","../src/composables/useWheel.ts","../src/components/Carousel/carouselProps.ts","../src/components/Carousel/Carousel.ts","../src/components/Icon/Icon.types.ts","../src/components/Icon/Icon.ts","../src/components/Navigation/Navigation.ts","../src/components/Pagination/Pagination.ts","../src/components/Slide/Slide.ts"],"sourcesContent":["import { CarouselConfig } from './types'\n\nexport const BREAKPOINT_MODE_OPTIONS = ['viewport', 'carousel'] as const\n\nexport const DIR_MAP = {\n  'bottom-to-top': 'btt',\n  'left-to-right': 'ltr',\n  'right-to-left': 'rtl',\n  'top-to-bottom': 'ttb',\n} as const\n\nexport const DIR_OPTIONS = [\n  'ltr',\n  'left-to-right',\n  'rtl',\n  'right-to-left',\n  'ttb',\n  'top-to-bottom',\n  'btt',\n  'bottom-to-top',\n] as const\n\nexport const I18N_DEFAULT_CONFIG = {\n  ariaGallery: 'Gallery',\n  ariaNavigateToPage: 'Navigate to page {slideNumber}',\n  ariaNavigateToSlide: 'Navigate to slide {slideNumber}',\n  ariaNextSlide: 'Navigate to next slide',\n  ariaPreviousSlide: 'Navigate to previous slide',\n  iconArrowDown: 'Arrow pointing downwards',\n  iconArrowLeft: 'Arrow pointing to the left',\n  iconArrowRight: 'Arrow pointing to the right',\n  iconArrowUp: 'Arrow pointing upwards',\n  itemXofY: 'Item {currentSlide} of {slidesCount}',\n} as const\n\nexport const NORMALIZED_DIR_OPTIONS = Object.values(DIR_MAP)\n\nexport const SLIDE_EFFECTS = ['slide', 'fade'] as const\n\nexport const SNAP_ALIGN_OPTIONS = [\n  'center',\n  'start',\n  'end',\n  'center-even',\n  'center-odd',\n] as const\n\nexport const DEFAULT_MOUSE_WHEEL_THRESHOLD = 10\nexport const DEFAULT_DRAG_THRESHOLD = 0.08\n\nexport const DEFAULT_CONFIG: CarouselConfig = {\n  autoplay: 0,\n  breakpointMode: BREAKPOINT_MODE_OPTIONS[0],\n  breakpoints: undefined,\n  dir: DIR_OPTIONS[0],\n  enabled: true,\n  gap: 0,\n  height: 'auto',\n  i18n: I18N_DEFAULT_CONFIG,\n  ignoreAnimations: false,\n  itemsToScroll: 1,\n  itemsToShow: 1,\n  modelValue: 0,\n  mouseDrag: true,\n  mouseWheel: false,\n  pauseAutoplayOnHover: false,\n  preventExcessiveDragging: false,\n  slideEffect: SLIDE_EFFECTS[0],\n  snapAlign: SNAP_ALIGN_OPTIONS[0],\n  touchDrag: true,\n  transition: 300,\n  wrapAround: false,\n}\n","import { InjectionKey } from 'vue'\n\nimport { InjectedCarousel } from '@/components/Carousel'\n\n// Use a symbol for inject provide to avoid any kind of collision with another lib\n// https://vuejs.org/guide/components/provide-inject#working-with-symbol-keys\nexport const injectCarousel = Symbol('carousel') as InjectionKey<\n  InjectedCarousel | undefined\n>\n","import { ComponentInternalInstance, EmitFn, shallowReactive } from 'vue'\n\nconst createSlideRegistry = (emit: EmitFn) => {\n  const slides = shallowReactive<Array<ComponentInternalInstance>>([])\n\n  const updateSlideIndexes = (startIndex?: number) => {\n    if (startIndex !== undefined) {\n      slides.slice(startIndex).forEach((slide, offset) => {\n        slide.exposed?.setIndex(startIndex + offset)\n      })\n    } else {\n      slides.forEach((slide, index) => {\n        slide.exposed?.setIndex(index)\n      })\n    }\n  }\n\n  return {\n    cleanup: () => {\n      slides.splice(0, slides.length)\n    },\n\n    getSlides: () => slides,\n\n    registerSlide: (slide: ComponentInternalInstance, index?: number) => {\n      if (!slide) return\n\n      if (slide.props.isClone) {\n        return\n      }\n\n      const slideIndex = index ?? slides.length\n      slides.splice(slideIndex, 0, slide)\n      updateSlideIndexes(slideIndex)\n      emit('slide-registered', { slide, index: slideIndex })\n    },\n\n    unregisterSlide: (slide: ComponentInternalInstance) => {\n      const slideIndex = slides.indexOf(slide)\n      if (slideIndex === -1) return\n\n      emit('slide-unregistered', { slide, index: slideIndex })\n\n      slides.splice(slideIndex, 1)\n      updateSlideIndexes(slideIndex)\n    },\n  }\n}\n\nexport type SlideRegistry = ReturnType<typeof createSlideRegistry>\n\nexport { createSlideRegistry }\n","export function calculateAverage(numbers: number[]) {\n  if (numbers.length === 0) return 0\n  const sum = numbers.reduce((acc, num) => acc + num, 0)\n  return sum / numbers.length\n}\n","import { cloneVNode, ComponentInternalInstance, VNode } from 'vue'\n\ntype CreateCloneSlidesArgs = {\n  slides: Array<ComponentInternalInstance>\n  position: 'before' | 'after'\n  toShow: number\n}\n\nexport function createCloneSlides({ slides, position, toShow }: CreateCloneSlidesArgs) {\n  const clones: VNode[] = []\n  const isBefore = position === 'before'\n  const start = isBefore ? -toShow : 0\n  const end = isBefore ? 0 : toShow\n\n  if (slides.length <= 0) {\n    return clones\n  }\n\n  for (let i = start; i < end; i++) {\n    const index = isBefore ? i : i + slides.length\n    const props = {\n      index,\n      isClone: true,\n      id: undefined, // Make sure we don't duplicate the id which would be invalid html\n      key: `clone-${position}-${i}`,\n    }\n    const vnode = slides[((i % slides.length) + slides.length) % slides.length].vnode\n    const clone = cloneVNode(vnode, props)\n    clone.el = null\n    clones.push(clone)\n  }\n\n  return clones\n}\n","import { VNode } from 'vue'\n\nconst FOCUSABLE_ELEMENTS_SELECTOR =\n  'a[href], button, input, textarea, select, details, [tabindex]:not([tabindex=\"-1\"])'\n\n/**\n * Disables keyboard tab navigation for all focusable child elements\n * @param node Vue virtual node containing the elements to disable\n */\nexport function disableChildrenTabbing(node: VNode) {\n  if (!node.el || !(node.el instanceof Element)) {\n    return\n  }\n\n  const elements = node.el.querySelectorAll(FOCUSABLE_ELEMENTS_SELECTOR)\n\n  for (const el of elements) {\n    if (\n      el instanceof HTMLElement &&\n      !el.hasAttribute('disabled') &&\n      el.getAttribute('aria-hidden') !== 'true'\n    ) {\n      el.setAttribute('tabindex', '-1')\n    }\n  }\n}\n","\n/** Useful function to destructure props without triggering reactivity for certain keys */\nexport function except<Obj extends object, Keys extends string>(obj: Obj, keys: Keys[]): Omit<Obj, Keys> {\n  return (Object.keys(obj).filter((k) => !(keys as string[]).includes(k)) as Array<Exclude<keyof Obj, Keys>>)\n    .reduce((acc, key) => (acc[key] = obj[key], acc), {} as Omit<Obj, Keys>)\n}","type DragParams = {\n  isVertical: boolean\n  isReversed: boolean\n  dragged: { x: number; y: number }\n  effectiveSlideSize: number\n  threshold: number\n}\n\n/**\n * Calculates the number of slides to move based on drag movement\n * @param params Configuration parameters for drag calculation\n * @returns Number of slides to move (positive or negative)\n */\nexport function getDraggedSlidesCount(params: DragParams): number {\n  const { isVertical, isReversed, dragged, effectiveSlideSize, threshold } = params\n\n  // Get drag value based on direction\n  const dragValue = isVertical ? dragged.y : dragged.x\n\n  // If no drag, return +0 explicitly\n  if (dragValue === 0) return 0\n\n  const dragRatio = dragValue / effectiveSlideSize\n  const absRatio = Math.abs(dragRatio)\n\n  // If below the threshold, consider it no movement\n  if (absRatio < threshold) return 0\n  \n  // For drags less than a full slide, move one slide in the drag direction\n  // For drags of a full slide or more, move the corresponding number of slides\n  const slidesDragged = absRatio < 1 ? Math.sign(dragRatio) : Math.round(dragRatio)\n\n  return isReversed ? slidesDragged : -slidesDragged\n}\n","type GetNumberInRangeArgs = {\n  val: number\n  max: number\n  min: number\n}\n\nexport function getNumberInRange({ val, max, min }: GetNumberInRangeArgs): number {\n  if (max < min) {\n    return val\n  }\n  return Math.min(Math.max(val, isNaN(min) ? val : min), isNaN(max) ? val : max)\n}\n","export function getTransformValues(el: HTMLElement) {\n  const { transform } = window.getComputedStyle(el)\n\n  //add sanity check\n  return transform\n    .split(/[(,)]/)\n    .slice(1, -1)\n    .map((v) => parseFloat(v))\n}\n\nexport type ScaleMultipliers = {\n  widthMultiplier: number\n  heightMultiplier: number\n}\nexport function getScaleMultipliers(\n  transformElements: Set<HTMLElement>\n): ScaleMultipliers {\n  let widthMultiplier = 1\n  let heightMultiplier = 1\n  transformElements.forEach((el) => {\n    const transformArr = getTransformValues(el)\n\n    if (transformArr.length === 6) {\n      widthMultiplier /= transformArr[0]\n      heightMultiplier /= transformArr[3]\n    }\n  })\n\n  return { widthMultiplier, heightMultiplier }\n}\n","import { SnapAlign } from '@/shared'\n\ntype SnapAlignOffsetParams = {\n  align: SnapAlign\n  slideSize?: number\n  viewportSize?: number\n  itemsToShow?: number\n}\n\n/**\n * Calculates the snap align offset for a carousel item based on items to show.\n * Returns the number of slides to offset.\n *\n * @param align - The alignment type.\n * @param itemsToShow - The number of items to show.\n * @returns The calculated offset.\n */\nfunction getSnapAlignOffsetByItemsToShow(align: SnapAlign, itemsToShow: number): number {\n  switch (align) {\n    case 'start':\n      return 0\n    case 'center':\n    case 'center-odd':\n      return (itemsToShow - 1) / 2\n    case 'center-even':\n      return (itemsToShow - 2) / 2\n    case 'end':\n      return itemsToShow - 1\n    default:\n      return 0\n  }\n}\n\n/**\n * Calculates the snap align offset for a carousel item based on slide and viewport size.\n * Returns the real width to offset.\n *\n * @param align - The alignment type.\n * @param slideSize - The size of the slide.\n * @param viewportSize - The size of the viewport.\n * @returns The calculated offset.\n */\nfunction getSnapAlignOffsetBySlideAndViewport(\n  align: SnapAlign,\n  slideSize: number,\n  viewportSize: number\n): number {\n  switch (align) {\n    case 'start':\n      return 0\n    case 'center':\n    case 'center-odd':\n      return (viewportSize - slideSize) / 2\n    case 'center-even':\n      return viewportSize / 2 - slideSize\n    case 'end':\n      return viewportSize - slideSize\n    default:\n      return 0\n  }\n}\n\n/**\n * Calculates the snap align offset for a carousel item.\n *\n * @param params - The parameters for calculating the offset.\n * @returns The calculated offset.\n */\nexport function getSnapAlignOffset({\n  slideSize,\n  viewportSize,\n  align,\n  itemsToShow,\n}: SnapAlignOffsetParams): number {\n  if (itemsToShow !== undefined) {\n    return getSnapAlignOffsetByItemsToShow(align, itemsToShow)\n  }\n  if (slideSize !== undefined && viewportSize !== undefined) {\n    return getSnapAlignOffsetBySlideAndViewport(align, slideSize, viewportSize)\n  }\n\n  return 0\n}\n","export function i18nFormatter(string = '', values = {}) {\n  return Object.entries(values).reduce(\n    (acc, [key, value]) => acc.replace(`{${key}}`, String(value)),\n    string\n  )\n}\n","type MapNumberToRangeArgs = {\n  val: number\n  max: number\n  min?: number\n}\n\nexport function mapNumberToRange({ val, max, min = 0 }: MapNumberToRangeArgs): number {\n  const mod = max - min + 1\n  return ((((val - min) % mod) + mod) % mod) + min\n}\n","/**\n * Returns a throttled version of the function using requestAnimationFrame.\n *\n * @param fn - The function to throttle.\n * @param ms - The number of milliseconds to wait for the throttled function to be called again\n */\nexport function throttle<Args extends Array<unknown>>(\n  fn: (...args: Args) => void,\n  ms = 0\n): { (...args: Args): void; cancel: () => void } {\n  let isThrottled = false\n  let start = 0\n  let frameId: number | null = null\n\n  function throttled(...args: Args) {\n    if (isThrottled) return\n\n    isThrottled = true\n    const step = () => {\n      frameId = requestAnimationFrame((time) => {\n        const elapsed = time - start\n        if (elapsed > ms) {\n          start = time\n          fn(...args)\n          isThrottled = false\n        } else {\n          step()\n        }\n      })\n    }\n    step()\n  }\n\n  throttled.cancel = () => {\n    if (frameId) {\n      cancelAnimationFrame(frameId)\n      frameId = null\n      isThrottled = false\n    }\n  }\n\n  return throttled\n}\n","/**\n * Converts a value to a CSS-compatible string.\n * @param value - The value to convert.\n * @returns The CSS-compatible string.\n **/\nexport function toCssValue(\n  value?: string | number,\n  unit: string = 'px'\n): string | undefined {\n  if (value === null || value === undefined || value === '') {\n    return undefined\n  }\n\n  if (typeof value === 'number' || parseFloat(value).toString() === value) {\n    return `${value}${unit}`\n  }\n  return value\n}\n","import { defineComponent, h, inject } from 'vue'\n\nimport { injectCarousel } from '@/shared'\nimport { i18nFormatter } from '@/utils'\n\nexport const ARIA = defineComponent({\n  name: 'CarouselAria',\n  setup() {\n    const carousel = inject(injectCarousel)\n\n    if (!carousel) {\n      return () => ''\n    }\n\n    return () =>\n      h(\n        'div',\n        {\n          class: ['carousel__liveregion', 'carousel__sr-only'],\n          'aria-live': 'polite',\n          'aria-atomic': 'true',\n        },\n        i18nFormatter(carousel.config.i18n['itemXofY'], {\n          currentSlide: carousel.currentSlide + 1,\n          slidesCount: carousel.slidesCount,\n        })\n      )\n  },\n})\n","import { ref, reactive, computed, Ref } from 'vue'\n\nimport { throttle } from '@/utils'\n\nexport type DragEventData = {\n  deltaX: number\n  deltaY: number\n  isTouch: boolean\n}\nexport interface UseDragOptions {\n  isSliding: boolean | Ref<boolean>\n  onDrag?: ({ deltaX, deltaY, isTouch }: DragEventData) => void\n  onDragStart?: () => void\n  onDragEnd?: () => void\n}\n\nexport function useDrag(options: UseDragOptions) {\n  let isTouch = false\n  const startPosition = { x: 0, y: 0 }\n  const dragged = reactive({ x: 0, y: 0 })\n  const isDragging = ref(false)\n\n  const { isSliding } = options\n\n  const sliding = computed(() => {\n    return typeof isSliding === 'boolean' ? isSliding : isSliding.value\n  })\n\n  const handleDragStart = (event: MouseEvent | TouchEvent): void => {\n    // Prevent drag initiation on input elements or if already sliding\n    const targetTagName = (event.target as HTMLElement).tagName\n    if (['INPUT', 'TEXTAREA', 'SELECT'].includes(targetTagName) || sliding.value) {\n      return\n    }\n\n    isTouch = event.type === 'touchstart'\n\n    if (isTouch && (event as TouchEvent).touches.length > 1) {\n      // If there is more than 1 finger on the screen, avoid drag start (this allows user to pinch zoom)\n      return\n    } else if (!isTouch) {\n      event.preventDefault()\n      if ((event as MouseEvent).button !== 0) {\n        return\n      }\n    }\n\n    startPosition.x = isTouch\n      ? (event as TouchEvent).touches[0].clientX\n      : (event as MouseEvent).clientX\n    startPosition.y = isTouch\n      ? (event as TouchEvent).touches[0].clientY\n      : (event as MouseEvent).clientY\n\n    const moveEvent = isTouch ? 'touchmove' : 'mousemove'\n    const endEvent = isTouch ? 'touchend' : 'mouseup'\n    document.addEventListener(moveEvent, handleDrag, { passive: false })\n    document.addEventListener(endEvent, handleDragEnd, { passive: true })\n\n    options.onDragStart?.()\n  }\n\n  const handleDrag = throttle((event: TouchEvent | MouseEvent): void => {\n    if (isTouch && (event as TouchEvent).touches.length > 1) {\n      return\n    }\n\n    isDragging.value = true\n\n    const currentX = isTouch\n      ? (event as TouchEvent).touches[0].clientX\n      : (event as MouseEvent).clientX\n    const currentY = isTouch\n      ? (event as TouchEvent).touches[0].clientY\n      : (event as MouseEvent).clientY\n\n    dragged.x = currentX - startPosition.x\n    dragged.y = currentY - startPosition.y\n\n    options.onDrag?.({ deltaX: dragged.x, deltaY: dragged.y, isTouch })\n  })\n\n  const handleDragEnd = (): void => {\n    handleDrag.cancel()\n\n    const draggedDistance = Math.abs(dragged.x) + Math.abs(dragged.y);\n\n    if (!isTouch && draggedDistance > 10) {\n      window.addEventListener('click', (e: MouseEvent) => {\n        e.preventDefault()\n        e.stopPropagation()\n      }, { once: true, capture: true })\n    }\n\n    options.onDragEnd?.()\n\n    dragged.x = 0\n    dragged.y = 0\n    isDragging.value = false\n\n    const moveEvent = isTouch ? 'touchmove' : 'mousemove'\n    const endEvent = isTouch ? 'touchend' : 'mouseup'\n    document.removeEventListener(moveEvent, handleDrag)\n    document.removeEventListener(endEvent, handleDragEnd)\n  }\n\n  return {\n    dragged,\n    isDragging,\n    handleDragStart,\n  }\n}\n","import { ref } from 'vue'\n\nexport function useHover() {\n  const isHover = ref(false)\n\n  const handleMouseEnter = (): void => {\n    isHover.value = true\n  }\n\n  const handleMouseLeave = (): void => {\n    isHover.value = false\n  }\n\n  return {\n    isHover,\n    handleMouseEnter,\n    handleMouseLeave,\n  }\n}\n","import { ComputedRef, Ref, computed } from 'vue'\n\nimport { CarouselConfig } from '@/shared'\nimport { DEFAULT_MOUSE_WHEEL_THRESHOLD } from '@/shared/constants'\n\nexport type WheelEventData = {\n  deltaX: number\n  deltaY: number\n  isScrollingForward: boolean\n}\n\nexport type UseWheelOptions = {\n  isVertical: boolean | ComputedRef<boolean>\n  isSliding: boolean | Ref<boolean>\n  config: CarouselConfig\n  onWheel?: (data: WheelEventData) => void\n}\n\nexport function useWheel(options: UseWheelOptions) {\n  const { isVertical, isSliding, config } = options\n\n  // Create computed values to handle both reactive and non-reactive inputs\n  const vertical = computed(() => {\n    return typeof isVertical === 'boolean' ? isVertical : isVertical.value\n  })\n\n  const sliding = computed(() => {\n    return typeof isSliding === 'boolean' ? isSliding : isSliding.value\n  })\n\n  const handleScroll = (event: WheelEvent): void => {\n    event.preventDefault()\n\n    if (!config.mouseWheel || sliding.value) {\n      return\n    }\n\n    // Add sensitivity threshold to prevent small movements from triggering navigation\n    const threshold =\n      typeof config.mouseWheel === 'object'\n        ? (config.mouseWheel.threshold ?? DEFAULT_MOUSE_WHEEL_THRESHOLD)\n        : DEFAULT_MOUSE_WHEEL_THRESHOLD\n\n    // Determine scroll direction\n    const deltaY = Math.abs(event.deltaY) > threshold ? event.deltaY : 0\n    const deltaX = Math.abs(event.deltaX) > threshold ? event.deltaX : 0\n\n    // If neither delta exceeds the threshold, don't navigate\n    if (deltaY === 0 && deltaX === 0) {\n      return\n    }\n\n    // Determine primary delta based on carousel orientation\n    const primaryDelta = vertical.value ? deltaY : deltaX\n\n    // If primaryDelta is 0, use the other delta as fallback\n    const effectiveDelta =\n      primaryDelta !== 0 ? primaryDelta : vertical.value ? deltaX : deltaY\n\n    // Positive delta means scrolling down/right\n    const isScrollingForward = effectiveDelta > 0\n\n    options.onWheel?.({ deltaX, deltaY, isScrollingForward })\n  }\n\n  return {\n    handleScroll,\n  }\n}\n","import { PropType } from 'vue'\n\nimport {\n  BREAKPOINT_MODE_OPTIONS,\n  DEFAULT_CONFIG,\n  DIR_MAP,\n  DIR_OPTIONS,\n  SLIDE_EFFECTS,\n  SNAP_ALIGN_OPTIONS,\n} from '@/shared'\n\nimport type {\n  BreakpointMode,\n  CarouselConfig,\n  Dir,\n  DragConfig,\n  NonNormalizedDir,\n  NormalizedDir,\n  SlideEffect,\n  SnapAlign,\n  WheelConfig,\n} from '@/shared'\n\nexport const carouselProps = {\n  // time to auto advance slides in ms\n  autoplay: {\n    default: DEFAULT_CONFIG.autoplay,\n    type: Number,\n  },\n  // an object to store breakpoints\n  breakpoints: {\n    default: DEFAULT_CONFIG.breakpoints,\n    type: Object as PropType<CarouselConfig['breakpoints']>,\n  },\n  // controls the breakpoint mode relative to the carousel container or the viewport\n  breakpointMode: {\n    default: DEFAULT_CONFIG.breakpointMode,\n    validator(value: BreakpointMode) {\n      return BREAKPOINT_MODE_OPTIONS.includes(value)\n    },\n  },\n  clamp: {\n    type: Boolean,\n  },\n  // control the direction of the carousel\n  dir: {\n    type: String as PropType<Dir>,\n    default: DEFAULT_CONFIG.dir,\n    validator(value: Dir, props: { height?: string }) {\n      // The value must match one of these strings\n      if (!DIR_OPTIONS.includes(value)) {\n        return false\n      }\n\n      const normalizedDir =\n        value in DIR_MAP ? DIR_MAP[value as NonNormalizedDir] : (value as NormalizedDir)\n      if (\n        ['ttb', 'btt'].includes(normalizedDir) &&\n        (!props.height || props.height === 'auto')\n      ) {\n        console.warn(\n          `[vue3-carousel]: The dir \"${value}\" is not supported with height \"auto\".`\n        )\n      }\n      return true\n    },\n  },\n  // enable/disable the carousel component\n  enabled: {\n    default: DEFAULT_CONFIG.enabled,\n    type: Boolean,\n  },\n  // control the gap between slides\n  gap: {\n    default: DEFAULT_CONFIG.gap,\n    type: Number,\n  },\n  // set carousel height\n  height: {\n    default: DEFAULT_CONFIG.height,\n    type: [Number, String],\n  },\n  // aria-labels and additional text labels\n  i18n: {\n    default: DEFAULT_CONFIG.i18n,\n    type: Object as PropType<typeof DEFAULT_CONFIG.i18n>,\n  },\n  ignoreAnimations: {\n    default: false,\n    type: [Array, Boolean, String] as PropType<CarouselConfig['ignoreAnimations']>,\n  },\n  // count of items to be scrolled\n  itemsToScroll: {\n    default: DEFAULT_CONFIG.itemsToScroll,\n    type: Number,\n  },\n  // count of items to showed per view\n  itemsToShow: {\n    default: DEFAULT_CONFIG.itemsToShow,\n    type: [Number, String],\n  },\n  // slide number number of initial slide\n  modelValue: {\n    default: undefined,\n    type: Number,\n  },\n  // toggle mouse dragging\n  mouseDrag: {\n    default: DEFAULT_CONFIG.mouseDrag,\n    type: [Boolean, Object] as PropType<boolean | DragConfig>,\n  },\n  // toggle mouse wheel scrolling\n  mouseWheel: {\n    default: DEFAULT_CONFIG.mouseWheel,\n    type: [Boolean, Object] as PropType<boolean | WheelConfig>,\n  },\n  // control mouse scroll threshold\n  mouseScrollThreshold: {\n    default: DEFAULT_CONFIG.mouseScrollThreshold,\n    type: Number,\n  },\n  pauseAutoplayOnHover: {\n    default: DEFAULT_CONFIG.pauseAutoplayOnHover,\n    type: Boolean,\n  },\n  preventExcessiveDragging: {\n    default: false,\n    type: Boolean,\n    validator(value: boolean, props: { wrapAround?: boolean }) {\n      if (value && props.wrapAround) {\n        console.warn(\n          `[vue3-carousel]: \"preventExcessiveDragging\" cannot be used with wrapAround. The setting will be ignored.`\n        )\n      }\n      return true\n    },\n  },\n  slideEffect: {\n    type: String as PropType<SlideEffect>,\n    default: DEFAULT_CONFIG.slideEffect,\n    validator(value: SlideEffect) {\n      return SLIDE_EFFECTS.includes(value)\n    },\n  },\n  // control snap position alignment\n  snapAlign: {\n    default: DEFAULT_CONFIG.snapAlign,\n    validator(value: SnapAlign) {\n      return SNAP_ALIGN_OPTIONS.includes(value)\n    },\n  },\n  // toggle touch dragging\n  touchDrag: {\n    default: DEFAULT_CONFIG.touchDrag,\n    type: [Boolean, Object] as PropType<boolean | DragConfig>,\n  },\n  // sliding transition time in ms\n  transition: {\n    default: DEFAULT_CONFIG.transition,\n    type: Number,\n  },\n  // control infinite scrolling mode\n  wrapAround: {\n    default: DEFAULT_CONFIG.wrapAround,\n    type: Boolean,\n  },\n}\n","import {\n  ComputedRef,\n  Ref,\n  SetupContext,\n  computed,\n  defineComponent,\n  h,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  reactive,\n  ref,\n  shallowReactive,\n  toRefs,\n  watch,\n  watchEffect,\n} from 'vue'\n\nimport { ARIA as ARIAComponent } from '@/components/ARIA'\nimport { DragEventData, useDrag, useHover, useWheel, WheelEventData } from '@/composables'\nimport {\n  CarouselConfig,\n  DEFAULT_CONFIG,\n  DEFAULT_DRAG_THRESHOLD,\n  DIR_MAP,\n  NonNormalizedDir,\n  NormalizedDir,\n  createSlideRegistry,\n  injectCarousel,\n} from '@/shared'\nimport {\n  ScaleMultipliers,\n  calculateAverage,\n  createCloneSlides,\n  except,\n  getDraggedSlidesCount,\n  getNumberInRange,\n  getScaleMultipliers,\n  getSnapAlignOffset,\n  mapNumberToRange,\n  throttle,\n  toCssValue,\n} from '@/utils'\n\nimport {\n  CarouselData,\n  CarouselExposed,\n  CarouselNav,\n  ElRect,\n  InjectedCarousel,\n} from './Carousel.types'\nimport { carouselProps } from './carouselProps'\n\nexport const Carousel = defineComponent({\n  name: 'VueCarousel',\n  props: carouselProps,\n  emits: [\n    'before-init',\n    'drag',\n    'init',\n    'loop',\n    'slide-end',\n    'slide-registered',\n    'slide-start',\n    'slide-unregistered',\n    'update:modelValue',\n    'wheel',\n  ],\n  setup(props: CarouselConfig, { slots, emit, expose }: SetupContext) {\n    const slideRegistry = createSlideRegistry(emit)\n    const slides = slideRegistry.getSlides()\n    const slidesCount = computed(() => slides.length)\n\n    const root: Ref<Element | null> = ref(null)\n    const viewport: Ref<Element | null> = ref(null)\n    const slideSize: Ref<number> = ref(0)\n\n    const fallbackConfig = computed(() => ({\n      ...DEFAULT_CONFIG,\n      // Avoid reactivity tracking in breakpoints and vModel which would trigger unnecessary updates\n      ...except(props, ['breakpoints', 'modelValue']),\n      i18n: { ...DEFAULT_CONFIG.i18n, ...props.i18n },\n    }))\n\n    // current active config\n    const config = shallowReactive<CarouselConfig>({ ...fallbackConfig.value })\n\n    // slides\n    const currentSlideIndex = ref(props.modelValue ?? 0)\n    const activeSlideIndex = ref(currentSlideIndex.value)\n\n    watch(currentSlideIndex, (val) => (activeSlideIndex.value = val))\n    const prevSlideIndex = ref(0)\n    const middleSlideIndex = computed(() => Math.ceil((slidesCount.value - 1) / 2))\n    const maxSlideIndex = computed(() => slidesCount.value - 1)\n    const minSlideIndex = computed(() => 0)\n\n    let autoplayTimer: ReturnType<typeof setInterval> | null = null\n    let transitionTimer: ReturnType<typeof setTimeout> | null = null\n    let resizeObserver: ResizeObserver | null = null\n\n    const effectiveSlideSize = computed(() => slideSize.value + config.gap)\n\n    const normalizedDir = computed<NormalizedDir>(() => {\n      const dir = config.dir || 'ltr'\n      return dir in DIR_MAP ? DIR_MAP[dir as NonNormalizedDir] : (dir as NormalizedDir)\n    })\n\n    const isReversed = computed(() => ['rtl', 'btt'].includes(normalizedDir.value))\n    const isVertical = computed(() => ['ttb', 'btt'].includes(normalizedDir.value))\n    const isAuto = computed(() => config.itemsToShow === 'auto')\n\n    const dimension = computed(() => (isVertical.value ? 'height' : 'width'))\n\n    function updateBreakpointsConfig(): void {\n      if (!mounted.value) {\n        return\n      }\n      // Determine the width source based on the 'breakpointMode' config\n      const widthSource =\n        (fallbackConfig.value.breakpointMode === 'carousel'\n          ? root.value?.getBoundingClientRect().width\n          : typeof window !== 'undefined'\n            ? window.innerWidth\n            : 0) || 0\n\n      const breakpointsArray = Object.keys(props.breakpoints || {})\n        .map((key) => Number(key))\n        .sort((a, b) => +b - +a)\n\n      const newConfig: Partial<CarouselConfig> = {}\n      breakpointsArray.some((breakpoint) => {\n        if (widthSource >= breakpoint) {\n          Object.assign(newConfig, props.breakpoints![breakpoint])\n          if (newConfig.i18n) {\n            Object.assign(\n              newConfig.i18n,\n              fallbackConfig.value.i18n,\n              props.breakpoints![breakpoint].i18n\n            )\n          }\n          return true\n        }\n        return false\n      })\n\n      Object.assign(config, fallbackConfig.value, newConfig)\n\n      // Validate itemsToShow\n      if (!isAuto.value) {\n        config.itemsToShow = getNumberInRange({\n          val: Number(config.itemsToShow),\n          max: props.clamp ? slidesCount.value : Infinity,\n          min: 1,\n        })\n      }\n    }\n\n    const handleResize = throttle(() => {\n      updateBreakpointsConfig()\n      updateSlidesData()\n      updateSlideSize()\n    })\n\n    const transformElements = shallowReactive<Set<HTMLElement>>(new Set())\n\n    /**\n     * Setup functions\n     */\n    const slidesRect = ref<Array<ElRect>>([])\n    function updateSlidesRectSize({\n      widthMultiplier,\n      heightMultiplier,\n    }: ScaleMultipliers): void {\n      slidesRect.value = slides.map((slide) => {\n        const rect = slide.exposed?.getBoundingRect()\n        return {\n          width: rect.width * widthMultiplier,\n          height: rect.height * heightMultiplier,\n        }\n      })\n    }\n    const viewportRect: Ref<ElRect> = ref({\n      width: 0,\n      height: 0,\n    })\n    function updateViewportRectSize({\n      widthMultiplier,\n      heightMultiplier,\n    }: ScaleMultipliers): void {\n      const rect = viewport.value?.getBoundingClientRect() || { width: 0, height: 0 }\n      viewportRect.value = {\n        width: rect.width * widthMultiplier,\n        height: rect.height * heightMultiplier,\n      }\n    }\n\n    function updateSlideSize(): void {\n      if (!viewport.value) return\n\n      const scaleMultipliers = getScaleMultipliers(transformElements)\n\n      updateViewportRectSize(scaleMultipliers)\n      updateSlidesRectSize(scaleMultipliers)\n\n      if (isAuto.value) {\n        slideSize.value = calculateAverage(\n          slidesRect.value.map((slide) => slide[dimension.value])\n        )\n      } else {\n        const itemsToShow = Number(config.itemsToShow)\n        const totalGap = (itemsToShow - 1) * config.gap\n        slideSize.value = (viewportRect.value[dimension.value] - totalGap) / itemsToShow\n      }\n    }\n\n    function updateSlidesData(): void {\n      if (!config.wrapAround && slidesCount.value > 0) {\n        currentSlideIndex.value = getNumberInRange({\n          val: currentSlideIndex.value,\n          max: maxSlideIndex.value,\n          min: minSlideIndex.value,\n        })\n      }\n    }\n\n    const ignoreAnimations = computed<false | string[]>(() => {\n      if (typeof props.ignoreAnimations === 'string') {\n        return props.ignoreAnimations.split(',')\n      } else if (Array.isArray(props.ignoreAnimations)) {\n        return props.ignoreAnimations\n      } else if (!props.ignoreAnimations) {\n        return []\n      }\n      return false\n    })\n\n    watchEffect(() => updateSlidesData())\n\n    watchEffect(() => {\n      // Call updateSlideSize when viewport is ready and track deps\n      updateSlideSize()\n    })\n\n    let animationInterval: number\n\n    const setAnimationInterval = (event: AnimationEvent) => {\n      const target = event.target as HTMLElement\n      if (\n        !target?.contains(root.value) ||\n        (Array.isArray(ignoreAnimations.value) &&\n          ignoreAnimations.value.includes(event.animationName))\n      ) {\n        return\n      }\n\n      transformElements.add(target)\n      if (!animationInterval) {\n        const stepAnimation = () => {\n          animationInterval = requestAnimationFrame(() => {\n            updateSlideSize()\n            stepAnimation()\n          })\n        }\n        stepAnimation()\n      }\n    }\n    const finishAnimation = (event: AnimationEvent | TransitionEvent) => {\n      const target = event.target as HTMLElement\n      if (target) {\n        transformElements.delete(target)\n      }\n      if (animationInterval && transformElements.size === 0) {\n        cancelAnimationFrame(animationInterval)\n        updateSlideSize()\n      }\n    }\n\n    const mounted = ref(false)\n\n    if (typeof document !== 'undefined') {\n      watchEffect(() => {\n        if (mounted.value && ignoreAnimations.value !== false) {\n          document.addEventListener('animationstart', setAnimationInterval)\n          document.addEventListener('animationend', finishAnimation)\n        } else {\n          document.removeEventListener('animationstart', setAnimationInterval)\n          document.removeEventListener('animationend', finishAnimation)\n        }\n      })\n    }\n\n    onMounted((): void => {\n      mounted.value = true\n      updateBreakpointsConfig()\n      initAutoplay()\n\n      if (root.value) {\n        resizeObserver = new ResizeObserver(handleResize)\n        resizeObserver.observe(root.value)\n      }\n\n      emit('init')\n    })\n\n    onBeforeUnmount(() => {\n      mounted.value = false\n\n      slideRegistry.cleanup()\n\n      if (transitionTimer) {\n        clearTimeout(transitionTimer)\n      }\n      if (animationInterval) {\n        cancelAnimationFrame(animationInterval)\n      }\n      if (autoplayTimer) {\n        clearInterval(autoplayTimer)\n      }\n      if (resizeObserver) {\n        resizeObserver.disconnect()\n        resizeObserver = null\n      }\n\n      if (typeof document !== 'undefined') {\n        handleBlur()\n      }\n      if (root.value) {\n        root.value.removeEventListener('transitionend', updateSlideSize)\n        root.value.removeEventListener('animationiteration', updateSlideSize)\n      }\n    })\n\n    /**\n     * Carousel Event listeners\n     */\n    const { isHover, handleMouseEnter, handleMouseLeave } = useHover()\n\n    const handleArrowKeys = throttle((event: KeyboardEvent): void => {\n      if (event.ctrlKey) return\n      switch (event.key) {\n        case 'ArrowLeft':\n        case 'ArrowUp':\n          if (isVertical.value === event.key.endsWith('Up')) {\n            if (isReversed.value) {\n              next(true)\n            } else {\n              prev(true)\n            }\n          }\n          break\n        case 'ArrowRight':\n        case 'ArrowDown':\n          if (isVertical.value === event.key.endsWith('Down')) {\n            if (isReversed.value) {\n              prev(true)\n            } else {\n              next(true)\n            }\n          }\n          break\n      }\n    }, 200)\n\n    const handleBlur = (): void => {\n      document.removeEventListener('keydown', handleArrowKeys)\n    }\n\n    const handleFocus = (): void => {\n      document.addEventListener('keydown', handleArrowKeys)\n    }\n\n    /**\n     * Autoplay\n     */\n    function initAutoplay(): void {\n      if (!config.autoplay || config.autoplay <= 0) {\n        return\n      }\n\n      autoplayTimer = setInterval(() => {\n        if (config.pauseAutoplayOnHover && isHover.value) {\n          return\n        }\n\n        next()\n      }, config.autoplay)\n    }\n\n    function resetAutoplay(): void {\n      stopAutoplay()\n      initAutoplay()\n    }\n\n    function stopAutoplay(): void {\n      if (autoplayTimer) {\n        clearInterval(autoplayTimer)\n        autoplayTimer = null\n      }\n    }\n\n    /**\n     * Navigation function\n     */\n    const isSliding = ref(false)\n\n    const onDrag = ({ deltaX, deltaY, isTouch }: DragEventData) => {\n      emit('drag', { deltaX, deltaY })\n\n      const threshold = isTouch\n        ? typeof config.touchDrag === 'object'\n          ? (config.touchDrag?.threshold ?? DEFAULT_DRAG_THRESHOLD)\n          : DEFAULT_DRAG_THRESHOLD\n        : typeof config.mouseDrag === 'object'\n          ? (config.mouseDrag?.threshold ?? DEFAULT_DRAG_THRESHOLD)\n          : DEFAULT_DRAG_THRESHOLD\n\n      if (effectiveSlideSize.value === 0) {\n        updateSlideSize();\n      }\n\n      if (effectiveSlideSize.value === 0) {\n        return\n      }\n      const draggedSlides = getDraggedSlidesCount({\n        isVertical: isVertical.value,\n        isReversed: isReversed.value,\n        dragged: { x: deltaX, y: deltaY },\n        effectiveSlideSize: effectiveSlideSize.value,\n        threshold,\n      })\n\n      // Prevent unnecessary reactivity\n      if (draggedSlides === 0) {\n        return\n      }\n\n      activeSlideIndex.value = config.wrapAround\n        ? currentSlideIndex.value + draggedSlides\n        : getNumberInRange({\n            val: currentSlideIndex.value + draggedSlides,\n            max: maxSlideIndex.value,\n            min: minSlideIndex.value,\n          })\n    }\n\n    const onDragEnd = () => slideTo(activeSlideIndex.value)\n\n    const { dragged, isDragging, handleDragStart } = useDrag({\n      isSliding,\n      onDrag,\n      onDragEnd,\n    })\n\n    const onWheel = ({ deltaX, deltaY, isScrollingForward }: WheelEventData) => {\n      emit('wheel', { deltaX, deltaY })\n\n      if (isScrollingForward) {\n        // Scrolling down/right\n        if (isReversed.value) {\n          prev()\n        } else {\n          next()\n        }\n      } else {\n        // Scrolling up/left\n        if (isReversed.value) {\n          next()\n        } else {\n          prev()\n        }\n      }\n    }\n\n    const { handleScroll } = useWheel({\n      isVertical,\n      isSliding,\n      config,\n      onWheel,\n    })\n\n    function next(skipTransition = false): void {\n      slideTo(currentSlideIndex.value + config.itemsToScroll, skipTransition)\n    }\n\n    function prev(skipTransition = false): void {\n      slideTo(currentSlideIndex.value - config.itemsToScroll, skipTransition)\n    }\n\n    function slideTo(slideIndex: number, skipTransition = false): void {\n      if (!skipTransition && isSliding.value) {\n        return\n      }\n      \n      const targetIndex = (config.wrapAround ? mapNumberToRange : getNumberInRange)({\n        val: slideIndex,\n        max: maxSlideIndex.value,\n        min: minSlideIndex.value,\n      })\n      \n      if (currentSlideIndex.value === targetIndex) {\n        return;\n      }\n      \n      prevSlideIndex.value = currentSlideIndex.value\n\n      emit('slide-start', {\n        slidingToIndex: slideIndex,\n        currentSlideIndex: currentSlideIndex.value,\n        prevSlideIndex: prevSlideIndex.value,\n        slidesCount: slidesCount.value,\n      })\n\n      stopAutoplay()\n      isSliding.value = true\n\n      currentSlideIndex.value = slideIndex\n      if (targetIndex !== slideIndex) {\n        modelWatcher.pause()\n      }\n      emit('update:modelValue', targetIndex)\n\n      const transitionCallback = (): void => {\n        if (config.wrapAround && targetIndex !== slideIndex) {\n          modelWatcher.resume()\n\n          currentSlideIndex.value = targetIndex\n          emit('loop', {\n            currentSlideIndex: currentSlideIndex.value,\n            slidingToIndex: slideIndex,\n          })\n        }\n\n        emit('slide-end', {\n          currentSlideIndex: currentSlideIndex.value,\n          prevSlideIndex: prevSlideIndex.value,\n          slidesCount: slidesCount.value,\n        })\n\n        isSliding.value = false\n        resetAutoplay()\n      }\n\n      transitionTimer = setTimeout(transitionCallback, config.transition)\n    }\n\n    function restartCarousel(): void {\n      updateBreakpointsConfig()\n      updateSlidesData()\n      updateSlideSize()\n      resetAutoplay()\n    }\n\n    // Update the carousel on props change\n    watch(\n      () => [fallbackConfig.value, props.breakpoints],\n      () => updateBreakpointsConfig(),\n      { deep: true }\n    )\n\n    watch(\n      () => props.autoplay,\n      () => resetAutoplay()\n    )\n\n    // Handle changing v-model value\n    const modelWatcher = watch(\n      () => props.modelValue,\n      (val) => {\n        if (val === currentSlideIndex.value) {\n          return\n        }\n        slideTo(Number(val), true)\n      }\n    )\n\n    // Init carousel\n    emit('before-init')\n\n    const clonedSlidesCount = computed(() => {\n      if (!config.wrapAround) {\n        return { before: 0, after: 0 }\n      }\n      if (isAuto.value) {\n        return { before: slides.length, after: slides.length }\n      }\n\n      const itemsToShow = Number(config.itemsToShow)\n      const slidesToClone = Math.ceil(itemsToShow + (config.itemsToScroll - 1))\n      const before = slidesToClone - activeSlideIndex.value\n      const after = slidesToClone - (slidesCount.value - (activeSlideIndex.value + 1))\n\n      return {\n        before: Math.max(0, before),\n        after: Math.max(0, after),\n      }\n    })\n\n    const clonedSlidesOffset = computed(() => {\n      if (!clonedSlidesCount.value.before) {\n        return 0\n      }\n      if (isAuto.value) {\n        return (\n          slidesRect.value\n            .slice(-1 * clonedSlidesCount.value.before)\n            .reduce((acc, slide) => acc + slide[dimension.value] + config.gap, 0) * -1\n        )\n      }\n\n      return clonedSlidesCount.value.before * effectiveSlideSize.value * -1\n    })\n\n    const snapAlignOffset = computed(() => {\n      if (isAuto.value) {\n        const slideIndex =\n          ((currentSlideIndex.value % slides.length) + slides.length) % slides.length\n        return getSnapAlignOffset({\n          slideSize: slidesRect.value[slideIndex]?.[dimension.value],\n          viewportSize: viewportRect.value[dimension.value],\n          align: config.snapAlign,\n        })\n      }\n\n      return getSnapAlignOffset({\n        align: config.snapAlign,\n        itemsToShow: +config.itemsToShow,\n      })\n    })\n    const scrolledOffset = computed(() => {\n      let output = 0\n\n      if (isAuto.value) {\n        if (currentSlideIndex.value < 0) {\n          output =\n            slidesRect.value\n              .slice(currentSlideIndex.value)\n              .reduce((acc, slide) => acc + slide[dimension.value] + config.gap, 0) * -1\n        } else {\n          output = slidesRect.value\n            .slice(0, currentSlideIndex.value)\n            .reduce((acc, slide) => acc + slide[dimension.value] + config.gap, 0)\n        }\n        output -= snapAlignOffset.value\n\n        // remove whitespace\n        if (!config.wrapAround) {\n          const maxSlidingValue =\n            slidesRect.value.reduce(\n              (acc, slide) => acc + slide[dimension.value] + config.gap,\n              0\n            ) -\n            viewportRect.value[dimension.value] -\n            config.gap\n\n          output = getNumberInRange({\n            val: output,\n            max: maxSlidingValue,\n            min: 0,\n          })\n        }\n      } else {\n        let scrolledSlides = currentSlideIndex.value - snapAlignOffset.value\n\n        // remove whitespace\n        if (!config.wrapAround) {\n          scrolledSlides = getNumberInRange({\n            val: scrolledSlides,\n            max: slidesCount.value - +config.itemsToShow,\n            min: 0,\n          })\n        }\n        output = scrolledSlides * effectiveSlideSize.value\n      }\n\n      return output * (isReversed.value ? 1 : -1)\n    })\n\n    const visibleRange = computed(() => {\n      if (!isAuto.value) {\n        const base = currentSlideIndex.value - snapAlignOffset.value\n        if (config.wrapAround) {\n          return {\n            min: Math.floor(base),\n            max: Math.ceil(base + Number(config.itemsToShow) - 1),\n          }\n        }\n        return {\n          min: Math.floor(\n            getNumberInRange({\n              val: base,\n              max: slidesCount.value - Number(config.itemsToShow),\n              min: 0,\n            })\n          ),\n          max: Math.ceil(\n            getNumberInRange({\n              val: base + Number(config.itemsToShow) - 1,\n              max: slidesCount.value - 1,\n              min: 0,\n            })\n          ),\n        }\n      }\n\n      // Auto width mode\n      let minIndex = 0\n      {\n        let accumulatedSize = 0\n        let index = 0 - clonedSlidesCount.value.before\n        const offset = Math.abs(scrolledOffset.value + clonedSlidesOffset.value)\n\n        while (accumulatedSize <= offset) {\n          const normalizedIndex =\n            ((index % slides.length) + slides.length) % slides.length\n          accumulatedSize +=\n            slidesRect.value[normalizedIndex]?.[dimension.value] + config.gap\n          index++\n        }\n        minIndex = index - 1\n      }\n\n      let maxIndex = 0\n      {\n        let index = minIndex\n        let accumulatedSize = 0\n        if (index < 0) {\n          accumulatedSize =\n            slidesRect.value\n              .slice(0, index)\n              .reduce((acc, slide) => acc + slide[dimension.value] + config.gap, 0) -\n            Math.abs(scrolledOffset.value + clonedSlidesOffset.value)\n        } else {\n          accumulatedSize =\n            slidesRect.value\n              .slice(0, index)\n              .reduce((acc, slide) => acc + slide[dimension.value] + config.gap, 0) -\n            Math.abs(scrolledOffset.value)\n        }\n\n        while (accumulatedSize < viewportRect.value[dimension.value]) {\n          const normalizedIndex =\n            ((index % slides.length) + slides.length) % slides.length\n          accumulatedSize +=\n            slidesRect.value[normalizedIndex]?.[dimension.value] + config.gap\n          index++\n        }\n        maxIndex = index - 1\n      }\n\n      return {\n        min: Math.floor(minIndex),\n        max: Math.ceil(maxIndex),\n      }\n    })\n\n    const trackTransform: ComputedRef<string | undefined> = computed(() => {\n      if (config.slideEffect === 'fade') {\n        return undefined\n      }\n\n      const translateAxis = isVertical.value ? 'Y' : 'X'\n\n      // Include user drag interaction offset\n      const dragOffset = isVertical.value ? dragged.y : dragged.x\n\n      let totalOffset = scrolledOffset.value + dragOffset\n\n      if (!config.wrapAround && config.preventExcessiveDragging) {\n        let maxSlidingValue = 0\n        if (isAuto.value) {\n          maxSlidingValue = slidesRect.value.reduce(\n            (acc, slide) => acc + slide[dimension.value],\n            0\n          )\n        } else {\n          maxSlidingValue =\n            (slidesCount.value - Number(config.itemsToShow)) * effectiveSlideSize.value\n        }\n        const min = isReversed.value ? 0 : -1 * maxSlidingValue\n        const max = isReversed.value ? maxSlidingValue : 0\n        totalOffset = getNumberInRange({\n          val: totalOffset,\n          min,\n          max,\n        })\n      }\n      return `translate${translateAxis}(${totalOffset}px)`\n    })\n\n    const carouselStyle = computed(() => ({\n      '--vc-carousel-height': toCssValue(config.height),\n      '--vc-cloned-offset': toCssValue(clonedSlidesOffset.value),\n      '--vc-slide-gap': toCssValue(config.gap),\n      '--vc-transition-duration': isSliding.value\n        ? toCssValue(config.transition, 'ms')\n        : undefined,\n    }))\n\n    const nav: CarouselNav = { slideTo, next, prev }\n\n    const provided: InjectedCarousel = reactive({\n      activeSlide: activeSlideIndex,\n      config,\n      currentSlide: currentSlideIndex,\n      isSliding,\n      isVertical,\n      maxSlide: maxSlideIndex,\n      minSlide: minSlideIndex,\n      nav,\n      normalizedDir,\n      slideRegistry,\n      slideSize,\n      slides,\n      slidesCount,\n      viewport,\n      visibleRange,\n    })\n\n    provide(injectCarousel, provided)\n\n    const data = reactive<CarouselData>({\n      config,\n      currentSlide: currentSlideIndex,\n      maxSlide: maxSlideIndex,\n      middleSlide: middleSlideIndex,\n      minSlide: minSlideIndex,\n      slideSize,\n      slidesCount,\n    })\n\n    expose<CarouselExposed>(\n      reactive({\n        data,\n        next,\n        prev,\n        handleArrowKeys,\n        restartCarousel,\n        slideTo,\n        updateBreakpointsConfig,\n        updateSlideSize,\n        updateSlidesData,\n        ...toRefs(provided),\n      })\n    )\n\n    return () => {\n      const slotSlides = slots.default || slots.slides\n      const outputSlides = slotSlides?.(data) || []\n\n      const { before, after } = clonedSlidesCount.value\n      const slidesBefore = createCloneSlides({\n        slides,\n        position: 'before',\n        toShow: before,\n      })\n\n      const slidesAfter = createCloneSlides({\n        slides,\n        position: 'after',\n        toShow: after,\n      })\n\n      const output = [...slidesBefore, ...outputSlides, ...slidesAfter]\n\n      if (!config.enabled || !output.length) {\n        return h(\n          'section',\n          {\n            ref: root,\n            class: ['carousel', 'is-disabled'],\n          },\n          output\n        )\n      }\n\n      const addonsElements = slots.addons?.(data) || []\n\n      const trackEl = h(\n        'ol',\n        {\n          class: 'carousel__track',\n          onMousedownCapture: config.mouseDrag ? handleDragStart : null,\n          onTouchstartPassiveCapture: config.touchDrag ? handleDragStart : null,\n          onWheel: config.mouseWheel ? handleScroll : null,\n          style: { transform: trackTransform.value },\n        },\n        output\n      )\n      const viewPortEl = h('div', { class: 'carousel__viewport', ref: viewport }, trackEl)\n\n      return h(\n        'section',\n        {\n          ref: root,\n          class: [\n            'carousel',\n            `is-${normalizedDir.value}`,\n            `is-effect-${config.slideEffect}`,\n            {\n              'is-dragging': isDragging.value,\n              'is-hover': isHover.value,\n              'is-sliding': isSliding.value,\n              'is-vertical': isVertical.value,\n            },\n          ],\n          dir: normalizedDir.value,\n          style: carouselStyle.value,\n          'aria-label': config.i18n['ariaGallery'],\n          tabindex: '0',\n          onBlur: handleBlur,\n          onFocus: handleFocus,\n          onMouseenter: handleMouseEnter,\n          onMouseleave: handleMouseLeave,\n        },\n        [viewPortEl, addonsElements, h(ARIAComponent)]\n      )\n    }\n  },\n})\n","export enum IconName {\n  arrowDown = 'arrowDown',\n  arrowLeft = 'arrowLeft',\n  arrowRight = 'arrowRight',\n  arrowUp = 'arrowUp',\n}\n\nexport type IconNameValue = `${IconName}`\n\nexport type IconProps = {\n  name: IconNameValue\n  title?: string\n}\n","import { defineComponent, h, inject, PropType } from 'vue'\n\nimport { DEFAULT_CONFIG, injectCarousel } from '@/shared'\n\nimport { IconName, IconNameValue, IconProps } from './Icon.types'\n\nconst iconI18n = <Name extends IconNameValue>(name: Name) =>\n  `icon${name.charAt(0).toUpperCase() + name.slice(1)}` as `icon${Capitalize<Name>}`\n\nexport const icons = {\n  arrowDown: 'M7.41 8.59L12 13.17l4.59-4.58L18 10l-6 6-6-6 1.41-1.41z',\n  arrowLeft: 'M15.41 16.59L10.83 12l4.58-4.59L14 6l-6 6 6 6 1.41-1.41z',\n  arrowRight: 'M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z',\n  arrowUp: 'M7.41 15.41L12 10.83l4.59 4.58L18 14l-6-6-6 6z',\n}\n\nfunction isIconName(candidate: string): candidate is IconName {\n  return candidate in IconName\n}\n\nconst validateIconName = (value: IconNameValue) => {\n  return value && isIconName(value)\n}\n\nexport const Icon = defineComponent<IconProps>({\n  props: {\n    name: {\n      type: String as PropType<IconNameValue>,\n      required: true,\n      validator: validateIconName,\n    },\n    title: {\n      type: String,\n      default: (props: { name: IconNameValue }) =>\n        props.name ? DEFAULT_CONFIG.i18n[iconI18n(props.name)] : '',\n    },\n  },\n  setup(props) {\n    const carousel = inject(injectCarousel, null)\n\n    return () => {\n      const iconName = props.name\n      if (!iconName || !validateIconName(iconName)) return\n\n      const path = icons[iconName]\n      const pathEl = h('path', { d: path })\n\n      const iconTitle: string = carousel?.config.i18n[iconI18n(iconName)] || props.title!\n\n      const titleEl = h('title', iconTitle)\n\n      return h(\n        'svg',\n        {\n          class: 'carousel__icon',\n          viewBox: '0 0 24 24',\n          role: 'img',\n          'aria-label': iconTitle,\n        },\n        [titleEl, pathEl]\n      )\n    }\n  },\n})\n","import { computed, defineComponent, h, inject, PropType } from 'vue'\n\nimport { injectCarousel, NormalizedDir } from '@/shared'\n\nimport { Icon, IconNameValue } from '../Icon'\n\nimport { NavigationProps } from './Navigation.types'\n\nexport const Navigation = defineComponent<NavigationProps>({\n  name: 'CarouselNavigation',\n  inheritAttrs: false,\n  props: {\n    carousel: {\n      type: Object as PropType<NavigationProps['carousel']>,\n    },\n  },\n  setup(props, { slots, attrs }) {\n    let carousel = inject(injectCarousel, null)!\n    const { next: slotNext, prev: slotPrev } = slots\n\n    const getPrevIcon = () => {\n      const directionIcons: Record<NormalizedDir, IconNameValue> = {\n        btt: 'arrowDown',\n        ltr: 'arrowLeft',\n        rtl: 'arrowRight',\n        ttb: 'arrowUp',\n      }\n\n      return directionIcons[carousel.normalizedDir]\n    }\n    const getNextIcon = () => {\n      const directionIcons: Record<NormalizedDir, IconNameValue> = {\n        btt: 'arrowUp',\n        ltr: 'arrowRight',\n        rtl: 'arrowLeft',\n        ttb: 'arrowDown',\n      }\n\n      return directionIcons[carousel.normalizedDir]\n    }\n\n    const prevDisabled = computed(\n      () => !carousel.config.wrapAround && carousel.currentSlide <= carousel.minSlide\n    )\n    const nextDisabled = computed(\n      () => !carousel.config.wrapAround && carousel.currentSlide >= carousel.maxSlide\n    )\n\n    return () => {\n      if (props.carousel) {\n        carousel = props.carousel;\n      }\n      if (!carousel) {\n        console.warn('[vue3-carousel]: A carousel component must be provided for the navigation component to display')\n        return '';\n      }\n      const { i18n } = carousel.config\n      const prevButton = h(\n        'button',\n        {\n          type: 'button',\n          disabled: prevDisabled.value,\n          'aria-label': i18n['ariaPreviousSlide'],\n          title: i18n['ariaPreviousSlide'],\n          onClick: carousel.nav.prev,\n          ...attrs,\n          class: [\n            'carousel__prev',\n            { 'carousel__prev--disabled': prevDisabled.value },\n            attrs.class,\n          ],\n        },\n        slotPrev?.() || h(Icon, { name: getPrevIcon() })\n      )\n      const nextButton = h(\n        'button',\n        {\n          type: 'button',\n          disabled: nextDisabled.value,\n          'aria-label': i18n['ariaNextSlide'],\n          title: i18n['ariaNextSlide'],\n          onClick: carousel.nav.next,\n          ...attrs,\n          class: [\n            'carousel__next',\n            { 'carousel__next--disabled': nextDisabled.value },\n            attrs.class,\n          ],\n        },\n        slotNext?.() || h(Icon, { name: getNextIcon() })\n      )\n\n      return [prevButton, nextButton]\n    }\n  },\n})\n","import { computed, defineComponent, h, inject, PropType, VNode } from 'vue'\n\nimport { injectCarousel } from '@/shared'\nimport { getSnapAlignOffset, i18nFormatter, mapNumberToRange } from '@/utils'\n\nimport { PaginationProps } from './Pagination.types'\n\nexport const Pagination = defineComponent<PaginationProps>({\n  name: 'CarouselPagination',\n  props: {\n    disableOnClick: {\n      type: Boolean,\n    },\n    paginateByItemsToShow: {\n      type: Boolean,\n    },\n    carousel: {\n      type: Object as PropType<PaginationProps['carousel']>,\n    }\n  },\n  setup(props) {\n    let carousel = inject(injectCarousel, null)!\n\n    const itemsToShow = computed(() => carousel.config.itemsToShow as number)\n    const offset = computed(() =>\n      getSnapAlignOffset({\n        align: carousel.config.snapAlign,\n        itemsToShow: itemsToShow.value,\n      })\n    )\n    const isPaginated = computed(\n      () => props.paginateByItemsToShow && itemsToShow.value > 1\n    )\n    const currentPage = computed(() =>\n      Math.ceil((carousel.activeSlide - offset.value) / itemsToShow.value)\n    )\n    const pageCount = computed(() => Math.ceil(carousel.slidesCount / itemsToShow.value))\n\n    const isActive = (slide: number): boolean =>\n      mapNumberToRange(\n        isPaginated.value\n          ? {\n              val: currentPage.value,\n              max: pageCount.value - 1,\n              min: 0,\n            }\n          : {\n              val: carousel.activeSlide,\n              max: carousel.maxSlide,\n              min: carousel.minSlide,\n            }\n      ) === slide\n\n    return () => {\n      if (props.carousel) {\n        carousel = props.carousel;\n      }\n      if (!carousel) {\n        console.warn('[vue3-carousel]: A carousel component must be provided for the pagination component to display')\n        return '';\n      }\n      const children: Array<VNode> = []\n\n      for (\n        let slide = isPaginated.value ? 0 : carousel.minSlide;\n        slide <= (isPaginated.value ? pageCount.value - 1 : carousel.maxSlide);\n        slide++\n      ) {\n        const buttonLabel = i18nFormatter(\n          carousel.config.i18n[\n            isPaginated.value ? 'ariaNavigateToPage' : 'ariaNavigateToSlide'\n          ],\n          {\n            slideNumber: slide + 1,\n          }\n        )\n        const active = isActive(slide)\n        const button = h('button', {\n          type: 'button',\n          class: {\n            'carousel__pagination-button': true,\n            'carousel__pagination-button--active': active,\n          },\n          'aria-label': buttonLabel,\n          'aria-pressed': active,\n          'aria-controls': carousel.slides[slide]?.exposed?.id,\n          title: buttonLabel,\n          disabled: props.disableOnClick,\n          onClick: () =>\n            carousel.nav.slideTo(\n              isPaginated.value\n                ? Math.floor(slide * +carousel.config.itemsToShow + offset.value)\n                : slide\n            ),\n        })\n        const item = h('li', { class: 'carousel__pagination-item', key: slide }, button)\n        children.push(item)\n      }\n\n      return h('ol', { class: 'carousel__pagination' }, children)\n    }\n  },\n})\n","import {\n  ComputedRef,\n  computed,\n  defineComponent,\n  DeepReadonly,\n  getCurrentInstance,\n  h,\n  inject,\n  onMounted,\n  onUnmounted,\n  onUpdated,\n  provide,\n  ref,\n  SetupContext,\n  useId,\n} from 'vue'\n\nimport { injectCarousel } from '@/shared'\nimport { disableChildrenTabbing } from '@/utils'\n\nimport { SlideProps } from './Slide.types'\n\nexport const Slide = defineComponent({\n  name: 'CarouselSlide',\n  props: {\n    id: {\n      type: String,\n      default: (props: { isClone?: boolean }) => (props.isClone ? undefined : useId()),\n    },\n    index: {\n      type: Number,\n      default: undefined,\n    },\n    isClone: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  setup(props: DeepReadonly<SlideProps>, { attrs, slots, expose }: SetupContext) {\n    const carousel = inject(injectCarousel)\n    provide(injectCarousel, undefined) // Don't provide for nested slides\n\n    if (!carousel) {\n      return () => '' // Don't render, let vue warn about the missing provide\n    }\n\n    const currentIndex = ref(props.index)\n\n    const setIndex = (newIndex: number) => {\n      currentIndex.value = newIndex\n    }\n\n    const instance = getCurrentInstance()!\n\n    const getBoundingRect = () => {\n      const el = instance.vnode.el as HTMLElement\n      return el ? el.getBoundingClientRect() : { width: 0, height: 0 }\n    }\n\n    expose({\n      id: props.id,\n      setIndex,\n      getBoundingRect,\n    })\n\n    const isActive: ComputedRef<boolean> = computed(\n      () => currentIndex.value === carousel.activeSlide\n    )\n    const isPrev: ComputedRef<boolean> = computed(\n      () => currentIndex.value === carousel.activeSlide - 1\n    )\n    const isNext: ComputedRef<boolean> = computed(\n      () => currentIndex.value === carousel.activeSlide + 1\n    )\n    const isVisible: ComputedRef<boolean> = computed(\n      () =>\n        currentIndex.value >= carousel.visibleRange.min &&\n        currentIndex.value <= carousel.visibleRange.max\n    )\n\n    const slideStyle = computed(() => {\n      if (carousel.config.itemsToShow === 'auto') {\n        return\n      }\n      const itemsToShow = carousel.config.itemsToShow\n      const dimension =\n        carousel.config.gap > 0 && itemsToShow > 1\n          ? `calc(${100 / itemsToShow}% - ${\n              (carousel.config.gap * (itemsToShow - 1)) / itemsToShow\n            }px)`\n          : `${100 / itemsToShow}%`\n\n      return carousel.isVertical ? { height: dimension } : { width: dimension }\n    })\n\n    carousel.slideRegistry.registerSlide(instance, props.index)\n    onUnmounted(() => {\n      carousel.slideRegistry.unregisterSlide(instance)\n    })\n\n    if (props.isClone) {\n      // Prevent cloned slides from being focusable\n      onMounted(() => {\n        disableChildrenTabbing(instance.vnode)\n      })\n      onUpdated(() => {\n        disableChildrenTabbing(instance.vnode)\n      })\n    }\n\n    return () => {\n      if (!carousel.config.enabled) {\n        return slots.default?.()\n      }\n\n      return h(\n        'li',\n        {\n          style: [attrs.style, { ...slideStyle.value }],\n          class: {\n            carousel__slide: true,\n            'carousel__slide--clone': props.isClone,\n            'carousel__slide--visible': isVisible.value,\n            'carousel__slide--active': isActive.value,\n            'carousel__slide--prev': isPrev.value,\n            'carousel__slide--next': isNext.value,\n            'carousel__slide--sliding': carousel.isSliding,\n          },\n          onFocusin: () => {\n            // Prevent the viewport being scrolled by the focus\n            if (carousel.viewport) {\n              carousel.viewport.scrollLeft = 0\n            }\n            carousel.nav.slideTo(currentIndex.value)\n          },\n          id: props.isClone ? undefined : props.id,\n          'aria-hidden': props.isClone || undefined,\n        },\n        slots.default?.({\n          currentIndex: currentIndex.value,\n          isActive: isActive.value,\n          isClone: props.isClone,\n          isPrev: isPrev.value,\n          isNext: isNext.value,\n          isSliding: carousel.isSliding,\n          isVisible: isVisible.value,\n        })\n      )\n    }\n  },\n})\n"],"names":["shallowReactive","cloneVNode","defineComponent","inject","h","reactive","ref","computed","watch","watchEffect","onMounted","onBeforeUnmount","provide","toRefs","ARIAComponent","useId","getCurrentInstance","onUnmounted","onUpdated"],"mappings":"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"}