{"version":3,"file":"carousel2.mjs","sources":["../../../../../../packages/components/carousel/src/carousel.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"root\"\n    :class=\"carouselClasses\"\n    data-test-name=\"carousel\"\n    data-test-variant=\"\"\n    data-test-state=\"\"\n    @mouseenter.stop=\"handleMouseEnter\"\n    @mouseleave.stop=\"handleMouseLeave\"\n  >\n    <div :class=\"ns.e('container')\" :style=\"{ height: height }\">\n      <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-left\">\n        <button\n          v-show=\"\n            (arrow === 'always' || hover) && (props.loop || activeIndex > 0)\n          \"\n          type=\"button\"\n          :class=\"[ns.e('arrow'), ns.em('arrow', 'left')]\"\n          @mouseenter=\"handleButtonEnter('left')\"\n          @mouseleave=\"handleButtonLeave\"\n          @click.stop=\"throttledArrowClick(activeIndex - 1)\"\n        >\n          <BIcon>\n            <ChevronLeft />\n          </BIcon>\n        </button>\n      </transition>\n      <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n        <button\n          v-show=\"\n            (arrow === 'always' || hover) &&\n            (props.loop || activeIndex < items.length - 1)\n          \"\n          type=\"button\"\n          :class=\"[ns.e('arrow'), ns.em('arrow', 'right')]\"\n          @mouseenter=\"handleButtonEnter('right')\"\n          @mouseleave=\"handleButtonLeave\"\n          @click.stop=\"throttledArrowClick(activeIndex + 1)\"\n        >\n          <BIcon>\n            <ChevronRight />\n          </BIcon>\n        </button>\n      </transition>\n      <slot />\n    </div>\n    <ul v-if=\"indicatorPosition !== 'none'\" :class=\"indicatorsClasses\">\n      <li\n        v-for=\"(item, index) in items\"\n        :key=\"index\"\n        :class=\"[\n          ns.e('indicator'),\n          ns.em('indicator', (vertical && 'vertical') || direction),\n          ns.is('active', index === activeIndex),\n        ]\"\n        @mouseenter=\"throttledIndicatorHover(index)\"\n        @click.stop=\"handleIndicatorClick(index)\"\n      >\n        <button :class=\"ns.e('button')\">\n          <span v-if=\"hasLabel\">{{ item.props.label }}</span>\n        </button>\n      </li>\n    </ul>\n  </div>\n</template>\n\n<script lang=\"ts\" setup>\nimport {\n  computed,\n  getCurrentInstance,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  shallowRef,\n  unref,\n  watch,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport { useResizeObserver, useSwipe } from '@vueuse/core'\nimport { debugWarn, isString } from '@bigin/utils'\nimport { BIcon } from '@bigin/components/icon'\nimport { ChevronLeft, ChevronRight } from '@bigin/icons-vue'\nimport { useNamespace, useOrderedChildren } from '@bigin/hooks'\nimport { carouselContextKey } from '@bigin/tokens'\nimport { carouselEmits, carouselProps } from './carousel'\nimport type { CarouselItemContext } from '@bigin/tokens'\n\ndefineOptions({\n  name: 'BCarousel',\n})\n\nconst props = defineProps(carouselProps)\nconst emit = defineEmits(carouselEmits)\nconst ns = useNamespace('carousel')\nconst COMPONENT_NAME = 'BCarousel'\nconst THROTTLE_TIME = 300\n\nconst {\n  children: items,\n  addChild: addItem,\n  removeChild: removeItem,\n} = useOrderedChildren<CarouselItemContext>(\n  getCurrentInstance()!,\n  'BCarouselItem'\n)\n\n// refs\nconst activeIndex = ref(-1)\nconst timer = ref<ReturnType<typeof setInterval> | null>(null)\nconst hover = ref(false)\nconst root = ref<HTMLDivElement>()\nconst { direction: swipeDirection, isSwiping } = useSwipe(root)\n\n// computed\nconst arrowDisplay = computed(\n  () => props.arrow !== 'never' && !unref(isVertical)\n)\n\nconst hasLabel = computed(() => {\n  return items.value.some((item) => item.props.label.toString().length > 0)\n})\n\nconst carouselClasses = computed(() => {\n  const classes = [\n    ns.b(),\n    ns.m((props.vertical && 'vertical') || props.direction),\n  ]\n  if (unref(isCardType)) {\n    classes.push(ns.m('card'))\n  }\n  return classes\n})\n\nconst indicatorsClasses = computed(() => {\n  const classes = [\n    ns.e('indicators'),\n    ns.em('indicators', (props.vertical && 'vertical') || props.direction),\n  ]\n  if (hasLabel.value) {\n    classes.push(ns.em('indicators', 'labels'))\n  }\n  if (props.indicatorPosition === 'outside' || unref(isCardType)) {\n    classes.push(ns.em('indicators', 'outside'))\n  }\n  return classes\n})\n\nconst isCardType = computed(() => props.type === 'card' || props.card)\nconst isVertical = computed(\n  () => props.direction === 'vertical' || props.vertical\n)\n\n// methods\nconst throttledArrowClick = throttle(\n  (index: number) => {\n    setActiveItem(index)\n  },\n  THROTTLE_TIME,\n  { trailing: true }\n)\n\nconst throttledIndicatorHover = throttle((index: number) => {\n  handleIndicatorHover(index)\n}, THROTTLE_TIME)\n\nfunction pauseTimer() {\n  if (timer.value) {\n    clearInterval(timer.value)\n    timer.value = null\n  }\n}\n\nfunction startTimer() {\n  if (props.interval <= 0 || !props.autoplay || timer.value) return\n  timer.value = setInterval(() => playSlides(), props.interval)\n}\n\nconst playSlides = () => {\n  if (activeIndex.value < items.value.length - 1) {\n    activeIndex.value = activeIndex.value + 1\n  } else if (props.loop) {\n    activeIndex.value = 0\n  }\n}\n\nfunction setActiveItem(index: number | string) {\n  if (isString(index)) {\n    const filteredItems = items.value.filter(\n      (item) => item.props.name === index\n    )\n    if (filteredItems.length > 0) {\n      index = items.value.indexOf(filteredItems[0])\n    }\n  }\n  index = Number(index)\n  if (Number.isNaN(index) || index !== Math.floor(index)) {\n    debugWarn(COMPONENT_NAME, 'index must be integer.')\n    return\n  }\n  const itemCount = items.value.length\n  const oldIndex = activeIndex.value\n  if (index < 0) {\n    activeIndex.value = props.loop ? itemCount - 1 : 0\n  } else if (index >= itemCount) {\n    activeIndex.value = props.loop ? 0 : itemCount - 1\n  } else {\n    activeIndex.value = index\n  }\n  if (oldIndex === activeIndex.value) {\n    resetItemPosition(oldIndex)\n  }\n  resetTimer()\n}\n\nfunction resetItemPosition(oldIndex?: number) {\n  items.value.forEach((item, index) => {\n    item.translateItem(index, activeIndex.value, oldIndex)\n  })\n}\n\nfunction itemInStage(item: CarouselItemContext, index: number) {\n  const _items = unref(items)\n  const itemCount = _items.length\n  if (itemCount === 0 || !item.states.inStage) return false\n  const nextItemIndex = index + 1\n  const prevItemIndex = index - 1\n  const lastItemIndex = itemCount - 1\n  const isLastItemActive = _items[lastItemIndex].states.active\n  const isFirstItemActive = _items[0].states.active\n  const isNextItemActive = _items[nextItemIndex]?.states?.active\n  const isPrevItemActive = _items[prevItemIndex]?.states?.active\n\n  if ((index === lastItemIndex && isFirstItemActive) || isNextItemActive) {\n    return 'left'\n  } else if ((index === 0 && isLastItemActive) || isPrevItemActive) {\n    return 'right'\n  }\n  return false\n}\n\nfunction handleMouseEnter() {\n  hover.value = true\n  if (props.pauseOnHover) {\n    pauseTimer()\n  }\n}\n\nfunction handleMouseLeave() {\n  hover.value = false\n  startTimer()\n}\n\nfunction handleButtonEnter(arrow: 'left' | 'right') {\n  if (unref(isVertical)) return\n  items.value.forEach((item, index) => {\n    if (arrow === itemInStage(item, index)) {\n      item.states.hover = true\n    }\n  })\n}\n\nfunction handleButtonLeave() {\n  if (unref(isVertical)) return\n  items.value.forEach((item) => {\n    item.states.hover = false\n  })\n}\n\nfunction handleIndicatorClick(index: number) {\n  activeIndex.value = index\n}\n\nfunction handleIndicatorHover(index: number) {\n  if (props.trigger === 'hover' && index !== activeIndex.value) {\n    activeIndex.value = index\n  }\n}\n\nfunction prev() {\n  setActiveItem(activeIndex.value - 1)\n}\n\nfunction next() {\n  setActiveItem(activeIndex.value + 1)\n}\n\nfunction resetTimer() {\n  pauseTimer()\n  startTimer()\n}\n\n// watch\nwatch(\n  () => activeIndex.value,\n  (current, prev) => {\n    resetItemPosition(prev)\n    if (prev > -1) {\n      emit('change', current, prev)\n    }\n  }\n)\nwatch(\n  () => props.autoplay,\n  (autoplay) => {\n    autoplay ? startTimer() : pauseTimer()\n  }\n)\n\nwatch(\n  () => props.loop,\n  () => {\n    setActiveItem(activeIndex.value)\n  }\n)\n\nwatch(\n  () => props.interval,\n  () => {\n    resetTimer()\n  }\n)\n\nwatch(\n  () => items.value,\n  () => {\n    if (items.value.length > 0) setActiveItem(props.initialIndex)\n  }\n)\n\nwatch(\n  () => isSwiping.value,\n  (isSwiping) => {\n    isSwiping ? pauseTimer() : resetTimer()\n  }\n)\n\nwatch(\n  () => swipeDirection.value,\n  (direction) => {\n    if (direction === 'LEFT') next()\n    if (direction === 'RIGHT') prev()\n  }\n)\n\nconst resizeObserver = shallowRef<ReturnType<typeof useResizeObserver>>()\n// lifecycle\nonMounted(() => {\n  resizeObserver.value = useResizeObserver(root.value, () => {\n    resetItemPosition()\n  })\n  startTimer()\n})\n\nonBeforeUnmount(() => {\n  pauseTimer()\n  if (root.value && resizeObserver.value) resizeObserver.value.stop()\n})\n\n// provide\nprovide(carouselContextKey, {\n  root,\n  isCardType,\n  isVertical,\n  items,\n  loop: props.loop,\n  addItem,\n  removeItem,\n  setActiveItem,\n})\n\ndefineExpose({\n  /** @description manually switch slide */\n  setActiveItem,\n  /** @description switch to the previous slide */\n  prev,\n  /** @description switch to the next slide */\n  next,\n})\n</script>\n"],"names":["prev","isSwiping"],"mappings":"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"}