{"version":3,"file":"swiper.mjs","sources":["../../src/swiper/swiper.tsx"],"sourcesContent":["import { onMounted, computed, ref, provide, watch, onUnmounted, toRefs, defineComponent } from 'vue';\nimport { isNumber } from 'lodash-es';\nimport { useSwipe } from '../swipe-cell/useSwipe';\nimport config from '../config';\nimport props from './props';\nimport { SwiperChangeSource, SwiperNavigation } from './type';\nimport useVModel from '../hooks/useVModel';\nimport { preventDefault } from '../shared/dom';\nimport { useTNodeJSX } from '../hooks/tnode';\nimport { usePrefixClass } from '../hooks/useClass';\n\nconst DEFAULT_SWIPER_NAVIGATION: SwiperNavigation = {\n  paginationPosition: 'bottom',\n  placement: 'inside',\n  showControls: false,\n  type: 'dots',\n};\n\n/**\n * 滑动触发阈值\n */\nconst SWIPE_THRESHOLD = 100;\n\nconst { prefix } = config;\n\n// 定义 SwiperItem 的接口\ninterface SwiperItemInstance {\n  uid: number;\n  proxy: any;\n  calcTranslateStyle: (index: number, activeIndex: number) => void;\n}\n\nexport default defineComponent({\n  name: `${prefix}-swiper`,\n  props: {\n    ...props,\n    disabled: {\n      type: Boolean,\n      default: false,\n    },\n  },\n  emits: ['change', 'update:current', 'update:modelValue', 'transitionenter', 'transitionleave'],\n  setup(props, { emit, expose, slots }) {\n    const swiperClass = usePrefixClass('swiper');\n    const swiperNavClass = usePrefixClass('swiper-nav');\n\n    const renderTNodeJSX = useTNodeJSX();\n    const setOffset = (offset: number, direction: 'X' | 'Y' = 'X'): void => {\n      translateContainer.value = `translate${direction}(${offset}px)`;\n    };\n\n    const root = ref();\n    const items = ref<SwiperItemInstance[]>([]);\n    const { current: value, modelValue } = toRefs(props);\n    const [currentIndex, setCurrent] = useVModel(value, modelValue, props.defaultCurrent);\n    const swiperContainer = ref<HTMLElement | null>(null);\n    const previous = ref(currentIndex.value ?? 0);\n\n    const animating = ref(false);\n    const disabled = ref(false);\n    const isSwiperDisabled = computed(() => props.disabled === true);\n    const translateContainer = ref('');\n\n    const isVertical = computed(() => props.direction === 'vertical');\n    const containerHeight = ref('auto');\n    // 滑动方向：1 表示向下一页, -1 表示向上一页, 0 表示无方向\n    const moveDirection = ref(0);\n\n    const navigationConfig = computed<SwiperNavigation>(() => {\n      if (props.navigation === true) {\n        return DEFAULT_SWIPER_NAVIGATION;\n      }\n      if (typeof props.navigation === 'object' && props.navigation !== null) {\n        return {\n          ...DEFAULT_SWIPER_NAVIGATION,\n          ...props.navigation,\n        } as SwiperNavigation;\n      }\n\n      return {} as SwiperNavigation;\n    });\n\n    /**\n     * @description 是否启用内置导航器\n     * - 非空 navigationConfig 代表启用内置导航器;\n     * - navigation 为对象时，根据 minShowNum 判断是否满足最小展示数量\n     */\n    const enableBuiltinNavigation = computed(() => {\n      if (!Object.keys(navigationConfig.value).length) return false;\n\n      const { minShowNum } = navigationConfig.value;\n      return minShowNum ? items.value.length >= minShowNum : true;\n    });\n\n    /**\n     * @description 是否启用底部分页器\n     */\n    const isBottomPagination = computed(() => {\n      if (!enableBuiltinNavigation.value) return false;\n\n      const { paginationPosition, type } = navigationConfig.value;\n      return paginationPosition === 'bottom' && (type === 'dots' || type === 'dots-bar');\n    });\n\n    const rootClass = computed(() => [\n      `${swiperClass.value}`,\n      { [`${swiperClass.value}--${navigationConfig.value.placement}`]: isBottomPagination.value },\n    ]);\n\n    let autoplayTimer: ReturnType<typeof setInterval> | null = null;\n\n    const onItemClick = () => {\n      props.onClick?.(currentIndex.value ?? 0);\n    };\n\n    const move = (step: number, source: SwiperChangeSource, isReset = false, targetValue?: number) => {\n      const nextIndex = currentIndex.value + step;\n      if (!props.loop && !(isReset || typeof targetValue === 'number')) {\n        if (nextIndex < 0 || nextIndex >= items.value.length) return;\n      }\n\n      // 2 个 item 时，根据滑动方向更新 item 排列\n      if (!isReset && items.value.length === 2 && props.loop) {\n        moveDirection.value = step > 0 ? 1 : -1;\n        updateItemPosition();\n      }\n\n      animating.value = true;\n      const innerTargetValue = targetValue ?? (isReset ? step : nextIndex);\n      processIndex(innerTargetValue, source);\n\n      const moveDir = !isVertical.value ? 'X' : 'Y';\n      const distance = root.value?.[isVertical.value ? 'offsetHeight' : 'offsetWidth'] ?? 0;\n\n      translateContainer.value = `translate${moveDir}(${isReset ? 0 : -1 * distance * step}px)`;\n    };\n\n    const handleAnimationEnd = () => {\n      disabled.value = false;\n      animating.value = false;\n      translateContainer.value = `translate${isVertical.value ? 'Y' : 'X'}(0)`;\n      moveDirection.value = 0;\n\n      updateItemPosition();\n    };\n\n    const stopAutoplay = () => {\n      if (!autoplayTimer) return;\n      clearInterval(autoplayTimer);\n      autoplayTimer = null;\n    };\n\n    const startAutoplay = () => {\n      if (!props.autoplay || autoplayTimer !== null) return false; // stop repeat autoplay\n      autoplayTimer = setInterval(() => {\n        goNext('autoplay');\n      }, props.interval);\n    };\n\n    const goPrev = (source: SwiperChangeSource) => {\n      disabled.value = true;\n      move(-1, source);\n    };\n    const goNext = (source: SwiperChangeSource) => {\n      disabled.value = true;\n      move(1, source);\n    };\n\n    const innerSetCurrent = (val: number) => {\n      setCurrent(val);\n      previous.value = val;\n    };\n\n    const processIndex = (index: number, source: SwiperChangeSource) => {\n      const max = items.value.length;\n      let val = index;\n\n      if (index < 0) {\n        val = props.loop ? max - 1 : 0;\n      }\n      if (index >= max) {\n        val = props.loop ? 0 : max - 1;\n      }\n      innerSetCurrent(val);\n      emit('update:current', val);\n      emit('change', val, { source });\n    };\n\n    const { lengthX, lengthY } = useSwipe(swiperContainer, {\n      onSwipeStart() {\n        if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n        stopAutoplay();\n      },\n      onSwipe(e: TouchEvent) {\n        if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n        onTouchMove(e);\n      },\n      onSwipeEnd() {\n        if (disabled.value || isSwiperDisabled.value || !items.value.length) return;\n        onTouchEnd();\n      },\n    });\n\n    const onTouchMove = (event: TouchEvent) => {\n      preventDefault(event, false);\n\n      animating.value = false;\n\n      const curIndex = currentIndex.value;\n      const maxIndex = items.value.length - 1;\n      const distance = isVertical.value ? lengthY.value : lengthX.value;\n      const dir = isVertical.value ? 'Y' : 'X';\n\n      // 非loop状态: 阻止第一项向左滑(显示上一项)和最后一项向右滑(显示下一项)\n      if (!props.loop && ((curIndex <= 0 && distance < 0) || (curIndex >= maxIndex && distance > 0))) return;\n\n      // 2 个 item 时，根据手势方向动态调整另一个 item 的位置\n      if (items.value.length === 2 && props.loop) {\n        moveDirection.value = distance > 0 ? 1 : -1;\n        updateItemPosition();\n      }\n\n      setOffset(-distance, dir);\n    };\n\n    const onTouchEnd = () => {\n      const distance = isVertical.value ? lengthY.value : lengthX.value;\n\n      if (distance < -SWIPE_THRESHOLD) {\n        move(-1, 'touch');\n      } else if (distance > SWIPE_THRESHOLD) {\n        move(1, 'touch');\n      } else {\n        move(currentIndex.value as number, 'touch', true);\n      }\n      startAutoplay();\n    };\n\n    const onTransitionstart = (event: TransitionEvent) => {\n      emit('transitionenter', event);\n    };\n\n    const onTransitionend = (event: TransitionEvent) => {\n      emit('transitionleave', event);\n    };\n\n    const addChild = (item: SwiperItemInstance) => {\n      items.value.push(item);\n    };\n\n    const removeChild = (uid: number) => {\n      const removedIndex = items.value.findIndex((item) => item.uid === uid);\n      if (removedIndex === -1) return;\n\n      items.value.splice(removedIndex, 1);\n\n      // 如果删除后没有项了，重置索引\n      if (items.value.length === 0) {\n        innerSetCurrent(0);\n        return;\n      }\n\n      // 根据删除位置调整当前索引\n      if (removedIndex < currentIndex.value) {\n        // 删除的是前面的项，当前索引需要 -1（保持显示相同内容）\n        innerSetCurrent(currentIndex.value - 1);\n      } else if (removedIndex === currentIndex.value && currentIndex.value >= items.value.length) {\n        // 删除的是当前项，且索引已越界，调整到最后一项\n        innerSetCurrent(items.value.length - 1);\n      }\n\n      updateItemPosition();\n    };\n\n    const updateItemPosition = () => {\n      if (!items.value.length) return;\n      items.value.forEach((item, index) => {\n        item.calcTranslateStyle(index, currentIndex.value);\n      });\n    };\n\n    const setContainerHeight = (height: number | string) =>\n      (containerHeight.value = isNumber(height) ? `${height}px` : height);\n\n    const updateContainerHeight = () => {\n      if (props.height) {\n        setContainerHeight(props.height);\n        return;\n      }\n\n      const target = items.value[currentIndex.value ?? 0];\n      const rect = target?.proxy?.$el.getBoundingClientRect();\n      if (rect) {\n        setContainerHeight(rect.height);\n      }\n    };\n\n    watch(currentIndex, updateContainerHeight);\n    watch(\n      () => props.current,\n      (val, oldVal) => {\n        // v-model动态更新时不触发move逻辑\n        if (val === previous.value) return;\n        stopAutoplay();\n        move(val - oldVal, 'autoplay', false, val);\n        startAutoplay();\n      },\n    );\n\n    provide('parent', {\n      loop: props.loop,\n      root,\n      items,\n      isVertical,\n      addChild,\n      removeChild,\n      setContainerHeight,\n      moveDirection,\n    });\n\n    onMounted(() => {\n      startAutoplay();\n      updateItemPosition();\n      updateContainerHeight();\n    });\n\n    onUnmounted(() => {\n      stopAutoplay();\n    });\n\n    const swipeTo = (index: number, options?: { immediate?: boolean }) => {\n      if (index < 0 || index >= items.value.length) return;\n\n      const step = index - currentIndex.value;\n      if (step === 0) return;\n\n      stopAutoplay();\n\n      if (options?.immediate) {\n        // 立即切换：直接更新索引和位置，无动画\n        processIndex(index, 'autoplay');\n        updateItemPosition();\n      } else {\n        // 带动画切换：复用现有的 move 逻辑\n        move(step, 'autoplay', false, index);\n      }\n\n      startAutoplay();\n    };\n\n    expose({\n      swipeTo,\n    });\n\n    // 渲染控制按钮（左右箭头）\n    const renderControlsNav = () => {\n      if (isVertical.value || !navigationConfig.value?.showControls) return null;\n\n      return (\n        <span class={`${swiperNavClass.value}__btn`}>\n          <span class={`${swiperNavClass.value}__btn--prev`} onClick={() => goPrev('nav')} />\n          <span class={`${swiperNavClass.value}__btn--next`} onClick={() => goNext('nav')} />\n        </span>\n      );\n    };\n\n    // 渲染点状导航\n    const renderDotsNav = () => {\n      const navType = navigationConfig.value.type;\n      if (!navType || !['dots', 'dots-bar'].includes(navType)) return null;\n\n      return (\n        <>\n          {items.value.map((_, index) => (\n            <span\n              key={`page${index}`}\n              class={[\n                `${swiperNavClass.value}__${navType}-item`,\n                index === currentIndex.value && `${swiperNavClass.value}__${navType}-item--active`,\n                `${swiperNavClass.value}__${navType}-item--${props.direction}`,\n              ]}\n            />\n          ))}\n        </>\n      );\n    };\n\n    // 渲染分式导航 (1/5)\n    const renderFractionNav = () => {\n      if (navigationConfig.value?.type !== 'fraction') return null;\n      return <span>{`${(currentIndex.value ?? 0) + 1}/${items.value.length}`}</span>;\n    };\n\n    // 渲染导航类型（dots/fraction）\n    const renderTypeNav = () => {\n      if (!('type' in navigationConfig.value)) return null;\n\n      return (\n        <span\n          class={[\n            `${swiperNavClass.value}--${props.direction}`,\n            `${swiperNavClass.value}__${navigationConfig.value.type || ''}`,\n            `${swiperNavClass.value}--${navigationConfig.value.paginationPosition || 'bottom'}`,\n            `${swiperNavClass.value}--${navigationConfig.value.placement}`,\n          ]}\n        >\n          {renderDotsNav()}\n          {renderFractionNav()}\n        </span>\n      );\n    };\n\n    return () => {\n      const swiperNav = () => {\n        if (props.navigation === false) return null;\n\n        if (enableBuiltinNavigation.value) {\n          return (\n            <>\n              {renderControlsNav()}\n              {renderTypeNav()}\n            </>\n          );\n        }\n\n        if (typeof props.navigation === 'function') return (props.navigation as Function)();\n\n        if (slots?.navigation) return slots.navigation();\n\n        return null;\n      };\n\n      return (\n        <div ref={root} class={rootClass.value}>\n          <div\n            ref={swiperContainer}\n            class={`${swiperClass.value}__container`}\n            style={{\n              flexDirection: isVertical.value ? 'column' : 'row',\n              transition: animating.value ? `transform ${props.duration}ms` : 'none',\n              transform: translateContainer.value,\n              height: containerHeight.value,\n            }}\n            onTransitionstart={onTransitionstart}\n            onTransitionend={(event: TransitionEvent) => {\n              if (event.target === event.currentTarget) {\n                onTransitionend(event);\n                handleAnimationEnd();\n              }\n            }}\n            onClick={onItemClick}\n          >\n            {renderTNodeJSX('default')}\n          </div>\n          {swiperNav()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["DEFAULT_SWIPER_NAVIGATION","paginationPosition","placement","showControls","type","SWIPE_THRESHOLD","prefix","config","defineComponent","name","props","_objectSpread","disabled","Boolean","default","emits","setup","_ref","_currentIndex$value","emit","expose","slots","swiperClass","usePrefixClass","swiperNavClass","renderTNodeJSX","useTNodeJSX","setOffset","offset","direction","arguments","length","undefined","translateContainer","value","concat","root","ref","items","_toRefs","toRefs","current","modelValue","_useVModel","useVModel","defaultCurrent","_useVModel2","_slicedToArray","currentIndex","setCurrent","swiperContainer","previous","animating","isSwiperDisabled","computed","isVertical","containerHeight","moveDirection","navigationConfig","navigation","_typeof","enableBuiltinNavigation","Object","keys","minShowNum","isBottomPagination","_navigationConfig$val","rootClass","_defineProperty","autoplayTimer","onItemClick","_props2$onClick","_currentIndex$value2","onClick","move","step","source","_root$value","_root$value2","isReset","targetValue","nextIndex","loop","updateItemPosition","innerTargetValue","processIndex","moveDir","distance","handleAnimationEnd","stopAutoplay","clearInterval","startAutoplay","autoplay","setInterval","goNext","interval","goPrev","innerSetCurrent","val","index","max","_useSwipe","useSwipe","onSwipeStart","onSwipe","e","onTouchMove","onSwipeEnd","onTouchEnd","lengthX","lengthY","event","preventDefault","curIndex","maxIndex","dir","onTransitionstart","onTransitionend","addChild","item","push","removeChild","uid","removedIndex","findIndex","splice","forEach","calcTranslateStyle","setContainerHeight","height","isNumber","updateContainerHeight","_currentIndex$value3","_target$proxy","target","rect","proxy","$el","getBoundingClientRect","watch","oldVal","provide","onMounted","onUnmounted","swipeTo","options","immediate","renderControlsNav","_navigationConfig$val2","_createVNode","renderDotsNav","navType","includes","_Fragment","map","_","renderFractionNav","_navigationConfig$val3","_currentIndex$value4","renderTypeNav","swiperNav","flexDirection","transition","duration","transform","currentTarget"],"mappings":"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"}