{"version":3,"file":"item.vue2.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\n      v-if=\"type === 'card'\"\n      v-show=\"!data.active\"\n      :class=\"ns.e('mask')\"\n    ></div>\n    <slot></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-ultra/utils'\nimport { useNamespace } from '@element-ultra/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":[],"mappings":";;;;;;AAsCA,MAAM,UAAa,GAAA,IAAA,CAAA;AACnB,gBAAe,eAAgB,CAAA;AAAA,EAC7B,IAAM,EAAA,gBAAA;AAAA,EACN,KAAO,EAAA;AAAA,IACL,IAAM,EAAA,EAAE,IAAM,EAAA,MAAA,EAAQ,SAAS,EAAG,EAAA;AAAA,IAClC,KAAO,EAAA;AAAA,MACL,IAAA,EAAM,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,MACrB,OAAS,EAAA,EAAA;AAAA,KACX;AAAA,GACF;AAAA,EACA,MAAM,KAA2B,EAAA;AAC/B,IAAM,MAAA,EAAA,GAAK,aAAa,UAAU,CAAA,CAAA;AAElC,IAAA,MAAM,WAAW,kBAAmB,EAAA,CAAA;AAGpC,IAAA,MAAM,OAAO,QAAS,CAAA;AAAA,MACpB,KAAO,EAAA,KAAA;AAAA,MACP,SAAW,EAAA,CAAA;AAAA,MACX,KAAO,EAAA,CAAA;AAAA,MACP,MAAQ,EAAA,KAAA;AAAA,MACR,KAAO,EAAA,KAAA;AAAA,MACP,OAAS,EAAA,KAAA;AAAA,MACT,SAAW,EAAA,KAAA;AAAA,KACZ,CAAA,CAAA;AAGD,IAAA,MAAM,mBAA2C,GAAA,MAAA;AAAA,MAC/C,qBAAA;AAAA,KACF,CAAA;AAGA,IAAM,MAAA,eAAA,GAAkB,SAAS,MAAM;AACrC,MAAA,OAAO,mBAAoB,CAAA,SAAA,CAAA;AAAA,KAC5B,CAAA,CAAA;AAED,IAAM,MAAA,SAAA,GAAY,SAAS,MAAM;AAC/B,MAAA,MAAM,aACJ,GAAA,eAAA,CAAgB,KAAU,KAAA,UAAA,GAAa,YAAe,GAAA,YAAA,CAAA;AACxD,MAAA,MAAM,KAAQ,GAAA,CAAA,EAAG,aAAiB,CAAA,CAAA,EAAA,IAAA,CAAK,sBAAsB,IAAK,CAAA,KAAA,CAAA,CAAA,CAAA,CAAA;AAClE,MAAA,MAAM,KAAuB,GAAA;AAAA,QAC3B,SAAW,EAAA,KAAA;AAAA,OACb,CAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAID,IAAS,SAAA,YAAA,CAAa,KAAO,EAAA,WAAA,EAAa,MAAQ,EAAA;AAChD,MAAA,IAAI,WAAgB,KAAA,CAAA,IAAK,KAAU,KAAA,MAAA,GAAS,CAAG,EAAA;AAC7C,QAAO,OAAA,CAAA,CAAA,CAAA;AAAA,OACE,MAAA,IAAA,WAAA,KAAgB,MAAS,GAAA,CAAA,IAAK,UAAU,CAAG,EAAA;AACpD,QAAO,OAAA,MAAA,CAAA;AAAA,iBACE,KAAQ,GAAA,WAAA,GAAc,KAAK,WAAc,GAAA,KAAA,IAAS,SAAS,CAAG,EAAA;AACvE,QAAA,OAAO,MAAS,GAAA,CAAA,CAAA;AAAA,iBACP,KAAQ,GAAA,WAAA,GAAc,KAAK,KAAQ,GAAA,WAAA,IAAe,SAAS,CAAG,EAAA;AACvE,QAAO,OAAA,CAAA,CAAA,CAAA;AAAA,OACT;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAS,SAAA,iBAAA,CAAkB,OAAO,WAAa,EAAA;;AAC7C,MAAA,MAAM,WAAc,GAAA,CAAA,CAAA,EAAA,GAAA,mBAAA,CAAoB,IAAK,CAAA,KAAA,KAAzB,mBAAgC,WAAe,KAAA,CAAA,CAAA;AACnE,MAAA,IAAI,KAAK,OAAS,EAAA;AAChB,QAAA,OACG,WAAgB,IAAA,CAAA,CAAA,GAAI,UAAe,KAAA,KAAA,GAAQ,eAAe,CAAM,CAAA,GAAA,CAAA,CAAA;AAAA,OAErE,MAAA,IAAW,QAAQ,WAAa,EAAA;AAC9B,QAAQ,OAAA,EAAE,CAAI,GAAA,UAAA,CAAA,GAAc,WAAe,GAAA,CAAA,CAAA;AAAA,OACtC,MAAA;AACL,QAAS,OAAA,CAAA,CAAA,GAAI,cAAc,WAAe,GAAA,CAAA,CAAA;AAAA,OAC5C;AAAA,KACF;AAEA,IAAS,SAAA,aAAA,CAAc,KAAO,EAAA,WAAA,EAAa,UAAY,EAAA;;AACrD,MAAM,MAAA,QAAA,GAAA,CACH,UACG,GAAA,CAAA,EAAA,GAAA,mBAAA,CAAoB,IAAK,CAAA,KAAA,KAAzB,IAAgC,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,YAAA,GAAA,CAChC,EAAoB,GAAA,mBAAA,CAAA,IAAA,CAAK,KAAzB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAgC,WAAgB,KAAA,CAAA,CAAA;AACtD,MAAA,OAAO,YAAY,KAAQ,GAAA,WAAA,CAAA,CAAA;AAAA,KAC7B;AAEA,IAAA,MAAM,aAAgB,GAAA,CACpB,KACA,EAAA,WAAA,EACA,QACG,KAAA;AACH,MAAA,MAAM,aAAa,mBAAoB,CAAA,IAAA,CAAA;AACvC,MAAM,MAAA,MAAA,GAAS,mBAAoB,CAAA,KAAA,CAAM,KAAM,CAAA,MAAA,CAAA;AAC/C,MAAI,IAAA,UAAA,KAAe,MAAU,IAAA,QAAA,KAAa,KAAW,CAAA,EAAA;AACnD,QAAK,IAAA,CAAA,SAAA,GAAY,KAAU,KAAA,WAAA,IAAe,KAAU,KAAA,QAAA,CAAA;AAAA,OACtD;AACA,MAAA,IAAI,KAAU,KAAA,WAAA,IAAe,MAAS,GAAA,CAAA,IAAK,oBAAoB,IAAM,EAAA;AACnE,QAAQ,KAAA,GAAA,YAAA,CAAa,KAAO,EAAA,WAAA,EAAa,MAAM,CAAA,CAAA;AAAA,OACjD;AACA,MAAA,IAAI,eAAe,MAAQ,EAAA;AACzB,QAAI,IAAA,eAAA,CAAgB,UAAU,UAAY,EAAA;AACxC,UAAA,SAAA;AAAA,YACE,UAAA;AAAA,YACA,kDAAA;AAAA,WACF,CAAA;AAAA,SACF;AACA,QAAK,IAAA,CAAA,OAAA,GAAU,KAAK,KAAM,CAAA,IAAA,CAAK,IAAI,KAAQ,GAAA,WAAW,CAAC,CAAK,IAAA,CAAA,CAAA;AAC5D,QAAA,IAAA,CAAK,SAAS,KAAU,KAAA,WAAA,CAAA;AACxB,QAAK,IAAA,CAAA,SAAA,GAAY,iBAAkB,CAAA,KAAA,EAAO,WAAW,CAAA,CAAA;AACrD,QAAK,IAAA,CAAA,KAAA,GAAQ,IAAK,CAAA,MAAA,GAAS,CAAI,GAAA,UAAA,CAAA;AAAA,OAC1B,MAAA;AACL,QAAA,IAAA,CAAK,SAAS,KAAU,KAAA,WAAA,CAAA;AACxB,QAAM,MAAA,UAAA,GAAa,gBAAgB,KAAU,KAAA,UAAA,CAAA;AAC7C,QAAA,IAAA,CAAK,SAAY,GAAA,aAAA,CAAc,KAAO,EAAA,WAAA,EAAa,UAAU,CAAA,CAAA;AAAA,OAC/D;AACA,MAAA,IAAA,CAAK,KAAQ,GAAA,IAAA,CAAA;AAAA,KACf,CAAA;AAEA,IAAA,SAAS,eAAkB,GAAA;AACzB,MAAI,IAAA,mBAAA,IAAuB,mBAAoB,CAAA,IAAA,KAAS,MAAQ,EAAA;AAC9D,QAAA,MAAM,KAAQ,GAAA,mBAAA,CAAoB,KAAM,CAAA,KAAA,CACrC,GAAI,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,GAAG,CAAA,CAChB,OAAQ,CAAA,QAAA,CAAS,GAAG,CAAA,CAAA;AACvB,QAAA,mBAAA,CAAoB,cAAc,KAAK,CAAA,CAAA;AAAA,OACzC;AAAA,KACF;AAGA,IAAA,SAAA,CAAU,MAAM;AACd,MAAA,IAAI,oBAAoB,OAAS,EAAA;AAC/B,QAAA,mBAAA,CAAoB,OAAQ,CAAA;AAAA,UAC1B,KAAK,QAAS,CAAA,GAAA;AAAA,UACd,GAAG,KAAA;AAAA,UACH,GAAG,OAAO,IAAI,CAAA;AAAA,UACd,aAAA;AAAA,SACD,CAAA,CAAA;AAAA,OACH;AAAA,KACD,CAAA,CAAA;AAED,IAAA,WAAA,CAAY,MAAM;AAChB,MAAA,IAAI,oBAAoB,UAAY,EAAA;AAClC,QAAoB,mBAAA,CAAA,UAAA,CAAW,SAAS,GAAG,CAAA,CAAA;AAAA,OAC7C;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA;AAAA,MACL,IAAA;AAAA,MACA,SAAA;AAAA,MACA,aAAA;AAAA,MACA,MAAM,mBAAoB,CAAA,IAAA;AAAA,MAC1B,eAAA;AAAA,MACA,EAAA;AAAA,KACF,CAAA;AAAA,GACF;AACF,CAAC,CAAA;;;;"}