586 lines
17 KiB
TypeScript
586 lines
17 KiB
TypeScript
// Project: https://github.com/software-mansion/react-native-gesture-handler
|
|
// TypeScript Version: 2.6.2
|
|
|
|
declare module 'react-native-gesture-handler' {
|
|
import * as React from 'react';
|
|
import {
|
|
Animated,
|
|
FlatListProperties,
|
|
ScrollViewProperties,
|
|
SwitchProperties,
|
|
TextInputProperties,
|
|
DrawerLayoutAndroidProperties,
|
|
TouchableHighlightProperties,
|
|
TouchableOpacityProperties,
|
|
TouchableNativeFeedbackProperties,
|
|
TouchableWithoutFeedbackProperties,
|
|
Insets,
|
|
ViewStyle,
|
|
StyleProp,
|
|
ViewProps,
|
|
} from 'react-native';
|
|
|
|
/* GESTURE HANDLER STATE */
|
|
|
|
export enum Directions {
|
|
RIGHT = 1,
|
|
LEFT = 2,
|
|
UP = 4,
|
|
DOWN = 8,
|
|
}
|
|
|
|
export enum State {
|
|
UNDETERMINED = 0,
|
|
FAILED,
|
|
BEGAN,
|
|
CANCELLED,
|
|
ACTIVE,
|
|
END,
|
|
}
|
|
|
|
/* STATE CHANGE EVENTS */
|
|
|
|
export interface GestureHandlerGestureEventNativeEvent {
|
|
handlerTag: number;
|
|
numberOfPointers: number;
|
|
state: State;
|
|
}
|
|
|
|
export interface GestureHandlerStateChangeNativeEvent {
|
|
handlerTag: number;
|
|
numberOfPointers: number;
|
|
state: State;
|
|
oldState: State;
|
|
}
|
|
|
|
export interface GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent;
|
|
}
|
|
|
|
export interface GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent;
|
|
}
|
|
|
|
interface NativeViewGestureHandlerEventExtra {
|
|
pointerInside: boolean;
|
|
}
|
|
|
|
export interface NativeViewGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
NativeViewGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface NativeViewGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
NativeViewGestureHandlerEventExtra;
|
|
}
|
|
|
|
interface TapGestureHandlerEventExtra {
|
|
x: number;
|
|
y: number;
|
|
absoluteX: number;
|
|
absoluteY: number;
|
|
}
|
|
|
|
interface ForceTouchGestureHandlerEventExtra {
|
|
x: number;
|
|
y: number;
|
|
absoluteX: number;
|
|
absoluteY: number;
|
|
force: number;
|
|
}
|
|
|
|
export interface TapGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
TapGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface TapGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
TapGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface ForceTouchGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
ForceTouchGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface LongPressGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
LongPressGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface ForceTouchGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
ForceTouchGestureHandlerEventExtra;
|
|
}
|
|
|
|
interface LongPressGestureHandlerEventExtra {
|
|
x: number;
|
|
y: number;
|
|
absoluteX: number;
|
|
absoluteY: number;
|
|
}
|
|
|
|
export interface LongPressGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
LongPressGestureHandlerEventExtra;
|
|
}
|
|
|
|
interface PanGestureHandlerEventExtra {
|
|
x: number;
|
|
y: number;
|
|
absoluteX: number;
|
|
absoluteY: number;
|
|
translationX: number;
|
|
translationY: number;
|
|
velocityX: number;
|
|
velocityY: number;
|
|
}
|
|
|
|
export interface PanGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
PanGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface PanGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
PanGestureHandlerEventExtra;
|
|
}
|
|
|
|
interface PinchGestureHandlerEventExtra {
|
|
scale: number;
|
|
focalX: number;
|
|
focalY: number;
|
|
velocity: number;
|
|
}
|
|
|
|
export interface PinchGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
PinchGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface PinchGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
PinchGestureHandlerEventExtra;
|
|
}
|
|
|
|
interface RotationGestureHandlerEventExtra {
|
|
rotation: number;
|
|
anchorX: number;
|
|
anchorY: number;
|
|
velocity: number;
|
|
}
|
|
|
|
export interface RotationGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
RotationGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface RotationGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent &
|
|
RotationGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface FlingGestureHandlerStateChangeEvent
|
|
extends GestureHandlerStateChangeEvent {
|
|
nativeEvent: GestureHandlerStateChangeNativeEvent &
|
|
FlingGestureHandlerEventExtra;
|
|
}
|
|
|
|
export interface FlingGestureHandlerGestureEvent
|
|
extends GestureHandlerGestureEvent {
|
|
nativeEvent: GestureHandlerGestureEventNativeEvent;
|
|
}
|
|
|
|
interface FlingGestureHandlerEventExtra {
|
|
x: number;
|
|
y: number;
|
|
absoluteX: number;
|
|
absoluteY: number;
|
|
}
|
|
|
|
/* GESTURE HANDLERS PROPERTIES */
|
|
|
|
export interface GestureHandlerProperties {
|
|
id?: string;
|
|
enabled?: boolean;
|
|
waitFor?: React.Ref<any> | React.Ref<any>[];
|
|
simultaneousHandlers?: React.Ref<any> | React.Ref<any>[];
|
|
shouldCancelWhenOutside?: boolean;
|
|
hitSlop?:
|
|
| number
|
|
| {
|
|
left?: number;
|
|
right?: number;
|
|
top?: number;
|
|
bottom?: number;
|
|
vertical?: number;
|
|
horizontal?: number;
|
|
}
|
|
| {
|
|
width: number;
|
|
left: number;
|
|
}
|
|
| {
|
|
width: number;
|
|
right: number;
|
|
}
|
|
| {
|
|
height: number;
|
|
top: number;
|
|
}
|
|
| {
|
|
height: number;
|
|
bottom: number;
|
|
};
|
|
}
|
|
|
|
export interface NativeViewGestureHandlerProperties
|
|
extends GestureHandlerProperties {
|
|
shouldActivateOnStart?: boolean;
|
|
disallowInterruption?: boolean;
|
|
onGestureEvent?: (event: NativeViewGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (
|
|
event: NativeViewGestureHandlerStateChangeEvent
|
|
) => void;
|
|
}
|
|
|
|
export interface TapGestureHandlerProperties extends GestureHandlerProperties {
|
|
minPointers?: number;
|
|
maxDurationMs?: number;
|
|
maxDelayMs?: number;
|
|
numberOfTaps?: number;
|
|
maxDeltaX?: number;
|
|
maxDeltaY?: number;
|
|
maxDist?: number;
|
|
onGestureEvent?: (event: TapGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: TapGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
export interface ForceTouchGestureHandlerProperties extends GestureHandlerProperties {
|
|
minForce?: number,
|
|
maxForce?: number,
|
|
feedbackOnActivation?: boolean,
|
|
onGestureEvent?: (event: ForceTouchGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: ForceTouchGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
export interface LongPressGestureHandlerProperties
|
|
extends GestureHandlerProperties {
|
|
minDurationMs?: number;
|
|
maxDist?: number;
|
|
onGestureEvent?: (event: LongPressGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: LongPressGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
export interface PanGestureHandlerProperties extends GestureHandlerProperties {
|
|
/** @deprecated use activeOffsetX*/
|
|
minDeltaX?: number;
|
|
/** @deprecated use activeOffsetY*/
|
|
minDeltaY?: number;
|
|
/** @deprecated use failOffsetX*/
|
|
maxDeltaX?: number;
|
|
/** @deprecated use failOffsetY*/
|
|
maxDeltaY?: number;
|
|
/** @deprecated use activeOffsetX*/
|
|
minOffsetX?: number;
|
|
/** @deprecated use failOffsetY*/
|
|
minOffsetY?: number;
|
|
activeOffsetY?: number | number[];
|
|
activeOffsetX?: number | number[];
|
|
failOffsetY?: number | number[];
|
|
failOffsetX?: number | number[];
|
|
minDist?: number;
|
|
minVelocity?: number;
|
|
minVelocityX?: number;
|
|
minVelocityY?: number;
|
|
minPointers?: number;
|
|
maxPointers?: number;
|
|
avgTouches?: boolean;
|
|
onGestureEvent?: (event: PanGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: PanGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
export interface PinchGestureHandlerProperties
|
|
extends GestureHandlerProperties {
|
|
onGestureEvent?: (event: PinchGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: PinchGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
export interface RotationGestureHandlerProperties
|
|
extends GestureHandlerProperties {
|
|
onGestureEvent?: (event: RotationGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (
|
|
event: RotationGestureHandlerStateChangeEvent
|
|
) => void;
|
|
}
|
|
|
|
export interface FlingGestureHandlerProperties
|
|
extends GestureHandlerProperties {
|
|
direction?: number;
|
|
numberOfPointers?: number;
|
|
onGestureEvent?: (event: FlingGestureHandlerGestureEvent) => void;
|
|
onHandlerStateChange?: (event: FlingGestureHandlerStateChangeEvent) => void;
|
|
}
|
|
|
|
/* GESTURE HANDLERS CLASSES */
|
|
|
|
export class NativeViewGestureHandler extends React.Component<
|
|
NativeViewGestureHandlerProperties
|
|
> {}
|
|
|
|
export class TapGestureHandler extends React.Component<
|
|
TapGestureHandlerProperties
|
|
> {}
|
|
|
|
export class LongPressGestureHandler extends React.Component<
|
|
LongPressGestureHandlerProperties
|
|
> {}
|
|
|
|
export class PanGestureHandler extends React.Component<
|
|
PanGestureHandlerProperties
|
|
> {}
|
|
|
|
export class PinchGestureHandler extends React.Component<
|
|
PinchGestureHandlerProperties
|
|
> {}
|
|
|
|
export class RotationGestureHandler extends React.Component<
|
|
RotationGestureHandlerProperties
|
|
> {}
|
|
|
|
export class FlingGestureHandler extends React.Component<
|
|
FlingGestureHandlerProperties
|
|
> {}
|
|
|
|
export class ForceTouchGestureHandler extends React.Component<
|
|
ForceTouchGestureHandlerProperties
|
|
> {}
|
|
|
|
/* BUTTONS PROPERTIES */
|
|
|
|
export interface RawButtonProperties
|
|
extends NativeViewGestureHandlerProperties {
|
|
exclusive?: boolean;
|
|
testID?: string;
|
|
accessibilityLabel?: string;
|
|
}
|
|
|
|
export interface BaseButtonProperties extends RawButtonProperties {
|
|
onPress?: (pointerInside: boolean) => void;
|
|
onActiveStateChange?: (active: boolean) => void;
|
|
style?: StyleProp<ViewStyle>;
|
|
rippleColor?: string;
|
|
}
|
|
|
|
export interface RectButtonProperties extends BaseButtonProperties {
|
|
underlayColor?: string;
|
|
activeOpacity?: number;
|
|
}
|
|
|
|
export interface BorderlessButtonProperties extends BaseButtonProperties {
|
|
borderless?: boolean;
|
|
activeOpacity?: number;
|
|
}
|
|
|
|
/* BUTTONS CLASSES */
|
|
|
|
export class RawButton extends React.Component<RawButtonProperties> {}
|
|
|
|
export class BaseButton extends React.Component<BaseButtonProperties> {}
|
|
|
|
export class RectButton extends React.Component<RectButtonProperties> {}
|
|
|
|
export class BorderlessButton extends React.Component<
|
|
BorderlessButtonProperties
|
|
> {}
|
|
|
|
export interface ContainedTouchableProperties {
|
|
containerStyle?: StyleProp<ViewStyle>
|
|
}
|
|
|
|
export class TouchableHighlight extends React.Component<
|
|
TouchableHighlightProperties | ContainedTouchableProperties
|
|
> {}
|
|
|
|
export class TouchableNativeFeedback extends React.Component<
|
|
TouchableNativeFeedbackProperties | ContainedTouchableProperties
|
|
> {}
|
|
|
|
export class TouchableOpacity extends React.Component<
|
|
TouchableOpacityProperties | ContainedTouchableProperties
|
|
> {}
|
|
|
|
export class TouchableWithoutFeedback extends React.Component<
|
|
TouchableWithoutFeedbackProperties | ContainedTouchableProperties
|
|
> {}
|
|
|
|
/* GESTURE HANDLER WRAPPED CLASSES */
|
|
|
|
export class ScrollView extends React.Component<
|
|
NativeViewGestureHandlerProperties & ScrollViewProperties
|
|
> {
|
|
scrollTo(y?: number | { x?: number; y?: number; animated?: boolean }, x?: number, animated?: boolean): void;
|
|
scrollToEnd(options?: { animated: boolean }): void;
|
|
}
|
|
|
|
export class Switch extends React.Component<
|
|
NativeViewGestureHandlerProperties & SwitchProperties
|
|
> {}
|
|
|
|
export class TextInput extends React.Component<
|
|
NativeViewGestureHandlerProperties & TextInputProperties
|
|
> {}
|
|
|
|
export class DrawerLayoutAndroid extends React.Component<
|
|
NativeViewGestureHandlerProperties & DrawerLayoutAndroidProperties
|
|
> {}
|
|
|
|
/* OTHER */
|
|
|
|
export class FlatList<ItemT> extends React.Component<
|
|
NativeViewGestureHandlerProperties & FlatListProperties<ItemT>
|
|
> {
|
|
scrollToEnd: (params?: { animated?: boolean }) => void;
|
|
scrollToIndex: (params: { animated?: boolean; index: number; viewOffset?: number; viewPosition?: number }) => void;
|
|
scrollToItem: (params: { animated?: boolean; item: ItemT; viewPosition?: number }) => void;
|
|
scrollToOffset: (params: { animated?: boolean; offset: number }) => void;
|
|
}
|
|
|
|
export const GestureHandlerRootView: React.ComponentType<ViewProps>;
|
|
|
|
export function gestureHandlerRootHOC<P = {}>(
|
|
Component: React.ComponentType<P>,
|
|
containerStyles?: StyleProp<ViewStyle>
|
|
): React.ComponentType<P>;
|
|
|
|
export function createNativeWrapper<P = {}>(
|
|
Component: React.ComponentType<P>,
|
|
config: NativeViewGestureHandlerProperties
|
|
): React.ComponentType<P>;
|
|
}
|
|
|
|
declare module 'react-native-gesture-handler/Swipeable' {
|
|
import { Animated, StyleProp, ViewStyle } from 'react-native';
|
|
import { PanGestureHandlerProperties } from 'react-native-gesture-handler'
|
|
type SwipeableExcludes = Exclude<keyof PanGestureHandlerProperties, 'onGestureEvent' | 'onHandlerStateChange'>
|
|
|
|
interface SwipeableProperties extends Pick<PanGestureHandlerProperties, SwipeableExcludes> {
|
|
friction?: number;
|
|
leftThreshold?: number;
|
|
rightThreshold?: number;
|
|
overshootLeft?: boolean;
|
|
overshootRight?: boolean;
|
|
overshootFriction?: number,
|
|
onSwipeableLeftOpen?: () => void;
|
|
onSwipeableRightOpen?: () => void;
|
|
onSwipeableOpen?: () => void;
|
|
onSwipeableClose?: () => void;
|
|
onSwipeableLeftWillOpen?: () => void;
|
|
onSwipeableRightWillOpen?: () => void;
|
|
onSwipeableWillOpen?: () => void;
|
|
onSwipeableWillClose?: () => void;
|
|
/**
|
|
*
|
|
* This map describes the values to use as inputRange for extra interpolation:
|
|
* AnimatedValue: [startValue, endValue]
|
|
*
|
|
* progressAnimatedValue: [0, 1]
|
|
* dragAnimatedValue: [0, +]
|
|
*
|
|
* To support `rtl` flexbox layouts use `flexDirection` styling.
|
|
* */
|
|
renderLeftActions?: (
|
|
progressAnimatedValue: Animated.AnimatedInterpolation,
|
|
dragAnimatedValue: Animated.AnimatedInterpolation
|
|
) => React.ReactNode;
|
|
/**
|
|
*
|
|
* This map describes the values to use as inputRange for extra interpolation:
|
|
* AnimatedValue: [startValue, endValue]
|
|
*
|
|
* progressAnimatedValue: [0, 1]
|
|
* dragAnimatedValue: [0, -]
|
|
*
|
|
* To support `rtl` flexbox layouts use `flexDirection` styling.
|
|
* */
|
|
renderRightActions?: (
|
|
progressAnimatedValue: Animated.AnimatedInterpolation,
|
|
dragAnimatedValue: Animated.AnimatedInterpolation
|
|
) => React.ReactNode;
|
|
useNativeAnimations?: boolean;
|
|
containerStyle?: StyleProp<ViewStyle>;
|
|
childrenContainerStyle?: StyleProp<ViewStyle>;
|
|
}
|
|
|
|
export default class Swipeable extends React.Component<SwipeableProperties> {
|
|
close: () => void;
|
|
openLeft: () => void;
|
|
openRight: () => void;
|
|
}
|
|
}
|
|
|
|
declare module 'react-native-gesture-handler/DrawerLayout' {
|
|
import { Animated, StatusBarAnimation, StyleProp, ViewStyle } from 'react-native';
|
|
|
|
export type DrawerPosition = 'left' | 'right';
|
|
|
|
export type DrawerState = 'Idle' | 'Dragging' | 'Settling';
|
|
|
|
export type DrawerType = 'front' | 'back' | 'slide';
|
|
|
|
export type DrawerLockMode = 'unlocked' | 'locked-closed' | 'locked-open';
|
|
|
|
export type DrawerKeyboardDismissMode = 'none' | 'on-drag';
|
|
|
|
export interface DrawerLayoutProperties {
|
|
renderNavigationView: (
|
|
progressAnimatedValue: Animated.Value
|
|
) => React.ReactNode;
|
|
drawerPosition?: DrawerPosition;
|
|
drawerWidth?: number;
|
|
drawerBackgroundColor?: string;
|
|
drawerLockMode?: DrawerLockMode;
|
|
keyboardDismissMode?: DrawerKeyboardDismissMode;
|
|
onDrawerClose?: () => void;
|
|
onDrawerOpen?: () => void;
|
|
onDrawerStateChanged?: (
|
|
newState: DrawerState,
|
|
drawerWillShow: boolean
|
|
) => void;
|
|
useNativeAnimations?: boolean;
|
|
|
|
drawerType?: DrawerType;
|
|
edgeWidth?: number;
|
|
minSwipeDistance?: number;
|
|
hideStatusBar?: boolean;
|
|
statusBarAnimation?: StatusBarAnimation;
|
|
overlayColor?: string;
|
|
contentContainerStyle?: StyleProp<ViewStyle>;
|
|
}
|
|
|
|
interface DrawerMovementOptionType {
|
|
velocity?: number;
|
|
}
|
|
|
|
export default class DrawerLayout extends React.Component<DrawerLayoutProperties> {
|
|
openDrawer: (options?: DrawerMovementOptionType) => void;
|
|
closeDrawer: (options?: DrawerMovementOptionType) => void;
|
|
}
|
|
}
|