import { useState, useEffect } from 'react'; const useLongTap = (onLongTap, duration = 500) => { const [isPressing, setIsPressing] = useState(false); const [startTime, setStartTime] = useState(null); useEffect(() => { if (isPressing && startTime) { const elapsedTime = performance.now() - startTime; if (elapsedTime >= duration) { onLongTap(); setIsPressing(false); setStartTime(null); } } }, [isPressing, startTime, onLongTap, duration]); const handlePointerDown = (event) => { setIsPressing(true); setStartTime(performance.now()); }; const handlePointerUp = () => { setIsPressing(false); setStartTime(null); }; const handlePointerCancel = () => { setIsPressing(false); setStartTime(null); }; const handlePointerOut = () => { setIsPressing(false); setStartTime(null); }; return { onPointerDown: handlePointerDown, onPointerUp: handlePointerUp, onPointerCancel: handlePointerCancel, onPointerOut: handlePointerOut, }; }; export { useLongTap };