UNPKG

@figliolia/drag-detector

Version:

Mouse and Touch driven drag detection for DOM elements

32 lines (26 loc) 723 B
import type { MouseEvent as ReactMouseEvent, TouchEvent as ReactTouchEvent, } from "react"; export type Callback<A extends any[] = never[], V = void> = (...args: A) => V; export interface IDragDetectorOptions<T extends Element> { xThreshold?: number; yThreshold?: number; callback: Callback<[dragEvent: IDDEvent<T>]>; } export interface IDDEvent<T extends Element> { node: T; x: number; y: number; exit?: boolean; xDelta: number; yDelta: number; xDistance: number; yDistance: number; rect: Readonly<DOMRect>; } export type DragEvent<T extends HTMLElement = HTMLElement> = | DragMoveEvent | ReactMouseEvent<T> | ReactTouchEvent<T>; export type DragMoveEvent = MouseEvent | TouchEvent;