UNPKG

v3-simple-img-preview

Version:
48 lines (41 loc) 1.1 kB
import { ref } from "vue"; export function useTouch() { const startX = ref(0); const startY = ref(0); const deltaX = ref(0); const deltaY = ref(0); const offsetX = ref(0); const offsetY = ref(0); const reset = () => { deltaX.value = 0; deltaY.value = 0; offsetX.value = 0; offsetY.value = 0; }; const start = ((event: TouchEvent) => { reset(); startX.value = event.touches[0].clientX; startY.value = event.touches[0].clientY; }) as EventListener; const move = ((event: TouchEvent) => { const touch = event.touches[0]; // safari back will set clientX to negative number deltaX.value = (touch.clientX < 0 ? 0 : touch.clientX) - startX.value; deltaY.value = touch.clientY - startY.value; offsetX.value = Math.abs(deltaX.value); offsetY.value = Math.abs(deltaY.value); // lock direction when distance is greater than a certain value const LOCK_DIRECTION_DISTANCE = 10; }) as EventListener; return { move, start, reset, startX, startY, deltaX, deltaY, offsetX, offsetY, }; }