UNPKG

tdesign-mobile-vue

Version:
1 lines 4.4 kB
{"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.tagName !== 'HTML' && node.tagName !== 'BODY' && 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// 获取最新的可滚动父元素\nexport const getScrollParent = (node: Element) => {\n let res = node;\n while (res && isElement(res)) {\n if (/auto|scroll/i.test(window.getComputedStyle(res).overflowY)) {\n return res;\n }\n res = res.parentNode as Element;\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","tagName","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","test","window","getComputedStyle","overflowY","parentNode","isReachTop","e","scrollParent","target","scrollTop"],"mappings":"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"}