UNPKG

merchi_product_editor

Version:

A React component for editing product images using Fabric.js

41 lines (34 loc) 986 B
import { useRef, TouchEvent } from 'react'; interface SwipeNavigateOptions { onSwipeLeft: () => void; onSwipeRight: () => void; threshold?: number; } export const useSwipeNavigate = ({ onSwipeLeft, onSwipeRight, threshold = 50 }: SwipeNavigateOptions) => { const touchStartX = useRef(0); const touchEndX = useRef(0); const handleTouchStart = (e: TouchEvent<HTMLElement>) => { touchStartX.current = e.touches[0].clientX; touchEndX.current = 0; }; const handleTouchEnd = (e: TouchEvent<HTMLElement>) => { if (touchStartX.current === 0) { return; } touchEndX.current = e.changedTouches[0].clientX; const diff = touchStartX.current - touchEndX.current; if (Math.abs(diff) > threshold) { if (diff > 0) { onSwipeLeft(); } else { onSwipeRight(); } } touchStartX.current = 0; touchEndX.current = 0; }; return { onTouchStart: handleTouchStart, onTouchEnd: handleTouchEnd, }; };