{"version":3,"file":"index.es.mjs","sources":["../lib/types/enums.ts","../lib/utils/carousel-utils.ts","../lib/utils/match-media.ts","../lib/utils/index.ts","../lib/components/props.ts","../lib/components/VSlickArrow.vue","../lib/components/VSlickTrack.vue","../lib/components/VSlickDots.vue","../lib/components/VSlickCarousel.vue"],"sourcesContent":["export enum PlayingType {\n  play = 'play',\n  playing = 'playing',\n  paused = 'paused',\n  hovered = 'hovered',\n  focused = 'focused',\n  update = 'update',\n  leave = 'leave',\n  blur = 'blur'\n}\n\nexport enum LazyLoadType {\n  ondemand = 'ondemand',\n  progressive = 'progressive'\n}\n\nexport enum SwipeDirection {\n  left = 'left',\n  right = 'right',\n  up = 'up',\n  down = 'down',\n  vertical = 'vertical'\n}\n\nexport enum SlideNavigation {\n  next = 'next',\n  previous = 'previous'\n}\n\nexport enum WidthDetection {\n  auto = 'auto',\n  manual = 'manual'\n}\n","import { VNode } from 'vue'\nimport {\n  CloneInfoSpec,\n  LazyInfoSpec,\n  NavigableSpec,\n  OnSlideSpec,\n  PlayingType,\n  SlideGroupChangeOptions,\n  SlideGroupChangeSpec,\n  SlideGroupCountSpec,\n  SlideNavigation,\n  SliderState,\n  SliderStateInfoSpec,\n  SwipeDirection,\n  SwipeEndSpec,\n  SwipeEndState,\n  SwipeEvent,\n  SwipeMoveSpec,\n  SwipeMoveState,\n  TouchObject,\n  TrackInfoSpec\n} from '../types'\nimport { MarkRequiredWithPartialBase } from '@lib/types/helpers'\n\nexport const extractSlides = (vnodes: VNode[]): VNode[] => {\n  return vnodes.flatMap((vnode) =>\n    isSlide(vnode)\n      ? [vnode]\n      : Array.isArray(vnode.children) && vnode.children.length > 0\n        ? extractSlides(vnode.children as VNode[])\n        : []\n  )\n}\n\nfunction isSlide(vnode: VNode): boolean {\n  return !vnode.type.toString().startsWith('Symbol')\n}\n\nexport const getNavigationOnKeyType = (\n  e: KeyboardEvent,\n  accessibility: boolean,\n  rtl: boolean\n) => {\n  if (\n    (e.target as HTMLElement)?.tagName.match('TEXTAREA|INPUT|SELECT') ||\n    !accessibility\n  )\n    return ''\n  if (e.key === 'ArrowLeft')\n    return rtl ? SlideNavigation.next : SlideNavigation.previous\n  if (e.key === 'ArrowRight')\n    return rtl ? SlideNavigation.previous : SlideNavigation.next\n  return ''\n}\n\nexport const getChangedSlideGroupIndex = (\n  spec: SlideGroupChangeSpec,\n  options: SlideGroupChangeOptions\n) => {\n  let targetSlideGroupIndex\n  const {\n    centerMode,\n    groupsToShow,\n    groupsToScroll,\n    slideGroupCount,\n    currentSlideGroupIndex,\n    infinite,\n    infiniteLoopOnEdge,\n    pivotSlideGroupIndices,\n    currentPage\n  } = spec\n\n  if (options.message === SlideNavigation.previous) {\n    if (pivotSlideGroupIndices[currentPage] !== currentSlideGroupIndex) {\n      targetSlideGroupIndex = pivotSlideGroupIndices[currentPage]\n    } else {\n      if (currentPage === 0) {\n        if (centerMode || infiniteLoopOnEdge) {\n          targetSlideGroupIndex = currentSlideGroupIndex - 1\n        } else {\n          targetSlideGroupIndex = -groupsToShow\n        }\n      } else {\n        targetSlideGroupIndex = pivotSlideGroupIndices[currentPage - 1]\n      }\n    }\n  } else if (options.message === SlideNavigation.next) {\n    if (currentPage === pivotSlideGroupIndices.length - 1) {\n      if (centerMode || infiniteLoopOnEdge) {\n        targetSlideGroupIndex = currentSlideGroupIndex + 1\n      } else {\n        targetSlideGroupIndex =\n          slideGroupCount +\n          (slideGroupCount % groupsToScroll === 0 ? 0 : groupsToShow)\n      }\n    } else {\n      targetSlideGroupIndex = pivotSlideGroupIndices[currentPage + 1]\n    }\n  } else if (options.message === 'dots') {\n    // Click on dots\n    targetSlideGroupIndex = pivotSlideGroupIndices[options.index || 0]\n    if (targetSlideGroupIndex === currentSlideGroupIndex) {\n      return null\n    }\n  } else if (options.message === 'children') {\n    // Click on the slides\n    targetSlideGroupIndex = options.index || 0\n    if (targetSlideGroupIndex === currentSlideGroupIndex) {\n      return null\n    }\n    if (infinite) {\n      let direction = siblingDirection({ ...spec, targetSlideGroupIndex })\n      if (\n        targetSlideGroupIndex > currentSlideGroupIndex &&\n        direction === 'left'\n      ) {\n        targetSlideGroupIndex = targetSlideGroupIndex - slideGroupCount\n      } else if (\n        targetSlideGroupIndex < currentSlideGroupIndex &&\n        direction === 'right'\n      ) {\n        targetSlideGroupIndex = targetSlideGroupIndex + slideGroupCount\n      }\n    }\n  } else if (options.message === 'index') {\n    targetSlideGroupIndex = Number(options.index)\n    if (targetSlideGroupIndex === currentSlideGroupIndex) {\n      return null\n    }\n  }\n  return targetSlideGroupIndex\n}\n\nexport const siblingDirection = (\n  spec: SlideGroupChangeSpec & { targetSlideGroupIndex: number }\n) => {\n  if (spec.targetSlideGroupIndex > spec.currentSlideGroupIndex) {\n    if (\n      spec.targetSlideGroupIndex >\n      spec.currentSlideGroupIndex + totalVisibleGroupsOnRightOfCurrGroup(spec)\n    ) {\n      return 'left'\n    }\n    return 'right'\n  } else {\n    if (\n      spec.targetSlideGroupIndex <\n      spec.currentSlideGroupIndex - totalVisibleGroupsOnLeftOfCurrGroup(spec)\n    ) {\n      return 'right'\n    }\n    return 'left'\n  }\n}\n\nconst totalVisibleGroupsOnRightOfCurrGroup = ({\n  groupsToShow,\n  centerMode,\n  rtl,\n  centerPadding\n}: SlideGroupChangeSpec) => {\n  if (centerMode) {\n    let right = (groupsToShow - 1) / 2 + 1\n    if (parseInt(centerPadding) > 0) right += 1\n    if (rtl && groupsToShow % 2 === 0) right += 1\n    return right\n  }\n  if (rtl) {\n    return 0\n  }\n  return groupsToShow - 1\n}\n\nconst totalVisibleGroupsOnLeftOfCurrGroup = ({\n  groupsToShow,\n  centerMode,\n  rtl,\n  centerPadding\n}: SlideGroupChangeSpec) => {\n  if (centerMode) {\n    let left = (groupsToShow - 1) / 2 + 1\n    if (parseInt(centerPadding) > 0) left += 1\n    if (!rtl && groupsToShow % 2 === 0) left += 1\n    return left\n  }\n  if (rtl) {\n    return groupsToShow - 1\n  }\n  return 0\n}\n\nexport const getNavigableIndexes = (spec: NavigableSpec) => {\n  let max = spec.infinite ? spec.slideGroupCount * 2 : spec.slideGroupCount\n  let breakpoint = spec.infinite ? spec.groupsToShow * -1 : 0\n  let counter = spec.infinite ? spec.groupsToShow * -1 : 0\n  let indexes = []\n  while (breakpoint < max) {\n    indexes.push(breakpoint)\n    breakpoint = counter + spec.groupsToScroll\n    counter += Math.min(spec.groupsToScroll, spec.groupsToShow)\n  }\n  return indexes\n}\n\nexport const checkNavigable = (spec: NavigableSpec, index: number) => {\n  const navigables = getNavigableIndexes(spec)\n  let prevNavigable = 0\n  if (index > navigables[navigables.length - 1]) {\n    index = navigables[navigables.length - 1]\n  } else {\n    for (let n in navigables) {\n      if (index < navigables[n]) {\n        index = prevNavigable\n        break\n      }\n      prevNavigable = navigables[n]\n    }\n  }\n  return index\n}\n\nexport const getSwipeStartState = (\n  e: SwipeEvent,\n  swipe: boolean,\n  draggable: boolean\n) => {\n  if (!swipe || (!draggable && e.type.indexOf('mouse') !== -1)) return\n  return {\n    dragging: true,\n    touchObject: {\n      startX:\n        window.TouchEvent && e instanceof TouchEvent\n          ? e.touches[0].pageX\n          : (e as MouseEvent).clientX,\n      startY:\n        window.TouchEvent && e instanceof TouchEvent\n          ? e.touches[0].pageY\n          : (e as MouseEvent).clientY,\n      curX:\n        window.TouchEvent && e instanceof TouchEvent\n          ? e.touches[0].pageX\n          : (e as MouseEvent).clientX,\n      curY:\n        window.TouchEvent && e instanceof TouchEvent\n          ? e.touches[0].pageY\n          : (e as MouseEvent).clientY\n    }\n  }\n}\n\nexport const getTraversedSlideGroupCount = (spec: SlideGroupCountSpec) => {\n  const centerOffset = spec.centerMode\n    ? +spec.slideGroupWidth * Math.floor(spec.groupsToShow / 2)\n    : 0\n  let swipedSlideGroup\n  const slickList = spec.listEl\n  const slideGroups = slickList.querySelectorAll<HTMLElement>(\n    '.v-slick-slide-group'\n  )\n  Array.from(slideGroups).every((grp) => {\n    if (!spec.vertical) {\n      if (\n        grp.offsetLeft - centerOffset + grp.offsetWidth / 2 >\n        spec.swipeLeft * -1\n      ) {\n        swipedSlideGroup = grp\n        return false\n      }\n    } else {\n      if (grp.offsetTop + grp.offsetHeight / 2 > spec.swipeLeft * -1) {\n        swipedSlideGroup = grp\n        return false\n      }\n    }\n\n    return true\n  })\n\n  if (!swipedSlideGroup) {\n    return 0\n  }\n  const currentIndex =\n    spec.rtl === true\n      ? spec.slideGroupCount - spec.currentSlideGroupIndex\n      : spec.currentSlideGroupIndex\n  const swipedSlideGroupIndex = (swipedSlideGroup as HTMLElement)?.dataset\n    ?.index\n  const groupsTraversed = Math.abs(\n    swipedSlideGroupIndex ? parseInt(swipedSlideGroupIndex) : 0 - currentIndex\n  )\n  return groupsTraversed\n}\n\nexport const getSwipeDirection = (\n  touchObject: TouchObject,\n  verticalSwiping = false\n): SwipeDirection => {\n  let xDist, yDist, r, swipeAngle\n  xDist = touchObject.startX - touchObject.curX\n  yDist = touchObject.startY - touchObject.curY\n  r = Math.atan2(yDist, xDist)\n  swipeAngle = Math.round((r * 180) / Math.PI)\n  if (swipeAngle < 0) {\n    swipeAngle = 360 - Math.abs(swipeAngle)\n  }\n  if (\n    (swipeAngle <= 45 && swipeAngle >= 0) ||\n    (swipeAngle <= 360 && swipeAngle >= 315)\n  ) {\n    return SwipeDirection.left\n  }\n  if (swipeAngle >= 135 && swipeAngle <= 225) {\n    return SwipeDirection.right\n  }\n  if (verticalSwiping === true) {\n    if (swipeAngle >= 35 && swipeAngle <= 135) {\n      return SwipeDirection.up\n    } else {\n      return SwipeDirection.down\n    }\n  }\n\n  return SwipeDirection.vertical\n}\n\nexport const getSwipeEndState = (\n  e: SwipeEvent,\n  spec: SwipeEndSpec\n): SwipeEndState | undefined => {\n  const {\n    dragging,\n    swipe,\n    touchObject,\n    listWidth,\n    touchThreshold,\n    verticalSwiping,\n    listHeight,\n    currentSlideGroupIndex,\n    swipeToSlide,\n    scrolling,\n    onSwipe,\n    rtl\n  } = spec\n  if (!dragging) {\n    if (swipe && e.cancelable) e.preventDefault()\n    return\n  }\n  let minSwipe = verticalSwiping\n    ? listHeight / touchThreshold\n    : listWidth / touchThreshold\n  let swipeDirection = getSwipeDirection(touchObject, verticalSwiping)\n  if (rtl) {\n    if (swipeDirection === SwipeDirection.left) {\n      swipeDirection = SwipeDirection.right\n    } else if (swipeDirection === SwipeDirection.right) {\n      swipeDirection = SwipeDirection.left\n    }\n  }\n  // reset the state of touch related state variables.\n  let state: SwipeEndState = {\n    dragging: false,\n    edgeDragged: false,\n    scrolling: false,\n    swiping: false,\n    swiped: false,\n    swipeLeft: null,\n    touchObject: {}\n  }\n  if (scrolling) {\n    return state\n  }\n  if (!touchObject.swipeLength) {\n    return state\n  }\n  if (touchObject.swipeLength > minSwipe) {\n    if (e.cancelable) {\n      e.preventDefault()\n    }\n    if (onSwipe) {\n      onSwipe(swipeDirection)\n    }\n    let slideGroupCount, newSlideGroupIndex\n    switch (swipeDirection) {\n      case 'left':\n      case 'up':\n        newSlideGroupIndex = spec.swipeToSlide\n          ? getTraversedSlideGroupCount(spec)\n          : currentSlideGroupIndex + spec.groupsToScroll\n        slideGroupCount = swipeToSlide\n          ? checkNavigable(spec, newSlideGroupIndex)\n          : newSlideGroupIndex\n        state.currentDirection = 0\n        break\n      case 'right':\n      case 'down':\n        newSlideGroupIndex = spec.swipeToSlide\n          ? getTraversedSlideGroupCount(spec)\n          : currentSlideGroupIndex - spec.groupsToScroll\n        slideGroupCount = swipeToSlide\n          ? checkNavigable(spec, newSlideGroupIndex)\n          : newSlideGroupIndex\n        state.currentDirection = 1\n        break\n      default:\n        slideGroupCount = currentSlideGroupIndex\n    }\n    state.triggerSlideGroupHandler = slideGroupCount\n  } else {\n    // Adjust the track back to its original position.\n    let currentLeft = getTrackLeft(spec)\n    state.trackStyle = getTrackAnimateCSS(spec, currentLeft)\n  }\n  return state\n}\n\nexport function getLazySlidesOnLeft(spec: LazyInfoSpec) {\n  return spec.centerMode\n    ? Math.floor(spec.groupsToShow / 2) +\n        (parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : 0\n}\n\nexport function getLazySlidesOnRight(spec: LazyInfoSpec) {\n  return spec.centerMode\n    ? Math.floor((spec.groupsToShow - 1) / 2) +\n        1 +\n        (parseInt(spec.centerPadding) > 0 ? 1 : 0)\n    : spec.groupsToShow\n}\n\nexport function getLazyStartIndex(spec: LazyInfoSpec) {\n  return spec.currentSlideGroupIndex - getLazySlidesOnLeft(spec)\n}\n\nexport function getLazyEndIndex(spec: LazyInfoSpec) {\n  return spec.currentSlideGroupIndex + getLazySlidesOnRight(spec)\n}\n\nexport function getOnDemandLazySlideGroups(spec: LazyInfoSpec) {\n  let onDemandSlideGroups = []\n  const startIndex = getLazyStartIndex(spec)\n  const endIndex = getLazyEndIndex(spec)\n  for (\n    let slideGroupIndex = startIndex;\n    slideGroupIndex < endIndex;\n    slideGroupIndex++\n  ) {\n    if (spec.lazyLoadedList?.indexOf(slideGroupIndex) < 0) {\n      onDemandSlideGroups.push(slideGroupIndex)\n    }\n  }\n  return onDemandSlideGroups\n}\n\nexport function getTrackCSS(spec: TrackInfoSpec, left: number) {\n  let trackWidth, trackHeight\n  const trackChildren = spec.slideGroupCount + 2 * spec.groupsToShow\n  if (!spec.vertical) {\n    trackWidth =\n      getTotalSlideGroups(spec) * parseInt(`${spec.slideGroupWidth || 0}`)\n  } else {\n    trackHeight = trackChildren * parseInt(`${spec.slideGroupHeight || 0}`)\n  }\n  let style: Record<string, string | number> = {\n    opacity: 1,\n    transition: ''\n  }\n  if (spec.useCSSTransform) {\n    if (\n      spec.slideGroupCount > spec.groupsToShow ||\n      (spec.infinite && spec.infiniteLoopOnEdge)\n    ) {\n      let transform = !spec.vertical\n        ? 'translate3d(' + left + 'px, 0px, 0px)'\n        : 'translate3d(0px, ' + left + 'px, 0px)'\n      style = {\n        ...style,\n        transform\n      }\n    }\n  } else {\n    if (spec.vertical) {\n      style['top'] = left\n    } else {\n      style['left'] = left\n    }\n  }\n  if (spec.fade) style = { opacity: 1 }\n  if (trackWidth) style.width = trackWidth + 'px'\n  if (trackHeight) style.height = trackHeight + 'px'\n\n  return style\n}\n\nexport function getTotalSlideGroups(spec: TrackInfoSpec) {\n  return spec.slideGroupCount <= spec.groupsToShow\n    ? spec.slideGroupCount\n    : getTotalPreClones(spec) + spec.slideGroupCount + getTotalPostClones(spec)\n}\n\nexport function getTrackAnimateCSS(spec: TrackInfoSpec, left: number) {\n  let style = getTrackCSS(spec, left)\n  // useCSS is true by default so it can be undefined\n  if (spec.useCSSTransform) {\n    style.transition = 'transform ' + spec.speed + 'ms ' + spec.cssEase\n  } else {\n    if (spec.vertical) {\n      style.transition = 'top ' + spec.speed + 'ms ' + spec.cssEase\n    } else {\n      style.transition = 'left ' + spec.speed + 'ms ' + spec.cssEase\n    }\n  }\n  if (spec.ignorePrefersReducedMotion) {\n    style.transition += ' !important'\n  }\n  return style\n}\n\nexport function getTrackLeft(spec: TrackInfoSpec) {\n  let {\n    centerPadding,\n    currentSlideGroupIndex,\n    trackEl,\n    infinite,\n    centerMode,\n    slideGroupCount,\n    groupsToShow,\n    groupsToScroll,\n    slideGroupWidth,\n    listWidth,\n    variableWidth,\n    slideGroupHeight,\n    fade,\n    vertical,\n    rtl\n  } = spec\n  listWidth = listWidth || 0\n  slideGroupWidth = slideGroupWidth || 0\n  slideGroupHeight = slideGroupHeight || 0\n\n  let slideGroupOffset = 0\n  let targetLeft\n  let targetSlide: HTMLElement | undefined\n  let verticalOffset = 0\n\n  if (fade || slideGroupCount === 1) {\n    return 0\n  }\n\n  let slidesToOffset = 0\n  if (infinite) {\n    slidesToOffset = -getTotalPreClones(spec) // bring active slide to the beginning of visible area\n    // if next scroll doesn't have enough children, just reach till the end of original slides instead of shifting groupsToScroll children\n    if (\n      slideGroupCount % groupsToScroll !== 0 &&\n      currentSlideGroupIndex + groupsToScroll > slideGroupCount\n    ) {\n      slidesToOffset = -(currentSlideGroupIndex > slideGroupCount\n        ? groupsToShow - (currentSlideGroupIndex - slideGroupCount)\n        : slideGroupCount % groupsToScroll)\n    }\n    // in center mode, shift current slide group to the center of the frame\n    if (centerMode) {\n      slidesToOffset += Math.floor(groupsToShow / 2)\n    }\n  } else {\n    if (\n      slideGroupCount % groupsToScroll !== 0 &&\n      currentSlideGroupIndex + groupsToScroll > slideGroupCount\n    ) {\n      slidesToOffset = groupsToShow - (slideGroupCount % groupsToScroll)\n    }\n    if (centerMode) {\n      slidesToOffset = Math.floor(groupsToShow / 2)\n    }\n  }\n  slideGroupOffset = slidesToOffset * parseInt(`${slideGroupWidth}`)\n  verticalOffset = slidesToOffset * parseInt(`${slideGroupHeight}`)\n\n  if (!vertical) {\n    targetLeft =\n      currentSlideGroupIndex * parseInt(`${slideGroupWidth}`) * -1 +\n      slideGroupOffset\n  } else {\n    targetLeft =\n      currentSlideGroupIndex * parseInt(`${slideGroupHeight}`) * -1 +\n      verticalOffset\n  }\n\n  if (variableWidth) {\n    let targetSlideIndex\n    targetSlideIndex = currentSlideGroupIndex + getTotalPreClones(spec)\n    const trackSlides = Array.from(trackEl?.childNodes || []).filter((child) =>\n      (child as HTMLElement)?.classList?.contains('v-slick-slide-group')\n    )\n    targetSlide = trackEl && (trackSlides[targetSlideIndex] as HTMLElement)\n    targetLeft = targetSlide ? targetSlide.offsetLeft * -1 : 0\n    if (centerMode) {\n      targetSlideIndex = infinite\n        ? currentSlideGroupIndex + getTotalPreClones(spec)\n        : currentSlideGroupIndex\n      targetLeft = 0\n      if (trackEl) {\n        targetSlide = trackEl.children[targetSlideIndex] as HTMLElement\n        for (let slide = 0; slide < targetSlideIndex; slide++) {\n          if (!trackEl.children[slide]) continue\n          targetLeft -= (trackEl.children[slide] as HTMLElement).offsetWidth\n        }\n      }\n      targetLeft -= parseInt(centerPadding)\n      if (targetSlide) {\n        targetLeft += listWidth - targetSlide.offsetWidth / 2\n      }\n    }\n  }\n\n  if (rtl) targetLeft = -targetLeft\n\n  return targetLeft\n}\n\nexport const getStatesOnSlide = (spec: OnSlideSpec) => {\n  let {\n    waitForAnimate,\n    animating,\n    fade,\n    infinite,\n    index,\n    slideGroupCount,\n    lazyLoadedList,\n    lazyLoad,\n    currentSlideGroupIndex,\n    centerMode,\n    groupsToScroll,\n    groupsToShow,\n    useCSSTransitions\n  } = spec\n  if (\n    (waitForAnimate && animating) ||\n    (fade && !infinite && (index < 0 || index >= slideGroupCount))\n  )\n    return\n  let animationSlideGroupIndex = index,\n    finalSlideGroupIndex\n  let slidingState: Partial<SliderState> = {},\n    afterSlidingState: Partial<SliderState> = {}\n  if (fade) {\n    if (index < 0) {\n      animationSlideGroupIndex += slideGroupCount\n    } else if (index >= slideGroupCount) {\n      animationSlideGroupIndex -= slideGroupCount\n    }\n    if (lazyLoad && lazyLoadedList.indexOf(animationSlideGroupIndex) < 0) {\n      lazyLoadedList.push(animationSlideGroupIndex)\n    }\n    slidingState = {\n      animating: true,\n      currentSlideGroupIndex: animationSlideGroupIndex,\n      lazyLoadedList\n    }\n    afterSlidingState = { animating: false }\n    return {\n      slidingState,\n      afterSlidingState\n    }\n  }\n  finalSlideGroupIndex = animationSlideGroupIndex\n  if (animationSlideGroupIndex < 0) {\n    finalSlideGroupIndex = animationSlideGroupIndex + slideGroupCount\n    if (!infinite) finalSlideGroupIndex = 0\n    else if (slideGroupCount % groupsToScroll !== 0)\n      finalSlideGroupIndex =\n        slideGroupCount - (slideGroupCount % groupsToScroll)\n  } else if (\n    !spec.canGoNext &&\n    animationSlideGroupIndex > currentSlideGroupIndex\n  ) {\n    animationSlideGroupIndex = finalSlideGroupIndex = currentSlideGroupIndex\n  } else if (centerMode && animationSlideGroupIndex >= slideGroupCount) {\n    animationSlideGroupIndex = infinite ? slideGroupCount : slideGroupCount - 1\n    finalSlideGroupIndex = infinite ? 0 : slideGroupCount - 1\n  } else if (animationSlideGroupIndex >= slideGroupCount) {\n    finalSlideGroupIndex = animationSlideGroupIndex - slideGroupCount\n    if (!infinite) finalSlideGroupIndex = slideGroupCount - groupsToShow\n    else if (slideGroupCount % groupsToScroll !== 0) finalSlideGroupIndex = 0\n  }\n  let finalLeft = getTrackLeft({\n    ...spec,\n    currentSlideGroupIndex: finalSlideGroupIndex\n  })\n  let animationLeft = getTrackLeft({\n    ...spec,\n    currentSlideGroupIndex: animationSlideGroupIndex\n  })\n  if (!infinite) {\n    if (animationLeft === finalLeft)\n      animationSlideGroupIndex = finalSlideGroupIndex\n    animationLeft = finalLeft\n  }\n  if (lazyLoad)\n    lazyLoadedList = lazyLoadedList.concat(\n      getOnDemandLazySlideGroups({\n        ...spec,\n        currentSlideGroupIndex: animationSlideGroupIndex\n      })\n    )\n  if (!useCSSTransitions) {\n    slidingState = {\n      currentSlideGroupIndex: finalSlideGroupIndex,\n      trackStyle: getTrackCSS(spec, finalLeft),\n      lazyLoadedList\n    }\n    return {\n      slidingState,\n      afterSlidingState\n    }\n  }\n  slidingState = {\n    animating: true,\n    currentSlideGroupIndex: finalSlideGroupIndex,\n    trackStyle: getTrackAnimateCSS(spec, animationLeft),\n    lazyLoadedList\n  }\n  afterSlidingState = {\n    animating: false,\n    currentSlideGroupIndex: finalSlideGroupIndex,\n    trackStyle: getTrackCSS(spec, finalLeft),\n    swipeLeft: undefined\n  }\n  return { slidingState, afterSlidingState }\n}\n\nexport function getTotalPreClones(spec: CloneInfoSpec) {\n  if (!spec.infinite) {\n    return 0\n  }\n  if (spec.variableWidth) {\n    return spec.slideGroupCount\n  }\n  return spec.groupsToShow + (spec.centerMode ? 1 : 0)\n}\n\nexport function getTotalPostClones(spec: CloneInfoSpec) {\n  if (!spec.infinite) {\n    return 0\n  }\n  return spec.slideGroupCount\n}\n\nexport const getSwipeMoveState = (\n  e: SwipeEvent,\n  spec: SwipeMoveSpec\n): SwipeMoveState | undefined => {\n  const {\n    scrolling,\n    animating,\n    vertical,\n    swipeToSlide,\n    verticalSwiping,\n    rtl,\n    currentSlideGroupIndex,\n    edgeFriction,\n    edgeDragged,\n    onEdge,\n    swiped,\n    swiping,\n    slideGroupCount,\n    groupsToScroll,\n    infinite,\n    touchObject,\n    swipeEvent,\n    listHeight,\n    listWidth\n  } = spec\n  if (scrolling) return\n  if (animating) {\n    if (e.cancelable) {\n      e.preventDefault()\n    }\n    return\n  }\n  if (vertical && swipeToSlide && verticalSwiping && e.cancelable)\n    e.preventDefault()\n  let swipeLeft,\n    state: SwipeMoveState = {}\n  let curLeft = getTrackLeft(spec)\n  touchObject.curX =\n    window.TouchEvent && e instanceof TouchEvent\n      ? e.touches[0].pageX\n      : (e as MouseEvent).clientX\n  touchObject.curY =\n    window.TouchEvent && e instanceof TouchEvent\n      ? e.touches[0].pageY\n      : (e as MouseEvent).clientY\n  touchObject.swipeLength = Math.round(\n    Math.sqrt(Math.pow(touchObject.curX - touchObject.startX, 2))\n  )\n  let verticalSwipeLength = Math.round(\n    Math.sqrt(Math.pow(touchObject.curY - touchObject.startY, 2))\n  )\n  if (!verticalSwiping && !swiping && verticalSwipeLength > 10) {\n    return { scrolling: true }\n  }\n  if (verticalSwiping) touchObject.swipeLength = verticalSwipeLength\n  let positionOffset =\n    (!rtl ? 1 : -1) * (touchObject.curX > touchObject.startX ? 1 : -1)\n  if (verticalSwiping)\n    positionOffset = touchObject.curY > touchObject.startY ? 1 : -1\n\n  let dotCount = Math.ceil(slideGroupCount / groupsToScroll)\n  let swipeDirection = getSwipeDirection(spec.touchObject, verticalSwiping)\n  let touchSwipeLength = touchObject.swipeLength\n  if (!infinite) {\n    if (\n      (currentSlideGroupIndex === 0 && swipeDirection === 'right') ||\n      (currentSlideGroupIndex + 1 >= dotCount && swipeDirection === 'left') ||\n      (!spec.canGoNext && swipeDirection === 'left')\n    ) {\n      touchSwipeLength = Math.round(touchObject.swipeLength * edgeFriction)\n      if (edgeDragged === false && onEdge) {\n        onEdge(swipeDirection)\n        state.edgeDragged = true\n      }\n    }\n  }\n  if (!swiped && swipeEvent) {\n    swipeEvent(swipeDirection)\n    state.swiped = true\n  }\n  if (!vertical) {\n    if (!rtl) {\n      swipeLeft = curLeft + touchSwipeLength * positionOffset\n    } else {\n      swipeLeft = curLeft - touchSwipeLength * positionOffset\n    }\n  } else {\n    swipeLeft =\n      curLeft + touchSwipeLength * (listHeight / listWidth) * positionOffset\n  }\n  if (verticalSwiping) {\n    swipeLeft = curLeft + touchSwipeLength * positionOffset\n  }\n  state = {\n    ...state,\n    touchObject,\n    swipeLeft,\n    trackStyle: getTrackCSS(spec, swipeLeft),\n    swipeDirection\n  }\n  if (\n    Math.abs(touchObject.curX - touchObject.startX) <\n    Math.abs(touchObject.curY - touchObject.startY) * 0.8\n  ) {\n    return state\n  }\n  if (touchObject.swipeLength > 10) {\n    state.swiping = true\n    if (e.cancelable) {\n      e.preventDefault()\n    }\n  }\n  return state\n}\n\nexport function getSlideGroupCount(slideCount: number, groupsToShow: number) {\n  return Math.ceil(slideCount / groupsToShow)\n}\n\nexport function getSliderState(spec: SliderStateInfoSpec) {\n  let slideGroupCount = getSlideGroupCount(\n    spec.slides.length,\n    spec.groupsToShow\n  )\n  let listWidth = Math.ceil(spec.listEl?.offsetWidth || 0)\n  let trackWidth = Math.ceil(spec.trackEl?.offsetWidth || 0)\n  let slideGroupWidth\n  if (!spec.vertical) {\n    let centerPaddingAdj = spec.centerMode\n      ? parseInt(spec.centerPadding) * 2\n      : 0\n    if (\n      typeof spec.centerPadding === 'string' &&\n      spec.centerPadding.slice(-1) === '%'\n    ) {\n      centerPaddingAdj *= listWidth / 100\n    }\n    slideGroupWidth = Math.ceil(\n      (listWidth - centerPaddingAdj) / spec.groupsToShow\n    )\n  } else {\n    slideGroupWidth = listWidth\n  }\n  let slideGroupHeight =\n    spec.listEl && spec.listEl.querySelector('[data-index=\"0\"]')\n      ? spec.listEl.querySelector<HTMLElement>('[data-index=\"0\"]')\n          ?.offsetHeight || 0\n      : 0\n  let listHeight = slideGroupHeight * spec.groupsToShow\n  let currentSlideGroupIndex =\n    spec.currentSlideGroupIndex === undefined\n      ? spec.initialGroupIndex\n      : spec.currentSlideGroupIndex\n  if (spec.rtl && spec.currentSlideGroupIndex === undefined) {\n    currentSlideGroupIndex = slideGroupCount - 1 - spec.initialGroupIndex\n  }\n  let lazyLoadedList = spec.lazyLoadedList || []\n  let slideGroupsToLoad = getOnDemandLazySlideGroups(spec as LazyInfoSpec)\n  lazyLoadedList.concat(slideGroupsToLoad)\n\n  let sliderState: MarkRequiredWithPartialBase<\n    SliderState,\n    | 'currentSlideGroupIndex'\n    | 'listWidth'\n    | 'slideGroupHeight'\n    | 'slideGroupWidth'\n  > & { slideGroupCount: number } = {\n    slideGroupCount,\n    slideGroupWidth,\n    listWidth,\n    trackWidth,\n    currentSlideGroupIndex,\n    slideGroupHeight,\n    listHeight,\n    lazyLoadedList\n  }\n\n  if (spec.autoplaying === null && spec.autoplay) {\n    sliderState.autoplaying = PlayingType.playing\n  }\n\n  return sliderState\n}\n","export class MatchMedia {\n  mqlRecords: Record<string, MediaQueryList> = {}\n\n  register(query: string, handler: (predicate: { matches: boolean }) => void) {\n    if (this.mqlRecords[query]) {\n      this.addMqlListener(query, handler)\n    } else {\n      this.mqlRecords[query] = window.matchMedia(query)\n      this.addMqlListener(query, handler)\n    }\n    if (this.mqlRecords[query].matches) {\n      handler({ matches: true })\n    }\n  }\n\n  unregister(\n    query: string,\n    handler: (predicate: { matches: boolean }) => void\n  ) {\n    if (this.mqlRecords[query]) {\n      this.removeMqlListener(query, handler)\n    }\n  }\n\n  private addMqlListener(\n    query: string,\n    handler: (predicate: { matches: boolean }) => void\n  ) {\n    try {\n      this.mqlRecords[query].addEventListener('change', handler)\n    } catch (_) {\n      try {\n        this.mqlRecords[query].addListener(handler)\n      } catch (e) {\n        console.error(e)\n      }\n    }\n  }\n\n  private removeMqlListener(\n    query: string,\n    handler: (predicate: { matches: boolean }) => void\n  ) {\n    try {\n      this.mqlRecords[query].removeEventListener('change', handler)\n    } catch (_) {\n      try {\n        this.mqlRecords[query].removeListener(handler)\n      } catch (e) {\n        console.error(e)\n      }\n    }\n  }\n}\n","export * from './carousel-utils'\nexport * from './match-media'\n\nexport const canUseDOM = () =>\n  !!(\n    typeof window !== 'undefined' &&\n    window.document &&\n    window.document.createElement\n  )\n\nexport const filterUndefined = <T extends object>(props: T) =>\n  Object.keys(props)\n    .filter((key) => props[key as keyof T] !== undefined)\n    .reduce((acc, key) => {\n      acc[key as keyof T] = props[key as keyof T]\n      return acc\n    }, {} as T)\n\nexport function clearSelection() {\n  if (!window.getSelection) return\n  if (window.getSelection()?.empty) {\n    window.getSelection()!.empty()\n  } else if (window.getSelection()?.removeAllRanges) {\n    window.getSelection()!.removeAllRanges()\n  }\n}\n\nexport function json2mq(obj: Record<string, any>) {\n  const conditions = Object.keys(obj).map((key) => {\n    let value = obj[key]\n    if (Array.isArray(value)) {\n      value = value.join(' and ')\n    }\n    return `(${key}: ${value})`\n  })\n  return conditions.join(' and ')\n}\n\nexport function debounce(\n  callback: () => Promise<void>,\n  wait: number\n): { cancel: () => void } {\n  const timeoutId = setTimeout(callback, wait)\n  return { cancel: () => clearTimeout(timeoutId) }\n}\n","import { PropType, VNode } from 'vue'\nimport {\n  ArrowProps,\n  DotsProps,\n  Props,\n  Responsive,\n  SlideNavigation,\n  SliderState,\n  TrackProps,\n  WidthDetection\n} from '../types'\n\ntype VuePropDef<T extends string> = Record<\n  T,\n  { type: PropType<unknown>; default: unknown }\n>\n\nconst makeDefaultProps = (selectFields?: string[]) => {\n  const defaultProps = {\n    accessibility: { type: Boolean, default: true },\n    adaptiveHeight: { type: Boolean, default: false },\n    arrows: { type: Boolean, default: true },\n    asNavFor: {\n      type: Object,\n      default: null\n    },\n    autoplay: { type: Boolean, default: false },\n    autoplaySpeed: { type: Number, default: 3000 },\n    centerMode: { type: Boolean, default: false },\n    centerPadding: { type: String, default: '50px' },\n    cssEase: { type: String, default: 'ease' },\n    dots: { type: Boolean, default: false },\n    draggable: { type: Boolean, default: true },\n    edgeFriction: { type: Number, default: 0.35 },\n    fade: { type: Boolean, default: false },\n    focusOnSelect: { type: Boolean, default: false },\n    ignorePrefersReducedMotion: { type: Boolean, default: false },\n    infinite: { type: Boolean, default: true },\n    infiniteLoopOnEdge: { type: Boolean, default: false },\n    initialGroupIndex: { type: Number, default: 0 },\n    lazyLoad: { type: String, default: null },\n    nextArrowLabel: { type: String, default: 'Next' },\n    pauseOnDotsHover: { type: Boolean, default: false },\n    pauseOnFocus: { type: Boolean, default: false },\n    pauseOnHover: { type: Boolean, default: true },\n    prevArrowLabel: { type: String, default: 'Previous' },\n    responsive: { type: Array as PropType<Responsive[]>, default: [] },\n    responsiveBehavior: {\n      type: String as PropType<'mobile-first' | 'desktop-first'>,\n      default: 'mobile-first'\n    },\n    rtl: { type: Boolean, default: false },\n    slidesPerGroup: { type: Number, default: 1 },\n    groupsToScroll: { type: Number, default: 1 },\n    groupsToShow: { type: Number, default: 1 },\n    speed: { type: Number, default: 500 },\n    swipe: { type: Boolean, default: true },\n    swipeToSlide: { type: Boolean, default: false },\n    touchMove: { type: Boolean, default: true },\n    touchThreshold: { type: Number, default: 5 },\n    unslick: { type: Boolean, default: false },\n    useCSSTransitions: { type: Boolean, default: true },\n    useCSSTransform: { type: Boolean, default: true },\n    variableWidth: { type: Boolean, default: false },\n    vertical: { type: Boolean, default: false },\n    verticalSwiping: { type: Boolean, default: false },\n    waitForAnimate: { type: Boolean, default: true },\n    widthDetection: { type: String, default: WidthDetection.auto }\n  } satisfies VuePropDef<keyof Props>\n  if (!selectFields) return defaultProps\n  return Object.keys(defaultProps).reduce<{\n    [key: string]: { type: PropType<unknown>; default: unknown }\n  }>((acc, key) => {\n    if (selectFields.includes(key)) {\n      acc[key as keyof Props] = (defaultProps as any)[key]\n    }\n    return acc\n  }, {}) as typeof defaultProps\n}\n\nexport const defaultProps = makeDefaultProps() satisfies VuePropDef<keyof Props>\n\nexport const defaultPropValues = Object.keys(defaultProps).reduce<{\n  [key: string]: unknown\n}>((acc, key) => {\n  acc[key] = (defaultProps as any)[key].default\n  return acc\n}, {}) as {\n  [K in keyof Props]: unknown\n} as Props\n\nexport const makeDefaultSliderState: () => SliderState = () => ({\n  animating: false,\n  autoplaying: null,\n  autoplayTimer: null,\n  currentDirection: 0,\n  currentLeft: null,\n  currentSlideGroupIndex: 0,\n  detectingWidth: false,\n  direction: 1,\n  dragging: false,\n  edgeDragged: false,\n  initialized: false,\n  lazyLoadedList: [],\n  listHeight: undefined,\n  listWidth: undefined,\n  scrolling: false,\n  slideGroupHeight: undefined,\n  slideGroupWidth: undefined,\n  swipeLeft: undefined,\n  swiped: false,\n  swiping: false,\n  touchObject: { startX: 0, startY: 0, curX: 0, curY: 0, swipeLength: 0 },\n  trackStyle: {},\n  trackWidth: 0\n})\n\nexport const defaultTrackProps = {\n  ...makeDefaultProps([\n    'centerMode',\n    'centerPadding',\n    'cssEase',\n    'fade',\n    'ignorePrefersReducedMotion',\n    'infinite',\n    'infiniteLoopOnEdge',\n    'lazyLoad',\n    'rtl',\n    'groupsToScroll',\n    'groupsToShow',\n    'speed',\n    'variableWidth',\n    'vertical'\n  ]),\n  ...{\n    currentSlideGroupIndex: { type: Number, default: 0 },\n    detectingWidth: { type: Boolean, default: false },\n    lazyLoadedList: {\n      type: Array as PropType<number[]>,\n      default: []\n    },\n    listHeight: { type: Number, default: undefined },\n    trackStyle: { type: Object, default: {} },\n    slideGroupCount: { type: Number, default: 0 },\n    rawSlideGroups: { type: Array as PropType<VNode[][]>, default: [] },\n    slideGroupHeight: { type: [String, Number], default: undefined },\n    slideGroupWidth: { type: [String, Number], default: undefined }\n  }\n} satisfies VuePropDef<keyof TrackProps>\n\nexport const defaultArrowProps = {\n  ...makeDefaultProps([\n    'centerMode',\n    'infinite',\n    'groupsToShow',\n    'prevArrowLabel',\n    'nextArrowLabel'\n  ]),\n  ...{\n    currentSlideGroupIndex: { type: Number, default: 0 },\n    disabled: { type: Boolean, default: false },\n    slideGroupCount: { type: Number, default: 0 },\n    type: { type: String as PropType<SlideNavigation>, default: 'prev' }\n  }\n} satisfies VuePropDef<keyof ArrowProps>\n\nexport const defaultDotsProps = {\n  ...makeDefaultProps(['infinite', 'groupsToScroll', 'groupsToShow']),\n  ...{\n    currentSlideGroupIndex: { type: Number, default: 0 },\n    slideGroupCount: { type: Number, default: 0 },\n    pageCount: { type: Number, default: 0 },\n    currentPage: { type: Number, default: 0 }\n  }\n} satisfies VuePropDef<keyof DotsProps>\n","<template>\n  <template v-if=\"type === SlideNavigation.previous\">\n    <slot name=\"prevArrow\" v-bind=\"arrowSlotProps\">\n      <button\n        type=\"button\"\n        data-role=\"none\"\n        class=\"v-slick-arrow prev\"\n        :class=\"{ disabled }\"\n        @click=\"clickHandler\"\n      >\n        {{ prevArrowLabel }}\n      </button>\n    </slot>\n  </template>\n  <template v-else>\n    <slot name=\"nextArrow\" v-bind=\"arrowSlotProps\">\n      <button\n        type=\"button\"\n        data-role=\"none\"\n        class=\"v-slick-arrow next\"\n        :class=\"{ disabled }\"\n        @click=\"clickHandler\"\n      >\n        {{ nextArrowLabel }}\n      </button>\n    </slot>\n  </template>\n</template>\n<script setup lang=\"ts\">\nimport { ArrowSlotProps, SlideNavigation } from '@lib/types'\nimport { computed } from 'vue'\nimport { defaultArrowProps } from './props'\n\nconst props = defineProps(defaultArrowProps)\nconst emit = defineEmits([SlideNavigation.previous, SlideNavigation.next])\nconst clickHandler = computed(() => () => {\n  if (props.disabled) return\n  emit(props.type)\n})\nconst arrowSlotProps = computed<ArrowSlotProps>(() => ({\n  currentSlideGroupIndex: props.currentSlideGroupIndex,\n  slideGroupCount: props.slideGroupCount,\n  onClick: clickHandler.value,\n  disabled: !props.disabled\n}))\n</script>\n<style scoped>\n.v-slick-arrow {\n  display: block;\n}\n</style>\n","<template>\n  <div\n    class=\"v-slick-track\"\n    :class=\"{ center: centerMode, vertical: vertical }\"\n    :style=\"[trackStyle, detectingWidth ? { width: '0 !important' } : {}]\"\n  >\n    <div\n      v-for=\"(slideGroup, i) in preCloneSlideGroups\"\n      :key=\"slideGroup.key\"\n      tabindex=\"-1\"\n      :class=\"slideGroup.class\"\n      :style=\"slideGroup.style\"\n      class=\"v-slick-slide-group clone\"\n      v-bind=\"slideGroup.attrs\"\n      @click=\"slideGroup.onClick\"\n    >\n      <component\n        :is=\"slide\"\n        v-for=\"(slide, j) of slideGroup.slides\"\n        :key=\"`slide-${i}-${j}` + (slide.key ? `-${String(slide.key)}` : '')\"\n      />\n    </div>\n    <div\n      v-for=\"(slideGroup, i) in originalSlideGroups\"\n      :key=\"slideGroup.key\"\n      tabindex=\"-1\"\n      class=\"v-slick-slide-group\"\n      :class=\"slideGroup.class\"\n      :style=\"slideGroup.style\"\n      v-bind=\"slideGroup.attrs\"\n      @click=\"slideGroup.onClick\"\n    >\n      <component\n        :is=\"slide\"\n        v-for=\"(slide, j) of slideGroup.slides\"\n        :key=\"`slide-${i}-${j}` + (slide.key ? `-${String(slide.key)}` : '')\"\n      />\n    </div>\n    <div\n      v-for=\"(slideGroup, i) in postCloneSlideGroups\"\n      :key=\"slideGroup.key\"\n      tabindex=\"-1\"\n      :class=\"slideGroup.class\"\n      :style=\"slideGroup.style\"\n      class=\"v-slick-slide-group clone\"\n      v-bind=\"slideGroup.attrs\"\n      @click=\"slideGroup.onClick\"\n    >\n      <component\n        :is=\"slide\"\n        v-for=\"(slide, j) of slideGroup.slides\"\n        :key=\"`slide-${i}-${j}` + (slide.key ? `-${String(slide.key)}` : '')\"\n      />\n    </div>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { defaultTrackProps } from './props'\nimport {\n  ChildClickPayload,\n  CloneInfoSpec,\n  LazyInfoSpec,\n  SlideGroup,\n  TrackProps\n} from '@lib/types'\nimport {\n  getLazyEndIndex,\n  getLazyStartIndex,\n  getTotalPreClones\n} from '@lib/utils'\n\nconst props = defineProps(defaultTrackProps) as TrackProps\nconst emit = defineEmits<{\n  childClick: [payload: ChildClickPayload]\n}>()\n\nconst getSlideGroupClasses = (index: number) => {\n  let isActive = false,\n    isCenter = false,\n    isCurrent = false,\n    centerOffset: number\n  if (props.centerMode) {\n    centerOffset = Math.floor(props.groupsToShow / 2)\n    isCenter =\n      (index - props.currentSlideGroupIndex) % props.slideGroupCount === 0\n    if (\n      index > props.currentSlideGroupIndex - centerOffset - 1 &&\n      index <= props.currentSlideGroupIndex + centerOffset\n    ) {\n      isActive = true\n    }\n  } else {\n    isActive =\n      props.currentSlideGroupIndex <= index &&\n      index < props.currentSlideGroupIndex + props.groupsToShow\n  }\n  isCurrent = index === props.currentSlideGroupIndex\n  return Object.entries({\n    active: isActive,\n    center: isCenter,\n    current: isCurrent\n  })\n    .filter(([, value]) => value)\n    .map(([key]) => key)\n}\n\nconst getSlideGroupStyle = (index: number) => {\n  let style: {\n    width?: string\n    position?: string\n    top?: string\n    left?: string\n    opacity?: number\n    transition?: string\n  } = {}\n\n  if (props.variableWidth === undefined || props.variableWidth === false) {\n    style.width =\n      typeof props.slideGroupWidth === 'number'\n        ? `${props.slideGroupWidth}px`\n        : props.slideGroupWidth\n  }\n\n  if (props.fade) {\n    style.position = 'relative'\n    if (props.vertical) {\n      const slideGroupHeight = !props.slideGroupHeight\n        ? 0\n        : typeof props.slideGroupHeight === 'string'\n          ? parseFloat(props.slideGroupHeight)\n          : props.slideGroupHeight\n      style.top = `${-index * slideGroupHeight}px`\n    } else {\n      const slideGroupWidth = !props.slideGroupWidth\n        ? 0\n        : typeof props.slideGroupWidth === 'string'\n          ? parseFloat(props.slideGroupWidth)\n          : props.slideGroupWidth\n\n      const left = props.rtl\n        ? index * slideGroupWidth\n        : -index * slideGroupWidth\n      style.left = `${left}px`\n    }\n    style.opacity = props.currentSlideGroupIndex === index ? 1 : 0\n    style.transition =\n      'opacity ' +\n      props.speed +\n      'ms ' +\n      props.cssEase +\n      ', ' +\n      'visibility ' +\n      props.speed +\n      'ms ' +\n      props.cssEase\n    if (props.ignorePrefersReducedMotion) {\n      style.transition += ' !important'\n    }\n  }\n\n  return style\n}\n\nconst originalSlideGroups = computed<SlideGroup[]>(() => {\n  const slideGroups = props.rawSlideGroups.map((rawSlideGroup, index) => {\n    const style = getSlideGroupStyle(index)\n    const classes = getSlideGroupClasses(index)\n    if (props.fade && classes.includes('active')) {\n      Object.assign(style, { zIndex: 1 })\n    }\n    const slideGroup: SlideGroup = {\n      slides: [],\n      key: `original-${index}`,\n      class: classes,\n      style,\n      attrs: {\n        'data-index': index,\n        ...(!classes.includes('active') ? { inert: 'true' } : {})\n      },\n      onClick: () => {\n        emit('childClick', {\n          index:\n            props.rtl && props.infinite ? props.slideGroupCount + index : index\n        })\n      }\n    }\n    if (\n      !props.lazyLoad ||\n      (props.lazyLoad && props.lazyLoadedList.indexOf(index) >= 0)\n    ) {\n      slideGroup.slides = rawSlideGroup\n    }\n    return slideGroup\n  })\n  // return props.rtl ? slideGroups.reverse() : slideGroups\n  return slideGroups\n})\n\nconst shouldClone = computed<boolean>(() => {\n  return (\n    props.infinite &&\n    !props.fade &&\n    (props.slideGroupCount > props.groupsToShow ||\n      (props.infiniteLoopOnEdge && props.slideGroupCount >= props.groupsToShow))\n  )\n})\n\nconst preCloneSlideGroups = computed<SlideGroup[]>(() => {\n  if (!shouldClone.value) {\n    return []\n  }\n  const slideGroups = props.rawSlideGroups\n    .map((rawSlideGroup, index) => {\n      const preCloneNo = props.slideGroupCount - index\n      if (preCloneNo > getTotalPreClones(props as CloneInfoSpec)) return\n      const key = -preCloneNo\n      const slideGroup: SlideGroup = {\n        slides: [],\n        key: `preclone-${key}`,\n        class: getSlideGroupClasses(key),\n        style: getSlideGroupStyle(index),\n        attrs: {\n          'data-index': key,\n          inert: 'true'\n        },\n        onClick: () => {\n          emit('childClick', {\n            index: key\n          })\n        }\n      }\n      if (\n        key >= getLazyStartIndex(props as LazyInfoSpec) ||\n        !props.lazyLoad ||\n        (props.lazyLoad && props.lazyLoadedList.indexOf(index) >= 0)\n      ) {\n        slideGroup.slides = rawSlideGroup\n      }\n      return slideGroup\n    })\n    .filter((slideGroup) => slideGroup) as SlideGroup[]\n  // return props.rtl ? slideGroups.reverse() : slideGroups\n  return slideGroups\n})\n\nconst postCloneSlideGroups = computed<SlideGroup[]>(() => {\n  if (!shouldClone.value) {\n    return []\n  }\n  const slideGroups = props.rawSlideGroups.map((rawSlideGroup, index) => {\n    const key = props.slideGroupCount + index\n    const slideGroup: SlideGroup = {\n      slides: [],\n      key: `postclone-${key}`,\n      class: getSlideGroupClasses(key),\n      style: getSlideGroupStyle(index),\n      attrs: {\n        'data-index': key,\n        ...(props.infinite &&\n        props.slideGroupCount - props.currentSlideGroupIndex <\n          props.groupsToShow &&\n        index <\n          props.groupsToShow -\n            (props.slideGroupCount - props.currentSlideGroupIndex)\n          ? {}\n          : { inert: 'true' })\n      },\n      onClick: () => {\n        emit('childClick', {\n          index: props.rtl ? props.slideGroupCount + key : key\n        })\n      }\n    }\n    if (\n      key < getLazyEndIndex(props as LazyInfoSpec) ||\n      !props.lazyLoad ||\n      (props.lazyLoad && props.lazyLoadedList.indexOf(index) >= 0)\n    ) {\n      slideGroup.slides = rawSlideGroup\n    }\n    return slideGroup\n  })\n  // return props.rtl ? slideGroups.reverse() : slideGroups\n  return slideGroups\n})\n</script>\n\n<style scoped lang=\"scss\">\n.v-slick-track {\n  position: relative;\n  top: 0;\n  left: 0;\n  display: flex;\n  transform: translate3d(0, 0, 0);\n\n  &.center {\n    margin-left: auto;\n    margin-right: auto;\n  }\n\n  &.vertical {\n    flex-direction: column;\n\n    .v-slick-slide-group {\n      flex-direction: row;\n      height: auto;\n\n      & > * {\n        flex-grow: 1;\n      }\n    }\n  }\n\n  &.dragging img {\n    pointer-events: none;\n  }\n}\n\n.v-slick-slide-group {\n  display: flex;\n  flex-direction: column;\n  height: 100%;\n  min-height: 1px;\n  flex-shrink: 0;\n  outline: none;\n}\n</style>\n","<template>\n  <ul\n    class=\"v-slick-dots\"\n    style=\"display: block\"\n    @mouseenter=\"$emit('dotsLeave')\"\n    @mouseleave=\"$emit('dotsLeave')\"\n    @mouseover=\"$emit('dotsOver')\"\n  >\n    <li\n      v-for=\"i in pageCount\"\n      :key=\"i\"\n      :class=\"{ active: isActive(i - 1) }\"\n      @click=\"\n        $emit('dotClick', {\n          index: i - 1,\n          groupsToScroll\n        })\n      \"\n    >\n      <slot name=\"customPaging\" :page=\"i - 1\">\n        <button>{{ i }}</button>\n      </slot>\n    </li>\n  </ul>\n</template>\n<script setup lang=\"ts\">\nimport { DotClickPayload } from '@lib/types'\nimport { defaultDotsProps } from './props'\n\ndefineEmits<{\n  dotClick: [payload: DotClickPayload]\n  dotsOver: []\n  dotsLeave: []\n}>()\nconst props = defineProps(defaultDotsProps)\nconst isActive = (i: number) => i === props.currentPage\n</script>\n","<template>\n  <div\n    ref=\"vSlickCarouselRef\"\n    class=\"v-slick-carousel\"\n    :style=\"\n      widthDetection === WidthDetection.manual\n        ? state.detectingWidth\n          ? { width: '100%' }\n          : vSlickCarouselStyle\n        : {}\n    \"\n  >\n    <div class=\"v-slick-slider\" :dir=\"settings.rtl ? 'rtl' : 'ltr'\">\n      <VSlickArrow\n        v-if=\"settings.arrows && !settings.unslick\"\n        :type=\"SlideNavigation.previous\"\n        :center-mode=\"settings.centerMode\"\n        :infinite=\"settings.infinite\"\n        :groups-to-show=\"settings.groupsToShow\"\n        :slide-group-count=\"slideGroupCount\"\n        :current-slide-group-index=\"state.currentSlideGroupIndex\"\n        :disabled=\"!canGoPrev\"\n        @previous=\"handlePrevVSlickArrow\"\n      >\n        <template #prevArrow=\"arrowSlotProps\">\n          <slot name=\"prevArrow\" v-bind=\"arrowSlotProps\" />\n        </template>\n      </VSlickArrow>\n      <div\n        ref=\"vSlickListRef\"\n        class=\"v-slick-list\"\n        :class=\"{ dragging: state.dragging }\"\n        :style=\"vSlickListStyle\"\n        @click=\"handleClickVSlickList\"\n        @mousedown=\"handleMouseDownOrTouchStartVSlickList\"\n        @touchstart.passive=\"handleMouseDownOrTouchStartVSlickList\"\n        @keydown=\"handleKeyDownVSlickList\"\n      >\n        <VSlickTrack\n          ref=\"vSlickTrackRef\"\n          :center-mode=\"settings.centerMode\"\n          :center-padding=\"settings.centerPadding\"\n          :raw-slide-groups=\"rawSlideGroups\"\n          :css-ease=\"cssEase\"\n          :current-slide-group-index=\"state.currentSlideGroupIndex\"\n          :detecting-width=\"state.detectingWidth\"\n          :fade=\"settings.fade\"\n          :ignore-prefers-reduced-motion=\"settings.ignorePrefersReducedMotion\"\n          :infinite=\"settings.infinite\"\n          :infinite-loop-on-edge=\"settings.infiniteLoopOnEdge\"\n          :lazy-load=\"settings.lazyLoad\"\n          :lazy-loaded-list=\"state.lazyLoadedList\"\n          :list-height=\"state.listHeight\"\n          :rtl=\"settings.rtl\"\n          :slide-group-count=\"slideGroupCount\"\n          :slide-group-height=\"state.slideGroupHeight\"\n          :slide-group-width=\"state.slideGroupWidth\"\n          :groups-to-scroll=\"settings.groupsToScroll\"\n          :groups-to-show=\"settings.groupsToShow\"\n          :speed=\"settings.speed\"\n          :track-style=\"state.trackStyle\"\n          :variable-width=\"settings.variableWidth\"\n          :vertical=\"settings.vertical\"\n          @mouseenter=\"handleMouseEnterOrOverVSlickTrack\"\n          @mouseleave=\"handleMouseLeaveVSlickTrack\"\n          @mouseover=\"handleMouseEnterOrOverVSlickTrack\"\n          @child-click=\"handleChildClickVSlickTrack\"\n        />\n      </div>\n      <VSlickArrow\n        v-if=\"settings.arrows && !settings.unslick\"\n        :type=\"SlideNavigation.next\"\n        :center-mode=\"settings.centerMode\"\n        :infinite=\"settings.infinite\"\n        :groups-to-show=\"settings.groupsToShow\"\n        :slide-group-count=\"slideGroupCount\"\n        :current-slide-group-index=\"state.currentSlideGroupIndex\"\n        :disabled=\"!canGoNext\"\n        @next=\"handleNextVSlickArrow\"\n      >\n        <template #nextArrow=\"arrowSlotProps\">\n          <slot name=\"nextArrow\" v-bind=\"arrowSlotProps\" />\n        </template>\n      </VSlickArrow>\n    </div>\n    <VSlickDots\n      v-if=\"settings.dots && !settings.unslick\"\n      :current-slide-group-index=\"state.currentSlideGroupIndex\"\n      :infinite=\"settings.infinite\"\n      :slide-group-count=\"slideGroupCount\"\n      :groups-to-scroll=\"settings.groupsToScroll\"\n      :groups-to-show=\"settings.groupsToShow\"\n      :page-count=\"pageCount\"\n      :current-page=\"currentPage\"\n      @dot-click=\"handleClickDot\"\n      @dots-over=\"handleOverDots\"\n      @dots-leave=\"handleLeaveDots\"\n    >\n      <template #customPaging=\"paging\">\n        <slot name=\"customPaging\" v-bind=\"paging\" />\n      </template>\n    </VSlickDots>\n  </div>\n</template>\n\n<script setup lang=\"ts\">\nimport {\n  ref,\n  computed,\n  watch,\n  VNode,\n  useSlots,\n  getCurrentInstance,\n  onMounted,\n  onBeforeUnmount,\n  onUpdated,\n  nextTick\n} from 'vue'\nimport {\n  ChildClickPayload,\n  DotClickPayload,\n  LazyLoadType,\n  PlayingType,\n  Props,\n  SwipeDirection,\n  SwipeEndSpec,\n  SwipeMoveSpec,\n  TrackInfoSpec,\n  VSlickCarouselInstance,\n  SwipeEvent,\n  SlideNavigation,\n  SlideGroupChangeOptions,\n  SlideGroupChangeSpec,\n  OnSlideSpec,\n  WidthDetection\n} from '@lib/types'\nimport {\n  canUseDOM,\n  clearSelection,\n  filterUndefined,\n  getChangedSlideGroupIndex,\n  json2mq,\n  MatchMedia,\n  debounce\n} from '@lib/utils'\nimport {\n  defaultPropValues,\n  defaultProps,\n  makeDefaultSliderState\n} from './props'\nimport VSlickArrow from './VSlickArrow.vue'\nimport VSlickTrack from './VSlickTrack.vue'\nimport VSlickDots from './VSlickDots.vue'\nimport {\n  extractSlides,\n  getNavigationOnKeyType,\n  getOnDemandLazySlideGroups,\n  getSlideGroupCount,\n  getSliderState,\n  getStatesOnSlide,\n  getSwipeEndState,\n  getSwipeMoveState,\n  getSwipeStartState,\n  getTotalPostClones,\n  getTotalPreClones,\n  getTrackCSS,\n  getTrackLeft\n} from '@lib/utils/carousel-utils'\n\nconst props = defineProps(defaultProps) as Props\ndefineOptions({ inheritAttrs: false })\n\nconst emit = defineEmits([\n  'init',\n  'beforeChange',\n  'afterChange',\n  'lazyLoad',\n  'lazyLoadError',\n  'reInit',\n  'edge',\n  'swipe'\n])\n\nconst slots = useSlots()\nconst enquire = canUseDOM() ? new MatchMedia() : undefined\n\nconst DEBOUNCE_RESIZE_DURATION = 50\n\nlet triggerSlideGroupHandler: number | undefined\nlet animationEndCallback: NodeJS.Timeout | null = null\nlet lazyLoadTimer: NodeJS.Timeout | null = null\nlet callbackTimers: NodeJS.Timeout[] = []\nlet lastNavigationWasKeyboard = false\n\nconst vSlickListStyle = ref({\n  ...(getCurrentInstance()?.vnode?.props?.style || {})\n})\n\nlet isVSlickListClickable = true\nlet debouncedResize: ReturnType<typeof debounce> | null = null\nlet ro: ResizeObserver | null = null\n\nlet responsiveMediaHandlers: {\n  query: string\n  handler: (predicate: { matches: boolean }) => void\n}[] = []\n\nconst media = (\n  query: string,\n  handler: () => void,\n  previousHandler: () => void\n) => {\n  if (!enquire) return\n\n  const newHandler = (predicate: { matches: boolean }) => {\n    if (predicate.matches) {\n      handler()\n    } else {\n      previousHandler()\n    }\n  }\n\n  enquire.register(query, newHandler)\n  responsiveMediaHandlers.push({ query, handler: newHandler })\n}\n\nconst clearBreakpoints = () => {\n  responsiveMediaHandlers.forEach(({ query, handler }) =>\n    enquire?.unregister(query, handler)\n  )\n  responsiveMediaHandlers = []\n}\n\nconst makeBreakpoints = () => {\n  if (!props.responsive.length) return\n\n  let mediaQueryLimit: string = 'min-width'\n  if (props.responsiveBehavior === 'desktop-first') {\n    mediaQueryLimit = 'max-width'\n  }\n\n  const breakpoints = props.responsive.map((item) => item.breakpoint)\n  breakpoints.sort((a, b) =>\n    props.responsiveBehavior === 'desktop-first' ? b - a : a - b\n  )\n  breakpoints.forEach((_breakpoint, index) => {\n    const mediaQuery = json2mq({\n      [mediaQueryLimit]: `${_breakpoint}px`\n    })\n\n    media(\n      mediaQuery,\n      () => {\n        breakpoint.value = _breakpoint\n      },\n      () => {\n        breakpoint.value = index === 0 ? undefined : breakpoints[index - 1]\n      }\n    )\n  })\n}\n\nconst swipeStart = (e: SwipeEvent) => {\n  // setTimout is used here to prevent disabling the scroll prematurely\n  setTimeout(() => {\n    if (e.cancelable) {\n      e.preventDefault()\n    }\n  })\n  const swipeStartState = getSwipeStartState(\n    e,\n    settings.value.swipe,\n    settings.value.draggable\n  )\n  Object.assign(state.value, swipeStartState)\n}\n\nconst swipeEnd = (e: SwipeEvent) => {\n  const swipeEndState = getSwipeEndState(e, {\n    ...settings.value,\n    ...state.value,\n    trackEl: vSlickTrackRef.value?.$el,\n    listEl: vSlickListRef.value,\n    slideGroupIndex: state.value.currentSlideGroupIndex,\n    slideGroupCount: slideGroupCount.value\n  } as SwipeEndSpec)\n  if (!swipeEndState) return\n  const { triggerSlideGroupHandler: newTriggerSlideGroupHandler, ...rest } =\n    swipeEndState\n  triggerSlideGroupHandler = newTriggerSlideGroupHandler\n  Object.assign(state.value, rest)\n  if (triggerSlideGroupHandler !== undefined) {\n    slideGroupHandler(triggerSlideGroupHandler)\n  }\n}\n\nconst swipeMove = (e: SwipeEvent) => {\n  clearSelection()\n  const { swipeDirection, ...swipeMoveState } =\n    getSwipeMoveState(e, {\n      ...settings.value,\n      ...state.value,\n      trackEl: vSlickTrackRef.value?.$el,\n      listEl: vSlickListRef.value,\n      slideGroupIndex: state.value.currentSlideGroupIndex,\n      slideGroupCount: slideGroupCount.value,\n      onEdge: (e: SwipeDirection | keyof typeof SwipeDirection) =>\n        emit('edge', e),\n      swipeEvent: (e: SwipeDirection | keyof typeof SwipeDirection) =>\n        emit('swipe', e),\n      canGoNext: canGoNext.value\n    } as SwipeMoveSpec) || ({} as any)\n  if (\n    ((settings.value.verticalSwiping && swipeDirection === SwipeDirection.up) ||\n      swipeDirection === SwipeDirection.down ||\n      (!settings.value.verticalSwiping &&\n        swipeDirection === SwipeDirection.left) ||\n      swipeDirection === SwipeDirection.right) &&\n    e.cancelable\n  ) {\n    e.preventDefault()\n  }\n  if (!swipeMoveState) return\n  if (swipeMoveState.swiping) {\n    isVSlickListClickable = false\n  }\n  Object.assign(state.value, swipeMoveState)\n}\n\nconst play = () => {\n  let nextIndex\n  if (settings.value.rtl) {\n    nextIndex =\n      state.value.currentSlideGroupIndex - settings.value.groupsToScroll\n  } else {\n    if (canGoNext.value) {\n      nextIndex =\n        state.value.currentSlideGroupIndex + settings.value.groupsToScroll\n    } else {\n      return false\n    }\n  }\n\n  slideGroupHandler(nextIndex)\n}\n\nconst pause = (\n  pauseType: null | PlayingType | keyof typeof PlayingType = null\n) => {\n  if (state.value.autoplayTimer) {\n    clearInterval(state.value.autoplayTimer)\n    state.value.autoplayTimer = null\n  }\n  const autoplaying = state.value.autoplaying\n  if (pauseType === PlayingType.paused) {\n    state.value.autoplaying = PlayingType.paused\n  } else if (\n    pauseType === PlayingType.focused &&\n    (autoplaying === PlayingType.hovered || autoplaying === PlayingType.playing)\n  ) {\n    state.value.autoplaying = PlayingType.focused\n  } else if (autoplaying === PlayingType.playing) {\n    state.value.autoplaying = PlayingType.hovered\n  } else if (autoplaying === null) {\n    state.value.autoplaying = null\n  }\n}\n\nconst autoPlay = (playType: PlayingType | keyof typeof PlayingType) => {\n  if (state.value.autoplayTimer) {\n    clearInterval(state.value.autoplayTimer)\n  }\n  const autoplaying = state.value.autoplaying\n  if (playType === PlayingType.update) {\n    if (\n      autoplaying === PlayingType.hovered ||\n      autoplaying === PlayingType.focused ||\n      autoplaying === PlayingType.paused\n    ) {\n      return\n    }\n  } else if (playType === PlayingType.leave) {\n    if (\n      autoplaying === PlayingType.paused ||\n      autoplaying === PlayingType.focused\n    ) {\n      return\n    }\n  } else if (playType === PlayingType.blur) {\n    if (\n      autoplaying === PlayingType.paused ||\n      autoplaying === PlayingType.hovered\n    ) {\n      return\n    }\n  }\n  state.value.autoplayTimer = setInterval(\n    play,\n    settings.value.autoplaySpeed + 50\n  )\n  state.value.autoplaying = PlayingType.playing\n}\n\nconst adaptHeight = () => {\n  if (settings.value.adaptiveHeight && vSlickListRef.value) {\n    const activeSlideGroups = vSlickListRef.value.querySelectorAll<HTMLElement>(\n      '.v-slick-slide-group.active'\n    )\n    let maxHeight = 0\n    activeSlideGroups.forEach((slideGroup) => {\n      maxHeight = Math.max(maxHeight, slideGroup.offsetHeight)\n    })\n    vSlickListRef.value.style.height = maxHeight + 'px'\n  }\n}\n\nconst onTrackOver = () => {\n  if (settings.value.autoplay) pause(PlayingType.hovered)\n}\n\nconst onTrackLeave = () => {\n  if (\n    settings.value.autoplay &&\n    state.value.autoplaying === PlayingType.hovered\n  )\n    autoPlay(PlayingType.leave)\n}\n\nconst handleClickVSlickList = (e: Event) => {\n  if (isVSlickListClickable === false) {\n    e.stopPropagation()\n    e.preventDefault()\n  }\n  isVSlickListClickable = true\n}\n\nconst handleChildClickVSlickTrack = ({ index }: ChildClickPayload) => {\n  if (!settings.value.focusOnSelect || settings.value.unslick) return\n  changeSlideGroup({\n    message: 'children',\n    index\n  })\n}\n\nconst handleKeyDownVSlickList = (e: KeyboardEvent) => {\n  if (!settings.value.accessibility || settings.value.unslick) return\n  const navigation = getNavigationOnKeyType(\n    e,\n    settings.value.accessibility,\n    settings.value.rtl\n  )\n  if (!navigation) return\n  lastNavigationWasKeyboard = true\n  changeSlideGroup({ message: navigation as SlideNavigation })\n}\n\nconst handleMouseDownOrTouchStartVSlickList = (e: SwipeEvent) => {\n  if (!settings.value.touchMove || settings.value.unslick) return\n  const target = e.target as HTMLElement | null\n  if (target?.classList.contains('no-swipe')) return\n  swipeStart(e)\n}\n\nconst handleMouseMoveOrTouchMoveVSlickList = (e: SwipeEvent) => {\n  if (\n    !state.value.dragging ||\n    !settings.value.touchMove ||\n    settings.value.unslick\n  )\n    return\n  const target = e.target as HTMLElement | null\n  if (target?.classList.contains('no-swipe')) return\n  swipeMove(e)\n}\n\nconst handleMouseUpOrTouchEndVSlickList = (e: SwipeEvent) => {\n  if (!settings.value.touchMove || settings.value.unslick) return\n  swipeEnd(e)\n}\n\nconst handleMouseLeaveOrTouchCancelVSlickList = (e: SwipeEvent) => {\n  if (\n    !state.value.dragging ||\n    !settings.value.touchMove ||\n    settings.value.unslick\n  )\n    return\n  swipeEnd(e)\n}\n\nconst handleMouseEnterOrOverVSlickTrack = () => {\n  if (!settings.value.pauseOnHover || settings.value.unslick) return\n  onTrackOver()\n}\n\nconst handleMouseLeaveVSlickTrack = () => {\n  if (!settings.value.pauseOnHover || settings.value.unslick) return\n  onTrackLeave()\n}\n\nconst handleOverDots = () => {\n  if (settings.value.pauseOnDotsHover && settings.value.autoplay)\n    pause(PlayingType.hovered)\n}\nconst handleLeaveDots = () => {\n  if (\n    settings.value.pauseOnDotsHover &&\n    settings.value.autoplay &&\n    state.value.autoplaying === PlayingType.hovered\n  )\n    autoPlay(PlayingType.leave)\n}\n\nconst handleClickDot = ({ index }: DotClickPayload) => {\n  changeSlideGroup({\n    message: 'dots',\n    index\n  })\n}\n\nconst handleNextVSlickArrow = () => {\n  changeSlideGroup({\n    message: SlideNavigation.next\n  })\n}\n\nconst handlePrevVSlickArrow = () => {\n  changeSlideGroup({\n    message: SlideNavigation.previous\n  })\n}\n\nconst changeSlideGroup = (\n  options: SlideGroupChangeOptions,\n  dontAnimate = false\n) => {\n  const spec = {\n    ...settings.value,\n    ...state.value,\n    slideGroupCount: slideGroupCount.value,\n    pivotSlideGroupIndices: pivotSlideGroupIndices.value,\n    currentPage: currentPage.value\n  }\n  const targetSlideGroupIndex = getChangedSlideGroupIndex(\n    spec as SlideGroupChangeSpec,\n    options\n  )\n  if (targetSlideGroupIndex === undefined || targetSlideGroupIndex === null)\n    return\n  slideGroupHandler(\n    targetSlideGroupIndex,\n    dontAnimate === true ? true : undefined\n  )\n}\n\nconst slideGroupHandler = async (index: number, dontAnimate = false) => {\n  const { asNavFor, speed } = settings.value\n  const currentSlideGroupIndex = state.value.currentSlideGroupIndex\n  const states = getStatesOnSlide({\n    index,\n    ...settings.value,\n    ...state.value,\n    slideGroupCount: slideGroupCount.value,\n    trackEl: vSlickTrackRef.value?.$el,\n    useCSSTransitions: settings.value.useCSSTransitions && !dontAnimate,\n    canGoNext: canGoNext.value\n  } as OnSlideSpec)\n  if (!states) return\n  const { slidingState, afterSlidingState } = states\n  emit(\n    'beforeChange',\n    currentSlideGroupIndex,\n    slidingState.currentSlideGroupIndex\n  )\n  const slidesToLoad =\n    slidingState.lazyLoadedList?.filter(\n      (value: number) => state.value.lazyLoadedList.indexOf(value) < 0\n    ) || []\n  if (slidesToLoad.length) {\n    emit('lazyLoad', slidesToLoad)\n  }\n  Object.assign(state.value, slidingState)\n  if (asNavFor) {\n    ;(asNavFor as VSlickCarouselInstance).goTo(index)\n  }\n  if (!afterSlidingState) return\n  await new Promise<void>((resolve) => {\n    animationEndCallback = setTimeout(() => {\n      const { animating, ...firstBatch } = afterSlidingState!\n      if (\n        settings.value.waitForAnimate ||\n        state.value.currentSlideGroupIndex ===\n          slidingState.currentSlideGroupIndex\n      ) {\n        Object.assign(state.value, firstBatch)\n      }\n      callbackTimers.push(\n        setTimeout(() => {\n          state.value.animating = animating || false\n        })\n      )\n      if (lastNavigationWasKeyboard) {\n        lastNavigationWasKeyboard = false\n        nextTick().then(() => {\n          const targetIndex = state.value.currentSlideGroupIndex\n          const listEl = vSlickListRef.value\n          if (!listEl) return\n          const selector = `.v-slick-slide-group[data-index=\"${targetIndex}\"]`\n          const targetSlideGroup = listEl.querySelector<HTMLElement>(selector)\n          if (targetSlideGroup) {\n            targetSlideGroup.focus()\n          }\n        })\n      }\n      emit('afterChange', slidingState.currentSlideGroupIndex)\n      animationEndCallback = null\n      resolve()\n    }, speed)\n  })\n}\n\nconst updateState = (shouldSetTrackStyle?: boolean) => {\n  const updatedState = getSliderState({\n    ...settings.value,\n    ...state.value,\n    listEl: vSlickListRef.value,\n    trackEl: vSlickTrackRef.value?.$el,\n    slides: slides.value\n  })\n  const spec: TrackInfoSpec = {\n    ...settings.value,\n    ...state,\n    ...updatedState,\n    trackEl: vSlickTrackRef.value?.$el,\n    slideGroupCount: slideGroupCount.value\n  }\n  const targetLeft = getTrackLeft(spec as TrackInfoSpec)\n  const trackStyle = getTrackCSS(spec as TrackInfoSpec, targetLeft)\n  if (shouldSetTrackStyle || slideGroupCount.value !== spec.slideGroupCount) {\n    updatedState.trackStyle = trackStyle\n  }\n  Object.assign(state.value, updatedState)\n}\n\nconst resize = async (\n  options: { shouldSetTrackStyle?: boolean; isWindowResize?: boolean } = {\n    shouldSetTrackStyle: true\n  }\n) => {\n  if (!vSlickTrackRef.value || !vSlickTrackRef.value.$el) {\n    return\n  }\n  if (\n    settings.value.widthDetection === WidthDetection.manual &&\n    options.isWindowResize\n  ) {\n    await detectWidth()\n  }\n  updateState(\n    options.shouldSetTrackStyle ||\n      (settings.value.widthDetection === WidthDetection.manual &&\n        options.isWindowResize)\n  )\n  if (settings.value.autoplay) {\n    autoPlay(PlayingType.update)\n  } else {\n    pause()\n  }\n}\n\nconst onResize = (options?: {\n  shouldSetTrackStyle?: boolean\n  isWindowResize?: boolean\n}) => {\n  debouncedResize?.cancel()\n  debouncedResize = debounce(() => resize(options), DEBOUNCE_RESIZE_DURATION)\n}\n\nconst onResizeEventListener = () =>\n  onResize({\n    isWindowResize: true\n  })\n\nconst onSlideGroupFocus = () => {\n  if (settings.value.autoplay) pause(PlayingType.focused)\n}\nconst onSlideGroupBlur = () => {\n  if (\n    settings.value.autoplay &&\n    state.value.autoplaying === PlayingType.focused\n  )\n    autoPlay(PlayingType.blur)\n}\n\nconst progressiveLazyLoad = () => {\n  const slideGroupsToLoad = []\n  const spec = { ...settings.value, ...state.value }\n  const totalPostClones = getTotalPostClones({\n    ...spec,\n    slideGroupCount: slideGroupCount.value\n  })\n  const totalPreClones = getTotalPreClones({\n    ...spec,\n    slideGroupCount: slideGroupCount.value\n  })\n  for (\n    let index = state.value.currentSlideGroupIndex;\n    index < slideGroupCount.value + totalPostClones;\n    index++\n  ) {\n    if (state.value.lazyLoadedList.indexOf(index) < 0) {\n      slideGroupsToLoad.push(index)\n      break\n    }\n  }\n  for (\n    let index = state.value.currentSlideGroupIndex - 1;\n    index >= -totalPreClones;\n    index--\n  ) {\n    if (state.value.lazyLoadedList.indexOf(index) < 0) {\n      slideGroupsToLoad.push(index)\n      break\n    }\n  }\n  if (slideGroupsToLoad.length > 0) {\n    state.value.lazyLoadedList =\n      state.value.lazyLoadedList.concat(slideGroupsToLoad)\n    emit('lazyLoad', slideGroupsToLoad)\n  } else {\n    if (lazyLoadTimer) {\n      clearInterval(lazyLoadTimer)\n      lazyLoadTimer = null\n    }\n  }\n}\n\nconst checkImagesLoad = () => {\n  const images = vSlickListRef.value?.querySelectorAll<HTMLImageElement>(\n    '.v-slick-slide-group img'\n  )\n  const imagesCount = images?.length || 0\n  let loadedCount = 0\n  images?.forEach((image) => {\n    const handler = () => {\n      if (++loadedCount >= imagesCount) {\n        onResize()\n      }\n    }\n    if (!image.onclick) {\n      image.onclick = () => {\n        ;(image.closest('.v-slick-slide-group') as HTMLElement)?.focus()\n      }\n    } else {\n      const prevClickHandler = image.onclick.bind(image)\n      image.onclick = (e) => {\n        prevClickHandler(e)\n        ;(image.closest('.v-slick-slide-group') as HTMLElement)?.focus()\n      }\n    }\n    if (!image.onload) {\n      if (!settings.value.lazyLoad) return\n      image.onload = () => {\n        adaptHeight()\n        callbackTimers.push(setTimeout(onResize, settings.value.speed))\n      }\n    } else {\n      image.onload = handler\n      image.onerror = () => {\n        handler()\n        emit('lazyLoadError')\n      }\n    }\n  })\n}\n\nconst detectWidth = async () => {\n  state.value.detectingWidth = true\n  return new Promise<void>((resolve) =>\n    setTimeout(() => {\n      Object.assign(vSlickCarouselStyle.value, {\n        width: `${vSlickCarouselRef.value?.offsetWidth}px`\n      })\n      state.value.detectingWidth = false\n      resolve()\n    })\n  )\n}\n\nconst ssrInit = () => {\n  const spec = {\n    ...settings.value,\n    ...state.value,\n    slideGroupCount: slideGroupCount.value\n  }\n  const preClones = getTotalPreClones(spec)\n  const postClones = getTotalPostClones(spec)\n  if (settings.value.variableWidth) {\n    let trackWidth = [],\n      trackLeft = []\n    const childrenWidths: number[] = []\n    rawSlideGroups.value.forEach((slideGroup) => {\n      let maxWidth = 0\n      slideGroup.forEach((child) => {\n        const { width } = child.props?.style || {}\n        if (width) maxWidth = Math.max(maxWidth, width)\n      })\n      childrenWidths.push(maxWidth)\n      trackWidth.push(maxWidth)\n    })\n    for (let i = 0; i < preClones; i++) {\n      trackLeft.push(childrenWidths[childrenWidths.length - 1 - i])\n      trackWidth.push(childrenWidths[childrenWidths.length - 1 - i])\n    }\n    for (let i = 0; i < postClones; i++) {\n      trackWidth.push(childrenWidths[i])\n    }\n    for (let i = 0; i < state.value.currentSlideGroupIndex; i++) {\n      trackLeft.push(childrenWidths[i])\n    }\n    trackWidth = trackWidth.filter((o) => o)\n    trackLeft = trackLeft.filter((o) => o)\n    const trackStyle = {\n      width: `calc(${trackWidth.join(' + ')})`,\n      left: `calc(${trackLeft.map((o) => `-${o}`).join(' + ')})`\n    }\n    if (settings.value.centerMode) {\n      const currentWidth = childrenWidths[state.value.currentSlideGroupIndex]\n      trackStyle.left = `calc(${trackLeft\n        .map((o) => `-${o}`)\n        .join(' + ')} + (100% - ${currentWidth}) / 2 )`\n    }\n    state.value.trackStyle = trackStyle\n  } else {\n    const _slideGroupCount = preClones + postClones + slideGroupCount.value\n    const trackWidth = (100 / settings.value.groupsToShow) * _slideGroupCount\n    const slideGroupWidth = 100 / _slideGroupCount\n    let trackLeft =\n      (-slideGroupWidth *\n        (preClones + state.value.currentSlideGroupIndex) *\n        trackWidth) /\n      100\n    if (settings.value.centerMode) {\n      trackLeft += (100 - (slideGroupWidth * trackWidth) / 100) / 2\n    }\n    state.value.slideGroupWidth = slideGroupWidth + '%'\n    state.value.trackStyle = {\n      width: trackWidth + '%',\n      left: trackLeft + '%'\n    }\n  }\n}\n\nconst breakpoint = ref<number>()\nconst isMounted = ref(false)\n\nconst vSlickCarouselRef = ref<HTMLElement>()\nconst vSlickCarouselStyle = ref({})\nconst vSlickListRef = ref<HTMLElement>()\nconst vSlickTrackRef = ref<InstanceType<typeof VSlickTrack>>()\n\nconst settings = computed<Props>(() => {\n  const definedProps = filterUndefined(props)\n  let settings = { ...defaultPropValues, ...definedProps }\n  if (isMounted.value && breakpoint.value) {\n    const newProps = props.responsive.find(\n      (item) => item.breakpoint === breakpoint.value\n    )\n    settings = {\n      ...settings,\n      ...newProps?.settings\n    }\n  }\n  // force scrolling by one group if 'centerMode' is enabled\n  if (settings.centerMode) {\n    if (settings.groupsToScroll > 1 && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `centerMode is enabled: groupsToScroll should be 1; you are using ${settings.groupsToScroll}`\n      )\n    }\n    settings.groupsToScroll = 1\n    if (settings.infinite) {\n      settings.infiniteLoopOnEdge = true\n    }\n  }\n  // force showing one group and scrolling by one if `fade` is enabled\n  if (settings.fade) {\n    if (settings.groupsToShow > 1 && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `fade is enabled: groupsToShow should be 1; you are using ${settings.groupsToShow}`\n      )\n    }\n    if (settings.groupsToScroll > 1 && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `fade is enabled: groupsToScroll should be 1; you are using ${settings.groupsToScroll}`\n      )\n    }\n    settings.groupsToShow = 1\n    settings.groupsToScroll = 1\n  }\n  if (settings.infiniteLoopOnEdge) {\n    if (!settings.infinite && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `infiniteLoopOnEdge is enabled: infinite needs to be enabled for this option to work`\n      )\n    }\n    if (settings.groupsToScroll > 1 && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `infiniteLoopOnEdge is enabled: groupsToScroll needs to be 1 for this option to work; you are using ${settings.groupsToScroll}`\n      )\n    }\n  }\n  // force disabling `variableWidth` if `slidesPerGroup` is bigger than 1\n  if (settings.slidesPerGroup > 1) {\n    if (settings.variableWidth && process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(`slidesPerGroup is bigger than 1: variableWidth is disabled`)\n    }\n    settings.variableWidth = false\n  }\n\n  if (settings.vertical && settings.rtl) {\n    if (process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(`vertical mode is enabled: rtl is disabled`)\n    }\n    settings.rtl = false\n  }\n\n  if (settings.groupsToScroll > settings.groupsToShow) {\n    if (process.env.NODE_ENV !== 'production') {\n      // eslint-disable-next-line no-console\n      console.warn(\n        `groupsToScroll (${settings.groupsToScroll}) can be at most groupsToShow (${settings.groupsToShow})`\n      )\n    }\n    settings.groupsToScroll = settings.groupsToShow\n  }\n\n  if (settings.unslick) {\n    settings.dots = false\n    settings.arrows = false\n    settings.autoplay = false\n    settings.infinite = false\n    settings.draggable = false\n    settings.fade = false\n    settings.centerMode = false\n  }\n\n  return settings\n})\n\nconst canGoPrev = computed(\n  () =>\n    (settings.value.infinite &&\n      ((settings.value.infiniteLoopOnEdge &&\n        slideGroupCount.value >= settings.value.groupsToShow) ||\n        slideGroupCount.value > settings.value.groupsToShow)) ||\n    currentPage.value > 0\n)\n\nconst canGoNext = computed(\n  () =>\n    (settings.value.infinite &&\n      ((settings.value.infiniteLoopOnEdge &&\n        slideGroupCount.value >= settings.value.groupsToShow) ||\n        slideGroupCount.value > settings.value.groupsToShow)) ||\n    pageCount.value > currentPage.value + 1\n)\n\nconst slides = ref<VNode[]>(slots.default ? extractSlides(slots.default()) : [])\n\nconst state = ref({\n  ...makeDefaultSliderState(),\n  currentSlideGroupIndex: settings.value.initialGroupIndex\n})\n\nconst currentSlideGroupIndex = computed(\n  () => state.value.currentSlideGroupIndex\n)\n\nconst currentGroupsToShow = computed(() => settings.value.groupsToShow)\n\nconst slideGroupCount = computed(() =>\n  getSlideGroupCount(slides.value.length, settings.value.slidesPerGroup)\n)\n\nconst pageCount = computed(() => {\n  return settings.value.infinite &&\n    settings.value.infiniteLoopOnEdge &&\n    settings.value.groupsToScroll === 1 &&\n    slideGroupCount.value >= settings.value.groupsToShow\n    ? slideGroupCount.value\n    : Math.ceil(\n        Math.max(\n          slideGroupCount.value -\n            settings.value.groupsToShow +\n            (settings.value.centerMode\n              ? settings.value.infinite\n                ? settings.value.groupsToShow - 1\n                : Math.floor(settings.value.groupsToShow / 2)\n              : 0),\n          0\n        ) / settings.value.groupsToScroll\n      ) + 1\n})\n\nconst pivotSlideGroupIndices = computed(() => {\n  return Array.from({ length: pageCount.value }, (_, i) => {\n    if (\n      i !== pageCount.value - 1 ||\n      (settings.value.infinite &&\n        (settings.value.centerMode || settings.value.infiniteLoopOnEdge))\n    )\n      return i * settings.value.groupsToScroll\n    const r =\n      (slideGroupCount.value - (i - 1) * settings.value.groupsToScroll) %\n      settings.value.groupsToShow\n    if (r === 0) return i * settings.value.groupsToScroll\n    return (i - 1) * settings.value.groupsToScroll + r\n  })\n})\n\nconst currentPage = computed(() => {\n  const nextPivotIndex = pivotSlideGroupIndices.value.findIndex(\n    (i) => i > currentSlideGroupIndex.value\n  )\n  return nextPivotIndex === -1 ? pageCount.value - 1 : nextPivotIndex - 1\n})\n\nconst rawSlideGroups = computed<VNode[][]>(() => {\n  const slideGroups: VNode[][] = []\n  const slidesPerGroup = settings.value.slidesPerGroup\n  const slideGroupsCount = slideGroupCount.value\n  for (let i = 0; i < slideGroupsCount; i++) {\n    const startIndex = i * slidesPerGroup\n    const endIndex = startIndex + slidesPerGroup\n    slideGroups.push(slides.value.slice(startIndex, endIndex))\n  }\n  return slideGroups\n})\n\nwatch(\n  () => props.responsive,\n  () => {\n    clearBreakpoints()\n    makeBreakpoints()\n  },\n  { deep: true }\n)\n\nwatch(\n  settings,\n  (newSettings: Props, oldSettings: Props) => {\n    let shouldSetTrackStyle = false\n    for (const key of Object.keys(settings.value)) {\n      if (!newSettings.hasOwnProperty(key)) {\n        shouldSetTrackStyle = true\n        break\n      }\n      if (\n        typeof newSettings[key as keyof typeof newSettings] === 'object' ||\n        typeof newSettings[key as keyof typeof newSettings] === 'function'\n      ) {\n        continue\n      }\n      if (\n        newSettings[key as keyof typeof newSettings] !==\n        oldSettings[key as keyof typeof newSettings]\n      ) {\n        shouldSetTrackStyle = true\n        break\n      }\n    }\n    updateState(shouldSetTrackStyle)\n    if (state.value.currentSlideGroupIndex >= slideGroupCount.value) {\n      changeSlideGroup({\n        message: 'index',\n        index: slideGroupCount.value - newSettings.groupsToShow\n      })\n    }\n    if (newSettings.autoplay) {\n      autoPlay(PlayingType.play)\n    } else {\n      pause(PlayingType.paused)\n    }\n  },\n  {\n    deep: true\n  }\n)\n\nwatch(\n  () => slots.default?.() || [],\n  (newSlots) => {\n    slides.value = extractSlides(newSlots)\n  }\n)\n\nwatch(\n  () => [\n    state.value.listHeight,\n    settings.value.centerMode,\n    settings.value.centerPadding,\n    settings.value.vertical\n  ],\n  ([listHeight, centerMode, centerPadding, vertical]) => {\n    let verticalHeightStyle = {\n      height: 'auto'\n    }\n    if (vertical) {\n      verticalHeightStyle = {\n        height: `${listHeight}px`\n      }\n    }\n\n    let centerPaddingStyle\n    if (!centerMode) {\n      centerPaddingStyle = {\n        padding: '0'\n      }\n    } else if (vertical) {\n      centerPaddingStyle = {\n        padding: centerPadding + ' 0px'\n      }\n    } else {\n      centerPaddingStyle = {\n        padding: '0px ' + centerPadding\n      }\n    }\n    vSlickListStyle.value = {\n      ...vSlickListStyle.value,\n      ...filterUndefined(verticalHeightStyle),\n      ...centerPaddingStyle\n    }\n  }\n)\n\nwatch(\n  () => state.value.dragging,\n  (dragging) => {\n    if (!vSlickListRef.value) return\n    if (dragging) {\n      vSlickListRef.value.onmousemove = handleMouseMoveOrTouchMoveVSlickList\n      vSlickListRef.value.addEventListener(\n        'touchmove',\n        handleMouseMoveOrTouchMoveVSlickList,\n        { passive: false }\n      )\n      vSlickListRef.value.onmouseup = handleMouseUpOrTouchEndVSlickList\n      vSlickListRef.value.addEventListener(\n        'touchend',\n        handleMouseUpOrTouchEndVSlickList,\n        { passive: false }\n      )\n      vSlickListRef.value.onmouseleave = handleMouseLeaveOrTouchCancelVSlickList\n      vSlickListRef.value.addEventListener(\n        'touchcancel',\n        handleMouseLeaveOrTouchCancelVSlickList,\n        { passive: false }\n      )\n    } else {\n      vSlickListRef.value.onmousemove = null\n      vSlickListRef.value.removeEventListener(\n        'touchmove',\n        handleMouseMoveOrTouchMoveVSlickList\n      )\n      vSlickListRef.value.onmouseup = null\n      vSlickListRef.value.removeEventListener(\n        'touchend',\n        handleMouseUpOrTouchEndVSlickList\n      )\n      vSlickListRef.value.onmouseleave = null\n      vSlickListRef.value.removeEventListener(\n        'touchcancel',\n        handleMouseLeaveOrTouchCancelVSlickList\n      )\n    }\n  }\n)\n\ndefineExpose({\n  goTo: slideGroupHandler,\n  next: () => changeSlideGroup({ message: SlideNavigation.next }),\n  prev: () => changeSlideGroup({ message: SlideNavigation.previous }),\n  canGoNext,\n  canGoPrev,\n  play,\n  pause,\n  autoPlay,\n  slideGroupCount,\n  currentSlideGroupIndex,\n  currentGroupsToShow,\n  pageCount\n})\n\nonMounted(async () => {\n  isMounted.value = true\n  window.addEventListener('resize', onResizeEventListener)\n  if (settings.value.widthDetection === WidthDetection.manual) {\n    await detectWidth()\n  }\n  updateState(true)\n  adaptHeight()\n  if (settings.value.autoplay) {\n    autoPlay(PlayingType.update)\n  }\n  if (settings.value.lazyLoad === LazyLoadType.progressive) {\n    lazyLoadTimer = setInterval(progressiveLazyLoad, 1000)\n  }\n  ro = new ResizeObserver(() => {\n    if (state.value.animating) {\n      onResize({ shouldSetTrackStyle: false }) // do not set trackStyle so as to not break the animation\n      callbackTimers.push(setTimeout(() => onResize(), settings.value.speed))\n    } else {\n      onResize()\n    }\n  })\n  ro.observe(vSlickListRef.value as Element)\n  vSlickListRef.value\n    ?.querySelectorAll<HTMLElement>('.v-slick-slide-group')\n    .forEach((slideGroup) => {\n      slideGroup.onfocus = settings.value.pauseOnFocus\n        ? onSlideGroupFocus\n        : null\n      slideGroup.onblur = settings.value.pauseOnFocus ? onSlideGroupBlur : null\n    })\n})\n\nonUpdated(() => {\n  checkImagesLoad()\n  emit('reInit')\n  if (settings.value.lazyLoad) {\n    const slideGroupsToLoad = getOnDemandLazySlideGroups({\n      ...settings.value,\n      ...state.value\n    })\n    if (slideGroupsToLoad.length) {\n      state.value.lazyLoadedList =\n        state.value.lazyLoadedList.concat(slideGroupsToLoad)\n      emit('lazyLoad', slideGroupsToLoad)\n    }\n  }\n  adaptHeight()\n})\n\nonBeforeUnmount(() => {\n  window.removeEventListener('resize', onResizeEventListener)\n  ro?.unobserve(vSlickListRef.value as Element)\n  if (animationEndCallback) {\n    clearTimeout(animationEndCallback)\n  }\n  if (lazyLoadTimer) {\n    clearInterval(lazyLoadTimer)\n  }\n  if (callbackTimers.length) {\n    callbackTimers.forEach((timer) => clearTimeout(timer))\n    callbackTimers = []\n  }\n  if (state.value.autoplayTimer) {\n    clearInterval(state.value.autoplayTimer)\n  }\n})\n\nmakeBreakpoints()\nssrInit()\nemit('init')\n</script>\n\n<style scoped lang=\"scss\">\n.v-slick-slider {\n  position: relative;\n  display: block;\n  box-sizing: border-box;\n}\n\n.v-slick-list {\n  position: relative;\n  display: block;\n  overflow: hidden;\n  margin: 0;\n  padding: 0;\n  transform: translate3d(0, 0, 0);\n\n  &:focus {\n    outline: none;\n  }\n\n  &.dragging {\n    cursor: pointer;\n    cursor: hand;\n  }\n}\n</style>\n"],"names":["PlayingType","LazyLoadType","SwipeDirection","SlideNavigation","WidthDetection","extractSlides","vnodes","vnode","isSlide","getNavigationOnKeyType","accessibility","rtl","_a","getChangedSlideGroupIndex","spec","options","targetSlideGroupIndex","centerMode","groupsToShow","groupsToScroll","slideGroupCount","currentSlideGroupIndex","infinite","infiniteLoopOnEdge","pivotSlideGroupIndices","currentPage","direction","siblingDirection","totalVisibleGroupsOnRightOfCurrGroup","totalVisibleGroupsOnLeftOfCurrGroup","centerPadding","right","left","getNavigableIndexes","max","breakpoint","counter","indexes","checkNavigable","index","navigables","prevNavigable","getSwipeStartState","swipe","draggable","getTraversedSlideGroupCount","centerOffset","swipedSlideGroup","slideGroups","grp","currentIndex","swipedSlideGroupIndex","getSwipeDirection","touchObject","verticalSwiping","xDist","yDist","r","swipeAngle","getSwipeEndState","dragging","listWidth","touchThreshold","listHeight","swipeToSlide","scrolling","onSwipe","minSwipe","swipeDirection","state","newSlideGroupIndex","currentLeft","getTrackLeft","getTrackAnimateCSS","getLazySlidesOnLeft","getLazySlidesOnRight","getLazyStartIndex","getLazyEndIndex","getOnDemandLazySlideGroups","onDemandSlideGroups","startIndex","endIndex","slideGroupIndex","getTrackCSS","trackWidth","trackHeight","trackChildren","getTotalSlideGroups","style","transform","getTotalPreClones","getTotalPostClones","trackEl","slideGroupWidth","variableWidth","slideGroupHeight","fade","vertical","slideGroupOffset","targetLeft","targetSlide","verticalOffset","slidesToOffset","targetSlideIndex","trackSlides","child","slide","getStatesOnSlide","waitForAnimate","animating","lazyLoadedList","lazyLoad","useCSSTransitions","animationSlideGroupIndex","finalSlideGroupIndex","slidingState","afterSlidingState","finalLeft","animationLeft","getSwipeMoveState","edgeFriction","edgeDragged","onEdge","swiped","swiping","swipeEvent","swipeLeft","curLeft","verticalSwipeLength","positionOffset","dotCount","touchSwipeLength","getSlideGroupCount","slideCount","getSliderState","_b","centerPaddingAdj","_c","slideGroupsToLoad","sliderState","MatchMedia","__publicField","query","handler","e","canUseDOM","filterUndefined","props","key","acc","clearSelection","json2mq","obj","value","debounce","callback","wait","timeoutId","makeDefaultProps","selectFields","defaultProps","defaultPropValues","makeDefaultSliderState","defaultTrackProps","defaultArrowProps","defaultDotsProps","__props","emit","__emit","clickHandler","computed","arrowSlotProps","getSlideGroupClasses","isActive","isCenter","isCurrent","getSlideGroupStyle","originalSlideGroups","rawSlideGroup","classes","slideGroup","shouldClone","preCloneSlideGroups","preCloneNo","postCloneSlideGroups","i","DEBOUNCE_RESIZE_DURATION","slots","useSlots","enquire","triggerSlideGroupHandler","animationEndCallback","lazyLoadTimer","callbackTimers","lastNavigationWasKeyboard","vSlickListStyle","ref","getCurrentInstance","isVSlickListClickable","debouncedResize","ro","responsiveMediaHandlers","media","previousHandler","newHandler","predicate","clearBreakpoints","makeBreakpoints","mediaQueryLimit","breakpoints","item","a","b","_breakpoint","mediaQuery","swipeStart","swipeStartState","settings","swipeEnd","swipeEndState","vSlickTrackRef","vSlickListRef","newTriggerSlideGroupHandler","rest","slideGroupHandler","swipeMove","swipeMoveState","canGoNext","play","nextIndex","pause","pauseType","autoplaying","autoPlay","playType","adaptHeight","activeSlideGroups","maxHeight","onTrackOver","onTrackLeave","handleClickVSlickList","handleChildClickVSlickTrack","changeSlideGroup","handleKeyDownVSlickList","navigation","handleMouseDownOrTouchStartVSlickList","target","handleMouseMoveOrTouchMoveVSlickList","handleMouseUpOrTouchEndVSlickList","handleMouseLeaveOrTouchCancelVSlickList","handleMouseEnterOrOverVSlickTrack","handleMouseLeaveVSlickTrack","handleOverDots","handleLeaveDots","handleClickDot","handleNextVSlickArrow","handlePrevVSlickArrow","dontAnimate","asNavFor","speed","states","slidesToLoad","resolve","firstBatch","nextTick","targetIndex","listEl","selector","targetSlideGroup","updateState","shouldSetTrackStyle","updatedState","slides","trackStyle","resize","detectWidth","onResize","onResizeEventListener","onSlideGroupFocus","onSlideGroupBlur","progressiveLazyLoad","totalPostClones","totalPreClones","checkImagesLoad","images","imagesCount","loadedCount","image","prevClickHandler","vSlickCarouselStyle","vSlickCarouselRef","ssrInit","preClones","postClones","trackLeft","childrenWidths","rawSlideGroups","maxWidth","width","o","currentWidth","_slideGroupCount","isMounted","definedProps","newProps","canGoPrev","pageCount","currentGroupsToShow","_","nextPivotIndex","slidesPerGroup","slideGroupsCount","watch","newSettings","oldSettings","newSlots","verticalHeightStyle","centerPaddingStyle","__expose","onMounted","onUpdated","onBeforeUnmount","timer"],"mappings":"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"}