{"version":3,"file":"swiper.mjs","sources":["../../../components/swiper/swiper.tsx"],"sourcesContent":["import { cloneVNode, computed, defineComponent, isVNode, onMounted, ref, watch } from 'vue';\nimport { ChevronLeftIcon as TdChevronLeftIcon, ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-vue-next';\n\nimport {\n  useChildComponentSlots,\n  useGlobalIcon,\n  usePrefixClass,\n  useResizeObserver,\n  useTNodeJSX,\n} from '@tdesign/shared-hooks';\nimport props from './props';\nimport TSwiperItem from './swiper-item';\n\nimport type { SwiperChangeSource, SwiperNavigation } from './type';\n\nconst defaultNavigation: SwiperNavigation = {\n  placement: 'inside',\n  showSlideBtn: 'always',\n  size: 'medium',\n  type: 'bars',\n};\n\nexport default defineComponent({\n  name: 'TSwiper',\n  props,\n  emits: ['update:current'],\n  setup(props, { emit }) {\n    const prefix = usePrefixClass();\n    const renderTNodeJSX = useTNodeJSX();\n\n    const { ChevronLeftIcon, ChevronRightIcon } = useGlobalIcon({\n      ChevronLeftIcon: TdChevronLeftIcon,\n      ChevronRightIcon: TdChevronRightIcon,\n    });\n    let swiperTimer: ReturnType<typeof setTimeout> | null = null;\n    let swiperSwitchingTimer = 0;\n    let isBeginToEnd = false;\n    let isEndToBegin = false;\n\n    const currentIndex = ref(props.current || props.defaultCurrent);\n    const navActiveIndex = ref(props.current || props.defaultCurrent);\n    const isHovering = ref(false);\n    const isSwitching = ref(false);\n    const showArrow = ref(false);\n    const swiperWrap = ref<HTMLElement>();\n    const swiperOffset = ref({ width: 0, height: 0 });\n    const swiperItemLength = ref(0);\n\n    const getChildComponentByName = useChildComponentSlots();\n\n    const navigationConfig = computed(() => {\n      return {\n        ...defaultNavigation,\n        ...(isVNode(props.navigation) ? {} : (props.navigation as object)),\n      };\n    });\n    const isEnd = computed(() => {\n      if (props.type === 'card') {\n        return !props.loop && currentIndex.value + 1 >= swiperItemLength.value;\n      }\n      return !props.loop && currentIndex.value + 2 >= swiperItemLength.value;\n    });\n    const propsToUpdateSetTimer = computed(() => {\n      return [props.autoplay, currentIndex.value, props.duration, props.interval];\n    });\n    const swiperWrapClass = computed(() => {\n      return {\n        [`${prefix.value}-swiper__wrap`]: true,\n        [`${prefix.value}-swiper--inside`]: navigationConfig.value.placement === 'inside',\n        [`${prefix.value}-swiper--outside`]: navigationConfig.value.placement === 'outside',\n        [`${prefix.value}-swiper--vertical`]: props.direction === 'vertical',\n        [`${prefix.value}-swiper--large`]: navigationConfig.value.size === 'large',\n        [`${prefix.value}-swiper--small`]: navigationConfig.value.size === 'small',\n      };\n    });\n    const containerStyle = computed(() => {\n      const offsetHeight = props.height ? `${props.height}px` : `${swiperOffset.value.height}px`;\n      if (props.type === 'card' || props.animation === 'fade') {\n        return {\n          height: offsetHeight,\n        };\n      }\n      if (props.animation === 'slide') {\n        const style: Record<string, number | string> = {\n          transition: isSwitching.value ? `transform ${props.duration / 1000}s ease` : '',\n        };\n        let active = currentIndex.value;\n        if (swiperItemLength.value > 1) {\n          active += 1;\n          if (isBeginToEnd || isEndToBegin) {\n            style.transition = '';\n          }\n        }\n        if (props.direction === 'vertical') {\n          style.height = offsetHeight;\n          style.transform = `translate3d(0, -${active * 100}%, 0px)`;\n        } else {\n          style.transform = `translate3d(-${active * 100}%, 0px, 0px)`;\n        }\n        ['msTransform', 'WebkitTransform'].forEach((key) => {\n          style[key] = style.transform;\n        });\n        return style;\n      }\n      return {};\n    });\n    const swiperItems = () => {\n      const swiperItemList = getChildComponentByName('SwiperItem');\n      swiperItemLength.value = swiperItemList.length;\n      const items = swiperItemList.map((swiperItem: any, index) => {\n        const p = { ...props, ...swiperItem.props };\n        return (\n          <TSwiperItem\n            index={index}\n            currentIndex={currentIndex.value}\n            isSwitching={isSwitching.value}\n            swiperWidth={swiperOffset.value.width}\n            swiperItemLength={swiperItemLength.value}\n            {...p}\n          >\n            {swiperItem.children.default()}\n          </TSwiperItem>\n        );\n      });\n      if (props.animation === 'slide' && items.length > 1) {\n        const first = cloneVNode(items[0], {\n          key: `swiper-item-append-${0}`,\n        });\n        const last = cloneVNode(items[items.length - 1], {\n          key: `swiper-item-prepend-${items.length - 1}`,\n        });\n        items.unshift(last);\n        items.push(first);\n      }\n      return items;\n    };\n\n    const swiperTo = (index: number, context: { source: SwiperChangeSource }) => {\n      let targetIndex = index % swiperItemLength.value;\n      navActiveIndex.value = targetIndex;\n      emit('update:current', targetIndex);\n      props.onChange?.(targetIndex, context);\n      isSwitching.value = true;\n      if (props.animation === 'slide' && swiperItemLength.value > 1 && props.type !== 'card') {\n        targetIndex = index;\n        isBeginToEnd = false;\n        isEndToBegin = false;\n        if (index >= swiperItemLength.value) {\n          clearTimer();\n          setTimeout(() => {\n            isEndToBegin = true;\n            currentIndex.value = 0;\n          }, props.duration);\n        }\n        if (currentIndex.value === 0) {\n          if (swiperItemLength.value >= 2 && index === swiperItemLength.value - 1) {\n            targetIndex = -1;\n            navActiveIndex.value = swiperItemLength.value - 1;\n            clearTimer();\n            setTimeout(() => {\n              isBeginToEnd = true;\n              currentIndex.value = swiperItemLength.value - 1;\n            }, props.duration);\n          }\n        }\n      }\n      currentIndex.value = targetIndex;\n    };\n    const clearTimer = () => {\n      if (swiperTimer) {\n        clearTimeout(swiperTimer);\n        swiperTimer = null;\n      }\n    };\n    const setTimer = () => {\n      if (props.autoplay && props.interval > 0) {\n        clearTimer();\n        swiperTimer = setTimeout(\n          () => {\n            swiperTo(currentIndex.value + 1, { source: 'autoplay' });\n          },\n          currentIndex.value === 0 ? props.interval - (props.duration + 50) : props.interval, // 当 index 为 0 的时候，表明刚从克隆的最后一项跳转过来，已经经历了duration + 50 的间隔时间，减去即可\n        );\n      }\n    };\n\n    const onMouseEnter = () => {\n      isHovering.value = true;\n      if (props.stopOnHover) {\n        clearTimer();\n      }\n      if (navigationConfig.value.showSlideBtn === 'hover') {\n        showArrow.value = true;\n      }\n    };\n    const onMouseLeave = () => {\n      isHovering.value = false;\n      if (!isEnd.value) {\n        setTimer();\n      }\n      if (navigationConfig.value.showSlideBtn === 'hover') {\n        showArrow.value = false;\n      }\n    };\n    const onMouseEnterNavigationItem = (i: number) => {\n      if (props.trigger === 'hover') {\n        swiperTo(i, { source: 'hover' });\n      }\n    };\n    const onClickNavigationItem = (i: number) => {\n      if (props.trigger === 'click') {\n        swiperTo(i, { source: 'click' });\n      }\n    };\n    const goNext = (context: { source: SwiperChangeSource }) => {\n      if (isSwitching.value) return;\n      if (props.type === 'card') {\n        return swiperTo(currentIndex.value + 1 >= swiperItemLength.value ? 0 : currentIndex.value + 1, context);\n      }\n      return swiperTo(currentIndex.value + 1, context);\n    };\n    const goPrevious = (context: { source: SwiperChangeSource }) => {\n      if (isSwitching.value) return;\n      if (currentIndex.value - 1 < 0) {\n        if (props.animation === 'slide' && swiperItemLength.value === 2) {\n          return swiperTo(0, context);\n        }\n        return swiperTo(swiperItemLength.value - 1, context);\n      }\n      return swiperTo(currentIndex.value - 1, context);\n    };\n    const renderPagination = () => {\n      const fractionIndex = currentIndex.value + 1 > swiperItemLength.value ? 1 : currentIndex.value + 1;\n      return (\n        <div class={`${prefix.value}-swiper__arrow`}>\n          <div class={`${prefix.value}-swiper__arrow-left`} onClick={() => goPrevious({ source: 'click' })}>\n            <ChevronLeftIcon />\n          </div>\n          <div class={`${prefix.value}-swiper__navigation-text-fraction`}>\n            {fractionIndex}/{swiperItemLength.value}\n          </div>\n          <div class={`${prefix.value}-swiper__arrow-right`} onClick={() => goNext({ source: 'click' })}>\n            <ChevronRightIcon />\n          </div>\n        </div>\n      );\n    };\n    const renderArrow = () => {\n      if (!showArrow.value) return null;\n      return (\n        <div class={[`${prefix.value}-swiper__arrow`, `${prefix.value}-swiper__arrow--default`]}>\n          <div class={`${prefix.value}-swiper__arrow-left`} onClick={() => goPrevious({ source: 'click' })}>\n            <ChevronLeftIcon />\n          </div>\n          <div class={`${prefix.value}-swiper__arrow-right`} onClick={() => goNext({ source: 'click' })}>\n            <ChevronRightIcon />\n          </div>\n        </div>\n      );\n    };\n    const renderNavigation = () => {\n      if (isVNode(props.navigation)) return props.navigation;\n      const navigationSlot = renderTNodeJSX('navigation');\n      if (navigationSlot && isVNode(navigationSlot?.[0])) return navigationSlot;\n\n      if (navigationConfig.value.type === 'fraction') {\n        return (\n          <div class={[`${prefix.value}-swiper__navigation`, `${prefix.value}-swiper__navigation--fraction`]}>\n            {renderPagination()}\n          </div>\n        );\n      }\n      const swiperItemList = getChildComponentByName('SwiperItem');\n      return (\n        <ul\n          class={[\n            `${prefix.value}-swiper__navigation`,\n            {\n              [`${prefix.value}-swiper__navigation-bars`]: navigationConfig.value.type === 'bars',\n              [`${prefix.value}-swiper__navigation-dots`]: navigationConfig.value.type === 'dots',\n              [`${prefix.value}-swiper__navigation-dots-bar`]: navigationConfig.value.type === 'dots-bar',\n            },\n          ]}\n        >\n          {swiperItemList.map((_, i: number) => (\n            <li\n              key={i}\n              class={[\n                `${prefix.value}-swiper__navigation-item`,\n                {\n                  [`${prefix.value}-is-active`]: i === navActiveIndex.value,\n                },\n              ]}\n              onMouseenter={() => onMouseEnterNavigationItem(i)}\n              onClick={() => onClickNavigationItem(i)}\n            >\n              <span></span>\n            </li>\n          ))}\n        </ul>\n      );\n    };\n    const renderSwiperItems = () => {\n      return swiperItems();\n    };\n\n    watch(\n      () => propsToUpdateSetTimer.value,\n      () => {\n        setTimer();\n      },\n    );\n    watch(\n      () => isSwitching.value,\n      () => {\n        if (isSwitching.value) {\n          if (swiperSwitchingTimer) clearTimeout(swiperSwitchingTimer);\n          swiperSwitchingTimer = setTimeout(() => {\n            isSwitching.value = false;\n            swiperSwitchingTimer = 0;\n            if (isEnd.value) {\n              clearTimer();\n            }\n          }, props.duration + 50) as unknown as number;\n        }\n      },\n    );\n    watch(\n      () => props.current,\n      () => {\n        swiperTo(props.current, { source: 'autoplay' });\n      },\n    );\n\n    onMounted(() => {\n      setTimer();\n      showArrow.value = navigationConfig.value.showSlideBtn === 'always';\n    });\n\n    useResizeObserver(swiperWrap, () => {\n      const parentElement = swiperWrap.value?.parentNode as HTMLElement;\n      if (parentElement) {\n        swiperOffset.value = {\n          width: parentElement.offsetWidth || 0,\n          height: parentElement.offsetHeight || 0,\n        };\n      }\n    });\n\n    return () => (\n      <div class={[`${prefix.value}-swiper`]} onMouseenter={onMouseEnter} onMouseleave={onMouseLeave} ref={swiperWrap}>\n        <div class={swiperWrapClass.value}>\n          <div\n            class={[\n              `${prefix.value}-swiper__content`,\n              {\n                [`${prefix.value}-swiper-fade`]: props.animation === 'fade',\n                [`${prefix.value}-swiper-card`]: props.type === 'card',\n              },\n            ]}\n          >\n            <div class={`${prefix.value}-swiper__container`} style={containerStyle.value}>\n              {renderSwiperItems()}\n            </div>\n          </div>\n          {renderNavigation()}\n          {renderArrow()}\n        </div>\n      </div>\n    );\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","defaultNavigation","placement","showSlideBtn","size","type","defineComponent","name","props","emits","setup","emit","_ref","prefix","usePrefixClass","renderTNodeJSX","useTNodeJSX","_useGlobalIcon","useGlobalIcon","ChevronLeftIcon","TdChevronLeftIcon","ChevronRightIcon","TdChevronRightIcon","swiperTimer","swiperSwitchingTimer","isBeginToEnd","isEndToBegin","currentIndex","ref","current","defaultCurrent","navActiveIndex","isHovering","isSwitching","showArrow","swiperWrap","swiperOffset","width","height","swiperItemLength","getChildComponentByName","useChildComponentSlots","navigationConfig","computed","_objectSpread","isVNode","navigation","isEnd","loop","value","propsToUpdateSetTimer","autoplay","duration","interval","swiperWrapClass","_defineProperty","concat","direction","containerStyle","offsetHeight","animation","style","transition","active","transform","forEach","key","swiperItems","swiperItemList","length","items","map","swiperItem","index","_slot","p","_createVNode","TSwiperItem","_mergeProps","children","_default","first","cloneVNode","last","unshift","push","swiperTo","context","_props2$onChange","targetIndex","onChange","clearTimer","setTimeout","clearTimeout","setTimer","source","onMouseEnter","stopOnHover","onMouseLeave","onMouseEnterNavigationItem","i","trigger","onClickNavigationItem","goNext","goPrevious","renderPagination","fractionIndex","onClick","renderArrow","renderNavigation","navigationSlot","_","onMouseenter","renderSwiperItems","watch","onMounted","useResizeObserver","_swiperWrap$value","parentElement","parentNode","offsetWidth"],"mappings":"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"}