react-native-gesture-handler 2.2.0 → 2.3.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/LICENSE +1 -1
- package/README.md +5 -1
- package/RNGestureHandler.podspec +27 -3
- package/android/build.gradle +81 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +5 -1
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +14 -12
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +2 -4
- package/android/lib/src/main/java/com/swmansion/gesturehandler/ScaleGestureDetector.java +558 -0
- package/android/src/fabric/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +29 -0
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +12 -0
- package/android/src/main/AndroidManifest.xml +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +29 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +29 -10
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +111 -47
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +9 -4
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +17 -2
- package/android/src/main/jni/Android.mk +53 -0
- package/android/src/main/jni/OnLoad.cpp +9 -0
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.cpp +71 -0
- package/android/src/main/jni/RNGestureHandlerComponentsRegistry.h +34 -0
- package/android/src/main/jni/cpp-adapter.cpp +41 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +47 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +22 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +25 -0
- package/android/src/paper/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +16 -0
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +13 -0
- package/ios/Handlers/RNFlingHandler.m +2 -0
- package/ios/Handlers/RNPanHandler.m +2 -0
- package/ios/Handlers/RNPinchHandler.m +2 -0
- package/ios/Handlers/RNRotationHandler.m +2 -0
- package/ios/RNGestureHandler.h +3 -8
- package/ios/RNGestureHandler.m +2 -10
- package/ios/RNGestureHandlerActionType.h +8 -0
- package/ios/RNGestureHandlerButtonComponentView.h +17 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +48 -0
- package/ios/RNGestureHandlerButtonManager.h +5 -0
- package/ios/RNGestureHandlerButtonManager.m +30 -0
- package/ios/RNGestureHandlerManager.h +2 -4
- package/ios/{RNGestureHandlerManager.m → RNGestureHandlerManager.mm} +92 -20
- package/ios/{RNGestureHandlerModule.m → RNGestureHandlerModule.mm} +91 -36
- package/ios/RNGestureHandlerRegistry.h +1 -2
- package/ios/RNGestureHandlerRegistry.m +2 -11
- package/ios/RNGestureHandlerRootViewComponentView.mm +21 -0
- package/lib/commonjs/ActionType.js +15 -0
- package/lib/commonjs/ActionType.js.map +1 -0
- package/lib/commonjs/GestureHandlerRootView.android.js +6 -6
- package/lib/commonjs/GestureHandlerRootView.android.js.map +1 -1
- package/lib/commonjs/GestureHandlerRootView.js +2 -3
- package/lib/commonjs/GestureHandlerRootView.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +4 -2
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +2 -2
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/GestureHandlerButton.js +5 -2
- package/lib/commonjs/components/GestureHandlerButton.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js +22 -20
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +21 -0
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +21 -0
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.js +24 -0
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js +15 -0
- package/lib/commonjs/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/commonjs/handlers/FlingGestureHandler.js +4 -2
- package/lib/commonjs/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js +8 -4
- package/lib/commonjs/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +4 -2
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/NativeViewGestureHandler.js +4 -2
- package/lib/commonjs/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PanGestureHandler.js +4 -2
- package/lib/commonjs/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/PinchGestureHandler.js +4 -2
- package/lib/commonjs/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/RotationGestureHandler.js +4 -2
- package/lib/commonjs/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +4 -2
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +61 -9
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/createNativeWrapper.js +6 -2
- package/lib/commonjs/handlers/createNativeWrapper.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +84 -32
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +25 -8
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +16 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +7 -4
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/panGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +4 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/handlers/handlersRegistry.js +42 -6
- package/lib/commonjs/handlers/handlersRegistry.js.map +1 -1
- package/lib/commonjs/index.js +14 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/init.js +10 -0
- package/lib/commonjs/init.js.map +1 -1
- package/lib/commonjs/jestUtils.js +375 -0
- package/lib/commonjs/jestUtils.js.map +1 -0
- package/lib/commonjs/utils.js +38 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/module/ActionType.js +7 -0
- package/lib/module/ActionType.js.map +1 -0
- package/lib/module/GestureHandlerRootView.android.js +5 -6
- package/lib/module/GestureHandlerRootView.android.js.map +1 -1
- package/lib/module/GestureHandlerRootView.js +2 -3
- package/lib/module/GestureHandlerRootView.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +3 -2
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +2 -2
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/GestureHandlerButton.js +4 -2
- package/lib/module/components/GestureHandlerButton.js.map +1 -1
- package/lib/module/components/Swipeable.js +22 -20
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +9 -0
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -0
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +9 -0
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.js +17 -0
- package/lib/module/getShadowNodeFromRef.js.map +1 -0
- package/lib/module/getShadowNodeFromRef.web.js +8 -0
- package/lib/module/getShadowNodeFromRef.web.js.map +1 -0
- package/lib/module/handlers/FlingGestureHandler.js +2 -1
- package/lib/module/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/handlers/ForceTouchGestureHandler.js +5 -3
- package/lib/module/handlers/ForceTouchGestureHandler.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +2 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/NativeViewGestureHandler.js +2 -1
- package/lib/module/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/handlers/PanGestureHandler.js +2 -1
- package/lib/module/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/handlers/PinchGestureHandler.js +2 -1
- package/lib/module/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/handlers/RotationGestureHandler.js +2 -1
- package/lib/module/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +2 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js +60 -10
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/createNativeWrapper.js +6 -2
- package/lib/module/handlers/createNativeWrapper.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +79 -32
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +25 -7
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/forceTouchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +16 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +6 -4
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/panGesture.js.map +1 -1
- package/lib/module/handlers/gestures/pinchGesture.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +2 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/handlers/handlersRegistry.js +34 -6
- package/lib/module/handlers/handlersRegistry.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/init.js +6 -0
- package/lib/module/init.js.map +1 -1
- package/lib/module/jestUtils.js +350 -0
- package/lib/module/jestUtils.js.map +1 -0
- package/lib/module/utils.js +28 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +7 -0
- package/lib/typescript/GestureHandlerRootView.android.d.ts +5 -2
- package/lib/typescript/GestureHandlerRootView.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +3 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerButton.d.ts +2 -2
- package/lib/typescript/components/Swipeable.d.ts +12 -4
- package/lib/typescript/getShadowNodeFromRef.d.ts +1 -0
- package/lib/typescript/getShadowNodeFromRef.web.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -1
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/TapGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +2 -4
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +4 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +1 -2
- package/lib/typescript/handlers/gestures/gesture.d.ts +5 -0
- package/lib/typescript/handlers/gestures/panGesture.d.ts +1 -2
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +1 -2
- package/lib/typescript/handlers/handlersRegistry.d.ts +11 -3
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/jestUtils.d.ts +28 -0
- package/lib/typescript/utils.d.ts +6 -0
- package/lib/typescript/web/constants.d.ts +0 -1
- package/package.json +39 -16
- package/src/ActionType.ts +9 -0
- package/src/GestureHandlerRootView.android.tsx +14 -14
- package/src/GestureHandlerRootView.tsx +4 -4
- package/src/RNGestureHandlerModule.ts +11 -6
- package/src/RNGestureHandlerModule.web.ts +2 -1
- package/src/components/DrawerLayout.tsx +8 -2
- package/src/components/GestureHandlerButton.tsx +7 -4
- package/src/components/Swipeable.tsx +28 -22
- package/src/fabric/RNGestureHandlerButtonNativeComponent.js +27 -0
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.js +19 -0
- package/src/getShadowNodeFromRef.ts +19 -0
- package/src/getShadowNodeFromRef.web.ts +7 -0
- package/src/handlers/FlingGestureHandler.ts +3 -1
- package/src/handlers/ForceTouchGestureHandler.ts +8 -2
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/NativeViewGestureHandler.ts +3 -1
- package/src/handlers/PanGestureHandler.ts +3 -1
- package/src/handlers/PinchGestureHandler.ts +3 -1
- package/src/handlers/RotationGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- package/src/handlers/createHandler.ts +69 -7
- package/src/handlers/createNativeWrapper.tsx +7 -1
- package/src/handlers/gestureHandlerCommon.ts +2 -5
- package/src/handlers/gestures/GestureDetector.tsx +110 -37
- package/src/handlers/gestures/eventReceiver.ts +23 -19
- package/src/handlers/gestures/forceTouchGesture.ts +1 -1
- package/src/handlers/gestures/gesture.ts +21 -1
- package/src/handlers/gestures/gestureStateManager.ts +9 -12
- package/src/handlers/gestures/panGesture.ts +1 -1
- package/src/handlers/gestures/pinchGesture.ts +1 -1
- package/src/handlers/gestures/reanimatedWrapper.ts +4 -1
- package/src/handlers/handlersRegistry.ts +44 -6
- package/src/index.ts +4 -0
- package/src/init.ts +6 -0
- package/src/jestUtils.ts +506 -0
- package/src/utils.ts +38 -0
- package/android/lib/src/main/java/com/swmansion/gesturehandler/BaseGestureHandlerInteractionController.kt +0 -18
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerRegistryImpl.kt +0 -21
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerPackage.kt +0 -17
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +0 -19
|
@@ -7,32 +7,29 @@ import {
|
|
|
7
7
|
GestureStateChangeEvent,
|
|
8
8
|
} from '../gestureHandlerCommon';
|
|
9
9
|
import { GestureStateManagerType } from './gestureStateManager';
|
|
10
|
-
import { findHandler } from '../handlersRegistry';
|
|
10
|
+
import { findHandler, findOldGestureHandler } from '../handlersRegistry';
|
|
11
11
|
import { BaseGesture } from './gesture';
|
|
12
|
+
import { tagMessage } from '../../utils';
|
|
12
13
|
|
|
13
14
|
let gestureHandlerEventSubscription: EmitterSubscription | null = null;
|
|
14
15
|
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null = null;
|
|
15
16
|
|
|
17
|
+
const warningMessage = tagMessage(
|
|
18
|
+
'You have to use react-native-reanimated in order to control the state of the gesture.'
|
|
19
|
+
);
|
|
20
|
+
|
|
16
21
|
const dummyStateManager: GestureStateManagerType = {
|
|
17
22
|
begin: () => {
|
|
18
|
-
console.warn(
|
|
19
|
-
'You have to use react-native-reanimated in order to control the state of the gesture.'
|
|
20
|
-
);
|
|
23
|
+
console.warn(warningMessage);
|
|
21
24
|
},
|
|
22
25
|
activate: () => {
|
|
23
|
-
console.warn(
|
|
24
|
-
'You have to use react-native-reanimated in order to control the state of the gesture.'
|
|
25
|
-
);
|
|
26
|
+
console.warn(warningMessage);
|
|
26
27
|
},
|
|
27
28
|
end: () => {
|
|
28
|
-
console.warn(
|
|
29
|
-
'You have to use react-native-reanimated in order to control the state of the gesture.'
|
|
30
|
-
);
|
|
29
|
+
console.warn(warningMessage);
|
|
31
30
|
},
|
|
32
31
|
fail: () => {
|
|
33
|
-
console.warn(
|
|
34
|
-
'You have to use react-native-reanimated in order to control the state of the gesture.'
|
|
35
|
-
);
|
|
32
|
+
console.warn(warningMessage);
|
|
36
33
|
},
|
|
37
34
|
};
|
|
38
35
|
|
|
@@ -117,6 +114,17 @@ function onGestureHandlerEvent(
|
|
|
117
114
|
lastUpdateEvent[handler.handlers.handlerTag] = event;
|
|
118
115
|
}
|
|
119
116
|
}
|
|
117
|
+
} else {
|
|
118
|
+
const oldHandler = findOldGestureHandler(event.handlerTag);
|
|
119
|
+
if (oldHandler) {
|
|
120
|
+
const nativeEvent = { nativeEvent: event };
|
|
121
|
+
if (isStateChangeEvent(event)) {
|
|
122
|
+
oldHandler.onGestureStateChange(nativeEvent);
|
|
123
|
+
} else {
|
|
124
|
+
oldHandler.onGestureEvent(nativeEvent);
|
|
125
|
+
}
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
120
128
|
}
|
|
121
129
|
}
|
|
122
130
|
|
|
@@ -136,16 +144,12 @@ export function startListening() {
|
|
|
136
144
|
|
|
137
145
|
export function stopListening() {
|
|
138
146
|
if (gestureHandlerEventSubscription) {
|
|
139
|
-
|
|
140
|
-
|
|
147
|
+
gestureHandlerEventSubscription.remove();
|
|
141
148
|
gestureHandlerEventSubscription = null;
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
if (gestureHandlerStateChangeEventSubscription) {
|
|
145
|
-
|
|
146
|
-
gestureHandlerStateChangeEventSubscription
|
|
147
|
-
);
|
|
148
|
-
|
|
152
|
+
gestureHandlerStateChangeEventSubscription.remove();
|
|
149
153
|
gestureHandlerStateChangeEventSubscription = null;
|
|
150
154
|
}
|
|
151
155
|
}
|
|
@@ -41,6 +41,8 @@ export interface BaseGestureConfig
|
|
|
41
41
|
simultaneousWith?: GestureRef[];
|
|
42
42
|
needsPointerData?: boolean;
|
|
43
43
|
manualActivation?: boolean;
|
|
44
|
+
runOnJS?: boolean;
|
|
45
|
+
testId?: string;
|
|
44
46
|
}
|
|
45
47
|
|
|
46
48
|
type TouchEventHandlerType = (
|
|
@@ -119,7 +121,7 @@ export abstract class BaseGesture<
|
|
|
119
121
|
public config: BaseGestureConfig = {};
|
|
120
122
|
public handlers: HandlerCallbacks<EventPayloadT> = {
|
|
121
123
|
handlerTag: -1,
|
|
122
|
-
isWorklet: [
|
|
124
|
+
isWorklet: [],
|
|
123
125
|
};
|
|
124
126
|
|
|
125
127
|
private addDependency(
|
|
@@ -234,6 +236,11 @@ export abstract class BaseGesture<
|
|
|
234
236
|
return this;
|
|
235
237
|
}
|
|
236
238
|
|
|
239
|
+
runOnJS(runOnJS: boolean) {
|
|
240
|
+
this.config.runOnJS = runOnJS;
|
|
241
|
+
return this;
|
|
242
|
+
}
|
|
243
|
+
|
|
237
244
|
simultaneousWithExternalGesture(...gestures: Exclude<GestureRef, number>[]) {
|
|
238
245
|
for (const gesture of gestures) {
|
|
239
246
|
this.addDependency('simultaneousWith', gesture);
|
|
@@ -248,8 +255,14 @@ export abstract class BaseGesture<
|
|
|
248
255
|
return this;
|
|
249
256
|
}
|
|
250
257
|
|
|
258
|
+
withTestId(id: string) {
|
|
259
|
+
this.config.testId = id;
|
|
260
|
+
return this;
|
|
261
|
+
}
|
|
262
|
+
|
|
251
263
|
initialize() {
|
|
252
264
|
this.handlerTag = getNextHandlerTag();
|
|
265
|
+
|
|
253
266
|
this.handlers = { ...this.handlers, handlerTag: this.handlerTag };
|
|
254
267
|
|
|
255
268
|
if (this.config.ref) {
|
|
@@ -263,6 +276,13 @@ export abstract class BaseGesture<
|
|
|
263
276
|
|
|
264
277
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
265
278
|
prepare() {}
|
|
279
|
+
|
|
280
|
+
get shouldUseReanimated(): boolean {
|
|
281
|
+
// use Reanimated when runOnJS isn't set explicitly and all defined callbacks are worklets
|
|
282
|
+
return (
|
|
283
|
+
this.config.runOnJS !== true && !this.handlers.isWorklet.includes(false)
|
|
284
|
+
);
|
|
285
|
+
}
|
|
266
286
|
}
|
|
267
287
|
|
|
268
288
|
export abstract class ContinousBaseGesture<
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Reanimated } from './reanimatedWrapper';
|
|
2
2
|
import { State } from '../../State';
|
|
3
|
+
import { tagMessage } from '../../utils';
|
|
3
4
|
|
|
4
5
|
export interface GestureStateManagerType {
|
|
5
6
|
begin: () => void;
|
|
@@ -8,6 +9,10 @@ export interface GestureStateManagerType {
|
|
|
8
9
|
end: () => void;
|
|
9
10
|
}
|
|
10
11
|
|
|
12
|
+
const warningMessage = tagMessage(
|
|
13
|
+
'react-native-reanimated is required in order to use synchronous state management'
|
|
14
|
+
);
|
|
15
|
+
|
|
11
16
|
export const GestureStateManager = {
|
|
12
17
|
create(handlerTag: number): GestureStateManagerType {
|
|
13
18
|
'worklet';
|
|
@@ -17,9 +22,7 @@ export const GestureStateManager = {
|
|
|
17
22
|
if (Reanimated) {
|
|
18
23
|
Reanimated.setGestureState(handlerTag, State.BEGAN);
|
|
19
24
|
} else {
|
|
20
|
-
console.warn(
|
|
21
|
-
'react-native-reanimated is required in order to use synchronous state management'
|
|
22
|
-
);
|
|
25
|
+
console.warn(warningMessage);
|
|
23
26
|
}
|
|
24
27
|
},
|
|
25
28
|
|
|
@@ -28,9 +31,7 @@ export const GestureStateManager = {
|
|
|
28
31
|
if (Reanimated) {
|
|
29
32
|
Reanimated.setGestureState(handlerTag, State.ACTIVE);
|
|
30
33
|
} else {
|
|
31
|
-
console.warn(
|
|
32
|
-
'react-native-reanimated is required in order to use synchronous state management'
|
|
33
|
-
);
|
|
34
|
+
console.warn(warningMessage);
|
|
34
35
|
}
|
|
35
36
|
},
|
|
36
37
|
|
|
@@ -39,9 +40,7 @@ export const GestureStateManager = {
|
|
|
39
40
|
if (Reanimated) {
|
|
40
41
|
Reanimated.setGestureState(handlerTag, State.FAILED);
|
|
41
42
|
} else {
|
|
42
|
-
console.warn(
|
|
43
|
-
'react-native-reanimated is required in order to use synchronous state management'
|
|
44
|
-
);
|
|
43
|
+
console.warn(warningMessage);
|
|
45
44
|
}
|
|
46
45
|
},
|
|
47
46
|
|
|
@@ -50,9 +49,7 @@ export const GestureStateManager = {
|
|
|
50
49
|
if (Reanimated) {
|
|
51
50
|
Reanimated.setGestureState(handlerTag, State.END);
|
|
52
51
|
} else {
|
|
53
|
-
console.warn(
|
|
54
|
-
'react-native-reanimated is required in order to use synchronous state management'
|
|
55
|
-
);
|
|
52
|
+
console.warn(warningMessage);
|
|
56
53
|
}
|
|
57
54
|
},
|
|
58
55
|
};
|
|
@@ -2,7 +2,7 @@ import { ContinousBaseGesture } from './gesture';
|
|
|
2
2
|
import { PinchGestureHandlerEventPayload } from '../PinchGestureHandler';
|
|
3
3
|
import { GestureUpdateEvent } from '../gestureHandlerCommon';
|
|
4
4
|
|
|
5
|
-
type PinchGestureChangeEventPayload = {
|
|
5
|
+
export type PinchGestureChangeEventPayload = {
|
|
6
6
|
scaleChange: number;
|
|
7
7
|
};
|
|
8
8
|
|
|
@@ -3,6 +3,7 @@ import {
|
|
|
3
3
|
GestureUpdateEvent,
|
|
4
4
|
GestureStateChangeEvent,
|
|
5
5
|
} from '../gestureHandlerCommon';
|
|
6
|
+
import { tagMessage } from '../../utils';
|
|
6
7
|
|
|
7
8
|
export interface SharedValue<T> {
|
|
8
9
|
value: T;
|
|
@@ -33,7 +34,9 @@ try {
|
|
|
33
34
|
Reanimated.setGestureState = () => {
|
|
34
35
|
'worklet';
|
|
35
36
|
console.warn(
|
|
36
|
-
|
|
37
|
+
tagMessage(
|
|
38
|
+
'Please use newer version of react-native-reanimated in order to control state of the gestures.'
|
|
39
|
+
)
|
|
37
40
|
);
|
|
38
41
|
};
|
|
39
42
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
import { isJestEnv } from '../utils';
|
|
1
2
|
import { GestureType } from './gestures/gesture';
|
|
3
|
+
import { GestureEvent, HandlerStateChangeEvent } from './gestureHandlerCommon';
|
|
2
4
|
|
|
3
5
|
export const handlerIDToTag: Record<string, number> = {};
|
|
4
|
-
const
|
|
6
|
+
const gestures = new Map<number, GestureType>();
|
|
7
|
+
const oldHandlers = new Map<number, GestureHandlerCallbacks>();
|
|
8
|
+
const testIDs = new Map<string, number>();
|
|
5
9
|
|
|
6
10
|
let handlerTag = 1;
|
|
7
11
|
|
|
@@ -9,14 +13,48 @@ export function getNextHandlerTag(): number {
|
|
|
9
13
|
return handlerTag++;
|
|
10
14
|
}
|
|
11
15
|
|
|
12
|
-
export function registerHandler(
|
|
13
|
-
|
|
16
|
+
export function registerHandler(
|
|
17
|
+
handlerTag: number,
|
|
18
|
+
handler: GestureType,
|
|
19
|
+
testID?: string
|
|
20
|
+
) {
|
|
21
|
+
gestures.set(handlerTag, handler);
|
|
22
|
+
if (isJestEnv() && testID) {
|
|
23
|
+
testIDs.set(testID, handlerTag);
|
|
24
|
+
}
|
|
14
25
|
}
|
|
15
26
|
|
|
16
|
-
export function
|
|
17
|
-
|
|
27
|
+
export function registerOldGestureHandler(
|
|
28
|
+
handlerTag: number,
|
|
29
|
+
handler: GestureHandlerCallbacks
|
|
30
|
+
) {
|
|
31
|
+
oldHandlers.set(handlerTag, handler);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function unregisterHandler(handlerTag: number, testID?: string) {
|
|
35
|
+
gestures.delete(handlerTag);
|
|
36
|
+
if (isJestEnv() && testID) {
|
|
37
|
+
testIDs.delete(testID);
|
|
38
|
+
}
|
|
18
39
|
}
|
|
19
40
|
|
|
20
41
|
export function findHandler(handlerTag: number) {
|
|
21
|
-
return
|
|
42
|
+
return gestures.get(handlerTag);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export function findOldGestureHandler(handlerTag: number) {
|
|
46
|
+
return oldHandlers.get(handlerTag);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export function findHandlerByTestID(testID: string) {
|
|
50
|
+
const handlerTag = testIDs.get(testID);
|
|
51
|
+
if (handlerTag !== undefined) {
|
|
52
|
+
return findHandler(handlerTag) ?? null;
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export interface GestureHandlerCallbacks {
|
|
58
|
+
onGestureEvent: (event: GestureEvent<any>) => void;
|
|
59
|
+
onGestureStateChange: (event: HandlerStateChangeEvent<any>) => void;
|
|
22
60
|
}
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { initialize } from './init';
|
|
|
2
2
|
|
|
3
3
|
export { Directions } from './Directions';
|
|
4
4
|
export { State } from './State';
|
|
5
|
+
export { getByGestureTestId, fireGestureHandler } from './jestUtils';
|
|
5
6
|
export { default as gestureHandlerRootHOC } from './gestureHandlerRootHOC';
|
|
6
7
|
export { default as GestureHandlerRootView } from './GestureHandlerRootView';
|
|
7
8
|
export type {
|
|
@@ -27,6 +28,7 @@ export type {
|
|
|
27
28
|
ForceTouchGestureHandlerEventPayload,
|
|
28
29
|
ForceTouchGestureHandlerProps,
|
|
29
30
|
} from './handlers/ForceTouchGestureHandler';
|
|
31
|
+
export type { ForceTouchGestureChangeEventPayload } from './handlers/gestures/forceTouchGesture';
|
|
30
32
|
export type {
|
|
31
33
|
LongPressGestureHandlerEventPayload,
|
|
32
34
|
LongPressGestureHandlerProps,
|
|
@@ -35,10 +37,12 @@ export type {
|
|
|
35
37
|
PanGestureHandlerEventPayload,
|
|
36
38
|
PanGestureHandlerProps,
|
|
37
39
|
} from './handlers/PanGestureHandler';
|
|
40
|
+
export type { PanGestureChangeEventPayload } from './handlers/gestures/panGesture';
|
|
38
41
|
export type {
|
|
39
42
|
PinchGestureHandlerEventPayload,
|
|
40
43
|
PinchGestureHandlerProps,
|
|
41
44
|
} from './handlers/PinchGestureHandler';
|
|
45
|
+
export type { PinchGestureChangeEventPayload } from './handlers/gestures/pinchGesture';
|
|
42
46
|
export type {
|
|
43
47
|
RotationGestureHandlerEventPayload,
|
|
44
48
|
RotationGestureHandlerProps,
|
package/src/init.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import { startListening } from './handlers/gestures/eventReceiver';
|
|
2
|
+
import RNGestureHandlerModule from './RNGestureHandlerModule';
|
|
3
|
+
import { isFabric } from './utils';
|
|
2
4
|
|
|
3
5
|
export function initialize() {
|
|
4
6
|
startListening();
|
|
7
|
+
|
|
8
|
+
if (isFabric()) {
|
|
9
|
+
RNGestureHandlerModule.install();
|
|
10
|
+
}
|
|
5
11
|
}
|