{"version":3,"file":"pull-down-refresh.mjs","sources":["../../src/pull-down-refresh/pull-down-refresh.tsx"],"sourcesContent":["import { defineComponent, onUnmounted, ref, toRefs, computed, watch, onMounted } from 'vue';\nimport { useElementSize } from '@vueuse/core';\nimport { debounce } from 'lodash-es';\nimport PullDownRefreshProps from './props';\nimport { convertUnit, reconvertUnit } from '../shared';\nimport { preventDefault } from '../shared/dom';\nimport config from '../config';\nimport TLoading from '../loading';\nimport useVModel from '../hooks/useVModel';\nimport { useContent } from '../hooks/tnode';\nimport { useTouch, isReachTop, easeDistance } from './useTouch';\nimport { usePrefixClass, useConfig } from '../hooks/useClass';\n\nconst { prefix } = config;\n\nconst statusName = ['pulling', 'loosing', 'loading', 'success', 'initial'];\n\nexport default defineComponent({\n  name: `${prefix}-pull-down-refresh`,\n  components: { TLoading },\n  props: PullDownRefreshProps,\n  emits: ['refresh', 'timeout', 'scrolltolower', 'update:value', 'update:modelValue'],\n  setup(props) {\n    const pullDownRefreshClass = usePrefixClass('pull-down-refresh');\n    const { globalConfig } = useConfig('pullDownRefresh');\n    const renderContent = useContent();\n\n    let timer: any = null;\n\n    // 滑动距离\n    const distance = ref(0);\n    const afterLoading = ref(false);\n    const { value, modelValue } = toRefs(props);\n    const [loading, setLoading] = useVModel(value, modelValue, props.defaultValue, props.onChange);\n\n    const loadingText = computed(() => {\n      const index = statusName.indexOf(status.value);\n      const loadingTexts = props.loadingTexts?.length > 0 ? props.loadingTexts : globalConfig.value.loadingTexts;\n      return index >= 0 ? loadingTexts[index] : '';\n    });\n\n    const touch = useTouch();\n    const loadingBar = ref();\n    const maxBar = ref();\n    const { height: loadingBarHeight } = useElementSize(loadingBar);\n    const { height: maxBarHeight } = useElementSize(maxBar);\n    const actualLoadingBarHeight = ref(0);\n\n    // 默认 0 左右移动 1 上下移动 -1\n    let touchDir: -1 | 0 | 1;\n    const touchThreshold = 5;\n\n    watch(\n      [loading, loadingBarHeight],\n      ([val], [prevVal]) => {\n        if (val) {\n          distance.value = loadingBarHeight.value;\n        }\n        if (!val && prevVal) {\n          afterLoading.value = true;\n        }\n      },\n      {\n        immediate: true,\n      },\n    );\n\n    const status = computed(() => {\n      if (afterLoading.value) {\n        return 'success';\n      }\n      if (!loading.value && distance.value === 0) {\n        return 'initial';\n      }\n      if (distance.value < loadingBarHeight.value) {\n        return 'pulling';\n      }\n      if (loading.value) {\n        return 'loading';\n      }\n      return 'loosing';\n    });\n\n    watch(status, (newVal) => {\n      if (newVal === 'success') {\n        // 延时300ms收起下拉框，加强刷新成功提示\n        setTimeout(() => {\n          distance.value = 0;\n        }, 300);\n      }\n    });\n\n    // 统一判断是否可以滑动\n    const isTouchable = () => loading.value || props.disabled;\n\n    const onTouchStart = (e: TouchEvent) => {\n      if (isTouchable()) return;\n      if (!isReachTop(e)) return;\n\n      clearTimeout(timer);\n      timer = null;\n      distance.value = 0;\n      touch.start(e);\n      touchDir = 0;\n    };\n\n    const onTouchMove = (e: TouchEvent) => {\n      if (isTouchable()) return;\n      if (!isReachTop(e)) return;\n\n      touch.move(e);\n\n      const { diffY, diffX } = touch;\n      const absX = Math.abs(diffX.value);\n      const absY = Math.abs(diffY.value);\n\n      if (!touchDir && absX < touchThreshold && absY < touchThreshold) {\n        return;\n      }\n      if (!touchDir && absX < absY) {\n        touchDir = -1;\n      } else if (!touchDir && absX >= absY) {\n        touchDir = 1;\n      }\n\n      // 左右移动时，不进行后续操作\n      if (touchDir === 1) return;\n\n      actualLoadingBarHeight.value = diffY.value;\n      const nextDistance = easeDistance(diffY.value, loadingBarHeight.value);\n      // 下拉时，防止下拉整个页面\n      if (diffY.value > 0) {\n        preventDefault(e, false);\n      }\n      if (nextDistance >= 0 && nextDistance < maxBarHeight.value) {\n        distance.value = nextDistance;\n      }\n    };\n\n    const onTouchEnd = (e: TouchEvent) => {\n      if (isTouchable()) return;\n      if (!isReachTop(e)) return;\n\n      if (status.value === 'loosing') {\n        distance.value = loadingBarHeight.value;\n        setLoading(true);\n        props.onRefresh?.();\n        timer = setTimeout(() => {\n          if (loading.value) {\n            props.onTimeout?.();\n            setLoading(false);\n          }\n        }, props.refreshTimeout);\n      } else {\n        distance.value = 0;\n      }\n    };\n\n    const onReachBottom = debounce(\n      () => {\n        const scrollTop = document.documentElement.scrollTop || document.body.scrollTop; // 滚动高度\n        const { clientHeight, scrollHeight } = document.documentElement; // 可视区域/屏幕高度， 页面高度\n        const distance = 20; // 距离视窗 20 时，开始触发\n        if (scrollTop + clientHeight >= scrollHeight - distance) {\n          props.onScrolltolower?.();\n        }\n      },\n      300,\n      {\n        leading: true,\n        trailing: false,\n      },\n    );\n\n    const onTransitionEnd = () => {\n      if (afterLoading.value) {\n        afterLoading.value = false;\n      }\n    };\n\n    const trackStyle = computed(() => {\n      return {\n        transform: `translate3d(0, ${distance.value}px, 0)`,\n      };\n    });\n    const heightDiff = (reconvertUnit(props.maxBarHeight) - reconvertUnit(props.loadingBarHeight)) / 2;\n    const loadingBarStyles = computed(() => {\n      return {\n        transform: `translateY(${heightDiff}px)`,\n        height: `${actualLoadingBarHeight.value}px`,\n        maxHeight: convertUnit(props.loadingBarHeight),\n      };\n    });\n    const maxBarStyles = computed(() => ({\n      height: convertUnit(props.maxBarHeight),\n    }));\n\n    onMounted(() => {\n      window.addEventListener('scroll', onReachBottom);\n    });\n\n    onUnmounted(() => {\n      clearTimeout(timer);\n      window.removeEventListener('scroll', onReachBottom);\n    });\n    const renderLoading = () => {\n      if (status.value === 'loading') {\n        return <t-loading size=\"24px\" text={loadingText.value} {...(props.loadingProps as object)}></t-loading>;\n      }\n      return <div class={`${pullDownRefreshClass.value}__text`}>{loadingText.value}</div>;\n    };\n    return () => {\n      const content = renderContent('default', 'content');\n      let className = `${pullDownRefreshClass.value}__track`;\n      if (status.value !== 'pulling') {\n        className = `${className} ${pullDownRefreshClass.value}__track--loosing`;\n      }\n      return (\n        <div class={pullDownRefreshClass.value}>\n          <div\n            class={className}\n            style={trackStyle.value}\n            onTouchstart={onTouchStart}\n            onTouchmove={onTouchMove}\n            onTouchend={onTouchEnd}\n            onTouchcancel={onTouchEnd}\n            onTransitionend={onTransitionEnd}\n          >\n            <div ref={maxBar} class={`${pullDownRefreshClass.value}__tips`} style={maxBarStyles.value}>\n              <div ref={loadingBar} class={`${pullDownRefreshClass.value}__loading`} style={loadingBarStyles.value}>\n                {renderLoading()}\n              </div>\n            </div>\n            {content}\n          </div>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["prefix","config","statusName","defineComponent","name","components","TLoading","props","PullDownRefreshProps","emits","setup","pullDownRefreshClass","usePrefixClass","_useConfig","useConfig","globalConfig","renderContent","useContent","timer","distance","ref","afterLoading","_toRefs","toRefs","value","modelValue","_useVModel","useVModel","defaultValue","onChange","_useVModel2","_slicedToArray","loading","setLoading","loadingText","computed","_props$loadingTexts","index","indexOf","status","loadingTexts","length","touch","useTouch","loadingBar","maxBar","_useElementSize","useElementSize","loadingBarHeight","height","_useElementSize2","maxBarHeight","actualLoadingBarHeight","touchDir","touchThreshold","watch","_ref","_ref2","_ref3","val","_ref4","prevVal","immediate","newVal","setTimeout","isTouchable","disabled","onTouchStart","e","isReachTop","clearTimeout","start","onTouchMove","move","diffY","diffX","absX","Math","abs","absY","nextDistance","easeDistance","preventDefault","onTouchEnd","_props$onRefresh","onRefresh","call","_props$onTimeout","onTimeout","refreshTimeout","onReachBottom","debounce","scrollTop","document","documentElement","body","_document$documentEle","clientHeight","scrollHeight","_props$onScrolltolowe","onScrolltolower","leading","trailing","onTransitionEnd","trackStyle","transform","concat","heightDiff","reconvertUnit","loadingBarStyles","maxHeight","convertUnit","maxBarStyles","onMounted","window","addEventListener","onUnmounted","removeEventListener","renderLoading","_createVNode","_resolveComponent","_mergeProps","loadingProps","content","className"],"mappings":"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"}