{"version":3,"file":"swiper-item.mjs","sources":["../../src/swiper/swiper-item.tsx"],"sourcesContent":["import { defineComponent, computed } from 'vue';\nimport props from './props';\nimport { usePrefixClass } from '../hooks/useConfig';\n\nconst swiperItemProps = {\n  index: {\n    type: Number,\n  },\n  currentIndex: {\n    type: Number,\n  },\n  isSwitching: {\n    type: Boolean,\n    default: false,\n  },\n  getWrapAttribute: {\n    type: Function,\n  },\n  swiperItemLength: {\n    type: Number,\n    default: 0,\n  },\n};\nconst CARD_SCALE = 210 / 332; // 缩放比例\nconst itemWidth = 0.415; // 依据设计稿使用t-swiper__card控制每个swiper的宽度为41.5%\n\nexport default defineComponent({\n  name: 'XSwiperItem',\n  props: {\n    ...props,\n    ...swiperItemProps,\n  },\n  setup(props, { slots }) {\n    const prefix = usePrefixClass();\n    const active = computed(() => props.index === props.currentIndex);\n    const disposeIndex = computed(() => {\n      if (props.type !== 'card') return 0;\n      if (props.currentIndex === 0 && props.index === props.swiperItemLength - 1) {\n        return -1;\n      }\n      if (props.currentIndex === props.swiperItemLength - 1 && props.index === 0) {\n        return props.swiperItemLength;\n      }\n      if (props.index < props.currentIndex - 1 && props.currentIndex - props.index >= props.swiperItemLength / 2) {\n        return props.swiperItemLength + 1;\n      }\n      if (props.index > props.currentIndex + 1 && props.index - props.currentIndex >= props.swiperItemLength / 2) {\n        return -2;\n      }\n      return props.index;\n    });\n    const translateX = computed(() => {\n      if (props.type !== 'card') return 0;\n      const wrapWidth = props.getWrapAttribute('offsetWidth') || 0;\n      const translateIndex = !active.value && props.swiperItemLength > 2 ? disposeIndex.value : props.index;\n      const inStage = Math.abs(translateIndex - props.currentIndex) <= 1;\n      if (inStage) {\n        return (wrapWidth * ((translateIndex - props.currentIndex) * (1 - itemWidth * CARD_SCALE) - itemWidth + 1)) / 2;\n      }\n      if (translateIndex < props.currentIndex) {\n        return (-itemWidth * (1 + CARD_SCALE) * wrapWidth) / 2;\n      }\n      return ((2 + itemWidth * (CARD_SCALE - 1)) * wrapWidth) / 2;\n    });\n    const zIndex = computed(() => {\n      if (props.type !== 'card') return 0;\n      const translateIndex = !active.value && props.swiperItemLength > 2 ? disposeIndex.value : props.index;\n      const isActivity = translateIndex === props.currentIndex;\n      const inStage = Math.round(Math.abs(translateIndex - props.currentIndex)) <= 1;\n      if (isActivity) {\n        return 2;\n      }\n      if (inStage) {\n        return 1;\n      }\n      return 0;\n    });\n    const itemStyle = computed(() => {\n      if (props.animation === 'fade') {\n        return {\n          opacity: active.value ? 1 : 0,\n          transition: props.isSwitching ? `opacity ${props.duration / 1000}s` : '',\n          zIndex: active.value ? 1 : 0,\n        };\n      }\n      if (props.type === 'card') {\n        const translateIndex = !active.value && props.swiperItemLength > 2 ? disposeIndex.value : props.index;\n        const isActivity = translateIndex === props.currentIndex;\n        return {\n          transform: `translateX(${translateX.value}px) scale(${isActivity ? 1 : CARD_SCALE})`,\n          transition: `transform ${props.duration / 1000}s ease`,\n          zIndex: zIndex.value,\n        };\n      }\n      return {};\n    });\n\n    return () => (\n      <div\n        class={[\n          `${prefix.value}-swiper__container__item`,\n          {\n            [`${prefix.value}-swiper__card`]: props.type === 'card',\n            [`${prefix.value}-is-active`]: props.type === 'card' && active.value,\n            [`${prefix.value}-swiper__fade`]: props.animation === 'fade',\n          },\n        ]}\n        style={itemStyle.value}\n      >\n        {slots.default?.({}) || []}\n      </div>\n    );\n  },\n});\n"],"names":["index","type","currentIndex","isSwitching","getWrapAttribute","swiperItemLength","name","setup","props","opacity","transition","zIndex","transform","_createVNode"],"mappings":"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"}