react-native-gesture-handler 2.7.1 → 2.9.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/RNGestureHandler.podspec +1 -1
- package/android/build.gradle +53 -46
- package/android/noreanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +3 -3
- package/android/reanimated/src/main/java/com/swmansion/gesturehandler/ReanimatedEventDispatcher.kt +7 -7
- package/android/src/fabric/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/RNGestureHandlerPackage.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/FlingGestureHandler.kt +12 -9
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandler.kt +39 -31
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerInteractionController.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerOrchestrator.kt +28 -19
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureHandlerRegistry.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/GestureUtils.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/LongPressGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ManualGestureHandler.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/NativeViewGestureHandler.kt +5 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/OnTouchEventListener.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PanGestureHandler.kt +7 -5
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PinchGestureHandler.kt +11 -4
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/PointerEventsConfig.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureDetector.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/RotationGestureHandler.kt +7 -2
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ScaleGestureDetector.java +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/TapGestureHandler.kt +3 -3
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/core}/ViewConfigurationHelper.kt +1 -1
- package/android/{lib/src/main/java/com/swmansion/gesturehandler → src/main/java/com/swmansion/gesturehandler/react}/Extensions.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEnabledRootView.kt +1 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +20 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +3 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +40 -15
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRegistry.kt +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +8 -6
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +0 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +4 -2
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +5 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNViewConfigurationHelper.kt +2 -2
- package/android/src/main/jni/CMakeLists.txt +10 -44
- package/android/src/main/jni/cpp-adapter.cpp +16 -13
- package/android/src/paper/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +5 -5
- package/ios/Handlers/RNFlingHandler.m +39 -37
- package/ios/Handlers/RNForceTouchHandler.m +19 -17
- package/ios/Handlers/RNLongPressHandler.m +20 -22
- package/ios/Handlers/RNManualHandler.m +23 -8
- package/ios/Handlers/RNNativeViewHandler.mm +92 -88
- package/ios/Handlers/RNPanHandler.m +28 -32
- package/ios/Handlers/RNPinchHandler.m +9 -10
- package/ios/Handlers/RNRotationHandler.m +11 -14
- package/ios/Handlers/RNTapHandler.m +26 -26
- package/ios/RNGestureHandler.h +31 -24
- package/ios/RNGestureHandler.m +278 -273
- package/ios/RNGestureHandlerActionType.h +6 -4
- package/ios/RNGestureHandlerButton.m +11 -12
- package/ios/RNGestureHandlerButtonComponentView.mm +7 -8
- package/ios/RNGestureHandlerButtonManager.m +6 -5
- package/ios/RNGestureHandlerDirection.h +4 -4
- package/ios/RNGestureHandlerEvents.h +3 -4
- package/ios/RNGestureHandlerEvents.m +114 -119
- package/ios/RNGestureHandlerManager.h +1 -2
- package/ios/RNGestureHandlerManager.mm +176 -178
- package/ios/RNGestureHandlerModule.h +1 -2
- package/ios/RNGestureHandlerModule.mm +126 -122
- package/ios/RNGestureHandlerPointerTracker.h +1 -1
- package/ios/RNGestureHandlerPointerTracker.m +40 -37
- package/ios/RNGestureHandlerRegistry.h +3 -1
- package/ios/RNGestureHandlerRegistry.m +24 -22
- package/ios/RNGestureHandlerState.h +6 -6
- package/ios/RNGestureHandlerStateManager.h +1 -1
- package/ios/RNManualActivationRecognizer.m +9 -9
- package/ios/RNRootViewGestureRecognizer.m +36 -39
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +156 -0
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/Swipeable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/gestureHandlerRootHOC.js +2 -1
- package/lib/commonjs/gestureHandlerRootHOC.js.map +1 -1
- package/lib/commonjs/getShadowNodeFromRef.js +2 -2
- package/lib/commonjs/getShadowNodeFromRef.js.map +1 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js +3 -1
- package/lib/commonjs/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/TapGestureHandler.js +3 -1
- package/lib/commonjs/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +5 -2
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerTypesCompat.js +4 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +87 -38
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/longPressGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/tapGesture.js +1 -0
- package/lib/commonjs/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/commonjs/jestUtils/jestUtils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +28 -3
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +0 -5
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -2
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web_hammer/GestureHandler.js.map +1 -1
- package/lib/commonjs/web_hammer/NodeManager.js +4 -1
- package/lib/commonjs/web_hammer/NodeManager.js.map +1 -1
- package/lib/commonjs/web_hammer/PanGestureHandler.js +25 -6
- package/lib/commonjs/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +117 -0
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -0
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/Swipeable.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/gestureHandlerRootHOC.js +2 -1
- package/lib/module/gestureHandlerRootHOC.js.map +1 -1
- package/lib/module/getShadowNodeFromRef.js +2 -2
- package/lib/module/getShadowNodeFromRef.js.map +1 -1
- package/lib/module/handlers/LongPressGestureHandler.js +3 -1
- package/lib/module/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/handlers/TapGestureHandler.js +3 -1
- package/lib/module/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +5 -2
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestureHandlerTypesCompat.js +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +89 -39
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/longPressGesture.js +1 -0
- package/lib/module/handlers/gestures/longPressGesture.js.map +1 -1
- package/lib/module/handlers/gestures/tapGesture.js +1 -0
- package/lib/module/handlers/gestures/tapGesture.js.map +1 -1
- package/lib/module/jestUtils/jestUtils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -1
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +28 -3
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +0 -2
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +15 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +0 -2
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +0 -5
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +0 -1
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +0 -1
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -2
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web_hammer/GestureHandler.js.map +1 -1
- package/lib/module/web_hammer/NodeManager.js +4 -1
- package/lib/module/web_hammer/NodeManager.js.map +1 -1
- package/lib/module/web_hammer/PanGestureHandler.js +25 -6
- package/lib/module/web_hammer/PanGestureHandler.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +48 -0
- package/lib/typescript/components/DrawerLayout.d.ts +10 -1
- package/lib/typescript/components/Swipeable.d.ts +3 -2
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +1 -1
- package/lib/typescript/gestureHandlerRootHOC.d.ts +1 -1
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/PanGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +3 -1
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +3 -1
- package/lib/typescript/web/interfaces.d.ts +3 -1
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/package.json +17 -14
- package/src/RNGestureHandlerModule.macos.ts +2 -2
- package/src/RNGestureHandlerModule.web.ts +2 -2
- package/src/RNGestureHandlerModule.windows.ts +140 -0
- package/src/components/DrawerLayout.tsx +22 -12
- package/src/components/Swipeable.tsx +16 -13
- package/src/components/touchables/TouchableOpacity.tsx +1 -1
- package/src/gestureHandlerRootHOC.tsx +4 -1
- package/src/getShadowNodeFromRef.ts +3 -3
- package/src/handlers/LongPressGestureHandler.ts +3 -1
- package/src/handlers/TapGestureHandler.ts +3 -1
- package/src/handlers/createHandler.tsx +13 -15
- package/src/handlers/gestureHandlerCommon.ts +9 -4
- package/src/handlers/gestureHandlerTypesCompat.ts +34 -17
- package/src/handlers/gestures/GestureDetector.tsx +117 -44
- package/src/handlers/gestures/eventReceiver.ts +2 -1
- package/src/handlers/gestures/gesture.ts +8 -12
- package/src/handlers/gestures/longPressGesture.ts +1 -0
- package/src/handlers/gestures/tapGesture.ts +1 -0
- package/src/jestUtils/jestUtils.ts +3 -4
- package/src/web/detectors/RotationGestureDetector.ts +2 -1
- package/src/web/handlers/FlingGestureHandler.ts +2 -3
- package/src/web/handlers/GestureHandler.ts +30 -11
- package/src/web/handlers/LongPressGestureHandler.ts +0 -3
- package/src/web/handlers/ManualGestureHandler.ts +10 -1
- package/src/web/handlers/NativeViewGestureHandler.ts +0 -2
- package/src/web/handlers/PanGestureHandler.ts +0 -6
- package/src/web/handlers/PinchGestureHandler.ts +0 -2
- package/src/web/handlers/RotationGestureHandler.ts +2 -5
- package/src/web/handlers/TapGestureHandler.ts +0 -3
- package/src/web/interfaces.ts +3 -0
- package/src/web/tools/InteractionManager.ts +2 -3
- package/src/web_hammer/GestureHandler.ts +6 -8
- package/src/web_hammer/NodeManager.ts +3 -1
- package/src/web_hammer/PanGestureHandler.ts +12 -6
- package/android/lib/build.gradle +0 -28
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import React, { useEffect, useRef,
|
|
1
|
+
import React, { useEffect, useRef, useState } from 'react';
|
|
2
2
|
import {
|
|
3
3
|
GestureType,
|
|
4
4
|
HandlerCallbacks,
|
|
@@ -18,6 +18,7 @@ import {
|
|
|
18
18
|
GestureStateChangeEvent,
|
|
19
19
|
HandlerStateChangeEvent,
|
|
20
20
|
scheduleFlushOperations,
|
|
21
|
+
UserSelect,
|
|
21
22
|
} from '../gestureHandlerCommon';
|
|
22
23
|
import {
|
|
23
24
|
GestureStateManager,
|
|
@@ -125,10 +126,11 @@ interface WebEventHandler {
|
|
|
125
126
|
|
|
126
127
|
interface AttachHandlersConfig {
|
|
127
128
|
preparedGesture: GestureConfigReference;
|
|
128
|
-
gestureConfig: ComposedGesture | GestureType
|
|
129
|
+
gestureConfig: ComposedGesture | GestureType;
|
|
129
130
|
gesture: GestureType[];
|
|
130
131
|
viewTag: number;
|
|
131
132
|
webEventHandlersRef: React.RefObject<WebEventHandler>;
|
|
133
|
+
mountedRef: React.RefObject<boolean>;
|
|
132
134
|
}
|
|
133
135
|
|
|
134
136
|
function attachHandlers({
|
|
@@ -137,9 +139,10 @@ function attachHandlers({
|
|
|
137
139
|
gesture,
|
|
138
140
|
viewTag,
|
|
139
141
|
webEventHandlersRef,
|
|
142
|
+
mountedRef,
|
|
140
143
|
}: AttachHandlersConfig) {
|
|
141
144
|
if (!preparedGesture.firstExecution) {
|
|
142
|
-
gestureConfig
|
|
145
|
+
gestureConfig.initialize();
|
|
143
146
|
} else {
|
|
144
147
|
preparedGesture.firstExecution = false;
|
|
145
148
|
}
|
|
@@ -147,7 +150,10 @@ function attachHandlers({
|
|
|
147
150
|
// use setImmediate to extract handlerTags, because all refs should be initialized
|
|
148
151
|
// when it's ran
|
|
149
152
|
setImmediate(() => {
|
|
150
|
-
|
|
153
|
+
if (!mountedRef.current) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
gestureConfig.prepare();
|
|
151
157
|
});
|
|
152
158
|
|
|
153
159
|
for (const handler of gesture) {
|
|
@@ -164,6 +170,9 @@ function attachHandlers({
|
|
|
164
170
|
// use setImmediate to extract handlerTags, because all refs should be initialized
|
|
165
171
|
// when it's ran
|
|
166
172
|
setImmediate(() => {
|
|
173
|
+
if (!mountedRef.current) {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
167
176
|
for (const handler of gesture) {
|
|
168
177
|
let requireToFail: number[] = [];
|
|
169
178
|
if (handler.config.requireToFail) {
|
|
@@ -197,7 +206,9 @@ function attachHandlers({
|
|
|
197
206
|
: ActionType.JS_FUNCTION_NEW_API;
|
|
198
207
|
|
|
199
208
|
if (Platform.OS === 'web') {
|
|
200
|
-
(
|
|
209
|
+
(
|
|
210
|
+
RNGestureHandlerModule.attachGestureHandler as typeof RNGestureHandlerModuleWeb.attachGestureHandler
|
|
211
|
+
)(
|
|
201
212
|
gesture.handlerTag,
|
|
202
213
|
viewTag,
|
|
203
214
|
ActionType.JS_FUNCTION_OLD_API, // ignored on web
|
|
@@ -215,9 +226,9 @@ function attachHandlers({
|
|
|
215
226
|
if (preparedGesture.animatedHandlers) {
|
|
216
227
|
const isAnimatedGesture = (g: GestureType) => g.shouldUseReanimated;
|
|
217
228
|
|
|
218
|
-
preparedGesture.animatedHandlers.value =
|
|
229
|
+
preparedGesture.animatedHandlers.value = gesture
|
|
219
230
|
.filter(isAnimatedGesture)
|
|
220
|
-
.map((g) => g.handlers) as unknown
|
|
231
|
+
.map((g) => g.handlers) as unknown as HandlerCallbacks<
|
|
221
232
|
Record<string, unknown>
|
|
222
233
|
>[];
|
|
223
234
|
}
|
|
@@ -225,11 +236,11 @@ function attachHandlers({
|
|
|
225
236
|
|
|
226
237
|
function updateHandlers(
|
|
227
238
|
preparedGesture: GestureConfigReference,
|
|
228
|
-
gestureConfig: ComposedGesture | GestureType
|
|
239
|
+
gestureConfig: ComposedGesture | GestureType,
|
|
229
240
|
gesture: GestureType[],
|
|
230
|
-
mountedRef: RefObject<boolean>
|
|
241
|
+
mountedRef: React.RefObject<boolean>
|
|
231
242
|
) {
|
|
232
|
-
gestureConfig
|
|
243
|
+
gestureConfig.prepare();
|
|
233
244
|
|
|
234
245
|
for (let i = 0; i < gesture.length; i++) {
|
|
235
246
|
const handler = preparedGesture.config[i];
|
|
@@ -278,9 +289,9 @@ function updateHandlers(
|
|
|
278
289
|
if (preparedGesture.animatedHandlers) {
|
|
279
290
|
const previousHandlersValue =
|
|
280
291
|
preparedGesture.animatedHandlers.value ?? [];
|
|
281
|
-
const newHandlersValue =
|
|
292
|
+
const newHandlersValue = preparedGesture.config
|
|
282
293
|
.filter((g) => g.shouldUseReanimated) // ignore gestures that shouldn't run on UI
|
|
283
|
-
.map((g) => g.handlers) as unknown
|
|
294
|
+
.map((g) => g.handlers) as unknown as HandlerCallbacks<
|
|
284
295
|
Record<string, unknown>
|
|
285
296
|
>[];
|
|
286
297
|
|
|
@@ -550,9 +561,11 @@ function validateDetectorChildren(ref: any) {
|
|
|
550
561
|
ref._reactInternals.elementType
|
|
551
562
|
: // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
552
563
|
ref._reactInternalFiber.elementType;
|
|
553
|
-
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
554
|
-
let instance =
|
|
555
|
-
.
|
|
564
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
565
|
+
let instance =
|
|
566
|
+
RNRenderer.findHostInstance_DEPRECATED(
|
|
567
|
+
ref
|
|
568
|
+
)._internalFiberInstanceHandleDEV;
|
|
556
569
|
|
|
557
570
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
558
571
|
while (instance && instance.elementType !== wrapType) {
|
|
@@ -569,16 +582,43 @@ function validateDetectorChildren(ref: any) {
|
|
|
569
582
|
}
|
|
570
583
|
}
|
|
571
584
|
|
|
585
|
+
const applyUserSelectProp = (
|
|
586
|
+
userSelect: UserSelect,
|
|
587
|
+
gesture: ComposedGesture | GestureType
|
|
588
|
+
): void => {
|
|
589
|
+
for (const g of gesture.toGestureArray()) {
|
|
590
|
+
g.config.userSelect = userSelect;
|
|
591
|
+
}
|
|
592
|
+
};
|
|
593
|
+
|
|
572
594
|
interface GestureDetectorProps {
|
|
573
|
-
gesture
|
|
595
|
+
gesture: ComposedGesture | GestureType;
|
|
596
|
+
userSelect?: UserSelect;
|
|
574
597
|
children?: React.ReactNode;
|
|
575
598
|
}
|
|
599
|
+
interface GestureDetectorState {
|
|
600
|
+
firstRender: boolean;
|
|
601
|
+
viewRef: React.Component | null;
|
|
602
|
+
previousViewTag: number;
|
|
603
|
+
forceReattach: boolean;
|
|
604
|
+
}
|
|
576
605
|
export const GestureDetector = (props: GestureDetectorProps) => {
|
|
577
606
|
const gestureConfig = props.gesture;
|
|
578
|
-
|
|
607
|
+
|
|
608
|
+
if (props.userSelect) {
|
|
609
|
+
applyUserSelectProp(props.userSelect, gestureConfig);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
const gesture = gestureConfig.toGestureArray();
|
|
579
613
|
const useReanimatedHook = gesture.some((g) => g.shouldUseReanimated);
|
|
580
|
-
|
|
581
|
-
|
|
614
|
+
|
|
615
|
+
// store state in ref to prevent unnecessary renders
|
|
616
|
+
const state = useRef<GestureDetectorState>({
|
|
617
|
+
firstRender: true,
|
|
618
|
+
viewRef: null,
|
|
619
|
+
previousViewTag: -1,
|
|
620
|
+
forceReattach: false,
|
|
621
|
+
}).current;
|
|
582
622
|
const mountedRef = useRef(false);
|
|
583
623
|
const webEventHandlersRef = useRef<WebEventHandler>({
|
|
584
624
|
onGestureHandlerEvent: (e: HandlerStateChangeEvent<unknown>) => {
|
|
@@ -591,6 +631,11 @@ export const GestureDetector = (props: GestureDetectorProps) => {
|
|
|
591
631
|
: undefined,
|
|
592
632
|
});
|
|
593
633
|
|
|
634
|
+
const [renderState, setRenderState] = useState(false);
|
|
635
|
+
function forceRender() {
|
|
636
|
+
setRenderState(!renderState);
|
|
637
|
+
}
|
|
638
|
+
|
|
594
639
|
const preparedGesture = React.useRef<GestureConfigReference>({
|
|
595
640
|
config: gesture,
|
|
596
641
|
animatedEventHandler: null,
|
|
@@ -607,13 +652,44 @@ export const GestureDetector = (props: GestureDetectorProps) => {
|
|
|
607
652
|
);
|
|
608
653
|
}
|
|
609
654
|
|
|
655
|
+
function onHandlersUpdate(skipConfigUpdate?: boolean) {
|
|
656
|
+
// if the underlying view has changed we need to reattach handlers to the new view
|
|
657
|
+
const viewTag = findNodeHandle(state.viewRef) as number;
|
|
658
|
+
const forceReattach = viewTag !== state.previousViewTag;
|
|
659
|
+
|
|
660
|
+
if (forceReattach || needsToReattach(preparedGesture, gesture)) {
|
|
661
|
+
validateDetectorChildren(state.viewRef);
|
|
662
|
+
dropHandlers(preparedGesture);
|
|
663
|
+
attachHandlers({
|
|
664
|
+
preparedGesture,
|
|
665
|
+
gestureConfig,
|
|
666
|
+
gesture,
|
|
667
|
+
webEventHandlersRef,
|
|
668
|
+
viewTag,
|
|
669
|
+
mountedRef,
|
|
670
|
+
});
|
|
671
|
+
|
|
672
|
+
state.previousViewTag = viewTag;
|
|
673
|
+
state.forceReattach = forceReattach;
|
|
674
|
+
if (forceReattach) {
|
|
675
|
+
forceRender();
|
|
676
|
+
}
|
|
677
|
+
} else if (!skipConfigUpdate) {
|
|
678
|
+
updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);
|
|
679
|
+
}
|
|
680
|
+
}
|
|
681
|
+
|
|
610
682
|
// Reanimated event should be rebuilt only when gestures are reattached, otherwise
|
|
611
683
|
// config update will be enough as all necessary items are stored in shared values anyway
|
|
612
684
|
const needsToRebuildReanimatedEvent =
|
|
613
|
-
preparedGesture.firstExecution ||
|
|
685
|
+
preparedGesture.firstExecution ||
|
|
686
|
+
needsToReattach(preparedGesture, gesture) ||
|
|
687
|
+
state.forceReattach;
|
|
688
|
+
|
|
689
|
+
state.forceReattach = false;
|
|
614
690
|
|
|
615
691
|
if (preparedGesture.firstExecution) {
|
|
616
|
-
gestureConfig
|
|
692
|
+
gestureConfig.initialize();
|
|
617
693
|
}
|
|
618
694
|
|
|
619
695
|
if (useReanimatedHook) {
|
|
@@ -623,17 +699,19 @@ export const GestureDetector = (props: GestureDetectorProps) => {
|
|
|
623
699
|
}
|
|
624
700
|
|
|
625
701
|
useEffect(() => {
|
|
626
|
-
|
|
702
|
+
const viewTag = findNodeHandle(state.viewRef) as number;
|
|
703
|
+
state.firstRender = true;
|
|
627
704
|
mountedRef.current = true;
|
|
628
|
-
const viewTag = findNodeHandle(viewRef.current) as number;
|
|
629
705
|
|
|
630
|
-
validateDetectorChildren(viewRef
|
|
706
|
+
validateDetectorChildren(state.viewRef);
|
|
707
|
+
|
|
631
708
|
attachHandlers({
|
|
632
709
|
preparedGesture,
|
|
633
710
|
gestureConfig,
|
|
634
711
|
gesture,
|
|
635
|
-
viewTag,
|
|
636
712
|
webEventHandlersRef,
|
|
713
|
+
viewTag,
|
|
714
|
+
mountedRef,
|
|
637
715
|
});
|
|
638
716
|
|
|
639
717
|
return () => {
|
|
@@ -643,31 +721,26 @@ export const GestureDetector = (props: GestureDetectorProps) => {
|
|
|
643
721
|
}, []);
|
|
644
722
|
|
|
645
723
|
useEffect(() => {
|
|
646
|
-
if (!
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
if (needsToReattach(preparedGesture, gesture)) {
|
|
650
|
-
validateDetectorChildren(viewRef.current);
|
|
651
|
-
dropHandlers(preparedGesture);
|
|
652
|
-
attachHandlers({
|
|
653
|
-
preparedGesture,
|
|
654
|
-
gestureConfig,
|
|
655
|
-
gesture,
|
|
656
|
-
viewTag,
|
|
657
|
-
webEventHandlersRef,
|
|
658
|
-
});
|
|
659
|
-
} else {
|
|
660
|
-
updateHandlers(preparedGesture, gestureConfig, gesture, mountedRef);
|
|
661
|
-
}
|
|
724
|
+
if (!state.firstRender) {
|
|
725
|
+
onHandlersUpdate();
|
|
662
726
|
} else {
|
|
663
|
-
|
|
727
|
+
state.firstRender = false;
|
|
664
728
|
}
|
|
665
729
|
}, [props]);
|
|
666
730
|
|
|
667
731
|
const refFunction = (ref: unknown) => {
|
|
668
732
|
if (ref !== null) {
|
|
669
|
-
|
|
670
|
-
viewRef
|
|
733
|
+
// @ts-ignore Just setting the view ref
|
|
734
|
+
state.viewRef = ref;
|
|
735
|
+
|
|
736
|
+
// if it's the first render, also set the previousViewTag to prevent reattaching gestures when not needed
|
|
737
|
+
if (state.previousViewTag === -1) {
|
|
738
|
+
state.previousViewTag = findNodeHandle(state.viewRef) as number;
|
|
739
|
+
}
|
|
740
|
+
|
|
741
|
+
// pass true as `skipConfigUpdate`, here we only want to trigger the eventual reattaching of handlers
|
|
742
|
+
// in case the view has changed, while config update would be handled be the `useEffect` above
|
|
743
|
+
onHandlersUpdate(true);
|
|
671
744
|
|
|
672
745
|
if (isFabric()) {
|
|
673
746
|
const node = getShadowNodeFromRef(ref);
|
|
@@ -14,7 +14,8 @@ import {
|
|
|
14
14
|
} from './gestureStateManager';
|
|
15
15
|
|
|
16
16
|
let gestureHandlerEventSubscription: EmitterSubscription | null = null;
|
|
17
|
-
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =
|
|
17
|
+
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null =
|
|
18
|
+
null;
|
|
18
19
|
|
|
19
20
|
const gestureStateManagers: Map<number, GestureStateManagerType> = new Map<
|
|
20
21
|
number,
|
|
@@ -202,9 +202,8 @@ export abstract class BaseGesture<
|
|
|
202
202
|
onTouchesDown(callback: TouchEventHandlerType) {
|
|
203
203
|
this.config.needsPointerData = true;
|
|
204
204
|
this.handlers.onTouchesDown = callback;
|
|
205
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =
|
|
206
|
-
callback
|
|
207
|
-
);
|
|
205
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_DOWN] =
|
|
206
|
+
this.isWorklet(callback);
|
|
208
207
|
|
|
209
208
|
return this;
|
|
210
209
|
}
|
|
@@ -212,9 +211,8 @@ export abstract class BaseGesture<
|
|
|
212
211
|
onTouchesMove(callback: TouchEventHandlerType) {
|
|
213
212
|
this.config.needsPointerData = true;
|
|
214
213
|
this.handlers.onTouchesMove = callback;
|
|
215
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =
|
|
216
|
-
callback
|
|
217
|
-
);
|
|
214
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_MOVE] =
|
|
215
|
+
this.isWorklet(callback);
|
|
218
216
|
|
|
219
217
|
return this;
|
|
220
218
|
}
|
|
@@ -222,9 +220,8 @@ export abstract class BaseGesture<
|
|
|
222
220
|
onTouchesUp(callback: TouchEventHandlerType) {
|
|
223
221
|
this.config.needsPointerData = true;
|
|
224
222
|
this.handlers.onTouchesUp = callback;
|
|
225
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =
|
|
226
|
-
callback
|
|
227
|
-
);
|
|
223
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_UP] =
|
|
224
|
+
this.isWorklet(callback);
|
|
228
225
|
|
|
229
226
|
return this;
|
|
230
227
|
}
|
|
@@ -232,9 +229,8 @@ export abstract class BaseGesture<
|
|
|
232
229
|
onTouchesCancelled(callback: TouchEventHandlerType) {
|
|
233
230
|
this.config.needsPointerData = true;
|
|
234
231
|
this.handlers.onTouchesCancelled = callback;
|
|
235
|
-
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =
|
|
236
|
-
callback
|
|
237
|
-
);
|
|
232
|
+
this.handlers.isWorklet[CALLBACK_TYPE.TOUCHES_CANCELLED] =
|
|
233
|
+
this.isWorklet(callback);
|
|
238
234
|
|
|
239
235
|
return this;
|
|
240
236
|
}
|
|
@@ -464,9 +464,8 @@ export function fireGestureHandler<THandler extends AllGestures | AllHandlers>(
|
|
|
464
464
|
componentOrGesture: ReactTestInstance | GestureType,
|
|
465
465
|
eventList: Partial<GestureHandlerTestEvent<ExtractConfig<THandler>>>[] = []
|
|
466
466
|
): void {
|
|
467
|
-
const { emitEvent, handlerType, handlerTag } =
|
|
468
|
-
componentOrGesture
|
|
469
|
-
);
|
|
467
|
+
const { emitEvent, handlerType, handlerTag } =
|
|
468
|
+
getHandlerData(componentOrGesture);
|
|
470
469
|
|
|
471
470
|
let _ = fillMissingStatesTransitions(
|
|
472
471
|
eventList,
|
|
@@ -478,7 +477,7 @@ export function fireGestureHandler<THandler extends AllGestures | AllHandlers>(
|
|
|
478
477
|
// @ts-ignore TODO
|
|
479
478
|
_ = _.map(wrapWithNativeEvent);
|
|
480
479
|
|
|
481
|
-
const events =
|
|
480
|
+
const events = _ as unknown as WrappedGestureHandlerTestEvent[];
|
|
482
481
|
|
|
483
482
|
const firstEvent = events.shift()!;
|
|
484
483
|
|
|
@@ -8,7 +8,8 @@ export interface RotationGestureListener {
|
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export default class RotationGestureDetector
|
|
11
|
-
implements RotationGestureListener
|
|
11
|
+
implements RotationGestureListener
|
|
12
|
+
{
|
|
12
13
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
|
13
14
|
onRotation: (detector: RotationGestureDetector) => boolean;
|
|
14
15
|
onRotationEnd: (detector: RotationGestureDetector) => void;
|
|
@@ -30,8 +30,6 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
30
30
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
31
31
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
32
32
|
|
|
33
|
-
this.enabled = enabled;
|
|
34
|
-
|
|
35
33
|
if (this.config.direction) {
|
|
36
34
|
this.direction = this.config.direction;
|
|
37
35
|
}
|
|
@@ -124,7 +122,8 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
124
122
|
this.tracker.getTrackedPointersCount() >
|
|
125
123
|
this.maxNumberOfPointersSimultaneously
|
|
126
124
|
) {
|
|
127
|
-
this.maxNumberOfPointersSimultaneously =
|
|
125
|
+
this.maxNumberOfPointersSimultaneously =
|
|
126
|
+
this.tracker.getTrackedPointersCount();
|
|
128
127
|
}
|
|
129
128
|
}
|
|
130
129
|
|
|
@@ -70,13 +70,18 @@ export default abstract class GestureHandler {
|
|
|
70
70
|
);
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
this.view =
|
|
73
|
+
this.view = findNodeHandle(this.ref) as unknown as HTMLElement;
|
|
74
74
|
this.view.style['touchAction'] = 'none';
|
|
75
|
-
this.view.style['webkitUserSelect'] = 'none';
|
|
76
|
-
this.view.style['userSelect'] = 'none';
|
|
77
|
-
|
|
78
75
|
//@ts-ignore This one disables default events on Safari
|
|
79
76
|
this.view.style['WebkitTouchCallout'] = 'none';
|
|
77
|
+
|
|
78
|
+
if (!this.config.userSelect) {
|
|
79
|
+
this.view.style['webkitUserSelect'] = 'none';
|
|
80
|
+
this.view.style['userSelect'] = 'none';
|
|
81
|
+
} else {
|
|
82
|
+
this.view.style['webkitUserSelect'] = this.config.userSelect;
|
|
83
|
+
this.view.style['userSelect'] = this.config.userSelect;
|
|
84
|
+
}
|
|
80
85
|
}
|
|
81
86
|
|
|
82
87
|
private addEventManager(manager: EventManager): void {
|
|
@@ -322,6 +327,18 @@ export default abstract class GestureHandler {
|
|
|
322
327
|
}
|
|
323
328
|
}
|
|
324
329
|
protected onPointerOut(event: AdaptedEvent): void {
|
|
330
|
+
if (this.shouldCancellWhenOutside) {
|
|
331
|
+
switch (this.currentState) {
|
|
332
|
+
case State.ACTIVE:
|
|
333
|
+
this.cancel();
|
|
334
|
+
break;
|
|
335
|
+
case State.BEGAN:
|
|
336
|
+
this.fail();
|
|
337
|
+
break;
|
|
338
|
+
}
|
|
339
|
+
return;
|
|
340
|
+
}
|
|
341
|
+
|
|
325
342
|
if (this.config.needsPointerData) {
|
|
326
343
|
this.sendTouchEvent(event);
|
|
327
344
|
}
|
|
@@ -360,9 +377,8 @@ export default abstract class GestureHandler {
|
|
|
360
377
|
const { onGestureHandlerEvent }: PropsRef = this.propsRef
|
|
361
378
|
.current as PropsRef;
|
|
362
379
|
|
|
363
|
-
const touchEvent: ResultTouchEvent | undefined =
|
|
364
|
-
event
|
|
365
|
-
);
|
|
380
|
+
const touchEvent: ResultTouchEvent | undefined =
|
|
381
|
+
this.transformTouchEvent(event);
|
|
366
382
|
|
|
367
383
|
if (touchEvent) {
|
|
368
384
|
invokeNullableMethod(onGestureHandlerEvent, touchEvent);
|
|
@@ -374,10 +390,8 @@ export default abstract class GestureHandler {
|
|
|
374
390
|
//
|
|
375
391
|
|
|
376
392
|
public sendEvent = (newState: State, oldState: State): void => {
|
|
377
|
-
const {
|
|
378
|
-
|
|
379
|
-
onGestureHandlerStateChange,
|
|
380
|
-
}: PropsRef = this.propsRef.current as PropsRef;
|
|
393
|
+
const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =
|
|
394
|
+
this.propsRef.current as PropsRef;
|
|
381
395
|
|
|
382
396
|
const resultEvent: ResultEvent = this.transformEventData(
|
|
383
397
|
newState,
|
|
@@ -576,6 +590,11 @@ export default abstract class GestureHandler {
|
|
|
576
590
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
577
591
|
this.config = { enabled: enabled, ...props };
|
|
578
592
|
this.enabled = enabled;
|
|
593
|
+
|
|
594
|
+
if (this.config.shouldCancelWhenOutside !== undefined) {
|
|
595
|
+
this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);
|
|
596
|
+
}
|
|
597
|
+
|
|
579
598
|
this.validateHitSlops();
|
|
580
599
|
|
|
581
600
|
if (this.enabled) {
|
|
@@ -22,7 +22,6 @@ export default class LongPressGestureHandler extends GestureHandler {
|
|
|
22
22
|
|
|
23
23
|
public init(ref: number, propsRef: React.RefObject<unknown>) {
|
|
24
24
|
super.init(ref, propsRef);
|
|
25
|
-
this.setShouldCancelWhenOutside(true);
|
|
26
25
|
|
|
27
26
|
this.view.oncontextmenu = () => false;
|
|
28
27
|
}
|
|
@@ -42,8 +41,6 @@ export default class LongPressGestureHandler extends GestureHandler {
|
|
|
42
41
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
43
42
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
44
43
|
|
|
45
|
-
this.enabled = enabled;
|
|
46
|
-
|
|
47
44
|
if (this.config.minDurationMs !== undefined) {
|
|
48
45
|
this.minDurationMs = this.config.minDurationMs;
|
|
49
46
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AdaptedEvent } from '../interfaces';
|
|
1
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
|
2
2
|
import GestureHandler from './GestureHandler';
|
|
3
3
|
|
|
4
4
|
export default class ManualGestureHandler extends GestureHandler {
|
|
@@ -6,6 +6,10 @@ export default class ManualGestureHandler extends GestureHandler {
|
|
|
6
6
|
super.init(ref, propsRef);
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
10
|
+
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
11
|
+
}
|
|
12
|
+
|
|
9
13
|
protected onPointerDown(event: AdaptedEvent): void {
|
|
10
14
|
this.tracker.addToTracker(event);
|
|
11
15
|
super.onPointerDown(event);
|
|
@@ -22,6 +26,11 @@ export default class ManualGestureHandler extends GestureHandler {
|
|
|
22
26
|
super.onPointerMove(event);
|
|
23
27
|
}
|
|
24
28
|
|
|
29
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
30
|
+
this.tracker.track(event);
|
|
31
|
+
super.onPointerOutOfBounds(event);
|
|
32
|
+
}
|
|
33
|
+
|
|
25
34
|
protected onPointerUp(event: AdaptedEvent): void {
|
|
26
35
|
super.onPointerUp(event);
|
|
27
36
|
this.tracker.removeFromTracker(event.pointerId);
|
|
@@ -65,8 +65,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
|
65
65
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
66
66
|
this.checkCustomActivationCriteria(this.customActivationProperties);
|
|
67
67
|
|
|
68
|
-
this.enabled = enabled;
|
|
69
|
-
|
|
70
68
|
if (this.config.minDist !== undefined) {
|
|
71
69
|
this.minDistSq = this.config.minDist * this.config.minDist;
|
|
72
70
|
} else if (this.hasCustomActivationCriteria) {
|
|
@@ -98,10 +96,6 @@ export default class PanGestureHandler extends GestureHandler {
|
|
|
98
96
|
this.activateAfterLongPress = this.config.activateAfterLongPress;
|
|
99
97
|
}
|
|
100
98
|
|
|
101
|
-
if (this.config.shouldCancelWhenOutside !== undefined) {
|
|
102
|
-
this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);
|
|
103
|
-
}
|
|
104
|
-
|
|
105
99
|
if (this.config.activeOffsetXStart !== undefined) {
|
|
106
100
|
this.activeOffsetXStart = this.config.activeOffsetXStart;
|
|
107
101
|
|
|
@@ -57,8 +57,6 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
57
57
|
|
|
58
58
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
59
59
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
60
|
-
|
|
61
|
-
this.enabled = enabled;
|
|
62
60
|
}
|
|
63
61
|
|
|
64
62
|
protected transformNativeEvent() {
|
|
@@ -41,9 +41,8 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
41
41
|
},
|
|
42
42
|
};
|
|
43
43
|
|
|
44
|
-
private rotationGestureDetector: RotationGestureDetector =
|
|
45
|
-
this.rotationGestureListener
|
|
46
|
-
);
|
|
44
|
+
private rotationGestureDetector: RotationGestureDetector =
|
|
45
|
+
new RotationGestureDetector(this.rotationGestureListener);
|
|
47
46
|
|
|
48
47
|
public init(ref: number, propsRef: React.RefObject<unknown>): void {
|
|
49
48
|
super.init(ref, propsRef);
|
|
@@ -53,8 +52,6 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
53
52
|
|
|
54
53
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
55
54
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
56
|
-
|
|
57
|
-
this.enabled = enabled;
|
|
58
55
|
}
|
|
59
56
|
|
|
60
57
|
protected transformNativeEvent() {
|
|
@@ -33,14 +33,11 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
33
33
|
|
|
34
34
|
public init(ref: number, propsRef: React.RefObject<unknown>): void {
|
|
35
35
|
super.init(ref, propsRef);
|
|
36
|
-
this.setShouldCancelWhenOutside(true);
|
|
37
36
|
}
|
|
38
37
|
|
|
39
38
|
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
40
39
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
41
40
|
|
|
42
|
-
this.enabled = enabled;
|
|
43
|
-
|
|
44
41
|
if (this.config.numberOfTaps !== undefined) {
|
|
45
42
|
this.numberOfTaps = this.config.numberOfTaps;
|
|
46
43
|
}
|
package/src/web/interfaces.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { UserSelect } from '../handlers/gestureHandlerCommon';
|
|
1
2
|
import { Directions } from '../Directions';
|
|
2
3
|
import { State } from '../State';
|
|
3
4
|
|
|
@@ -20,6 +21,7 @@ type ConfigArgs =
|
|
|
20
21
|
| number
|
|
21
22
|
| boolean
|
|
22
23
|
| HitSlop
|
|
24
|
+
| UserSelect
|
|
23
25
|
| Directions
|
|
24
26
|
| Handler[]
|
|
25
27
|
| null
|
|
@@ -31,6 +33,7 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
|
31
33
|
waitFor?: Handler[] | null;
|
|
32
34
|
hitSlop?: HitSlop;
|
|
33
35
|
shouldCancelWhenOutside?: boolean;
|
|
36
|
+
userSelect?: UserSelect;
|
|
34
37
|
|
|
35
38
|
activateAfterLongPress?: number;
|
|
36
39
|
failOffsetXStart?: number;
|
|
@@ -69,9 +69,8 @@ export default class InteractionManager {
|
|
|
69
69
|
handler: GestureHandler,
|
|
70
70
|
otherHandler: GestureHandler
|
|
71
71
|
): boolean {
|
|
72
|
-
const simultaneousHandlers:
|
|
73
|
-
|
|
74
|
-
| undefined = this.simultaneousRelations.get(handler.getTag());
|
|
72
|
+
const simultaneousHandlers: number[] | undefined =
|
|
73
|
+
this.simultaneousRelations.get(handler.getTag());
|
|
75
74
|
if (!simultaneousHandlers) {
|
|
76
75
|
return false;
|
|
77
76
|
}
|