{"version":3,"file":"main.vue2.mjs","sources":["../../../../../packages/components/carousel/src/main.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' || data.hover) &&\n            (props.loop || data.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(data.activeIndex - 1)\"\n        >\n          <el-icon>\n            <arrow-left />\n          </el-icon>\n        </button>\n      </transition>\n      <transition v-if=\"arrowDisplay\" name=\"carousel-arrow-right\">\n        <button\n          v-show=\"\n            (arrow === 'always' || data.hover) &&\n            (props.loop || data.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(data.activeIndex + 1)\"\n        >\n          <el-icon>\n            <arrow-right />\n          </el-icon>\n        </button>\n      </transition>\n      <slot></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 === data.activeIndex),\n        ]\"\n        @mouseenter=\"throttledIndicatorHover(index)\"\n        @click.stop=\"handleIndicatorClick(index)\"\n      >\n        <button :class=\"ns.e('button')\">\n          <span v-if=\"hasLabel\">{{ item.label }}</span>\n        </button>\n      </li>\n    </ul>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  reactive,\n  computed,\n  ref,\n  provide,\n  onMounted,\n  onBeforeUnmount,\n  watch,\n  nextTick,\n} from 'vue'\nimport { throttle } from 'lodash-unified'\nimport {\n  addResizeListener,\n  removeResizeListener,\n  debugWarn,\n} from '@element-ultra/utils'\nimport { ElIcon } from '@element-ultra/components/icon'\nimport { ArrowLeft, ArrowRight } from 'icon-ultra'\nimport { useNamespace } from '@element-ultra/hooks'\n\nimport type {\n  ICarouselProps,\n  CarouselItem,\n  InjectCarouselScope,\n} from './carousel'\n\nexport default defineComponent({\n  name: 'ElCarousel',\n  components: {\n    ElIcon,\n    ArrowLeft,\n    ArrowRight,\n  },\n  props: {\n    initialIndex: {\n      type: Number,\n      default: 0,\n    },\n    height: { type: String, default: '' },\n    trigger: {\n      type: String,\n      default: 'hover',\n    },\n    autoplay: {\n      type: Boolean,\n      default: true,\n    },\n    interval: {\n      type: Number,\n      default: 3000,\n    },\n    indicatorPosition: { type: String, default: '' },\n    indicator: {\n      type: Boolean,\n      default: true,\n    },\n    arrow: {\n      type: String,\n      default: 'hover',\n    },\n    type: { type: String, default: '' },\n    loop: {\n      type: Boolean,\n      default: true,\n    },\n    direction: {\n      type: String,\n      default: 'horizontal',\n      validator(val: string) {\n        return ['horizontal', 'vertical'].includes(val)\n      },\n    },\n    pauseOnHover: {\n      type: Boolean,\n      default: true,\n    },\n  },\n  emits: ['change'],\n  setup(props: ICarouselProps, { emit }) {\n    const ns = useNamespace('carousel')\n    // data\n    const data = reactive<{\n      activeIndex: number\n      containerWidth: number\n      timer: null | ReturnType<typeof setInterval>\n      hover: boolean\n    }>({\n      activeIndex: -1,\n      containerWidth: 0,\n      timer: null,\n      hover: false,\n    })\n\n    // refs\n    const root = ref(null)\n    const items = ref<CarouselItem[]>([])\n\n    // computed\n    const arrowDisplay = computed(\n      () => props.arrow !== 'never' && props.direction !== 'vertical'\n    )\n\n    const hasLabel = computed(() => {\n      return items.value.some((item) => item.label.toString().length > 0)\n    })\n\n    const carouselClasses = computed(() => {\n      const classes = [ns.b(), ns.m(props.direction)]\n      if (props.type === 'card') {\n        classes.push(ns.m('card'))\n      }\n      return classes\n    })\n\n    const 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' || props.type === 'card') {\n        classes.push(ns.em('indicators', 'outside'))\n      }\n      return classes\n    })\n\n    // methods\n    const throttledArrowClick = throttle(\n      (index) => {\n        setActiveItem(index)\n      },\n      300,\n      { trailing: true }\n    )\n\n    const throttledIndicatorHover = throttle((index) => {\n      handleIndicatorHover(index)\n    }, 300)\n\n    function pauseTimer() {\n      if (data.timer) {\n        clearInterval(data.timer)\n        data.timer = null\n      }\n    }\n\n    function startTimer() {\n      if (props.interval <= 0 || !props.autoplay || data.timer) return\n      data.timer = setInterval(() => playSlides(), props.interval)\n    }\n\n    const playSlides = () => {\n      if (data.activeIndex < items.value.length - 1) {\n        data.activeIndex = data.activeIndex + 1\n      } else if (props.loop) {\n        data.activeIndex = 0\n      }\n    }\n\n    function setActiveItem(index: number | string) {\n      if (typeof index === 'string') {\n        const filteredItems = items.value.filter((item) => item.name === index)\n        if (filteredItems.length > 0) {\n          index = items.value.indexOf(filteredItems[0])\n        }\n      }\n      index = Number(index)\n      if (isNaN(index) || index !== Math.floor(index)) {\n        debugWarn('Carousel', 'index must be an integer.')\n        return\n      }\n      const length = items.value.length\n      const oldIndex = data.activeIndex\n      if (index < 0) {\n        data.activeIndex = props.loop ? length - 1 : 0\n      } else if (index >= length) {\n        data.activeIndex = props.loop ? 0 : length - 1\n      } else {\n        data.activeIndex = index\n      }\n      if (oldIndex === data.activeIndex) {\n        resetItemPosition(oldIndex)\n      }\n    }\n\n    function resetItemPosition(oldIndex: number) {\n      items.value.forEach((item, index) => {\n        item.translateItem(index, data.activeIndex, oldIndex)\n      })\n    }\n\n    function addItem(item) {\n      items.value.push(item)\n    }\n\n    function 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 (data.activeIndex === index) next()\n      }\n    }\n\n    function itemInStage(item, index) {\n      const length = items.value.length\n      if (\n        (index === length - 1 && item.inStage && items.value[0].active) ||\n        (item.inStage &&\n          items.value[index + 1] &&\n          items.value[index + 1].active)\n      ) {\n        return 'left'\n      } else if (\n        (index === 0 && item.inStage && items.value[length - 1].active) ||\n        (item.inStage &&\n          items.value[index - 1] &&\n          items.value[index - 1].active)\n      ) {\n        return 'right'\n      }\n      return false\n    }\n\n    function handleMouseEnter() {\n      data.hover = true\n      if (props.pauseOnHover) {\n        pauseTimer()\n      }\n    }\n\n    function handleMouseLeave() {\n      data.hover = false\n      startTimer()\n    }\n\n    function handleButtonEnter(arrow) {\n      if (props.direction === 'vertical') return\n      items.value.forEach((item, index) => {\n        if (arrow === itemInStage(item, index)) {\n          item.hover = true\n        }\n      })\n    }\n\n    function handleButtonLeave() {\n      if (props.direction === 'vertical') return\n      items.value.forEach((item) => {\n        item.hover = false\n      })\n    }\n\n    function handleIndicatorClick(index) {\n      data.activeIndex = index\n    }\n\n    function handleIndicatorHover(index) {\n      if (props.trigger === 'hover' && index !== data.activeIndex) {\n        data.activeIndex = index\n      }\n    }\n\n    function prev() {\n      setActiveItem(data.activeIndex - 1)\n    }\n\n    function next() {\n      setActiveItem(data.activeIndex + 1)\n    }\n\n    // watch\n    watch(\n      () => data.activeIndex,\n      (current, prev) => {\n        resetItemPosition(prev)\n        if (prev > -1) {\n          emit('change', current, prev)\n        }\n      }\n    )\n    watch(\n      () => props.autoplay,\n      (current) => {\n        current ? startTimer() : pauseTimer()\n      }\n    )\n    watch(\n      () => props.loop,\n      () => {\n        setActiveItem(data.activeIndex)\n      }\n    )\n\n    // lifecycle\n    onMounted(() => {\n      nextTick(() => {\n        addResizeListener(root.value, resetItemPosition)\n        if (\n          props.initialIndex < items.value.length &&\n          props.initialIndex >= 0\n        ) {\n          data.activeIndex = props.initialIndex\n        }\n        startTimer()\n      })\n    })\n\n    onBeforeUnmount(() => {\n      if (root.value) removeResizeListener(root.value, resetItemPosition)\n      pauseTimer()\n    })\n\n    // provide\n    provide<InjectCarouselScope>('injectCarouselScope', {\n      root,\n      direction: props.direction,\n      type: props.type,\n      items,\n      loop: props.loop,\n      addItem,\n      removeItem,\n      setActiveItem,\n    })\n\n    return {\n      data,\n      props,\n      items,\n\n      arrowDisplay,\n      carouselClasses,\n      indicatorsClasses,\n      hasLabel,\n\n      handleMouseEnter,\n      handleMouseLeave,\n      handleIndicatorClick,\n      throttledArrowClick,\n      throttledIndicatorHover,\n      handleButtonEnter,\n      handleButtonLeave,\n\n      prev,\n      next,\n      setActiveItem,\n\n      root,\n      ns,\n    }\n  },\n})\n</script>\n"],"names":["prev"],"mappings":"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"}