react-native-gesture-handler 2.1.2 → 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 +8 -3
- package/RNGestureHandler.podspec +27 -3
- package/android/build.gradle +82 -9
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandler.kt +47 -12
- package/android/lib/src/main/java/com/swmansion/gesturehandler/GestureHandlerOrchestrator.kt +50 -14
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PanGestureHandler.kt +7 -4
- package/android/lib/src/main/java/com/swmansion/gesturehandler/PinchGestureHandler.kt +8 -8
- package/android/lib/src/main/java/com/swmansion/gesturehandler/RotationGestureHandler.kt +6 -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 +119 -55
- 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 +72 -8
- 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 -106
- 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 +72 -9
- 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 -11
- 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 +3 -2
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -0
- package/lib/typescript/handlers/PanGestureHandler.d.ts +3 -2
- 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 +15 -11
- 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 +5 -3
- package/src/handlers/NativeViewGestureHandler.ts +3 -1
- package/src/handlers/PanGestureHandler.ts +5 -3
- 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 +80 -5
- 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 +15 -11
- 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
@@ -0,0 +1,375 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.fireGestureHandler = fireGestureHandler;
|
7
|
+
exports.getByGestureTestId = getByGestureTestId;
|
8
|
+
|
9
|
+
var _invariant = _interopRequireDefault(require("invariant"));
|
10
|
+
|
11
|
+
var _reactNative = require("react-native");
|
12
|
+
|
13
|
+
var _FlingGestureHandler = require("./handlers/FlingGestureHandler");
|
14
|
+
|
15
|
+
var _ForceTouchGestureHandler = require("./handlers/ForceTouchGestureHandler");
|
16
|
+
|
17
|
+
var _gesture = require("./handlers/gestures/gesture");
|
18
|
+
|
19
|
+
var _handlersRegistry = require("./handlers/handlersRegistry");
|
20
|
+
|
21
|
+
var _LongPressGestureHandler = require("./handlers/LongPressGestureHandler");
|
22
|
+
|
23
|
+
var _NativeViewGestureHandler = require("./handlers/NativeViewGestureHandler");
|
24
|
+
|
25
|
+
var _PanGestureHandler = require("./handlers/PanGestureHandler");
|
26
|
+
|
27
|
+
var _PinchGestureHandler = require("./handlers/PinchGestureHandler");
|
28
|
+
|
29
|
+
var _RotationGestureHandler = require("./handlers/RotationGestureHandler");
|
30
|
+
|
31
|
+
var _TapGestureHandler = require("./handlers/TapGestureHandler");
|
32
|
+
|
33
|
+
var _State = require("./State");
|
34
|
+
|
35
|
+
var _utils = require("./utils");
|
36
|
+
|
37
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
38
|
+
|
39
|
+
// load fireEvent conditionally, so RNGH may be used in setups without testing-library
|
40
|
+
let fireEvent = (_element, _name, ..._data) => {// NOOP
|
41
|
+
};
|
42
|
+
|
43
|
+
try {
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
45
|
+
fireEvent = require('@testing-library/react-native').fireEvent;
|
46
|
+
} catch (_e) {// do nothing if not available
|
47
|
+
}
|
48
|
+
|
49
|
+
const handlersDefaultEvents = {
|
50
|
+
[_FlingGestureHandler.flingHandlerName]: {
|
51
|
+
x: 0,
|
52
|
+
y: 0,
|
53
|
+
absoluteX: 0,
|
54
|
+
absoluteY: 0,
|
55
|
+
numberOfPointers: 1
|
56
|
+
},
|
57
|
+
[_ForceTouchGestureHandler.forceTouchHandlerName]: {
|
58
|
+
x: 0,
|
59
|
+
y: 0,
|
60
|
+
absoluteX: 0,
|
61
|
+
absoluteY: 0,
|
62
|
+
force: 1,
|
63
|
+
numberOfPointers: 1
|
64
|
+
},
|
65
|
+
[_LongPressGestureHandler.longPressHandlerName]: {
|
66
|
+
x: 0,
|
67
|
+
y: 0,
|
68
|
+
absoluteX: 0,
|
69
|
+
absoluteY: 0,
|
70
|
+
duration: 100,
|
71
|
+
numberOfPointers: 1
|
72
|
+
},
|
73
|
+
[_NativeViewGestureHandler.nativeViewHandlerName]: {
|
74
|
+
pointerInside: true,
|
75
|
+
numberOfPointers: 1
|
76
|
+
},
|
77
|
+
[_PanGestureHandler.panHandlerName]: {
|
78
|
+
x: 0,
|
79
|
+
y: 0,
|
80
|
+
absoluteX: 0,
|
81
|
+
absoluteY: 0,
|
82
|
+
translationX: 100,
|
83
|
+
translationY: 0,
|
84
|
+
velocityX: 3,
|
85
|
+
velocityY: 0,
|
86
|
+
numberOfPointers: 1
|
87
|
+
},
|
88
|
+
[_PinchGestureHandler.pinchHandlerName]: {
|
89
|
+
focalX: 0,
|
90
|
+
focalY: 0,
|
91
|
+
scale: 2,
|
92
|
+
velocity: 1,
|
93
|
+
numberOfPointers: 2
|
94
|
+
},
|
95
|
+
[_RotationGestureHandler.rotationHandlerName]: {
|
96
|
+
anchorX: 0,
|
97
|
+
anchorY: 0,
|
98
|
+
rotation: 3.14,
|
99
|
+
velocity: 2,
|
100
|
+
numberOfPointers: 2
|
101
|
+
},
|
102
|
+
[_TapGestureHandler.tapHandlerName]: {
|
103
|
+
x: 0,
|
104
|
+
y: 0,
|
105
|
+
absoluteX: 0,
|
106
|
+
absoluteY: 0,
|
107
|
+
numberOfPointers: 1
|
108
|
+
}
|
109
|
+
};
|
110
|
+
|
111
|
+
function isGesture(componentOrGesture) {
|
112
|
+
return componentOrGesture instanceof _gesture.BaseGesture;
|
113
|
+
}
|
114
|
+
|
115
|
+
function wrapWithNativeEvent(event) {
|
116
|
+
return {
|
117
|
+
nativeEvent: event
|
118
|
+
};
|
119
|
+
}
|
120
|
+
|
121
|
+
function fillOldStateChanges(previousEvent, currentEvent) {
|
122
|
+
const isFirstEvent = previousEvent === null;
|
123
|
+
|
124
|
+
if (isFirstEvent) {
|
125
|
+
return {
|
126
|
+
oldState: _State.State.UNDETERMINED,
|
127
|
+
...currentEvent
|
128
|
+
};
|
129
|
+
}
|
130
|
+
|
131
|
+
const isGestureStateEvent = previousEvent.state !== currentEvent.state;
|
132
|
+
|
133
|
+
if (isGestureStateEvent) {
|
134
|
+
return {
|
135
|
+
oldState: previousEvent === null || previousEvent === void 0 ? void 0 : previousEvent.state,
|
136
|
+
...currentEvent
|
137
|
+
};
|
138
|
+
} else {
|
139
|
+
return currentEvent;
|
140
|
+
}
|
141
|
+
}
|
142
|
+
|
143
|
+
function validateStateTransitions(previousEvent, currentEvent) {
|
144
|
+
function stringify(event) {
|
145
|
+
return JSON.stringify(event, null, 2);
|
146
|
+
}
|
147
|
+
|
148
|
+
function errorMsgWithBothEvents(description) {
|
149
|
+
return `${description}, invalid event: ${stringify(currentEvent)}, previous event: ${stringify(previousEvent)}`;
|
150
|
+
}
|
151
|
+
|
152
|
+
function errorMsgWithCurrentEvent(description) {
|
153
|
+
return `${description}, invalid event: ${stringify(currentEvent)}`;
|
154
|
+
}
|
155
|
+
|
156
|
+
(0, _invariant.default)((0, _utils.hasProperty)(currentEvent, 'state'), errorMsgWithCurrentEvent('every event must have state'));
|
157
|
+
const isFirstEvent = previousEvent === null;
|
158
|
+
|
159
|
+
if (isFirstEvent) {
|
160
|
+
(0, _invariant.default)(currentEvent.state === _State.State.BEGAN, errorMsgWithCurrentEvent('first event must have BEGAN state'));
|
161
|
+
}
|
162
|
+
|
163
|
+
if (previousEvent !== null) {
|
164
|
+
if (previousEvent.state !== currentEvent.state) {
|
165
|
+
(0, _invariant.default)((0, _utils.hasProperty)(currentEvent, 'oldState'), errorMsgWithCurrentEvent('when state changes, oldState field should be present'));
|
166
|
+
(0, _invariant.default)(currentEvent.oldState === previousEvent.state, errorMsgWithBothEvents("when state changes, oldState should be the same as previous event' state"));
|
167
|
+
}
|
168
|
+
}
|
169
|
+
|
170
|
+
return currentEvent;
|
171
|
+
}
|
172
|
+
|
173
|
+
function fillMissingDefaultsFor({
|
174
|
+
handlerType,
|
175
|
+
handlerTag
|
176
|
+
}) {
|
177
|
+
return event => {
|
178
|
+
return { ...handlersDefaultEvents[handlerType],
|
179
|
+
...event,
|
180
|
+
handlerTag
|
181
|
+
};
|
182
|
+
};
|
183
|
+
}
|
184
|
+
|
185
|
+
function isDiscreteHandler(handlerType) {
|
186
|
+
return handlerType === 'TapGestureHandler' || handlerType === 'LongPressGestureHandler';
|
187
|
+
}
|
188
|
+
|
189
|
+
function fillMissingStatesTransitions(events, isDiscreteHandler) {
|
190
|
+
var _events2, _events$;
|
191
|
+
|
192
|
+
const _events = [...events];
|
193
|
+
const lastEvent = (_events2 = _events[_events.length - 1]) !== null && _events2 !== void 0 ? _events2 : null;
|
194
|
+
const firstEvent = (_events$ = _events[0]) !== null && _events$ !== void 0 ? _events$ : null;
|
195
|
+
const shouldDuplicateFirstEvent = !isDiscreteHandler && !hasState(_State.State.BEGAN)(firstEvent);
|
196
|
+
|
197
|
+
if (shouldDuplicateFirstEvent) {
|
198
|
+
const duplicated = { ...firstEvent,
|
199
|
+
state: _State.State.BEGAN
|
200
|
+
}; // @ts-ignore badly typed, property may exist and we don't want to copy it
|
201
|
+
|
202
|
+
delete duplicated.oldState;
|
203
|
+
|
204
|
+
_events.unshift(duplicated);
|
205
|
+
}
|
206
|
+
|
207
|
+
const shouldDuplicateLastEvent = !hasState(_State.State.END)(lastEvent) || !hasState(_State.State.FAILED)(lastEvent) || !hasState(_State.State.CANCELLED)(lastEvent);
|
208
|
+
|
209
|
+
if (shouldDuplicateLastEvent) {
|
210
|
+
const duplicated = { ...lastEvent,
|
211
|
+
state: _State.State.END
|
212
|
+
}; // @ts-ignore badly typed, property may exist and we don't want to copy it
|
213
|
+
|
214
|
+
delete duplicated.oldState;
|
215
|
+
|
216
|
+
_events.push(duplicated);
|
217
|
+
}
|
218
|
+
|
219
|
+
function isWithoutState(event) {
|
220
|
+
return event !== null && !(0, _utils.hasProperty)(event, 'state');
|
221
|
+
}
|
222
|
+
|
223
|
+
function hasState(state) {
|
224
|
+
return event => event !== null && event.state === state;
|
225
|
+
}
|
226
|
+
|
227
|
+
function noEventsLeft(event) {
|
228
|
+
return event === null;
|
229
|
+
}
|
230
|
+
|
231
|
+
function trueFn() {
|
232
|
+
return true;
|
233
|
+
}
|
234
|
+
|
235
|
+
function fillEventsForCurrentState({
|
236
|
+
shouldConsumeEvent = trueFn,
|
237
|
+
shouldTransitionToNextState = trueFn
|
238
|
+
}) {
|
239
|
+
function peekCurrentEvent() {
|
240
|
+
var _events$2;
|
241
|
+
|
242
|
+
return (_events$2 = _events[0]) !== null && _events$2 !== void 0 ? _events$2 : null;
|
243
|
+
}
|
244
|
+
|
245
|
+
function peekNextEvent() {
|
246
|
+
var _events$3;
|
247
|
+
|
248
|
+
return (_events$3 = _events[1]) !== null && _events$3 !== void 0 ? _events$3 : null;
|
249
|
+
}
|
250
|
+
|
251
|
+
function consumeCurrentEvent() {
|
252
|
+
_events.shift();
|
253
|
+
}
|
254
|
+
|
255
|
+
const currentEvent = peekCurrentEvent();
|
256
|
+
const nextEvent = peekNextEvent();
|
257
|
+
const currentRequiredState = REQUIRED_EVENTS[currentStateIdx];
|
258
|
+
let eventData = {};
|
259
|
+
const shouldUseEvent = shouldConsumeEvent(currentEvent);
|
260
|
+
|
261
|
+
if (shouldUseEvent) {
|
262
|
+
eventData = currentEvent;
|
263
|
+
consumeCurrentEvent();
|
264
|
+
}
|
265
|
+
|
266
|
+
transformedEvents.push({
|
267
|
+
state: currentRequiredState,
|
268
|
+
...eventData
|
269
|
+
});
|
270
|
+
|
271
|
+
if (shouldTransitionToNextState(nextEvent)) {
|
272
|
+
currentStateIdx++;
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
const REQUIRED_EVENTS = [_State.State.BEGAN, _State.State.ACTIVE, _State.State.END];
|
277
|
+
let currentStateIdx = 0;
|
278
|
+
const transformedEvents = [];
|
279
|
+
let hasAllStates;
|
280
|
+
let iterations = 0;
|
281
|
+
|
282
|
+
do {
|
283
|
+
const nextRequiredState = REQUIRED_EVENTS[currentStateIdx];
|
284
|
+
|
285
|
+
if (nextRequiredState === _State.State.BEGAN) {
|
286
|
+
fillEventsForCurrentState({
|
287
|
+
shouldConsumeEvent: e => isWithoutState(e) || hasState(_State.State.BEGAN)(e)
|
288
|
+
});
|
289
|
+
} else if (nextRequiredState === _State.State.ACTIVE) {
|
290
|
+
const shouldConsumeEvent = e => isWithoutState(e) || hasState(_State.State.ACTIVE)(e);
|
291
|
+
|
292
|
+
const shouldTransitionToNextState = nextEvent => noEventsLeft(nextEvent) || hasState(_State.State.END)(nextEvent) || hasState(_State.State.FAILED)(nextEvent) || hasState(_State.State.CANCELLED)(nextEvent);
|
293
|
+
|
294
|
+
fillEventsForCurrentState({
|
295
|
+
shouldConsumeEvent,
|
296
|
+
shouldTransitionToNextState
|
297
|
+
});
|
298
|
+
} else if (nextRequiredState === _State.State.END) {
|
299
|
+
fillEventsForCurrentState({});
|
300
|
+
}
|
301
|
+
|
302
|
+
hasAllStates = currentStateIdx === REQUIRED_EVENTS.length;
|
303
|
+
(0, _invariant.default)(iterations++ <= 500, 'exceeded max number of iterations, please report a bug in RNGH repository with your test case');
|
304
|
+
} while (!hasAllStates);
|
305
|
+
|
306
|
+
return transformedEvents;
|
307
|
+
}
|
308
|
+
|
309
|
+
function getHandlerData(componentOrGesture) {
|
310
|
+
if (isGesture(componentOrGesture)) {
|
311
|
+
const gesture = componentOrGesture;
|
312
|
+
return {
|
313
|
+
emitEvent: (eventName, args) => {
|
314
|
+
_reactNative.DeviceEventEmitter.emit(eventName, args.nativeEvent);
|
315
|
+
},
|
316
|
+
handlerType: gesture.handlerName,
|
317
|
+
handlerTag: gesture.handlerTag
|
318
|
+
};
|
319
|
+
}
|
320
|
+
|
321
|
+
const gestureHandlerComponent = componentOrGesture;
|
322
|
+
return {
|
323
|
+
emitEvent: (eventName, args) => {
|
324
|
+
fireEvent(gestureHandlerComponent, eventName, args);
|
325
|
+
},
|
326
|
+
handlerType: gestureHandlerComponent.props.handlerType,
|
327
|
+
handlerTag: gestureHandlerComponent.props.handlerTag
|
328
|
+
};
|
329
|
+
}
|
330
|
+
|
331
|
+
function fireGestureHandler(componentOrGesture, eventList = []) {
|
332
|
+
const {
|
333
|
+
emitEvent,
|
334
|
+
handlerType,
|
335
|
+
handlerTag
|
336
|
+
} = getHandlerData(componentOrGesture);
|
337
|
+
|
338
|
+
let _ = fillMissingStatesTransitions(eventList, isDiscreteHandler(handlerType));
|
339
|
+
|
340
|
+
_ = _.map(fillMissingDefaultsFor({
|
341
|
+
handlerTag,
|
342
|
+
handlerType
|
343
|
+
}));
|
344
|
+
_ = (0, _utils.withPrevAndCurrent)(_, fillOldStateChanges);
|
345
|
+
_ = (0, _utils.withPrevAndCurrent)(_, validateStateTransitions); // @ts-ignore TODO
|
346
|
+
|
347
|
+
_ = _.map(wrapWithNativeEvent);
|
348
|
+
const events = _;
|
349
|
+
const firstEvent = events.shift();
|
350
|
+
emitEvent('onGestureHandlerStateChange', firstEvent);
|
351
|
+
let lastSentEvent = firstEvent;
|
352
|
+
|
353
|
+
for (const event of events) {
|
354
|
+
const hasChangedState = lastSentEvent.nativeEvent.state !== event.nativeEvent.state;
|
355
|
+
|
356
|
+
if (hasChangedState) {
|
357
|
+
emitEvent('onGestureHandlerStateChange', event);
|
358
|
+
} else {
|
359
|
+
emitEvent('onGestureHandlerEvent', event);
|
360
|
+
}
|
361
|
+
|
362
|
+
lastSentEvent = event;
|
363
|
+
}
|
364
|
+
}
|
365
|
+
|
366
|
+
function getByGestureTestId(testID) {
|
367
|
+
const handler = (0, _handlersRegistry.findHandlerByTestID)(testID);
|
368
|
+
|
369
|
+
if (handler === null) {
|
370
|
+
throw new Error(`Handler with id: '${testID}' cannot be found`);
|
371
|
+
}
|
372
|
+
|
373
|
+
return handler;
|
374
|
+
}
|
375
|
+
//# sourceMappingURL=jestUtils.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["jestUtils.ts"],"names":["fireEvent","_element","_name","_data","require","_e","handlersDefaultEvents","flingHandlerName","x","y","absoluteX","absoluteY","numberOfPointers","forceTouchHandlerName","force","longPressHandlerName","duration","nativeViewHandlerName","pointerInside","panHandlerName","translationX","translationY","velocityX","velocityY","pinchHandlerName","focalX","focalY","scale","velocity","rotationHandlerName","anchorX","anchorY","rotation","tapHandlerName","isGesture","componentOrGesture","BaseGesture","wrapWithNativeEvent","event","nativeEvent","fillOldStateChanges","previousEvent","currentEvent","isFirstEvent","oldState","State","UNDETERMINED","isGestureStateEvent","state","validateStateTransitions","stringify","JSON","errorMsgWithBothEvents","description","errorMsgWithCurrentEvent","BEGAN","fillMissingDefaultsFor","handlerType","handlerTag","isDiscreteHandler","fillMissingStatesTransitions","events","_events","lastEvent","length","firstEvent","shouldDuplicateFirstEvent","hasState","duplicated","unshift","shouldDuplicateLastEvent","END","FAILED","CANCELLED","push","isWithoutState","noEventsLeft","trueFn","fillEventsForCurrentState","shouldConsumeEvent","shouldTransitionToNextState","peekCurrentEvent","peekNextEvent","consumeCurrentEvent","shift","nextEvent","currentRequiredState","REQUIRED_EVENTS","currentStateIdx","eventData","shouldUseEvent","transformedEvents","ACTIVE","hasAllStates","iterations","nextRequiredState","e","getHandlerData","gesture","emitEvent","eventName","args","DeviceEventEmitter","emit","handlerName","gestureHandlerComponent","props","fireGestureHandler","eventList","_","map","lastSentEvent","hasChangedState","getByGestureTestId","testID","handler","Error"],"mappings":"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","sourcesContent":["import invariant from 'invariant';\nimport { DeviceEventEmitter } from 'react-native';\nimport { ReactTestInstance } from 'react-test-renderer';\nimport {\n FlingGestureHandler,\n FlingGestureHandlerEventPayload,\n flingHandlerName,\n} from './handlers/FlingGestureHandler';\nimport {\n ForceTouchGestureHandler,\n ForceTouchGestureHandlerEventPayload,\n forceTouchHandlerName,\n} from './handlers/ForceTouchGestureHandler';\nimport {\n BaseGestureHandlerProps,\n GestureEvent,\n HandlerStateChangeEvent,\n} from './handlers/gestureHandlerCommon';\nimport { FlingGesture } from './handlers/gestures/flingGesture';\nimport { ForceTouchGesture } from './handlers/gestures/forceTouchGesture';\nimport { BaseGesture, GestureType } from './handlers/gestures/gesture';\nimport { LongPressGesture } from './handlers/gestures/longPressGesture';\nimport { NativeGesture } from './handlers/gestures/nativeGesture';\nimport { PanGesture } from './handlers/gestures/panGesture';\nimport { PinchGesture } from './handlers/gestures/pinchGesture';\nimport { RotationGesture } from './handlers/gestures/rotationGesture';\nimport { TapGesture } from './handlers/gestures/tapGesture';\nimport { findHandlerByTestID } from './handlers/handlersRegistry';\nimport {\n LongPressGestureHandler,\n LongPressGestureHandlerEventPayload,\n longPressHandlerName,\n} from './handlers/LongPressGestureHandler';\nimport {\n NativeViewGestureHandler,\n NativeViewGestureHandlerPayload,\n nativeViewHandlerName,\n} from './handlers/NativeViewGestureHandler';\nimport {\n PanGestureHandler,\n PanGestureHandlerEventPayload,\n panHandlerName,\n} from './handlers/PanGestureHandler';\nimport {\n PinchGestureHandler,\n PinchGestureHandlerEventPayload,\n pinchHandlerName,\n} from './handlers/PinchGestureHandler';\nimport {\n RotationGestureHandler,\n RotationGestureHandlerEventPayload,\n rotationHandlerName,\n} from './handlers/RotationGestureHandler';\nimport {\n TapGestureHandler,\n TapGestureHandlerEventPayload,\n tapHandlerName,\n} from './handlers/TapGestureHandler';\nimport { State } from './State';\nimport { hasProperty, withPrevAndCurrent } from './utils';\n\n// load fireEvent conditionally, so RNGH may be used in setups without testing-library\nlet fireEvent = (\n _element: ReactTestInstance,\n _name: string,\n ..._data: any[]\n) => {\n // NOOP\n};\n\ntry {\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n fireEvent = require('@testing-library/react-native').fireEvent;\n} catch (_e) {\n // do nothing if not available\n}\n\ntype GestureHandlerTestEvent<\n TEventPayload extends Record<string, unknown> = Record<string, unknown>\n> = (\n | GestureEvent<TEventPayload>\n | HandlerStateChangeEvent<TEventPayload>\n)['nativeEvent'];\n\ntype HandlerNames = keyof DefaultEventsMapping;\n\ntype WithNumberOfPointers<T> = {\n [P in keyof T]: T[P] & { numberOfPointers: number };\n};\ntype DefaultEventsMapping = WithNumberOfPointers<{\n [flingHandlerName]: FlingGestureHandlerEventPayload;\n [forceTouchHandlerName]: ForceTouchGestureHandlerEventPayload;\n [longPressHandlerName]: LongPressGestureHandlerEventPayload;\n [nativeViewHandlerName]: NativeViewGestureHandlerPayload;\n [panHandlerName]: PanGestureHandlerEventPayload;\n [pinchHandlerName]: PinchGestureHandlerEventPayload;\n [rotationHandlerName]: RotationGestureHandlerEventPayload;\n [tapHandlerName]: TapGestureHandlerEventPayload;\n}>;\n\nconst handlersDefaultEvents: DefaultEventsMapping = {\n [flingHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n [forceTouchHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n force: 1,\n numberOfPointers: 1,\n },\n [longPressHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n duration: 100,\n numberOfPointers: 1,\n },\n [nativeViewHandlerName]: {\n pointerInside: true,\n numberOfPointers: 1,\n },\n [panHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n translationX: 100,\n translationY: 0,\n velocityX: 3,\n velocityY: 0,\n numberOfPointers: 1,\n },\n [pinchHandlerName]: {\n focalX: 0,\n focalY: 0,\n scale: 2,\n velocity: 1,\n numberOfPointers: 2,\n },\n [rotationHandlerName]: {\n anchorX: 0,\n anchorY: 0,\n rotation: 3.14,\n velocity: 2,\n numberOfPointers: 2,\n },\n [tapHandlerName]: {\n x: 0,\n y: 0,\n absoluteX: 0,\n absoluteY: 0,\n numberOfPointers: 1,\n },\n};\n\nfunction isGesture(\n componentOrGesture: ReactTestInstance | GestureType\n): componentOrGesture is GestureType {\n return componentOrGesture instanceof BaseGesture;\n}\n\ninterface WrappedGestureHandlerTestEvent {\n nativeEvent: GestureHandlerTestEvent;\n}\nfunction wrapWithNativeEvent(\n event: GestureHandlerTestEvent\n): WrappedGestureHandlerTestEvent {\n return { nativeEvent: event };\n}\n\nfunction fillOldStateChanges(\n previousEvent: GestureHandlerTestEvent | null,\n currentEvent: Omit<GestureHandlerTestEvent, 'oldState'>\n): GestureHandlerTestEvent {\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n return {\n oldState: State.UNDETERMINED,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n }\n\n const isGestureStateEvent = previousEvent.state !== currentEvent.state;\n if (isGestureStateEvent) {\n return {\n oldState: previousEvent?.state,\n ...currentEvent,\n } as GestureHandlerTestEvent;\n } else {\n return currentEvent as GestureHandlerTestEvent;\n }\n}\n\ntype EventWithStates = Partial<\n Pick<GestureHandlerTestEvent, 'oldState' | 'state'>\n>;\nfunction validateStateTransitions(\n previousEvent: EventWithStates | null,\n currentEvent: EventWithStates\n) {\n function stringify(event: Record<string, unknown> | null) {\n return JSON.stringify(event, null, 2);\n }\n function errorMsgWithBothEvents(description: string) {\n return `${description}, invalid event: ${stringify(\n currentEvent\n )}, previous event: ${stringify(previousEvent)}`;\n }\n\n function errorMsgWithCurrentEvent(description: string) {\n return `${description}, invalid event: ${stringify(currentEvent)}`;\n }\n\n invariant(\n hasProperty(currentEvent, 'state'),\n errorMsgWithCurrentEvent('every event must have state')\n );\n\n const isFirstEvent = previousEvent === null;\n if (isFirstEvent) {\n invariant(\n currentEvent.state === State.BEGAN,\n errorMsgWithCurrentEvent('first event must have BEGAN state')\n );\n }\n\n if (previousEvent !== null) {\n if (previousEvent.state !== currentEvent.state) {\n invariant(\n hasProperty(currentEvent, 'oldState'),\n errorMsgWithCurrentEvent(\n 'when state changes, oldState field should be present'\n )\n );\n invariant(\n currentEvent.oldState === previousEvent.state,\n errorMsgWithBothEvents(\n \"when state changes, oldState should be the same as previous event' state\"\n )\n );\n }\n }\n\n return currentEvent;\n}\n\ntype EventWithoutStates = Omit<GestureHandlerTestEvent, 'oldState' | 'state'>;\ninterface HandlerInfo {\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction fillMissingDefaultsFor({\n handlerType,\n handlerTag,\n}: HandlerInfo): (\n event: Partial<GestureHandlerTestEvent>\n) => EventWithoutStates {\n return (event) => {\n return {\n ...handlersDefaultEvents[handlerType],\n ...event,\n handlerTag,\n };\n };\n}\n\nfunction isDiscreteHandler(handlerType: HandlerNames) {\n return (\n handlerType === 'TapGestureHandler' ||\n handlerType === 'LongPressGestureHandler'\n );\n}\n\nfunction fillMissingStatesTransitions(\n events: EventWithoutStates[],\n isDiscreteHandler: boolean\n): EventWithoutStates[] {\n type Event = EventWithoutStates | null;\n const _events = [...events];\n const lastEvent = _events[_events.length - 1] ?? null;\n const firstEvent = _events[0] ?? null;\n\n const shouldDuplicateFirstEvent =\n !isDiscreteHandler && !hasState(State.BEGAN)(firstEvent);\n if (shouldDuplicateFirstEvent) {\n const duplicated = { ...firstEvent, state: State.BEGAN };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.unshift(duplicated);\n }\n\n const shouldDuplicateLastEvent =\n !hasState(State.END)(lastEvent) ||\n !hasState(State.FAILED)(lastEvent) ||\n !hasState(State.CANCELLED)(lastEvent);\n\n if (shouldDuplicateLastEvent) {\n const duplicated = { ...lastEvent, state: State.END };\n // @ts-ignore badly typed, property may exist and we don't want to copy it\n delete duplicated.oldState;\n _events.push(duplicated);\n }\n\n function isWithoutState(event: Event) {\n return event !== null && !hasProperty(event, 'state');\n }\n function hasState(state: State) {\n return (event: Event) => event !== null && event.state === state;\n }\n function noEventsLeft(event: Event) {\n return event === null;\n }\n\n function trueFn() {\n return true;\n }\n interface Args {\n shouldConsumeEvent?: (event: Event) => boolean;\n shouldTransitionToNextState?: (nextEvent: Event) => boolean;\n }\n function fillEventsForCurrentState({\n shouldConsumeEvent = trueFn,\n shouldTransitionToNextState = trueFn,\n }: Args) {\n function peekCurrentEvent(): Event {\n return _events[0] ?? null;\n }\n function peekNextEvent(): Event {\n return _events[1] ?? null;\n }\n function consumeCurrentEvent() {\n _events.shift();\n }\n const currentEvent = peekCurrentEvent();\n const nextEvent = peekNextEvent();\n const currentRequiredState = REQUIRED_EVENTS[currentStateIdx];\n\n let eventData = {};\n const shouldUseEvent = shouldConsumeEvent(currentEvent);\n if (shouldUseEvent) {\n eventData = currentEvent!;\n consumeCurrentEvent();\n }\n transformedEvents.push({ state: currentRequiredState, ...eventData });\n if (shouldTransitionToNextState(nextEvent)) {\n currentStateIdx++;\n }\n }\n\n const REQUIRED_EVENTS = [State.BEGAN, State.ACTIVE, State.END];\n\n let currentStateIdx = 0;\n const transformedEvents: EventWithoutStates[] = [];\n let hasAllStates;\n let iterations = 0;\n do {\n const nextRequiredState = REQUIRED_EVENTS[currentStateIdx];\n if (nextRequiredState === State.BEGAN) {\n fillEventsForCurrentState({\n shouldConsumeEvent: (e: Event) =>\n isWithoutState(e) || hasState(State.BEGAN)(e),\n });\n } else if (nextRequiredState === State.ACTIVE) {\n const shouldConsumeEvent = (e: Event) =>\n isWithoutState(e) || hasState(State.ACTIVE)(e);\n const shouldTransitionToNextState = (nextEvent: Event) =>\n noEventsLeft(nextEvent) ||\n hasState(State.END)(nextEvent) ||\n hasState(State.FAILED)(nextEvent) ||\n hasState(State.CANCELLED)(nextEvent);\n\n fillEventsForCurrentState({\n shouldConsumeEvent,\n shouldTransitionToNextState,\n });\n } else if (nextRequiredState === State.END) {\n fillEventsForCurrentState({});\n }\n hasAllStates = currentStateIdx === REQUIRED_EVENTS.length;\n\n invariant(\n iterations++ <= 500,\n 'exceeded max number of iterations, please report a bug in RNGH repository with your test case'\n );\n } while (!hasAllStates);\n\n return transformedEvents;\n}\n\ntype EventEmitter = (\n eventName: string,\n args: { nativeEvent: GestureHandlerTestEvent }\n) => void;\ninterface HandlerData {\n emitEvent: EventEmitter;\n handlerType: HandlerNames;\n handlerTag: number;\n}\nfunction getHandlerData(\n componentOrGesture: ReactTestInstance | GestureType\n): HandlerData {\n if (isGesture(componentOrGesture)) {\n const gesture = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n DeviceEventEmitter.emit(eventName, args.nativeEvent);\n },\n handlerType: gesture.handlerName as HandlerNames,\n handlerTag: gesture.handlerTag,\n };\n }\n const gestureHandlerComponent = componentOrGesture;\n return {\n emitEvent: (eventName, args) => {\n fireEvent(gestureHandlerComponent, eventName, args);\n },\n handlerType: gestureHandlerComponent.props.handlerType as HandlerNames,\n handlerTag: gestureHandlerComponent.props.handlerTag as number,\n };\n}\ntype AllGestures =\n | TapGesture\n | PanGesture\n | LongPressGesture\n | RotationGesture\n | PinchGesture\n | FlingGesture\n | ForceTouchGesture\n | NativeGesture;\n\ntype AllHandlers =\n | TapGestureHandler\n | PanGestureHandler\n | LongPressGestureHandler\n | RotationGestureHandler\n | PinchGestureHandler\n | FlingGestureHandler\n | ForceTouchGestureHandler\n | NativeViewGestureHandler;\n\n// prettier-ignore\ntype ClassComponentConstructor<P> = new (props: P) => React.Component<P, any, any>;\n\ntype ExtractPayloadFromProps<T> = T extends BaseGestureHandlerProps<\n infer TPayload\n>\n ? TPayload\n : never;\n\ntype ExtractConfig<T> = T extends BaseGesture<infer TGesturePayload>\n ? TGesturePayload\n : T extends ClassComponentConstructor<infer THandlerProps>\n ? ExtractPayloadFromProps<THandlerProps>\n : Record<string, unknown>;\n\nexport function fireGestureHandler<THandler extends AllGestures | AllHandlers>(\n componentOrGesture: ReactTestInstance | GestureType,\n eventList: Partial<GestureHandlerTestEvent<ExtractConfig<THandler>>>[] = []\n): void {\n const { emitEvent, handlerType, handlerTag } = getHandlerData(\n componentOrGesture\n );\n\n let _ = fillMissingStatesTransitions(\n eventList,\n isDiscreteHandler(handlerType)\n );\n _ = _.map(fillMissingDefaultsFor({ handlerTag, handlerType }));\n _ = withPrevAndCurrent(_, fillOldStateChanges);\n _ = withPrevAndCurrent(_, validateStateTransitions);\n // @ts-ignore TODO\n _ = _.map(wrapWithNativeEvent);\n\n const events = (_ as unknown) as WrappedGestureHandlerTestEvent[];\n\n const firstEvent = events.shift()!;\n\n emitEvent('onGestureHandlerStateChange', firstEvent);\n let lastSentEvent = firstEvent;\n for (const event of events) {\n const hasChangedState =\n lastSentEvent.nativeEvent.state !== event.nativeEvent.state;\n\n if (hasChangedState) {\n emitEvent('onGestureHandlerStateChange', event);\n } else {\n emitEvent('onGestureHandlerEvent', event);\n }\n lastSentEvent = event;\n }\n}\n\nexport function getByGestureTestId(testID: string) {\n const handler = findHandlerByTestID(testID);\n if (handler === null) {\n throw new Error(`Handler with id: '${testID}' cannot be found`);\n }\n return handler;\n}\n"]}
|
package/lib/commonjs/utils.js
CHANGED
@@ -4,6 +4,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
5
5
|
});
|
6
6
|
exports.toArray = toArray;
|
7
|
+
exports.withPrevAndCurrent = withPrevAndCurrent;
|
8
|
+
exports.hasProperty = hasProperty;
|
9
|
+
exports.isJestEnv = isJestEnv;
|
10
|
+
exports.tagMessage = tagMessage;
|
11
|
+
exports.isFabric = isFabric;
|
7
12
|
|
8
13
|
function toArray(object) {
|
9
14
|
if (!Array.isArray(object)) {
|
@@ -12,4 +17,37 @@ function toArray(object) {
|
|
12
17
|
|
13
18
|
return object;
|
14
19
|
}
|
20
|
+
|
21
|
+
function withPrevAndCurrent(array, mapFn) {
|
22
|
+
const previousArr = [null];
|
23
|
+
const currentArr = [...array];
|
24
|
+
const transformedArr = [];
|
25
|
+
currentArr.forEach((current, i) => {
|
26
|
+
const previous = previousArr[i];
|
27
|
+
const transformed = mapFn(previous, current);
|
28
|
+
previousArr.push(transformed);
|
29
|
+
transformedArr.push(transformed);
|
30
|
+
});
|
31
|
+
return transformedArr;
|
32
|
+
} // eslint-disable-next-line @typescript-eslint/ban-types
|
33
|
+
|
34
|
+
|
35
|
+
function hasProperty(object, key) {
|
36
|
+
return Object.prototype.hasOwnProperty.call(object, key);
|
37
|
+
}
|
38
|
+
|
39
|
+
function isJestEnv() {
|
40
|
+
return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;
|
41
|
+
}
|
42
|
+
|
43
|
+
function tagMessage(msg) {
|
44
|
+
return `[react-native-gesture-handler] ${msg}`;
|
45
|
+
}
|
46
|
+
|
47
|
+
function isFabric() {
|
48
|
+
var _global;
|
49
|
+
|
50
|
+
// @ts-expect-error nativeFabricUIManager is not yet included in the RN types
|
51
|
+
return !!((_global = global) !== null && _global !== void 0 && _global.nativeFabricUIManager);
|
52
|
+
}
|
15
53
|
//# sourceMappingURL=utils.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["utils.ts"],"names":["toArray","object","Array","isArray"],"mappings":"
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["toArray","object","Array","isArray","withPrevAndCurrent","array","mapFn","previousArr","currentArr","transformedArr","forEach","current","i","previous","transformed","push","hasProperty","key","Object","prototype","hasOwnProperty","call","isJestEnv","global","process","env","JEST_WORKER_ID","tagMessage","msg","isFabric","nativeFabricUIManager"],"mappings":";;;;;;;;;;;;AAAO,SAASA,OAAT,CAAoBC,MAApB,EAA0C;AAC/C,MAAI,CAACC,KAAK,CAACC,OAAN,CAAcF,MAAd,CAAL,EAA4B;AAC1B,WAAO,CAACA,MAAD,CAAP;AACD;;AAED,SAAOA,MAAP;AACD;;AAMM,SAASG,kBAAT,CACLC,KADK,EAELC,KAFK,EAGU;AACf,QAAMC,WAAmC,GAAG,CAAC,IAAD,CAA5C;AACA,QAAMC,UAAU,GAAG,CAAC,GAAGH,KAAJ,CAAnB;AACA,QAAMI,cAA6B,GAAG,EAAtC;AACAD,EAAAA,UAAU,CAACE,OAAX,CAAmB,CAACC,OAAD,EAAUC,CAAV,KAAgB;AACjC,UAAMC,QAAQ,GAAGN,WAAW,CAACK,CAAD,CAA5B;AACA,UAAME,WAAW,GAAGR,KAAK,CAACO,QAAD,EAAWF,OAAX,CAAzB;AACAJ,IAAAA,WAAW,CAACQ,IAAZ,CAAiBD,WAAjB;AACAL,IAAAA,cAAc,CAACM,IAAf,CAAoBD,WAApB;AACD,GALD;AAMA,SAAOL,cAAP;AACD,C,CAED;;;AACO,SAASO,WAAT,CAAqBf,MAArB,EAAqCgB,GAArC,EAAkD;AACvD,SAAOC,MAAM,CAACC,SAAP,CAAiBC,cAAjB,CAAgCC,IAAhC,CAAqCpB,MAArC,EAA6CgB,GAA7C,CAAP;AACD;;AAEM,SAASK,SAAT,GAA8B;AACnC,SAAON,WAAW,CAACO,MAAD,EAAS,SAAT,CAAX,IAAkC,CAAC,CAACC,OAAO,CAACC,GAAR,CAAYC,cAAvD;AACD;;AAEM,SAASC,UAAT,CAAoBC,GAApB,EAAiC;AACtC,SAAQ,kCAAiCA,GAAI,EAA7C;AACD;;AAEM,SAASC,QAAT,GAA6B;AAAA;;AAClC;AACA,SAAO,CAAC,aAACN,MAAD,oCAAC,QAAQO,qBAAT,CAAR;AACD","sourcesContent":["export function toArray<T>(object: T | T[]): T[] {\n if (!Array.isArray(object)) {\n return [object];\n }\n\n return object;\n}\n\nexport type withPrevAndCurrentMapFn<T, Transformed> = (\n previous: Transformed | null,\n current: T\n) => Transformed;\nexport function withPrevAndCurrent<T, Transformed>(\n array: T[],\n mapFn: withPrevAndCurrentMapFn<T, Transformed>\n): Transformed[] {\n const previousArr: (null | Transformed)[] = [null];\n const currentArr = [...array];\n const transformedArr: Transformed[] = [];\n currentArr.forEach((current, i) => {\n const previous = previousArr[i];\n const transformed = mapFn(previous, current);\n previousArr.push(transformed);\n transformedArr.push(transformed);\n });\n return transformedArr;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-types\nexport function hasProperty(object: object, key: string) {\n return Object.prototype.hasOwnProperty.call(object, key);\n}\n\nexport function isJestEnv(): boolean {\n return hasProperty(global, 'process') && !!process.env.JEST_WORKER_ID;\n}\n\nexport function tagMessage(msg: string) {\n return `[react-native-gesture-handler] ${msg}`;\n}\n\nexport function isFabric(): boolean {\n // @ts-expect-error nativeFabricUIManager is not yet included in the RN types\n return !!global?.nativeFabricUIManager;\n}\n"]}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
export const ActionType = {
|
2
|
+
REANIMATED_WORKLET: 1,
|
3
|
+
NATIVE_ANIMATED_EVENT: 2,
|
4
|
+
JS_FUNCTION_OLD_API: 3,
|
5
|
+
JS_FUNCTION_NEW_API: 4
|
6
|
+
}; // eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value
|
7
|
+
//# sourceMappingURL=ActionType.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"sources":["ActionType.ts"],"names":["ActionType","REANIMATED_WORKLET","NATIVE_ANIMATED_EVENT","JS_FUNCTION_OLD_API","JS_FUNCTION_NEW_API"],"mappings":"AAAA,OAAO,MAAMA,UAAU,GAAG;AACxBC,EAAAA,kBAAkB,EAAE,CADI;AAExBC,EAAAA,qBAAqB,EAAE,CAFC;AAGxBC,EAAAA,mBAAmB,EAAE,CAHG;AAIxBC,EAAAA,mBAAmB,EAAE;AAJG,CAAnB,C,CAOP","sourcesContent":["export const ActionType = {\n REANIMATED_WORKLET: 1,\n NATIVE_ANIMATED_EVENT: 2,\n JS_FUNCTION_OLD_API: 3,\n JS_FUNCTION_NEW_API: 4,\n} as const;\n\n// eslint-disable-next-line @typescript-eslint/no-redeclare -- backward compatibility; it can be used as a type and as a value\nexport type ActionType = typeof ActionType[keyof typeof ActionType];\n"]}
|
@@ -1,10 +1,9 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-var-requires */
|
1
2
|
import * as React from 'react';
|
2
3
|
import { requireNativeComponent } from 'react-native';
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
}) {
|
8
|
-
return /*#__PURE__*/React.createElement(GestureHandlerRootViewNative, rest, children);
|
4
|
+
import { isFabric } from './utils';
|
5
|
+
const GestureHandlerRootViewNativeComponent = isFabric() ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default : requireNativeComponent('RNGestureHandlerRootView');
|
6
|
+
export default function GestureHandlerRootView(props) {
|
7
|
+
return /*#__PURE__*/React.createElement(GestureHandlerRootViewNativeComponent, props);
|
9
8
|
}
|
10
9
|
//# sourceMappingURL=GestureHandlerRootView.android.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["React","requireNativeComponent","
|
1
|
+
{"version":3,"sources":["GestureHandlerRootView.android.tsx"],"names":["React","requireNativeComponent","isFabric","GestureHandlerRootViewNativeComponent","require","default","GestureHandlerRootView","props"],"mappings":"AAAA;AACA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,sBAAT,QAAkD,cAAlD;AACA,SAASC,QAAT,QAAyB,SAAzB;AAEA,MAAMC,qCAAqC,GAAGD,QAAQ,KAClDE,OAAO,CAAC,kDAAD,CAAP,CAA4DC,OADV,GAElDJ,sBAAsB,CAAC,0BAAD,CAF1B;AAOA,eAAe,SAASK,sBAAT,CACbC,KADa,EAEb;AACA,sBAAO,oBAAC,qCAAD,EAA2CA,KAA3C,CAAP;AACD","sourcesContent":["/* eslint-disable @typescript-eslint/no-var-requires */\nimport * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { requireNativeComponent, ViewProps } from 'react-native';\nimport { isFabric } from './utils';\n\nconst GestureHandlerRootViewNativeComponent = isFabric()\n ? require('./fabric/RNGestureHandlerRootViewNativeComponent').default\n : requireNativeComponent('RNGestureHandlerRootView');\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n return <GestureHandlerRootViewNativeComponent {...props} />;\n}\n"]}
|
@@ -1,7 +1,6 @@
|
|
1
1
|
import * as React from 'react';
|
2
2
|
import { View } from 'react-native';
|
3
|
-
export default function GestureHandlerRootView({
|
4
|
-
|
5
|
-
return /*#__PURE__*/React.createElement(View, rest);
|
3
|
+
export default function GestureHandlerRootView(props) {
|
4
|
+
return /*#__PURE__*/React.createElement(View, props);
|
6
5
|
}
|
7
6
|
//# sourceMappingURL=GestureHandlerRootView.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["React","View","GestureHandlerRootView","
|
1
|
+
{"version":3,"sources":["GestureHandlerRootView.tsx"],"names":["React","View","GestureHandlerRootView","props"],"mappings":"AAAA,OAAO,KAAKA,KAAZ,MAAuB,OAAvB;AAEA,SAASC,IAAT,QAAgC,cAAhC;AAKA,eAAe,SAASC,sBAAT,CACbC,KADa,EAEb;AACA,sBAAO,oBAAC,IAAD,EAAUA,KAAV,CAAP;AACD","sourcesContent":["import * as React from 'react';\nimport { PropsWithChildren } from 'react';\nimport { View, ViewProps } from 'react-native';\n\nexport interface GestureHandlerRootViewProps\n extends PropsWithChildren<ViewProps> {}\n\nexport default function GestureHandlerRootView(\n props: GestureHandlerRootViewProps\n) {\n return <View {...props} />;\n}\n"]}
|
@@ -1,12 +1,13 @@
|
|
1
1
|
import { NativeModules } from 'react-native';
|
2
|
+
import { tagMessage } from './utils';
|
2
3
|
const {
|
3
4
|
RNGestureHandlerModule
|
4
5
|
} = NativeModules;
|
5
6
|
|
6
7
|
if (RNGestureHandlerModule == null) {
|
7
|
-
console.error(`react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).
|
8
|
+
console.error(tagMessage(`react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).
|
8
9
|
|
9
|
-
|
10
|
+
For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`.split('\n').map(line => line.trim()).join('\n')));
|
10
11
|
}
|
11
12
|
|
12
13
|
export default RNGestureHandlerModule;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["RNGestureHandlerModule.ts"],"names":["NativeModules","RNGestureHandlerModule","console","error","split","map","line","trim","join"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AACA,MAAM;AAAEC,EAAAA;AAAF,
|
1
|
+
{"version":3,"sources":["RNGestureHandlerModule.ts"],"names":["NativeModules","tagMessage","RNGestureHandlerModule","console","error","split","map","line","trim","join"],"mappings":"AAAA,SAASA,aAAT,QAA8B,cAA9B;AAEA,SAASC,UAAT,QAA2B,SAA3B;AACA,MAAM;AAAEC,EAAAA;AAAF,IAA6BF,aAAnC;;AAEA,IAAIE,sBAAsB,IAAI,IAA9B,EAAoC;AAClCC,EAAAA,OAAO,CAACC,KAAR,CACEH,UAAU,CACP;AACP;AACA,gIAFM,CAGGI,KAHH,CAGS,IAHT,EAIGC,GAJH,CAIQC,IAAD,IAAUA,IAAI,CAACC,IAAL,EAJjB,EAKGC,IALH,CAKQ,IALR,CADQ,CADZ;AAUD;;AAuBD,eAAeP,sBAAf","sourcesContent":["import { NativeModules } from 'react-native';\nimport { ActionType } from './ActionType';\nimport { tagMessage } from './utils';\nconst { RNGestureHandlerModule } = NativeModules;\n\nif (RNGestureHandlerModule == null) {\n console.error(\n tagMessage(\n `react-native-gesture-handler module was not found. Make sure you're running your app on the native platform and your code is linked properly (cd ios && pod install && cd ..).\n\n For installation instructions, please refer to https://docs.swmansion.com/react-native-gesture-handler/docs/#installation`\n .split('\\n')\n .map((line) => line.trim())\n .join('\\n')\n )\n );\n}\n\nexport type RNGestureHandlerModuleProps = {\n handleSetJSResponder: (tag: number, blockNativeResponder: boolean) => void;\n handleClearJSResponder: () => void;\n createGestureHandler: (\n handlerName: string,\n handlerTag: number,\n config: Readonly<Record<string, unknown>>\n ) => void;\n attachGestureHandler: (\n handlerTag: number,\n newView: number,\n actionType: ActionType\n ) => void;\n updateGestureHandler: (\n handlerTag: number,\n newConfig: Readonly<Record<string, unknown>>\n ) => void;\n dropGestureHandler: (handlerTag: number) => void;\n install: () => void;\n};\n\nexport default RNGestureHandlerModule as RNGestureHandlerModuleProps;\n"]}
|
@@ -36,7 +36,7 @@ export default {
|
|
36
36
|
this.updateGestureHandler(handlerTag, config);
|
37
37
|
},
|
38
38
|
|
39
|
-
attachGestureHandler(handlerTag, newView,
|
39
|
+
attachGestureHandler(handlerTag, newView, _actionType, propsRef) {
|
40
40
|
NodeManager.getHandler(handlerTag).setView(newView, propsRef);
|
41
41
|
},
|
42
42
|
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sources":["RNGestureHandlerModule.web.ts"],"names":["Direction","FlingGestureHandler","LongPressGestureHandler","NativeViewGestureHandler","NodeManager","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","TapGestureHandler","Gestures","handleSetJSResponder","tag","blockNativeResponder","console","warn","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","updateGestureHandler","attachGestureHandler","newView","
|
1
|
+
{"version":3,"sources":["RNGestureHandlerModule.web.ts"],"names":["Direction","FlingGestureHandler","LongPressGestureHandler","NativeViewGestureHandler","NodeManager","PanGestureHandler","PinchGestureHandler","RotationGestureHandler","TapGestureHandler","Gestures","handleSetJSResponder","tag","blockNativeResponder","console","warn","handleClearJSResponder","createGestureHandler","handlerName","handlerTag","config","Error","GestureClass","updateGestureHandler","attachGestureHandler","newView","_actionType","propsRef","getHandler","setView","newConfig","updateGestureConfig","getGestureHandlerNode","dropGestureHandler"],"mappings":"AACA,SAASA,SAAT,QAA0B,iBAA1B;AACA,OAAOC,mBAAP,MAAgC,2BAAhC;AACA,OAAOC,uBAAP,MAAoC,+BAApC;AACA,OAAOC,wBAAP,MAAqC,gCAArC;AACA,OAAO,KAAKC,WAAZ,MAA6B,mBAA7B;AACA,OAAOC,iBAAP,MAA8B,yBAA9B;AACA,OAAOC,mBAAP,MAAgC,2BAAhC;AACA,OAAOC,sBAAP,MAAmC,8BAAnC;AACA,OAAOC,iBAAP,MAA8B,yBAA9B;AAEA,OAAO,MAAMC,QAAQ,GAAG;AACtBJ,EAAAA,iBADsB;AAEtBE,EAAAA,sBAFsB;AAGtBD,EAAAA,mBAHsB;AAItBE,EAAAA,iBAJsB;AAKtBL,EAAAA,wBALsB;AAMtBD,EAAAA,uBANsB;AAOtBD,EAAAA,mBAPsB,CAQtB;;AARsB,CAAjB;AAWP,eAAe;AACbD,EAAAA,SADa;;AAEbU,EAAAA,oBAAoB,CAACC,GAAD,EAAcC,oBAAd,EAA6C;AAC/DC,IAAAA,OAAO,CAACC,IAAR,CAAa,wBAAb,EAAuCH,GAAvC,EAA4CC,oBAA5C;AACD,GAJY;;AAKbG,EAAAA,sBAAsB,GAAG;AACvBF,IAAAA,OAAO,CAACC,IAAR,CAAa,0BAAb;AACD,GAPY;;AAQbE,EAAAA,oBAAoB,CAClBC,WADkB,EAElBC,UAFkB,EAGlBC,MAHkB,EAIlB;AACA;AACA,QAAI,EAAEF,WAAW,IAAIR,QAAjB,CAAJ,EACE,MAAM,IAAIW,KAAJ,CACH,iCAAgCH,WAAY,2BADzC,CAAN;AAGF,UAAMI,YAAY,GAAGZ,QAAQ,CAACQ,WAAD,CAA7B;AACAb,IAAAA,WAAW,CAACY,oBAAZ,CAAiCE,UAAjC,EAA6C,IAAIG,YAAJ,EAA7C;AACA,SAAKC,oBAAL,CAA0BJ,UAA1B,EAAsCC,MAAtC;AACD,GArBY;;AAsBbI,EAAAA,oBAAoB,CAClBL,UADkB,EAElBM,OAFkB,EAGlBC,WAHkB,EAIlBC,QAJkB,EAKlB;AACAtB,IAAAA,WAAW,CAACuB,UAAZ,CAAuBT,UAAvB,EAAmCU,OAAnC,CAA2CJ,OAA3C,EAAoDE,QAApD;AACD,GA7BY;;AA8BbJ,EAAAA,oBAAoB,CAACJ,UAAD,EAAqBW,SAArB,EAAqC;AACvDzB,IAAAA,WAAW,CAACuB,UAAZ,CAAuBT,UAAvB,EAAmCY,mBAAnC,CAAuDD,SAAvD;AACD,GAhCY;;AAiCbE,EAAAA,qBAAqB,CAACb,UAAD,EAAqB;AACxC,WAAOd,WAAW,CAACuB,UAAZ,CAAuBT,UAAvB,CAAP;AACD,GAnCY;;AAoCbc,EAAAA,kBAAkB,CAACd,UAAD,EAAqB;AACrCd,IAAAA,WAAW,CAAC4B,kBAAZ,CAA+Bd,UAA/B;AACD;;AAtCY,CAAf","sourcesContent":["import { ActionType } from './ActionType';\nimport { Direction } from './web/constants';\nimport FlingGestureHandler from './web/FlingGestureHandler';\nimport LongPressGestureHandler from './web/LongPressGestureHandler';\nimport NativeViewGestureHandler from './web/NativeViewGestureHandler';\nimport * as NodeManager from './web/NodeManager';\nimport PanGestureHandler from './web/PanGestureHandler';\nimport PinchGestureHandler from './web/PinchGestureHandler';\nimport RotationGestureHandler from './web/RotationGestureHandler';\nimport TapGestureHandler from './web/TapGestureHandler';\n\nexport const Gestures = {\n PanGestureHandler,\n RotationGestureHandler,\n PinchGestureHandler,\n TapGestureHandler,\n NativeViewGestureHandler,\n LongPressGestureHandler,\n FlingGestureHandler,\n // ForceTouchGestureHandler,\n};\n\nexport default {\n Direction,\n handleSetJSResponder(tag: number, blockNativeResponder: boolean) {\n console.warn('handleSetJSResponder: ', tag, blockNativeResponder);\n },\n handleClearJSResponder() {\n console.warn('handleClearJSResponder: ');\n },\n createGestureHandler<T>(\n handlerName: keyof typeof Gestures,\n handlerTag: number,\n config: T\n ) {\n //TODO(TS) extends config\n if (!(handlerName in Gestures))\n throw new Error(\n `react-native-gesture-handler: ${handlerName} is not supported on web.`\n );\n const GestureClass = Gestures[handlerName];\n NodeManager.createGestureHandler(handlerTag, new GestureClass());\n this.updateGestureHandler(handlerTag, config);\n },\n attachGestureHandler(\n handlerTag: number,\n newView: number,\n _actionType: ActionType,\n propsRef: React.RefObject<unknown>\n ) {\n NodeManager.getHandler(handlerTag).setView(newView, propsRef);\n },\n updateGestureHandler(handlerTag: number, newConfig: any) {\n NodeManager.getHandler(handlerTag).updateGestureConfig(newConfig);\n },\n getGestureHandlerNode(handlerTag: number) {\n return NodeManager.getHandler(handlerTag);\n },\n dropGestureHandler(handlerTag: number) {\n NodeManager.dropGestureHandler(handlerTag);\n },\n};\n"]}
|
@@ -308,7 +308,7 @@ export default class DrawerLayout extends Component {
|
|
308
308
|
|
309
309
|
_defineProperty(this, "openDrawer", (options = {}) => {
|
310
310
|
this.animateDrawer( // TODO: decide if it should be null or undefined is the proper value
|
311
|
-
undefined, this.props.drawerWidth, options.velocity ? options.velocity : 0); // We need to force the update, otherwise the overlay is not rerendered and
|
311
|
+
undefined, this.props.drawerWidth, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and
|
312
312
|
// it would not be clickable
|
313
313
|
|
314
314
|
this.forceUpdate();
|
@@ -316,7 +316,7 @@ export default class DrawerLayout extends Component {
|
|
316
316
|
|
317
317
|
_defineProperty(this, "closeDrawer", (options = {}) => {
|
318
318
|
// TODO: decide if it should be null or undefined is the proper value
|
319
|
-
this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0); // We need to force the update, otherwise the overlay is not rerendered and
|
319
|
+
this.animateDrawer(undefined, 0, options.velocity ? options.velocity : 0, options.speed); // We need to force the update, otherwise the overlay is not rerendered and
|
320
320
|
// it would be still clickable
|
321
321
|
|
322
322
|
this.forceUpdate();
|