amis-rpc-design/node_modules/react-native/Libraries/Interaction/PanResponder.d.ts
2023-10-07 19:42:30 +08:00

203 lines
5.8 KiB
TypeScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
* @format
*/
import {GestureResponderHandlers} from '../../types/public/ReactNativeRenderer';
import {GestureResponderEvent} from '../Types/CoreEventTypes';
export interface PanResponderGestureState {
/**
* ID of the gestureState- persisted as long as there at least one touch on
*/
stateID: number;
/**
* the latest screen coordinates of the recently-moved touch
*/
moveX: number;
/**
* the latest screen coordinates of the recently-moved touch
*/
moveY: number;
/**
* the screen coordinates of the responder grant
*/
x0: number;
/**
* the screen coordinates of the responder grant
*/
y0: number;
/**
* accumulated distance of the gesture since the touch started
*/
dx: number;
/**
* accumulated distance of the gesture since the touch started
*/
dy: number;
/**
* current velocity of the gesture
*/
vx: number;
/**
* current velocity of the gesture
*/
vy: number;
/**
* Number of touches currently on screen
*/
numberActiveTouches: number;
// All `gestureState` accounts for timeStamps up until:
_accountsForMovesUpTo: number;
}
/**
* @see documentation of GestureResponderHandlers
*/
export interface PanResponderCallbacks {
onMoveShouldSetPanResponder?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
onStartShouldSetPanResponder?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
onPanResponderGrant?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderMove?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderRelease?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderTerminate?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onMoveShouldSetPanResponderCapture?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
onStartShouldSetPanResponderCapture?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
onPanResponderReject?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderStart?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderEnd?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => void)
| undefined;
onPanResponderTerminationRequest?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
onShouldBlockNativeResponder?:
| ((
e: GestureResponderEvent,
gestureState: PanResponderGestureState,
) => boolean)
| undefined;
}
export interface PanResponderInstance {
panHandlers: GestureResponderHandlers;
}
/**
* PanResponder reconciles several touches into a single gesture.
* It makes single-touch gestures resilient to extra touches,
* and can be used to recognize simple multi-touch gestures.
*
* It provides a predictable wrapper of the responder handlers provided by the gesture responder system.
* For each handler, it provides a new gestureState object alongside the normal event.
*/
export interface PanResponderStatic {
/**
* @param config Enhanced versions of all of the responder callbacks
* that provide not only the typical `ResponderSyntheticEvent`, but also the
* `PanResponder` gesture state. Simply replace the word `Responder` with
* `PanResponder` in each of the typical `onResponder*` callbacks. For
* example, the `config` object would look like:
*
* - `onMoveShouldSetPanResponder: (e, gestureState) => {...}`
* - `onMoveShouldSetPanResponderCapture: (e, gestureState) => {...}`
* - `onStartShouldSetPanResponder: (e, gestureState) => {...}`
* - `onStartShouldSetPanResponderCapture: (e, gestureState) => {...}`
* - `onPanResponderReject: (e, gestureState) => {...}`
* - `onPanResponderGrant: (e, gestureState) => {...}`
* - `onPanResponderStart: (e, gestureState) => {...}`
* - `onPanResponderEnd: (e, gestureState) => {...}`
* - `onPanResponderRelease: (e, gestureState) => {...}`
* - `onPanResponderMove: (e, gestureState) => {...}`
* - `onPanResponderTerminate: (e, gestureState) => {...}`
* - `onPanResponderTerminationRequest: (e, gestureState) => {...}`
* - `onShouldBlockNativeResponder: (e, gestureState) => {...}`
*
* In general, for events that have capture equivalents, we update the
* gestureState once in the capture phase and can use it in the bubble phase
* as well.
*
* Be careful with onStartShould* callbacks. They only reflect updated
* `gestureState` for start/end events that bubble/capture to the Node.
* Once the node is the responder, you can rely on every start/end event
* being processed by the gesture and `gestureState` being updated
* accordingly. (numberActiveTouches) may not be totally accurate unless you
* are the responder.
*/
create(config: PanResponderCallbacks): PanResponderInstance;
}
export const PanResponder: PanResponderStatic;
export type PanResponder = PanResponderStatic;