{"version":3,"file":"useTouch.mjs","sources":["../../src/pull-down-refresh/useTouch.ts"],"sourcesContent":["import { ref } from 'vue';\n\nconst isElement = (node: Element) => {\n  const ELEMENT_NODE_TYPE = 1;\n  return node.nodeType === ELEMENT_NODE_TYPE;\n};\n\nexport function useTouch() {\n  const startX = ref(0);\n  const startY = ref(0);\n  const diffX = ref(0);\n  const diffY = ref(0);\n  const start = (event: TouchEvent) => {\n    const { clientX, clientY } = event.touches[0];\n    startX.value = clientX;\n    startY.value = clientY;\n    diffY.value = 0;\n    diffX.value = 0;\n  };\n  const move = (event: TouchEvent) => {\n    const { clientX, clientY } = event.touches[0];\n    diffY.value = clientY - startY.value;\n    diffX.value = clientX - startX.value;\n  };\n  return {\n    startX,\n    startY,\n    diffX,\n    diffY,\n    start,\n    move,\n  };\n}\n\n// 缓动函数\nexport const easeDistance = (distance: number, pullDistance: number) => {\n  if (distance > pullDistance) {\n    if (distance < pullDistance * 2) {\n      distance = pullDistance + (distance - pullDistance) / 2;\n    } else {\n      distance = pullDistance * 1.5 + (distance - pullDistance * 2) / 4;\n    }\n  }\n  return Math.round(distance);\n};\n\n// 获取最新的可滚动父元素\nexport function getScrollParent(node: Element): Element | null {\n  let res = node;\n  while (res && isElement(res)) {\n    const style = window.getComputedStyle(res);\n    const isScrollableY = /auto|scroll/i.test(style.overflowY);\n    const canScrollY = ['hidden', 'visible'].includes(style.overflowY) && res.scrollHeight > res.clientHeight;\n    if (isScrollableY || canScrollY) {\n      return res;\n    }\n    res = res.parentNode as Element;\n  }\n  return null;\n}\n\n// 确保可滚动的父元素此时处于未滚动状态\nexport const isReachTop = (e: TouchEvent) => {\n  const scrollParent = getScrollParent(e.target as Element);\n  return !scrollParent || !scrollParent.scrollTop;\n};\n"],"names":["isElement","node","ELEMENT_NODE_TYPE","nodeType","useTouch","startX","ref","startY","diffX","diffY","start","event","_event$touches$","touches","clientX","clientY","value","move","_event$touches$2","easeDistance","distance","pullDistance","Math","round","getScrollParent","res","style","window","getComputedStyle","isScrollableY","test","overflowY","canScrollY","includes","scrollHeight","clientHeight","parentNode","isReachTop","e","scrollParent","target","scrollTop"],"mappings":"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"}