// 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 | React.Ref[]; simultaneousHandlers?: React.Ref | React.Ref[]; 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; 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 {} export class BaseButton extends React.Component {} export class RectButton extends React.Component {} export class BorderlessButton extends React.Component< BorderlessButtonProperties > {} export interface ContainedTouchableProperties { containerStyle?: StyleProp } 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 extends React.Component< NativeViewGestureHandlerProperties & FlatListProperties > { 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; export function gestureHandlerRootHOC

( Component: React.ComponentType

, containerStyles?: StyleProp ): React.ComponentType

; export function createNativeWrapper

( Component: React.ComponentType

, config: NativeViewGestureHandlerProperties ): React.ComponentType

; } declare module 'react-native-gesture-handler/Swipeable' { import { Animated, StyleProp, ViewStyle } from 'react-native'; import { PanGestureHandlerProperties } from 'react-native-gesture-handler' type SwipeableExcludes = Exclude interface SwipeableProperties extends Pick { 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; childrenContainerStyle?: StyleProp; } export default class Swipeable extends React.Component { 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; } interface DrawerMovementOptionType { velocity?: number; } export default class DrawerLayout extends React.Component { openDrawer: (options?: DrawerMovementOptionType) => void; closeDrawer: (options?: DrawerMovementOptionType) => void; } }