react-native-gesture-handler 2.2.0 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
}
|