UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 17.3 kB
{"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 '@element-plus/utils'\nimport { useOrderedChildren } from '@element-plus/hooks'\nimport { CHANGE_EVENT } from '@element-plus/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: Required<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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"}