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