/** * A basic vector interface {x,y}. Used to identify points on the plane. */ interface XYCoords { x: number; y: number; } /** * Constants identifying swipe directions, as their names say. */ declare type SwipeDirection = "Up" | "Right" | "Left" | "Down"; /** * These are the supported event names and exactly match the event handlers in `this`. * This allows direct handler access by name respecting Typescript's type restrictions. */ declare type EventName = "rotate" | "touchStart" | "multipointStart" | "multipointEnd" | "pinch" | "swipe" | "tap" | "doubleTap" | "longTap" | "singleTap" | "pressMove" | "twoFingerPressMove" | "touchMove" | "touchEnd" | "touchCancel"; /** * A basic (extended) touch event interface for different AlloyFinger event types. */ interface AFTouchGenericEvent extends TouchEvent { _ename: N; angle: number; zoom: number; deltaX: number; deltaY: number; direction: SwipeDirection; } /** A simple touch event. Nothing special. */ export interface AFTouchEvent extends Pick, "touches"> { } /** A 'touchRotate' touch event. Has. */ export interface TouchRotateEvent extends Omit, "_ename" | "zoom" | "deltaX" | "deltaY" | "direction"> { } export interface TouchPinchEvent extends Omit, "_ename" | "angle" | "deltaX" | "deltaY" | "direction"> { } export interface TouchMoveEvent extends Omit, "_ename" | "angle" | "zoom" | "direction"> { } export interface TouchPressMoveEvent extends Omit, "_ename" | "angle" | "zoom" | "direction"> { } export interface TouchSwipeEvent extends Omit, "_ename" | "angle" | "zoom" | "deltaX" | "deltaY"> { } export declare type TouchCallback = (evt: E) => void; export interface AlloyFingerOptions { rotate?: TouchCallback; touchStart?: TouchCallback>; multipointStart?: TouchCallback>; multipointEnd?: TouchCallback>; pinch?: TouchCallback; swipe?: TouchCallback; tap?: TouchCallback>; doubleTap?: TouchCallback>; longTap?: TouchCallback>; singleTap?: TouchCallback>; pressMove?: TouchCallback; twoFingerPressMove?: TouchCallback; touchMove?: TouchCallback; touchEnd?: TouchCallback>; touchCancel?: TouchCallback>; } export declare type Handler> = (evt: E) => void; declare type Timer = ReturnType; /** * A HandlerAdmin holds all the added event handlers for one kind of event type. */ declare class HandlerAdmin { private handlers; private el; constructor(el: HTMLElement | SVGElement); add(handler: Handler>): void; del(handler?: Handler>): void; dispatch(..._args: any[]): void; } /** * @classdesc The AlloyFinger main class. Use this to add handler functions for * touch events to any HTML- or SVG-Element. **/ export declare class AlloyFinger { element: HTMLElement | SVGElement; preV: XYCoords; pinchStartLen: number; zoom: number; isDoubleTap: boolean; rotate: HandlerAdmin<"rotate">; touchStart: HandlerAdmin<"touchStart">; multipointStart: HandlerAdmin<"multipointStart">; multipointEnd: HandlerAdmin<"multipointEnd">; pinch: HandlerAdmin<"pinch">; swipe: HandlerAdmin<"swipe">; tap: HandlerAdmin<"tap">; doubleTap: HandlerAdmin<"doubleTap">; longTap: HandlerAdmin<"longTap">; singleTap: HandlerAdmin<"singleTap">; pressMove: HandlerAdmin<"pressMove">; twoFingerPressMove: HandlerAdmin<"twoFingerPressMove">; touchMove: HandlerAdmin<"touchMove">; touchEnd: HandlerAdmin<"touchEnd">; touchCancel: HandlerAdmin<"touchCancel">; _cancelAllHandler: () => void; delta: number; last: number; now: number; tapTimeout: Timer; singleTapTimeout: Timer; longTapTimeout: Timer; swipeTimeout: Timer; x1: number; x2: number; y1: number; y2: number; preTapPosition: XYCoords; _preventTap: boolean; sx2: number; sy2: number; constructor(el: HTMLElement | SVGElement, option: AlloyFingerOptions); start(evt: TouchEvent): void; move(event: TouchEvent): void; end(event: TouchEvent): void; cancelAll(): void; cancel(evt: TouchEvent): void; private _cancelLongTap; private _cancelSingleTap; private _swipeDirection; on(evt: N, handler: Handler>): void; off(evt: N, handler: Handler>): void; destroy(): void; } export default AlloyFinger;