{"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    const onTouchStart = (e: TouchEvent) => {\n      e.stopPropagation();\n      if (!isReachTop(e) || loading.value) 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      e.stopPropagation();\n      if (!isReachTop(e) || loading.value) return;\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      e.stopPropagation();\n      if (!isReachTop(e) || loading.value) 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","onTouchStart","e","stopPropagation","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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"}