{"version":3,"file":"carousel2.mjs","sources":["../../../../../../packages/components/carousel/src/carousel.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"root\"\n    :class=\"carouselClasses\"\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          <ElIcon>\n            <ArrowLeft />\n          </ElIcon>\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          <ElIcon>\n            <ArrowRight />\n          </ElIcon>\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', 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  nextTick,\n  onBeforeUnmount,\n  onMounted,\n  provide,\n  ref,\n  shallowRef,\n  unref,\n  watch,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport { useResizeObserver } from '@vueuse/core'\nimport { debugWarn, isString } from '@element-plus/utils'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowLeft, ArrowRight } from '@element-plus/icons-vue'\nimport { useNamespace } from '@element-plus/hooks'\nimport { carouselContextKey } from '@element-plus/tokens'\nimport { carouselEmits, carouselProps } from './carousel'\nimport type { CarouselItemContext } from '@element-plus/tokens'\n\ndefineOptions({\n  name: 'ElCarousel',\n})\n\nconst props = defineProps(carouselProps)\nconst emit = defineEmits(carouselEmits)\nconst ns = useNamespace('carousel')\nconst COMPONENT_NAME = 'ElCarousel'\nconst THROTTLE_TIME = 300\n\n// refs\nconst activeIndex = ref(-1)\nconst timer = ref<ReturnType<typeof setInterval> | null>(null)\nconst hover = ref(false)\nconst root = ref<HTMLDivElement>()\nconst items = ref<Array<CarouselItemContext>>([])\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 = [ns.b(), ns.m(props.direction)]\n  if (unref(isCardType)) {\n    classes.push(ns.m('card'))\n  }\n  return classes\n})\n\nconst indicatorsClasses = computed(() => {\n  const classes = [ns.e('indicators'), ns.em('indicators', props.direction)]\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')\nconst isVertical = computed(() => props.direction === 'vertical')\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}\n\nfunction resetItemPosition(oldIndex?: number) {\n  items.value.forEach((item, index) => {\n    item.translateItem(index, activeIndex.value, oldIndex)\n  })\n}\n\nfunction addItem(item: CarouselItemContext) {\n  items.value.push(item)\n}\n\nfunction removeItem(uid?: number) {\n  const index = items.value.findIndex((item) => item.uid === uid)\n  if (index !== -1) {\n    items.value.splice(index, 1)\n    if (activeIndex.value === index) next()\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\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)\nwatch(\n  () => props.loop,\n  () => {\n    setActiveItem(activeIndex.value)\n  }\n)\n\nconst resizeObserver = shallowRef<ReturnType<typeof useResizeObserver>>()\n// lifecycle\nonMounted(async () => {\n  await nextTick()\n\n  resizeObserver.value = useResizeObserver(root.value, () => {\n    resetItemPosition()\n  })\n  if (props.initialIndex < items.value.length && props.initialIndex >= 0) {\n    activeIndex.value = props.initialIndex\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":[],"mappings":"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"}