react-native-gesture-handler 2.7.1 → 2.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +10 -5
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +7 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +6 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +35 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNManualHandler.m +24 -8
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +17 -10
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +4 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +117 -0
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -2
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +17 -10
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +28 -3
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +0 -5
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -1
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +4 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +25 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
- package/lib/typescript/components/DrawerLayout.d.ts +7 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +3 -1
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/package.json +14 -10
- package/src/RNGestureHandlerModule.macos.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/RNGestureHandlerModule.windows.ts +140 -0
- package/src/components/DrawerLayout.tsx +14 -8
- package/src/components/Swipeable.tsx +2 -4
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/createHandler.tsx +13 -15
- package/src/handlers/gestureHandlerCommon.ts +9 -4
- package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
- package/src/handlers/gestures/GestureDetector.tsx +36 -16
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +2 -3
- package/src/web/handlers/GestureHandler.ts +30 -11
- package/src/web/handlers/LongPressGestureHandler.ts +0 -2
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
- package/src/web/handlers/PanGestureHandler.ts +0 -6
- package/src/web/handlers/PinchGestureHandler.ts +0 -2
- package/src/web/handlers/RotationGestureHandler.ts +2 -5
- package/src/web/handlers/TapGestureHandler.ts +0 -2
- package/src/web/interfaces.ts +3 -0
- package/src/web/tools/InteractionManager.ts +2 -3
- package/src/web_hammer/GestureHandler.ts +6 -8
- package/src/web_hammer/NodeManager.ts +3 -1
- package/src/web_hammer/PanGestureHandler.ts +12 -6
- package/android/lib/build.gradle +0 -28
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
2
|
import { Component } from 'react';
|
|
3
3
|
import { Animated, StatusBarAnimation, StyleProp, ViewStyle } from 'react-native';
|
|
4
|
+
import { UserSelect } from '../handlers/gestureHandlerCommon';
|
|
4
5
|
import { PanGestureHandler } from '../handlers/PanGestureHandler';
|
|
5
6
|
export declare type DrawerPosition = 'left' | 'right';
|
|
6
7
|
export declare type DrawerState = 'Idle' | 'Dragging' | 'Settling';
|
|
@@ -79,6 +80,12 @@ export interface DrawerLayoutProps {
|
|
|
79
80
|
onDrawerSlide?: (position: number) => void;
|
|
80
81
|
onGestureRef?: (ref: PanGestureHandler) => void;
|
|
81
82
|
children?: React.ReactNode | ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
|
|
83
|
+
/**
|
|
84
|
+
* @default 'none'
|
|
85
|
+
* Defines which userSelect property should be used.
|
|
86
|
+
* Values: 'none'|'text'|'auto'
|
|
87
|
+
*/
|
|
88
|
+
userSelect?: UserSelect;
|
|
82
89
|
}
|
|
83
90
|
export declare type DrawerLayoutState = {
|
|
84
91
|
dragX: Animated.Value;
|
|
@@ -22,7 +22,7 @@ export declare type NativeViewGestureHandlerPayload = {
|
|
|
22
22
|
*/
|
|
23
23
|
pointerInside: boolean;
|
|
24
24
|
};
|
|
25
|
-
export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
|
|
25
|
+
export declare const nativeViewProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange", "shouldActivateOnStart", "disallowInterruption"];
|
|
26
26
|
export declare const nativeViewHandlerName = "NativeViewGestureHandler";
|
|
27
27
|
export declare type NativeViewGestureHandler = typeof NativeViewGestureHandler;
|
|
28
28
|
export declare const NativeViewGestureHandler: import("react").ComponentType<NativeViewGestureHandlerProps & import("react").RefAttributes<any>>;
|
|
@@ -135,5 +135,5 @@ export interface PanGestureHandlerProps extends BaseGestureHandlerProps<PanGestu
|
|
|
135
135
|
export declare const panHandlerName = "PanGestureHandler";
|
|
136
136
|
export declare type PanGestureHandler = typeof PanGestureHandler;
|
|
137
137
|
export declare const PanGestureHandler: import("react").ComponentType<PanGestureHandlerProps & import("react").RefAttributes<any>>;
|
|
138
|
-
export declare function managePanProps(props: PanGestureHandlerProps): PanGestureHandlerProps & Partial<Record<"
|
|
138
|
+
export declare function managePanProps(props: PanGestureHandlerProps): PanGestureHandlerProps & Partial<Record<"activeOffsetXStart" | "activeOffsetXEnd" | "failOffsetXStart" | "failOffsetXEnd" | "activeOffsetYStart" | "activeOffsetYEnd" | "failOffsetYStart" | "failOffsetYEnd", number>>;
|
|
139
139
|
export {};
|
|
@@ -2,7 +2,7 @@ import * as React from 'react';
|
|
|
2
2
|
import { State } from '../State';
|
|
3
3
|
import { TouchEventType } from '../TouchEventType';
|
|
4
4
|
import { ValueOf } from '../typeUtils';
|
|
5
|
-
export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
|
|
5
|
+
export declare const baseGestureHandlerProps: readonly ["id", "enabled", "shouldCancelWhenOutside", "hitSlop", "cancelsTouchesInView", "userSelect", "waitFor", "simultaneousHandlers", "onBegan", "onFailed", "onCancelled", "onActivated", "onEnded", "onGestureEvent", "onHandlerStateChange"];
|
|
6
6
|
export declare const baseGestureHandlerWithMonitorProps: string[];
|
|
7
7
|
export interface GestureEventPayload {
|
|
8
8
|
handlerTag: number;
|
|
@@ -13,6 +13,7 @@ export interface HandlerStateChangeEventPayload extends GestureEventPayload {
|
|
|
13
13
|
oldState: ValueOf<typeof State>;
|
|
14
14
|
}
|
|
15
15
|
export declare type HitSlop = number | Partial<Record<'left' | 'right' | 'top' | 'bottom' | 'vertical' | 'horizontal', number>> | Record<'width' | 'left', number> | Record<'width' | 'right', number> | Record<'height' | 'top', number> | Record<'height' | 'bottom', number>;
|
|
16
|
+
export declare type UserSelect = 'none' | 'auto' | 'text';
|
|
16
17
|
export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
|
|
17
18
|
nativeEvent: Readonly<GestureEventPayload & ExtraEventPayloadT>;
|
|
18
19
|
}
|
|
@@ -40,6 +41,7 @@ export declare type CommonGestureConfig = {
|
|
|
40
41
|
enabled?: boolean;
|
|
41
42
|
shouldCancelWhenOutside?: boolean;
|
|
42
43
|
hitSlop?: HitSlop;
|
|
44
|
+
userSelect?: UserSelect;
|
|
43
45
|
};
|
|
44
46
|
export declare type BaseGestureHandlerProps<ExtraEventPayloadT extends Record<string, unknown> = Record<string, unknown>> = CommonGestureConfig & {
|
|
45
47
|
id?: string;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { GestureType, HandlerCallbacks } from './gesture';
|
|
3
3
|
import { SharedValue } from './reanimatedWrapper';
|
|
4
|
+
import { UserSelect } from '../gestureHandlerCommon';
|
|
4
5
|
import { ComposedGesture } from './gestureComposition';
|
|
5
6
|
export declare type GestureConfigReference = {
|
|
6
7
|
config: GestureType[];
|
|
@@ -10,7 +11,8 @@ export declare type GestureConfigReference = {
|
|
|
10
11
|
useReanimatedHook: boolean;
|
|
11
12
|
};
|
|
12
13
|
interface GestureDetectorProps {
|
|
13
|
-
gesture
|
|
14
|
+
gesture: ComposedGesture | GestureType;
|
|
15
|
+
userSelect?: UserSelect;
|
|
14
16
|
children?: React.ReactNode;
|
|
15
17
|
}
|
|
16
18
|
export declare const GestureDetector: (props: GestureDetectorProps) => JSX.Element;
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { AdaptedEvent } from '../interfaces';
|
|
1
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
|
2
2
|
import GestureHandler from './GestureHandler';
|
|
3
3
|
export default class ManualGestureHandler extends GestureHandler {
|
|
4
4
|
init(ref: number, propsRef: React.RefObject<unknown>): void;
|
|
5
|
+
updateGestureConfig({ enabled, ...props }: Config): void;
|
|
5
6
|
protected onPointerDown(event: AdaptedEvent): void;
|
|
6
7
|
protected onPointerAdd(event: AdaptedEvent): void;
|
|
7
8
|
protected onPointerMove(event: AdaptedEvent): void;
|
|
9
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void;
|
|
8
10
|
protected onPointerUp(event: AdaptedEvent): void;
|
|
9
11
|
protected onPointerRemove(event: AdaptedEvent): void;
|
|
10
12
|
protected onPointerCancel(event: AdaptedEvent): void;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UserSelect } from '../handlers/gestureHandlerCommon';
|
|
1
2
|
import { Directions } from '../Directions';
|
|
2
3
|
import { State } from '../State';
|
|
3
4
|
export interface HitSlop {
|
|
@@ -13,13 +14,14 @@ export interface HitSlop {
|
|
|
13
14
|
export interface Handler {
|
|
14
15
|
handlerTag: number;
|
|
15
16
|
}
|
|
16
|
-
declare type ConfigArgs = number | boolean | HitSlop | Directions | Handler[] | null | undefined;
|
|
17
|
+
declare type ConfigArgs = number | boolean | HitSlop | UserSelect | Directions | Handler[] | null | undefined;
|
|
17
18
|
export interface Config extends Record<string, ConfigArgs> {
|
|
18
19
|
enabled?: boolean;
|
|
19
20
|
simultaneousHandlers?: Handler[] | null;
|
|
20
21
|
waitFor?: Handler[] | null;
|
|
21
22
|
hitSlop?: HitSlop;
|
|
22
23
|
shouldCancelWhenOutside?: boolean;
|
|
24
|
+
userSelect?: UserSelect;
|
|
23
25
|
activateAfterLongPress?: number;
|
|
24
26
|
failOffsetXStart?: number;
|
|
25
27
|
failOffsetYStart?: number;
|
|
@@ -2,10 +2,10 @@ import { ValueOf } from '../../typeUtils';
|
|
|
2
2
|
import { Gestures } from '../../RNGestureHandlerModule.web';
|
|
3
3
|
export default abstract class NodeManager {
|
|
4
4
|
private static gestures;
|
|
5
|
-
static getHandler(tag: number): import("../handlers/
|
|
5
|
+
static getHandler(tag: number): import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default;
|
|
6
6
|
static createGestureHandler(handlerTag: number, handler: InstanceType<ValueOf<typeof Gestures>>): void;
|
|
7
7
|
static dropGestureHandler(handlerTag: number): void;
|
|
8
8
|
static getNodes(): {
|
|
9
|
-
[x: number]: import("../handlers/
|
|
9
|
+
[x: number]: import("../handlers/NativeViewGestureHandler").default | import("../handlers/PanGestureHandler").default | import("../handlers/TapGestureHandler").default | import("../handlers/LongPressGestureHandler").default | import("../handlers/PinchGestureHandler").default | import("../handlers/RotationGestureHandler").default | import("../handlers/FlingGestureHandler").default | import("../handlers/ManualGestureHandler").default;
|
|
10
10
|
};
|
|
11
11
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-gesture-handler",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.8.0",
|
|
4
4
|
"description": "Experimental implementation of a new declarative API for gesture handling in react-native",
|
|
5
5
|
"scripts": {
|
|
6
|
-
"prepare": "bob build",
|
|
6
|
+
"prepare": "bob build && husky install",
|
|
7
7
|
"test": "jest",
|
|
8
8
|
"build": "yarn tsc -p tsconfig.build.json",
|
|
9
9
|
"precommit": "lint-staged",
|
|
10
10
|
"release": "npm login && release-it",
|
|
11
11
|
"ts-check": "yarn tsc --noEmit",
|
|
12
|
-
"
|
|
12
|
+
"format:js": "prettier --write --list-different './{src,example,FabricExample}/**/*.{js,jsx,ts,tsx}'",
|
|
13
|
+
"format:android": "node ./scripts/format-android.js",
|
|
14
|
+
"format:ios": "find ios/ -iname *.h -o -iname *.m -o -iname *.cpp -o -iname *.mm | xargs clang-format -i",
|
|
15
|
+
"lint:js": "eslint --ext '.js,.ts,.tsx' src/ example/src FabricExample/src && yarn prettier --check './{src,example,FabricExample}/**/*.{js,jsx,ts,tsx}'",
|
|
16
|
+
"lint:js-root": "eslint --ext '.js,.ts,.tsx' src/ && yarn prettier --check './src/**/*.{js,jsx,ts,tsx}'",
|
|
17
|
+
"lint:android": "./android/gradlew -p android spotlessCheck -q"
|
|
13
18
|
},
|
|
14
19
|
"react-native": "src/index.ts",
|
|
15
20
|
"main": "lib/commonjs/index.js",
|
|
@@ -28,8 +33,6 @@
|
|
|
28
33
|
"android/src/main/jni/",
|
|
29
34
|
"android/src/fabric/java",
|
|
30
35
|
"android/src/paper/java",
|
|
31
|
-
"android/lib/build.gradle",
|
|
32
|
-
"android/lib/src/main/java/",
|
|
33
36
|
"android/common/src/main/java/",
|
|
34
37
|
"android/reanimated/src/main/java/",
|
|
35
38
|
"android/noreanimated/src/main/java/",
|
|
@@ -85,17 +88,18 @@
|
|
|
85
88
|
"@typescript-eslint/eslint-plugin": "^4.33.0",
|
|
86
89
|
"@typescript-eslint/parser": "^4.33.0",
|
|
87
90
|
"babel-jest": "^26.6.3",
|
|
91
|
+
"clang-format": "^1.8.0",
|
|
88
92
|
"eslint": "^7.15.0",
|
|
89
93
|
"eslint-config-satya164": "^3.1.8",
|
|
90
94
|
"eslint-import-resolver-babel-module": "^5.2.0",
|
|
91
95
|
"eslint-plugin-import": "^2.22.1",
|
|
92
96
|
"eslint-plugin-jest": "^26.0.0",
|
|
93
97
|
"expo": "^35.0.1",
|
|
94
|
-
"husky": "^0.
|
|
98
|
+
"husky": "^8.0.1",
|
|
95
99
|
"jest": "^26.6.3",
|
|
96
100
|
"lint-staged": "^12.3.2",
|
|
97
101
|
"metro-react-native-babel-preset": "^0.64.0",
|
|
98
|
-
"prettier": "^2.
|
|
102
|
+
"prettier": "^2.7.1",
|
|
99
103
|
"react": "^16.8.6",
|
|
100
104
|
"react-dom": "^16.12.0",
|
|
101
105
|
"react-native": "^0.64.0",
|
|
@@ -111,9 +115,9 @@
|
|
|
111
115
|
"react-native": "*"
|
|
112
116
|
},
|
|
113
117
|
"lint-staged": {
|
|
114
|
-
"./src
|
|
115
|
-
|
|
116
|
-
|
|
118
|
+
"./{src,example,FabricExample}/**/*.{ts,tsx}": "yarn format:js",
|
|
119
|
+
"android/**/*.kt": "yarn format:android",
|
|
120
|
+
"ios/**/*.{h,m,mm,cpp}": "yarn format:ios"
|
|
117
121
|
},
|
|
118
122
|
"release-it": {
|
|
119
123
|
"hooks": {
|
|
@@ -68,7 +68,7 @@ export default {
|
|
|
68
68
|
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
69
69
|
InteractionManager.getInstance().configureInteractions(
|
|
70
70
|
NodeManager.getHandler(handlerTag),
|
|
71
|
-
|
|
71
|
+
config as unknown as Config
|
|
72
72
|
);
|
|
73
73
|
} else {
|
|
74
74
|
if (!(handlerName in HammerGestures)) {
|
|
@@ -84,7 +84,7 @@ export default {
|
|
|
84
84
|
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
this.updateGestureHandler(handlerTag,
|
|
87
|
+
this.updateGestureHandler(handlerTag, config as unknown as Config);
|
|
88
88
|
},
|
|
89
89
|
attachGestureHandler(
|
|
90
90
|
handlerTag: number,
|
|
@@ -70,7 +70,7 @@ export default {
|
|
|
70
70
|
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
71
71
|
InteractionManager.getInstance().configureInteractions(
|
|
72
72
|
NodeManager.getHandler(handlerTag),
|
|
73
|
-
|
|
73
|
+
config as unknown as Config
|
|
74
74
|
);
|
|
75
75
|
} else {
|
|
76
76
|
if (!(handlerName in HammerGestures)) {
|
|
@@ -86,7 +86,7 @@ export default {
|
|
|
86
86
|
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
87
87
|
}
|
|
88
88
|
|
|
89
|
-
this.updateGestureHandler(handlerTag,
|
|
89
|
+
this.updateGestureHandler(handlerTag, config as unknown as Config);
|
|
90
90
|
},
|
|
91
91
|
attachGestureHandler(
|
|
92
92
|
handlerTag: number,
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
import { ActionType } from './ActionType';
|
|
4
|
+
import { isExperimentalWebImplementationEnabled } from './EnableExperimentalWebImplementation';
|
|
5
|
+
|
|
6
|
+
//GestureHandlers
|
|
7
|
+
import InteractionManager from './web/tools/InteractionManager';
|
|
8
|
+
import NodeManager from './web/tools/NodeManager';
|
|
9
|
+
import PanGestureHandler from './web/handlers/PanGestureHandler';
|
|
10
|
+
import TapGestureHandler from './web/handlers/TapGestureHandler';
|
|
11
|
+
import LongPressGestureHandler from './web/handlers/LongPressGestureHandler';
|
|
12
|
+
import PinchGestureHandler from './web/handlers/PinchGestureHandler';
|
|
13
|
+
import RotationGestureHandler from './web/handlers/RotationGestureHandler';
|
|
14
|
+
import FlingGestureHandler from './web/handlers/FlingGestureHandler';
|
|
15
|
+
import NativeViewGestureHandler from './web/handlers/NativeViewGestureHandler';
|
|
16
|
+
import ManualGestureHandler from './web/handlers/ManualGestureHandler';
|
|
17
|
+
|
|
18
|
+
//Hammer Handlers
|
|
19
|
+
import * as HammerNodeManager from './web_hammer/NodeManager';
|
|
20
|
+
import HammerNativeViewGestureHandler from './web_hammer/NativeViewGestureHandler';
|
|
21
|
+
import HammerPanGestureHandler from './web_hammer/PanGestureHandler';
|
|
22
|
+
import HammerTapGestureHandler from './web_hammer/TapGestureHandler';
|
|
23
|
+
import HammerLongPressGestureHandler from './web_hammer/LongPressGestureHandler';
|
|
24
|
+
import HammerPinchGestureHandler from './web_hammer/PinchGestureHandler';
|
|
25
|
+
import HammerRotationGestureHandler from './web_hammer/RotationGestureHandler';
|
|
26
|
+
import HammerFlingGestureHandler from './web_hammer/FlingGestureHandler';
|
|
27
|
+
import { Config } from './web/interfaces';
|
|
28
|
+
|
|
29
|
+
export const Gestures = {
|
|
30
|
+
NativeViewGestureHandler,
|
|
31
|
+
PanGestureHandler,
|
|
32
|
+
TapGestureHandler,
|
|
33
|
+
LongPressGestureHandler,
|
|
34
|
+
PinchGestureHandler,
|
|
35
|
+
RotationGestureHandler,
|
|
36
|
+
FlingGestureHandler,
|
|
37
|
+
ManualGestureHandler,
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export const HammerGestures = {
|
|
41
|
+
NativeViewGestureHandler: HammerNativeViewGestureHandler,
|
|
42
|
+
PanGestureHandler: HammerPanGestureHandler,
|
|
43
|
+
TapGestureHandler: HammerTapGestureHandler,
|
|
44
|
+
LongPressGestureHandler: HammerLongPressGestureHandler,
|
|
45
|
+
PinchGestureHandler: HammerPinchGestureHandler,
|
|
46
|
+
RotationGestureHandler: HammerRotationGestureHandler,
|
|
47
|
+
FlingGestureHandler: HammerFlingGestureHandler,
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export default {
|
|
51
|
+
handleSetJSResponder(_tag: number, _blockNativeResponder: boolean) {
|
|
52
|
+
// NO-OP
|
|
53
|
+
},
|
|
54
|
+
handleClearJSResponder() {
|
|
55
|
+
// NO-OP
|
|
56
|
+
},
|
|
57
|
+
createGestureHandler<T>(
|
|
58
|
+
handlerName: keyof typeof Gestures,
|
|
59
|
+
handlerTag: number,
|
|
60
|
+
config: T
|
|
61
|
+
) {
|
|
62
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
63
|
+
if (!(handlerName in Gestures)) {
|
|
64
|
+
throw new Error(
|
|
65
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
const GestureClass = Gestures[handlerName];
|
|
70
|
+
NodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
71
|
+
InteractionManager.getInstance().configureInteractions(
|
|
72
|
+
NodeManager.getHandler(handlerTag),
|
|
73
|
+
config as unknown as Config
|
|
74
|
+
);
|
|
75
|
+
} else {
|
|
76
|
+
if (!(handlerName in HammerGestures)) {
|
|
77
|
+
throw new Error(
|
|
78
|
+
`react-native-gesture-handler: ${handlerName} is not supported on web.`
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// @ts-ignore If it doesn't exist, the error is thrown
|
|
83
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
84
|
+
const GestureClass = HammerGestures[handlerName];
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
86
|
+
HammerNodeManager.createGestureHandler(handlerTag, new GestureClass());
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
this.updateGestureHandler(handlerTag, config as unknown as Config);
|
|
90
|
+
},
|
|
91
|
+
attachGestureHandler(
|
|
92
|
+
handlerTag: number,
|
|
93
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
94
|
+
newView: any,
|
|
95
|
+
_actionType: ActionType,
|
|
96
|
+
propsRef: React.RefObject<unknown>
|
|
97
|
+
) {
|
|
98
|
+
if (
|
|
99
|
+
!(newView instanceof HTMLElement || newView instanceof React.Component)
|
|
100
|
+
) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
105
|
+
//@ts-ignore Types should be HTMLElement or React.Component
|
|
106
|
+
NodeManager.getHandler(handlerTag).init(newView, propsRef);
|
|
107
|
+
} else {
|
|
108
|
+
//@ts-ignore Types should be HTMLElement or React.Component
|
|
109
|
+
HammerNodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
|
110
|
+
}
|
|
111
|
+
},
|
|
112
|
+
updateGestureHandler(handlerTag: number, newConfig: Config) {
|
|
113
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
114
|
+
NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
115
|
+
|
|
116
|
+
InteractionManager.getInstance().configureInteractions(
|
|
117
|
+
NodeManager.getHandler(handlerTag),
|
|
118
|
+
newConfig
|
|
119
|
+
);
|
|
120
|
+
} else {
|
|
121
|
+
HammerNodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
getGestureHandlerNode(handlerTag: number) {
|
|
125
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
126
|
+
return NodeManager.getHandler(handlerTag);
|
|
127
|
+
} else {
|
|
128
|
+
return HammerNodeManager.getHandler(handlerTag);
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
dropGestureHandler(handlerTag: number) {
|
|
132
|
+
if (isExperimentalWebImplementationEnabled()) {
|
|
133
|
+
NodeManager.dropGestureHandler(handlerTag);
|
|
134
|
+
} else {
|
|
135
|
+
HammerNodeManager.dropGestureHandler(handlerTag);
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
139
|
+
flushOperations() {},
|
|
140
|
+
};
|
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
import {
|
|
27
27
|
GestureEvent,
|
|
28
28
|
HandlerStateChangeEvent,
|
|
29
|
+
UserSelect,
|
|
29
30
|
} from '../handlers/gestureHandlerCommon';
|
|
30
31
|
import {
|
|
31
32
|
PanGestureHandler,
|
|
@@ -153,6 +154,13 @@ export interface DrawerLayoutProps {
|
|
|
153
154
|
children?:
|
|
154
155
|
| React.ReactNode
|
|
155
156
|
| ((openValue?: Animated.AnimatedInterpolation) => React.ReactNode);
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* @default 'none'
|
|
160
|
+
* Defines which userSelect property should be used.
|
|
161
|
+
* Values: 'none'|'text'|'auto'
|
|
162
|
+
*/
|
|
163
|
+
userSelect?: UserSelect;
|
|
156
164
|
}
|
|
157
165
|
|
|
158
166
|
export type DrawerLayoutState = {
|
|
@@ -650,18 +658,15 @@ export default class DrawerLayout extends Component<
|
|
|
650
658
|
private setPanGestureRef = (ref: PanGestureHandler) => {
|
|
651
659
|
// TODO(TS): make sure it is OK taken from
|
|
652
660
|
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/31065#issuecomment-596081842
|
|
653
|
-
(
|
|
654
|
-
.panGestureHandler as React.MutableRefObject<PanGestureHandler>
|
|
661
|
+
(
|
|
662
|
+
this.panGestureHandler as React.MutableRefObject<PanGestureHandler>
|
|
663
|
+
).current = ref;
|
|
655
664
|
this.props.onGestureRef?.(ref);
|
|
656
665
|
};
|
|
657
666
|
|
|
658
667
|
render() {
|
|
659
|
-
const {
|
|
660
|
-
|
|
661
|
-
drawerLockMode,
|
|
662
|
-
edgeWidth,
|
|
663
|
-
minSwipeDistance,
|
|
664
|
-
} = this.props;
|
|
668
|
+
const { drawerPosition, drawerLockMode, edgeWidth, minSwipeDistance } =
|
|
669
|
+
this.props;
|
|
665
670
|
|
|
666
671
|
const fromLeft = drawerPosition === 'left';
|
|
667
672
|
|
|
@@ -681,6 +686,7 @@ export default class DrawerLayout extends Component<
|
|
|
681
686
|
return (
|
|
682
687
|
<PanGestureHandler
|
|
683
688
|
// @ts-ignore could be fixed in handler types
|
|
689
|
+
userSelect={this.props.userSelect}
|
|
684
690
|
ref={this.setPanGestureRef}
|
|
685
691
|
hitSlop={hitSlop}
|
|
686
692
|
activeOffsetX={gestureOrientation * minSwipeDistance!}
|
|
@@ -257,10 +257,8 @@ export default class Swipeable extends Component<
|
|
|
257
257
|
const { rightOffset = rowWidth } = state;
|
|
258
258
|
const rightWidth = Math.max(0, rowWidth - rightOffset);
|
|
259
259
|
|
|
260
|
-
const {
|
|
261
|
-
|
|
262
|
-
overshootRight = rightWidth > 0,
|
|
263
|
-
} = props;
|
|
260
|
+
const { overshootLeft = leftWidth > 0, overshootRight = rightWidth > 0 } =
|
|
261
|
+
props;
|
|
264
262
|
|
|
265
263
|
const transX = Animated.add(
|
|
266
264
|
rowTranslation,
|
|
@@ -63,7 +63,7 @@ export default class TouchableOpacity extends Component<
|
|
|
63
63
|
style={[
|
|
64
64
|
style,
|
|
65
65
|
{
|
|
66
|
-
opacity:
|
|
66
|
+
opacity: this.opacity as unknown as number, // TODO: fix this
|
|
67
67
|
},
|
|
68
68
|
]}
|
|
69
69
|
onStateChange={this.onStateChange}>
|
|
@@ -8,9 +8,9 @@ export function getShadowNodeFromRef(ref: any) {
|
|
|
8
8
|
// load findHostInstance_DEPRECATED lazily because it may not be available before render
|
|
9
9
|
if (findHostInstance_DEPRECATED === undefined) {
|
|
10
10
|
try {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
.findHostInstance_DEPRECATED;
|
|
11
|
+
findHostInstance_DEPRECATED =
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
13
|
+
require('react-native/Libraries/Renderer/shims/ReactFabric').findHostInstance_DEPRECATED;
|
|
14
14
|
} catch (e) {
|
|
15
15
|
findHostInstance_DEPRECATED = (_ref: any) => null;
|
|
16
16
|
}
|
|
@@ -132,15 +132,14 @@ const stateToPropMappings = {
|
|
|
132
132
|
[State.END]: 'onEnded',
|
|
133
133
|
} as const;
|
|
134
134
|
|
|
135
|
-
type CreateHandlerArgs<
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
}>;
|
|
135
|
+
type CreateHandlerArgs<HandlerPropsT extends Record<string, unknown>> =
|
|
136
|
+
Readonly<{
|
|
137
|
+
name: string;
|
|
138
|
+
allowedProps: Readonly<Extract<keyof HandlerPropsT, string>[]>;
|
|
139
|
+
config: Readonly<Record<string, unknown>>;
|
|
140
|
+
transformProps?: (props: HandlerPropsT) => HandlerPropsT;
|
|
141
|
+
customNativeProps?: Readonly<string[]>;
|
|
142
|
+
}>;
|
|
144
143
|
|
|
145
144
|
// TODO(TS) fix event types
|
|
146
145
|
type InternalEventHandlers = {
|
|
@@ -313,7 +312,9 @@ export default function createHandler<
|
|
|
313
312
|
|
|
314
313
|
if (Platform.OS === 'web') {
|
|
315
314
|
// typecast due to dynamic resolution, attachGestureHandler should have web version signature in this branch
|
|
316
|
-
(
|
|
315
|
+
(
|
|
316
|
+
RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler
|
|
317
|
+
)(
|
|
317
318
|
this.handlerTag,
|
|
318
319
|
newViewTag,
|
|
319
320
|
ActionType.JS_FUNCTION_OLD_API, // ignored on web
|
|
@@ -403,11 +404,8 @@ export default function createHandler<
|
|
|
403
404
|
onGestureEvent?: BaseGestureHandlerProps<U>['onGestureEvent'];
|
|
404
405
|
onGestureHandlerEvent?: InternalEventHandlers['onGestureHandlerEvent'];
|
|
405
406
|
};
|
|
406
|
-
const {
|
|
407
|
-
|
|
408
|
-
onGestureHandlerEvent,
|
|
409
|
-
}: OnGestureEventHandlers = this.props;
|
|
410
|
-
|
|
407
|
+
const { onGestureEvent, onGestureHandlerEvent }: OnGestureEventHandlers =
|
|
408
|
+
this.props;
|
|
411
409
|
if (onGestureEvent && typeof onGestureEvent !== 'function') {
|
|
412
410
|
// If it's not a method it should be an native Animated.event
|
|
413
411
|
// object. We set it directly as the handler for the view
|
|
@@ -18,6 +18,7 @@ const commonProps = [
|
|
|
18
18
|
'shouldCancelWhenOutside',
|
|
19
19
|
'hitSlop',
|
|
20
20
|
'cancelsTouchesInView',
|
|
21
|
+
'userSelect',
|
|
21
22
|
] as const;
|
|
22
23
|
|
|
23
24
|
const componentInteractionProps = ['waitFor', 'simultaneousHandlers'] as const;
|
|
@@ -62,6 +63,8 @@ export type HitSlop =
|
|
|
62
63
|
| Record<'height' | 'top', number>
|
|
63
64
|
| Record<'height' | 'bottom', number>;
|
|
64
65
|
|
|
66
|
+
export type UserSelect = 'none' | 'auto' | 'text';
|
|
67
|
+
|
|
65
68
|
//TODO(TS) events in handlers
|
|
66
69
|
|
|
67
70
|
export interface GestureEvent<ExtraEventPayloadT = Record<string, unknown>> {
|
|
@@ -90,9 +93,8 @@ export type GestureTouchEvent = {
|
|
|
90
93
|
changedTouches: TouchData[];
|
|
91
94
|
};
|
|
92
95
|
|
|
93
|
-
export type GestureUpdateEvent<
|
|
94
|
-
|
|
95
|
-
> = GestureEventPayload & GestureEventPayloadT;
|
|
96
|
+
export type GestureUpdateEvent<GestureEventPayloadT = Record<string, unknown>> =
|
|
97
|
+
GestureEventPayload & GestureEventPayloadT;
|
|
96
98
|
|
|
97
99
|
export type GestureStateChangeEvent<
|
|
98
100
|
GestureStateChangeEventPayloadT = Record<string, unknown>
|
|
@@ -102,6 +104,7 @@ export type CommonGestureConfig = {
|
|
|
102
104
|
enabled?: boolean;
|
|
103
105
|
shouldCancelWhenOutside?: boolean;
|
|
104
106
|
hitSlop?: HitSlop;
|
|
107
|
+
userSelect?: UserSelect;
|
|
105
108
|
};
|
|
106
109
|
|
|
107
110
|
// Events payloads are types instead of interfaces due to TS limitation.
|
|
@@ -182,7 +185,9 @@ function transformIntoHandlerTags(handlerIDs: any) {
|
|
|
182
185
|
export function findNodeHandle(
|
|
183
186
|
node: null | number | React.Component<any, any> | React.ComponentClass<any>
|
|
184
187
|
): null | number | React.Component<any, any> | React.ComponentClass<any> {
|
|
185
|
-
if (Platform.OS === 'web')
|
|
188
|
+
if (Platform.OS === 'web') {
|
|
189
|
+
return node;
|
|
190
|
+
}
|
|
186
191
|
return findNodeHandleRN(node);
|
|
187
192
|
}
|
|
188
193
|
|
|
@@ -45,33 +45,50 @@ import {
|
|
|
45
45
|
|
|
46
46
|
// events
|
|
47
47
|
export type GestureHandlerGestureEventNativeEvent = GestureEventPayload;
|
|
48
|
-
export type GestureHandlerStateChangeNativeEvent =
|
|
48
|
+
export type GestureHandlerStateChangeNativeEvent =
|
|
49
|
+
HandlerStateChangeEventPayload;
|
|
49
50
|
export type GestureHandlerGestureEvent = GestureEvent;
|
|
50
51
|
export type GestureHandlerStateChangeEvent = HandlerStateChangeEvent;
|
|
51
52
|
// gesture handlers events
|
|
52
|
-
export type NativeViewGestureHandlerGestureEvent =
|
|
53
|
-
|
|
53
|
+
export type NativeViewGestureHandlerGestureEvent =
|
|
54
|
+
GestureEvent<NativeViewGestureHandlerPayload>;
|
|
55
|
+
export type NativeViewGestureHandlerStateChangeEvent =
|
|
56
|
+
HandlerStateChangeEvent<NativeViewGestureHandlerPayload>;
|
|
54
57
|
|
|
55
|
-
export type TapGestureHandlerGestureEvent =
|
|
56
|
-
|
|
58
|
+
export type TapGestureHandlerGestureEvent =
|
|
59
|
+
GestureEvent<TapGestureHandlerEventPayload>;
|
|
60
|
+
export type TapGestureHandlerStateChangeEvent =
|
|
61
|
+
HandlerStateChangeEvent<TapGestureHandlerEventPayload>;
|
|
57
62
|
|
|
58
|
-
export type ForceTouchGestureHandlerGestureEvent =
|
|
59
|
-
|
|
63
|
+
export type ForceTouchGestureHandlerGestureEvent =
|
|
64
|
+
GestureEvent<ForceTouchGestureHandlerEventPayload>;
|
|
65
|
+
export type ForceTouchGestureHandlerStateChangeEvent =
|
|
66
|
+
HandlerStateChangeEvent<ForceTouchGestureHandlerEventPayload>;
|
|
60
67
|
|
|
61
|
-
export type LongPressGestureHandlerGestureEvent =
|
|
62
|
-
|
|
68
|
+
export type LongPressGestureHandlerGestureEvent =
|
|
69
|
+
GestureEvent<LongPressGestureHandlerEventPayload>;
|
|
70
|
+
export type LongPressGestureHandlerStateChangeEvent =
|
|
71
|
+
HandlerStateChangeEvent<LongPressGestureHandlerEventPayload>;
|
|
63
72
|
|
|
64
|
-
export type PanGestureHandlerGestureEvent =
|
|
65
|
-
|
|
73
|
+
export type PanGestureHandlerGestureEvent =
|
|
74
|
+
GestureEvent<PanGestureHandlerEventPayload>;
|
|
75
|
+
export type PanGestureHandlerStateChangeEvent =
|
|
76
|
+
HandlerStateChangeEvent<PanGestureHandlerEventPayload>;
|
|
66
77
|
|
|
67
|
-
export type PinchGestureHandlerGestureEvent =
|
|
68
|
-
|
|
78
|
+
export type PinchGestureHandlerGestureEvent =
|
|
79
|
+
GestureEvent<PinchGestureHandlerEventPayload>;
|
|
80
|
+
export type PinchGestureHandlerStateChangeEvent =
|
|
81
|
+
HandlerStateChangeEvent<PinchGestureHandlerEventPayload>;
|
|
69
82
|
|
|
70
|
-
export type RotationGestureHandlerGestureEvent =
|
|
71
|
-
|
|
83
|
+
export type RotationGestureHandlerGestureEvent =
|
|
84
|
+
GestureEvent<RotationGestureHandlerEventPayload>;
|
|
85
|
+
export type RotationGestureHandlerStateChangeEvent =
|
|
86
|
+
HandlerStateChangeEvent<RotationGestureHandlerEventPayload>;
|
|
72
87
|
|
|
73
|
-
export type FlingGestureHandlerGestureEvent =
|
|
74
|
-
|
|
88
|
+
export type FlingGestureHandlerGestureEvent =
|
|
89
|
+
GestureEvent<FlingGestureHandlerEventPayload>;
|
|
90
|
+
export type FlingGestureHandlerStateChangeEvent =
|
|
91
|
+
HandlerStateChangeEvent<FlingGestureHandlerEventPayload>;
|
|
75
92
|
|
|
76
93
|
// handlers properties
|
|
77
94
|
export type NativeViewGestureHandlerProperties = NativeViewGestureHandlerProps;
|