xdesign-vue-next
Version:
XDesign Component for vue-next
1 lines • 8.02 kB
Source Map (JSON)
{"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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"}