{"version":3,"file":"use-carousel.mjs","sources":["../../../../../../../packages/components/carousel/src/use-carousel.ts"],"sourcesContent":["import {\n  computed,\n  getCurrentInstance,\n  isVNode,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  shallowRef,\n  unref,\n  useSlots,\n  watch,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport { useResizeObserver } from '@vueuse/core'\nimport { debugWarn, flattedChildren, isString } from '@hd-front-end/utils'\nimport { useOrderedChildren } from '@hd-front-end/hooks'\nimport { CHANGE_EVENT } from '@hd-front-end/constants'\nimport { CAROUSEL_ITEM_NAME, carouselContextKey } from './constants'\n\nimport type { SetupContext } from 'vue'\nimport type { CarouselItemContext } from './constants'\nimport type { CarouselEmits, CarouselProps } from './carousel'\n\nconst THROTTLE_TIME = 300\n\nexport const useCarousel = (\n  props: CarouselProps,\n  emit: SetupContext<CarouselEmits>['emit'],\n  componentName: string\n) => {\n  const {\n    children: items,\n    addChild: addItem,\n    removeChild: removeItem,\n    ChildrenSorter: ItemsSorter,\n  } = useOrderedChildren<CarouselItemContext>(\n    getCurrentInstance()!,\n    CAROUSEL_ITEM_NAME\n  )\n\n  const slots = useSlots()\n\n  // refs\n  const activeIndex = ref(-1)\n  const timer = ref<ReturnType<typeof setInterval> | null>(null)\n  const hover = ref(false)\n  const root = ref<HTMLDivElement>()\n  const containerHeight = ref<number>(0)\n  const isItemsTwoLength = ref(true)\n\n  // computed\n  const arrowDisplay = computed(\n    () => props.arrow !== 'never' && !unref(isVertical)\n  )\n\n  const hasLabel = computed(() => {\n    return items.value.some((item) => item.props.label.toString().length > 0)\n  })\n\n  const isCardType = computed(() => props.type === 'card')\n  const isVertical = computed(() => props.direction === 'vertical')\n\n  const containerStyle = computed(() => {\n    if (props.height !== 'auto') {\n      return {\n        height: props.height,\n      }\n    }\n    return {\n      height: `${containerHeight.value}px`,\n      overflow: 'hidden',\n    }\n  })\n\n  // methods\n  const throttledArrowClick = throttle(\n    (index: number) => {\n      setActiveItem(index)\n    },\n    THROTTLE_TIME,\n    { trailing: true }\n  )\n\n  const throttledIndicatorHover = throttle((index: number) => {\n    handleIndicatorHover(index)\n  }, THROTTLE_TIME)\n\n  const isTwoLengthShow = (index: number) => {\n    if (!isItemsTwoLength.value) return true\n    return activeIndex.value <= 1 ? index <= 1 : index > 1\n  }\n\n  function pauseTimer() {\n    if (timer.value) {\n      clearInterval(timer.value)\n      timer.value = null\n    }\n  }\n\n  function startTimer() {\n    if (props.interval <= 0 || !props.autoplay || timer.value) return\n    timer.value = setInterval(() => playSlides(), props.interval)\n  }\n\n  const 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\n  function 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(componentName, '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\n  function resetItemPosition(oldIndex?: number) {\n    items.value.forEach((item, index) => {\n      item.translateItem(index, activeIndex.value, oldIndex)\n    })\n  }\n\n  function 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\n  function handleMouseEnter() {\n    hover.value = true\n    if (props.pauseOnHover) {\n      pauseTimer()\n    }\n  }\n\n  function handleMouseLeave() {\n    hover.value = false\n    startTimer()\n  }\n\n  function 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\n  function handleButtonLeave() {\n    if (unref(isVertical)) return\n    items.value.forEach((item) => {\n      item.states.hover = false\n    })\n  }\n\n  function handleIndicatorClick(index: number) {\n    activeIndex.value = index\n  }\n\n  function handleIndicatorHover(index: number) {\n    if (props.trigger === 'hover' && index !== activeIndex.value) {\n      activeIndex.value = index\n    }\n  }\n\n  function prev() {\n    setActiveItem(activeIndex.value - 1)\n  }\n\n  function next() {\n    setActiveItem(activeIndex.value + 1)\n  }\n\n  function resetTimer() {\n    pauseTimer()\n    if (!props.pauseOnHover) startTimer()\n  }\n\n  function setContainerHeight(height: number) {\n    if (props.height !== 'auto') return\n    containerHeight.value = height\n  }\n\n  function PlaceholderItem() {\n    // fix: https://github.com/element-plus/element-plus/issues/12139\n    const defaultSlots = slots.default?.()\n    if (!defaultSlots) return null\n\n    const flatSlots = flattedChildren(defaultSlots)\n\n    const normalizeSlots = flatSlots.filter((slot) => {\n      return isVNode(slot) && (slot.type as any).name === CAROUSEL_ITEM_NAME\n    })\n\n    if (normalizeSlots?.length === 2 && props.loop && !isCardType.value) {\n      isItemsTwoLength.value = true\n      return normalizeSlots\n    }\n    isItemsTwoLength.value = false\n    return null\n  }\n\n  // watch\n  watch(\n    () => activeIndex.value,\n    (current, prev) => {\n      resetItemPosition(prev)\n      if (isItemsTwoLength.value) {\n        current = current % 2\n        prev = prev % 2\n      }\n      if (prev > -1) {\n        emit(CHANGE_EVENT, current, prev)\n      }\n    }\n  )\n\n  const exposeActiveIndex = computed({\n    get: () => {\n      return isItemsTwoLength.value ? activeIndex.value % 2 : activeIndex.value\n    },\n    set: (value) => (activeIndex.value = value),\n  })\n\n  watch(\n    () => props.autoplay,\n    (autoplay) => {\n      autoplay ? startTimer() : pauseTimer()\n    }\n  )\n  watch(\n    () => props.loop,\n    () => {\n      setActiveItem(activeIndex.value)\n    }\n  )\n\n  watch(\n    () => props.interval,\n    () => {\n      resetTimer()\n    }\n  )\n\n  const resizeObserver = shallowRef<ReturnType<typeof useResizeObserver>>()\n  // lifecycle\n  onMounted(() => {\n    watch(\n      () => items.value,\n      () => {\n        if (items.value.length > 0) setActiveItem(props.initialIndex)\n      },\n      {\n        immediate: true,\n      }\n    )\n\n    resizeObserver.value = useResizeObserver(root.value, () => {\n      resetItemPosition()\n    })\n    startTimer()\n  })\n\n  onBeforeUnmount(() => {\n    pauseTimer()\n    if (root.value && resizeObserver.value) resizeObserver.value.stop()\n  })\n\n  // provide\n  provide(carouselContextKey, {\n    root,\n    isCardType,\n    isVertical,\n    items,\n    loop: props.loop,\n    cardScale: props.cardScale,\n    addItem,\n    removeItem,\n    setActiveItem,\n    setContainerHeight,\n  })\n\n  return {\n    root,\n    activeIndex,\n    exposeActiveIndex,\n    arrowDisplay,\n    hasLabel,\n    hover,\n    isCardType,\n    items,\n    isVertical,\n    containerStyle,\n    isItemsTwoLength,\n    handleButtonEnter,\n    handleButtonLeave,\n    handleIndicatorClick,\n    handleMouseEnter,\n    handleMouseLeave,\n    setActiveItem,\n    prev,\n    next,\n    PlaceholderItem,\n    isTwoLengthShow,\n    ItemsSorter,\n    throttledArrowClick,\n    throttledIndicatorHover,\n  }\n}\n"],"names":["prev"],"mappings":"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"}