import { useCallback, useEffect } from 'react' export function useStopMovePropagate( ref: React.RefObject, immediate?: boolean ) { const handler = useCallback((event: Event) => { if (immediate) { event.stopImmediatePropagation() } else { event.stopPropagation() } }, []) const on = useCallback(() => { if (ref.current instanceof EventTarget) { ref.current.addEventListener('touchmove', handler, { passive: false, }) } }, []) const off = useCallback(() => { if (ref.current instanceof EventTarget) { ref.current.removeEventListener('touchmove', handler) } }, []) useEffect(() => { on() return off }, []) return { on, off } as { on: () => void off: () => void } }