@gdjiami/hooks
Version:
react hooks for mygzb.com
38 lines (37 loc) • 1.13 kB
TypeScript
import { RefObject } from 'react';
import { GestureCoordinate as Coord } from './utils';
export interface GestureCoordinate extends Coord {
timestamp: number;
target: HTMLElement;
start?: GestureCoordinate;
previous?: GestureCoordinate;
deltaX: number;
deltaY: number;
delta: number;
distanceX: number;
distanceY: number;
distance: number;
velocity: number;
}
export interface GestureAction {
down: boolean;
first: boolean;
coordinate: GestureCoordinate;
}
export interface GestureOptions<T extends HTMLElement> {
onDown?: (info: GestureCoordinate) => false | void;
onMove?: (info: GestureCoordinate) => void;
onUp?: (info: GestureCoordinate) => void;
onAction?: (info: GestureAction) => void;
ref?: RefObject<T>;
}
export declare type GestureEvent = MouseEvent | TouchEvent;
/**
* 获取抽象化的mouse/touch事件
* TODO: pasive
* @param options
*/
export default function useGesture<T extends HTMLElement = HTMLDivElement>(options: GestureOptions<T>): {
ref: RefObject<T>;
interacting: boolean;
};