@yandex/ui
Version:
Yandex UI components
72 lines (71 loc) • 2.16 kB
TypeScript
import { RefObject } from 'react';
/**
* Вектор, выраженный двумя координатами
*/
declare type Vector = {
x: number;
y: number;
};
/**
* Объект состояния жеста, передается единственным аргументом в колбэк
*/
interface GestureState<T> {
/**
* Координаты пальца пользователя в момент предыдущего срабатывания функции
*/
previousPosition: Vector;
/**
* Координаты пальца пользователя в данный момент
*/
currentPosition: Vector;
/**
* Координаты начала жеста
*/
initialPosition: Vector;
/**
* Сдвиг по каждой из осей с момента начала жеста
*/
movement: Vector;
/**
* Расстояние, пройденное с момента предыдущего вызова функции
*/
delta: Vector;
/**
* Время начала жеста (timestamp)
*/
startTime: number;
/**
* Длительность жеста
*/
elapsedTime: number;
/**
* Признак начала жеста
*/
first: boolean;
/**
* Признак окончания жеста
*/
last: boolean;
/**
* Скорость движения пальца по каждой из осей
*/
velocity: Vector;
/**
* Исходный объект события
*/
event: TouchEvent;
/**
* Пользовательские данные
*/
data: T;
}
/**
* Тип колбэка
*/
declare type StateChangeCallback<T> = (arg: Readonly<GestureState<T>>) => void;
/**
* Предоставляет унифицированный интерфейс для работы с
* простыми тачевыми событиями (где используется один палец)
*/
export declare const useDrag: <T>(elementRef: RefObject<HTMLElement>, onStateChange: StateChangeCallback<T>) => void;
export {};