import { type PointerEvent as ReactPointerEvent } from "react"; export type Movement = { movementX: number; movementY: number; }; export type DragEvent = { movementX: number; movementY: number; clickTarget: EventTarget & Element; }; /** * Hook to handle drag interactions using RxJS. * * @remarks * This hook provides a `pointerDown` handler and an observable `drag$` that emits drag events. * It handles mouse and touch events via `pointer` events. * Dragging is stopped on `pointerUp` or `Escape` key. * * @typeParam E - The HTML element type. * @returns An object containing the event handler and observables. * * @example * ```tsx * const { onPointerDown, drag$ } = useDrag(); * * useEffect(() => { * const sub = drag$.subscribe(({ movementX, movementY }) => { * console.log("Dragged:", movementX, movementY); * }); * return () => sub.unsubscribe(); * }, [drag$]); * * return
Drag me
; * ``` */ export declare let useDrag: () => { onPointerDown: (event: ReactPointerEvent) => void; drag$: import("rxjs").Observable>; dragStart$: import("rxjs").Observable>; drag: () => import("rxjs").UnaryFunction>, import("rxjs").Observable>>; };