You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
138 lines
4.4 KiB
138 lines
4.4 KiB
import React, { Component, TouchEventHandler } from 'react';
|
|
export declare type GestureHandler = (s: IGestureStatus) => void;
|
|
export declare type Finger = {
|
|
x: number;
|
|
y: number;
|
|
};
|
|
export declare type MultiFingerStatus = {
|
|
x: number;
|
|
y: number;
|
|
z: number;
|
|
angle: number;
|
|
};
|
|
export declare type SingeFingerMoveStatus = {
|
|
x: number;
|
|
y: number;
|
|
z: number;
|
|
time: number;
|
|
velocity: number;
|
|
angle: number;
|
|
};
|
|
export interface IGesture {
|
|
enableRotate?: boolean;
|
|
enablePinch?: boolean;
|
|
direction?: 'all' | 'vertical' | 'horizontal';
|
|
onPinch?: GestureHandler;
|
|
onPinchStart?: GestureHandler;
|
|
onPinchMove?: GestureHandler;
|
|
onPinchEnd?: GestureHandler;
|
|
onPinchCancel?: GestureHandler;
|
|
onPinchIn?: GestureHandler;
|
|
onPinchOut?: GestureHandler;
|
|
onRotate?: GestureHandler;
|
|
onRotateStart?: GestureHandler;
|
|
onRotateMove?: GestureHandler;
|
|
onRotateEnd?: GestureHandler;
|
|
onRotateCancel?: GestureHandler;
|
|
onPan?: GestureHandler;
|
|
onPanStart?: GestureHandler;
|
|
onPanMove?: GestureHandler;
|
|
onPanEnd?: GestureHandler;
|
|
onPanCancel?: GestureHandler;
|
|
onPanLeft?: GestureHandler;
|
|
onPanRight?: GestureHandler;
|
|
onPanUp?: GestureHandler;
|
|
onPanDown?: GestureHandler;
|
|
onTap?: GestureHandler;
|
|
onPress?: GestureHandler;
|
|
onPressUp?: GestureHandler;
|
|
onSwipe?: GestureHandler;
|
|
onSwipeLeft?: GestureHandler;
|
|
onSwipeRight?: GestureHandler;
|
|
onSwipeUp?: GestureHandler;
|
|
onSwipeDown?: GestureHandler;
|
|
onTouchStart?: TouchEventHandler<HTMLElement>;
|
|
onTouchMove?: TouchEventHandler<HTMLElement>;
|
|
onTouchEnd?: TouchEventHandler<HTMLElement>;
|
|
onTouchCancel?: TouchEventHandler<HTMLElement>;
|
|
}
|
|
export interface IGestureStatus {
|
|
startTime: number;
|
|
startTouches: Finger[];
|
|
startMutliFingerStatus?: MultiFingerStatus[];
|
|
time: number;
|
|
touches: Finger[];
|
|
preTouches: Finger[];
|
|
mutliFingerStatus?: MultiFingerStatus[];
|
|
moveStatus?: SingeFingerMoveStatus;
|
|
press?: boolean;
|
|
pan?: boolean;
|
|
availablePan?: boolean;
|
|
swipe?: boolean;
|
|
direction?: number;
|
|
pinch?: boolean;
|
|
scale?: number;
|
|
rotate?: boolean;
|
|
rotation?: number;
|
|
srcEvent: any;
|
|
}
|
|
export default class Gesture extends Component<IGesture, any> {
|
|
static defaultProps: {
|
|
enableRotate: boolean;
|
|
enablePinch: boolean;
|
|
direction: string;
|
|
};
|
|
state: {};
|
|
protected gesture: IGestureStatus;
|
|
protected event: any;
|
|
private pressTimer;
|
|
private directionSetting;
|
|
constructor(props: any);
|
|
triggerEvent: (name: any, ...args: any[]) => void;
|
|
triggerCombineEvent: (mainEventName: any, eventStatus: any, ...args: any[]) => void;
|
|
triggerSubEvent: (mainEventName: any, eventStatus: any, ...args: any[]) => void;
|
|
triggerPinchEvent: (mainEventName: any, eventStatus: any, ...args: any[]) => void;
|
|
initPressTimer: () => void;
|
|
cleanPressTimer: () => void;
|
|
setGestureState: (params: any) => void;
|
|
getGestureState: () => {
|
|
startTime: number;
|
|
startTouches: Finger[];
|
|
startMutliFingerStatus?: MultiFingerStatus[] | undefined;
|
|
time: number;
|
|
touches: Finger[];
|
|
preTouches: Finger[];
|
|
mutliFingerStatus?: MultiFingerStatus[] | undefined;
|
|
moveStatus?: SingeFingerMoveStatus | undefined;
|
|
press?: boolean | undefined;
|
|
pan?: boolean | undefined;
|
|
availablePan?: boolean | undefined;
|
|
swipe?: boolean | undefined;
|
|
direction?: number | undefined;
|
|
pinch?: boolean | undefined;
|
|
scale?: number | undefined;
|
|
rotate?: boolean | undefined;
|
|
rotation?: number | undefined;
|
|
srcEvent: any;
|
|
};
|
|
cleanGestureState: () => void;
|
|
getTouches: (e: any) => any;
|
|
triggerUserCb: (status: any, e: any) => void;
|
|
_handleTouchStart: (e: any) => void;
|
|
initGestureStatus: (e: any) => void;
|
|
checkIfMultiTouchStart: () => void;
|
|
_handleTouchMove: (e: any) => void;
|
|
checkIfMultiTouchMove: () => void;
|
|
allowGesture: () => boolean;
|
|
checkIfSingleTouchMove: () => void;
|
|
checkIfMultiTouchEnd: (status: any) => void;
|
|
updateGestureStatus: (e: any) => void;
|
|
_handleTouchEnd: (e: any) => void;
|
|
_handleTouchCancel: (e: any) => void;
|
|
triggerAllowEvent: (type: any, status: any) => void;
|
|
doSingleTouchEnd: (status: any) => void;
|
|
componentWillUnmount(): void;
|
|
getTouchAction: () => "auto" | "pan-x pan-y" | "pan-x" | "pan-y";
|
|
render(): React.ReactElement<any>;
|
|
}
|