{"version":3,"file":"item.mjs","sources":["../../../../../../packages/components/carousel/src/item.vue"],"sourcesContent":["<template>\n  <div\n    v-show=\"data.ready\"\n    :class=\"[\n      ns.e('item'),\n      ns.is('active', data.active),\n      ns.is('in-stage', data.inStage),\n      ns.is('hover', data.hover),\n      ns.is('animating', data.animating),\n      { [ns.em('item', 'card')]: type === 'card' },\n    ]\"\n    :style=\"itemStyle\"\n    @click=\"handleItemClick\"\n  >\n    <div v-if=\"type === 'card'\" v-show=\"!data.active\" :class=\"ns.e('mask')\" />\n    <slot />\n  </div>\n</template>\n<script lang=\"ts\">\nimport {\n  defineComponent,\n  reactive,\n  onMounted,\n  inject,\n  computed,\n  toRefs,\n  getCurrentInstance,\n  onUnmounted,\n} from 'vue'\nimport { debugWarn } from '@element-plus/utils'\nimport { useNamespace } from '@element-plus/hooks'\nimport type { CSSProperties } from 'vue'\nimport type { InjectCarouselScope, ICarouselItemProps } from './carousel'\n\nconst CARD_SCALE = 0.83\nexport default defineComponent({\n  name: 'ElCarouselItem',\n  props: {\n    name: { type: String, default: '' },\n    label: {\n      type: [String, Number],\n      default: '',\n    },\n  },\n  setup(props: ICarouselItemProps) {\n    const ns = useNamespace('carousel')\n    // instance\n    const instance = getCurrentInstance()\n\n    // data\n    const data = reactive({\n      hover: false,\n      translate: 0,\n      scale: 1,\n      active: false,\n      ready: false,\n      inStage: false,\n      animating: false,\n    })\n\n    // inject\n    const injectCarouselScope: InjectCarouselScope = inject(\n      'injectCarouselScope'\n    )\n\n    // computed\n    const parentDirection = computed(() => {\n      return injectCarouselScope.direction\n    })\n\n    const itemStyle = computed(() => {\n      const translateType =\n        parentDirection.value === 'vertical' ? 'translateY' : 'translateX'\n      const value = `${translateType}(${data.translate}px) scale(${data.scale})`\n      const style: CSSProperties = {\n        transform: value,\n      }\n      return style\n    })\n\n    // methods\n\n    function processIndex(index, activeIndex, length) {\n      if (activeIndex === 0 && index === length - 1) {\n        return -1\n      } else if (activeIndex === length - 1 && index === 0) {\n        return length\n      } else if (index < activeIndex - 1 && activeIndex - index >= length / 2) {\n        return length + 1\n      } else if (index > activeIndex + 1 && index - activeIndex >= length / 2) {\n        return -2\n      }\n      return index\n    }\n\n    function calcCardTranslate(index, activeIndex) {\n      const parentWidth = injectCarouselScope.root.value?.offsetWidth || 0\n      if (data.inStage) {\n        return (\n          (parentWidth * ((2 - CARD_SCALE) * (index - activeIndex) + 1)) / 4\n        )\n      } else if (index < activeIndex) {\n        return (-(1 + CARD_SCALE) * parentWidth) / 4\n      } else {\n        return ((3 + CARD_SCALE) * parentWidth) / 4\n      }\n    }\n\n    function calcTranslate(index, activeIndex, isVertical) {\n      const distance =\n        (isVertical\n          ? injectCarouselScope.root.value?.offsetHeight\n          : injectCarouselScope.root.value?.offsetWidth) || 0\n      return distance * (index - activeIndex)\n    }\n\n    const translateItem = (\n      index: number,\n      activeIndex: number,\n      oldIndex: number\n    ) => {\n      const parentType = injectCarouselScope.type\n      const length = injectCarouselScope.items.value.length\n      if (parentType !== 'card' && oldIndex !== undefined) {\n        data.animating = index === activeIndex || index === oldIndex\n      }\n      if (index !== activeIndex && length > 2 && injectCarouselScope.loop) {\n        index = processIndex(index, activeIndex, length)\n      }\n      if (parentType === 'card') {\n        if (parentDirection.value === 'vertical') {\n          debugWarn(\n            'Carousel',\n            'vertical direction is not supported in card mode'\n          )\n        }\n        data.inStage = Math.round(Math.abs(index - activeIndex)) <= 1\n        data.active = index === activeIndex\n        data.translate = calcCardTranslate(index, activeIndex)\n        data.scale = data.active ? 1 : CARD_SCALE\n      } else {\n        data.active = index === activeIndex\n        const isVertical = parentDirection.value === 'vertical'\n        data.translate = calcTranslate(index, activeIndex, isVertical)\n      }\n      data.ready = true\n    }\n\n    function handleItemClick() {\n      if (injectCarouselScope && injectCarouselScope.type === 'card') {\n        const index = injectCarouselScope.items.value\n          .map((d) => d.uid)\n          .indexOf(instance.uid)\n        injectCarouselScope.setActiveItem(index)\n      }\n    }\n\n    // lifecycle\n    onMounted(() => {\n      if (injectCarouselScope.addItem) {\n        injectCarouselScope.addItem({\n          uid: instance.uid,\n          ...props,\n          ...toRefs(data),\n          translateItem,\n        })\n      }\n    })\n\n    onUnmounted(() => {\n      if (injectCarouselScope.removeItem) {\n        injectCarouselScope.removeItem(instance.uid)\n      }\n    })\n\n    return {\n      data,\n      itemStyle,\n      translateItem,\n      type: injectCarouselScope.type,\n      handleItemClick,\n      ns,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_withDirectives","_vShow","_createCommentVNode"],"mappings":"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"}