react-native-gesture-handler 2.13.3 → 2.14.0
Sign up to get free protection for your applications and to get access to all the features.
- package/RNGestureHandler.podspec +19 -25
- package/android/build.gradle +3 -2
- package/android/gradle.properties +2 -2
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +36 -72
- package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +13 -9
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEvent.kt +12 -14
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +8 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +34 -88
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerStateChangeEvent.kt +18 -12
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/FlingGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/GestureHandlerEventDataBuilder.kt +22 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/HoverGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/LongPressGestureHandlerEventDataBuilder.kt +33 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/ManualGestureHandlerEventDataBuilder.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/NativeGestureHandlerEventDataBuilder.kt +18 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PanGestureHandlerEventDataBuilder.kt +42 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/PinchGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/RotationGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/eventbuilders/TapGestureHandlerEventDataBuilder.kt +30 -0
- package/android/src/main/jni/CMakeLists.txt +14 -2
- package/ios/Handlers/RNHoverHandler.m +15 -14
- package/ios/RNGestureHandler.m +11 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/getReactNativeVersion.js +22 -0
- package/lib/commonjs/getReactNativeVersion.js.map +1 -0
- package/lib/commonjs/getReactNativeVersion.web.js +11 -0
- package/lib/commonjs/getReactNativeVersion.web.js.map +1 -0
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +13 -3
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +8 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/utils.js +0 -13
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +27 -29
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +11 -3
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/getReactNativeVersion.js +10 -0
- package/lib/module/getReactNativeVersion.js.map +1 -0
- package/lib/module/getReactNativeVersion.web.js +4 -0
- package/lib/module/getReactNativeVersion.web.js.map +1 -0
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +12 -3
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +8 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/utils.js +0 -6
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +4 -15
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +27 -29
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +11 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/typescript/ActionType.d.ts +1 -1
- package/lib/typescript/Directions.d.ts +1 -1
- package/lib/typescript/PlatformConstants.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.d.ts +1 -1
- package/lib/typescript/State.d.ts +1 -1
- package/lib/typescript/TouchEventType.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +9 -9
- package/lib/typescript/components/GestureButtons.d.ts +3 -3
- package/lib/typescript/components/GestureComponents.d.ts +6 -6
- package/lib/typescript/components/GestureComponents.web.d.ts +1 -1
- package/lib/typescript/components/GestureHandlerRootView.android.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.d.ts +2 -1
- package/lib/typescript/components/GestureHandlerRootView.web.d.ts +2 -1
- package/lib/typescript/components/Swipeable.d.ts +4 -4
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +7 -6
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +3 -2
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -1
- package/lib/typescript/getReactNativeVersion.d.ts +4 -0
- package/lib/typescript/getReactNativeVersion.web.d.ts +1 -0
- package/lib/typescript/handlers/FlingGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/ForceTouchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/LongPressGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +3 -3
- package/lib/typescript/handlers/PanGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/PinchGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/RotationGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/TapGestureHandler.d.ts +2 -2
- package/lib/typescript/handlers/createHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +11 -10
- package/lib/typescript/handlers/gestureHandlerTypesCompat.d.ts +32 -32
- package/lib/typescript/handlers/gestures/GestureDetector.d.ts +2 -2
- package/lib/typescript/handlers/gestures/flingGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/forceTouchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/gesture.d.ts +7 -5
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts +4 -4
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +3 -3
- package/lib/typescript/handlers/gestures/longPressGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/manualGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/nativeGesture.d.ts +1 -1
- package/lib/typescript/handlers/gestures/panGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/pinchGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/rotationGesture.d.ts +2 -2
- package/lib/typescript/handlers/gestures/tapGesture.d.ts +1 -1
- package/lib/typescript/jestUtils/jestUtils.d.ts +6 -6
- package/lib/typescript/typeUtils.d.ts +1 -1
- package/lib/typescript/utils.d.ts +1 -5
- package/lib/typescript/web/interfaces.d.ts +4 -3
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +0 -1
- package/lib/typescript/web/tools/InteractionManager.d.ts +2 -1
- package/lib/typescript/web_hammer/GestureHandler.d.ts +2 -2
- package/package.json +7 -7
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +2 -1
- package/src/getReactNativeVersion.ts +11 -0
- package/src/getReactNativeVersion.web.ts +3 -0
- package/src/handlers/gestureHandlerCommon.ts +6 -1
- package/src/handlers/gestures/GestureDetector.tsx +9 -6
- package/src/handlers/gestures/gesture.ts +9 -1
- package/src/utils.ts +0 -8
- package/src/web/handlers/GestureHandler.ts +1 -1
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +4 -13
- package/src/web/tools/InteractionManager.ts +37 -30
- package/src/web/tools/PointerEventManager.ts +12 -3
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerEventDataExtractor.kt +0 -8
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/RNGestureHandlerComponentsRegistry.java +0 -0
- /package/android/{src/fabric → fabric/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +0 -0
- /package/android/{src/paper → paper/src/main}/java/com/swmansion/gesturehandler/ReactContextExtensions.kt +0 -0
package/src/utils.ts
CHANGED
@@ -1,11 +1,3 @@
|
|
1
|
-
import pack from 'react-native/package.json';
|
2
|
-
|
3
|
-
const [majorStr, minorStr] = pack.version.split('.');
|
4
|
-
export const REACT_NATIVE_VERSION = {
|
5
|
-
major: parseInt(majorStr, 10),
|
6
|
-
minor: parseInt(minorStr, 10),
|
7
|
-
};
|
8
|
-
|
9
1
|
export function toArray<T>(object: T | T[]): T[] {
|
10
2
|
if (!Array.isArray(object)) {
|
11
3
|
return [object];
|
package/src/web/interfaces.ts
CHANGED
@@ -32,6 +32,7 @@ export interface Config extends Record<string, ConfigArgs> {
|
|
32
32
|
enabled?: boolean;
|
33
33
|
simultaneousHandlers?: Handler[] | null;
|
34
34
|
waitFor?: Handler[] | null;
|
35
|
+
blocksHandlers?: Handler[] | null;
|
35
36
|
hitSlop?: HitSlop;
|
36
37
|
shouldCancelWhenOutside?: boolean;
|
37
38
|
userSelect?: UserSelect;
|
@@ -9,7 +9,6 @@ export default class GestureHandlerOrchestrator {
|
|
9
9
|
|
10
10
|
private gestureHandlers: GestureHandler[] = [];
|
11
11
|
private awaitingHandlers: GestureHandler[] = [];
|
12
|
-
private handlersToCancel: GestureHandler[] = [];
|
13
12
|
|
14
13
|
private handlingChangeSemaphore = 0;
|
15
14
|
private activationIndex = 0;
|
@@ -34,7 +33,6 @@ export default class GestureHandlerOrchestrator {
|
|
34
33
|
public removeHandlerFromOrchestrator(handler: GestureHandler): void {
|
35
34
|
this.gestureHandlers.splice(this.gestureHandlers.indexOf(handler), 1);
|
36
35
|
this.awaitingHandlers.splice(this.awaitingHandlers.indexOf(handler), 1);
|
37
|
-
this.handlersToCancel.splice(this.handlersToCancel.indexOf(handler), 1);
|
38
36
|
}
|
39
37
|
|
40
38
|
private cleanupFinishedHandlers(): void {
|
@@ -177,17 +175,12 @@ export default class GestureHandlerOrchestrator {
|
|
177
175
|
handler.setShouldResetProgress(true);
|
178
176
|
handler.setActivationIndex(this.activationIndex++);
|
179
177
|
|
180
|
-
this.gestureHandlers.
|
181
|
-
|
182
|
-
|
183
|
-
if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {
|
184
|
-
this.handlersToCancel.push(otherHandler);
|
178
|
+
for (let i = this.gestureHandlers.length - 1; i >= 0; --i) {
|
179
|
+
if (this.shouldHandlerBeCancelledBy(this.gestureHandlers[i], handler)) {
|
180
|
+
this.gestureHandlers[i].cancel();
|
185
181
|
}
|
186
|
-
});
|
187
|
-
|
188
|
-
for (let i = this.handlersToCancel.length - 1; i >= 0; --i) {
|
189
|
-
this.handlersToCancel[i]?.cancel();
|
190
182
|
}
|
183
|
+
|
191
184
|
this.awaitingHandlers.forEach((otherHandler) => {
|
192
185
|
if (this.shouldHandlerBeCancelledBy(otherHandler, handler)) {
|
193
186
|
otherHandler?.cancel();
|
@@ -212,8 +205,6 @@ export default class GestureHandlerOrchestrator {
|
|
212
205
|
}
|
213
206
|
}
|
214
207
|
}
|
215
|
-
|
216
|
-
this.handlersToCancel = [];
|
217
208
|
}
|
218
209
|
|
219
210
|
private addAwaitingHandler(handler: GestureHandler): void {
|
@@ -5,6 +5,7 @@ export default class InteractionManager {
|
|
5
5
|
private static instance: InteractionManager;
|
6
6
|
private readonly waitForRelations: Map<number, number[]> = new Map();
|
7
7
|
private readonly simultaneousRelations: Map<number, number[]> = new Map();
|
8
|
+
private readonly blocksHandlersRelations: Map<number, number[]> = new Map();
|
8
9
|
|
9
10
|
// Private becaues of singleton
|
10
11
|
// eslint-disable-next-line no-useless-constructor, @typescript-eslint/no-empty-function
|
@@ -40,6 +41,19 @@ export default class InteractionManager {
|
|
40
41
|
|
41
42
|
this.simultaneousRelations.set(handler.getTag(), simultaneousHandlers);
|
42
43
|
}
|
44
|
+
|
45
|
+
if (config.blocksHandlers) {
|
46
|
+
const blocksHandlers: number[] = [];
|
47
|
+
config.blocksHandlers.forEach((otherHandler: Handler): void => {
|
48
|
+
if (typeof otherHandler === 'number') {
|
49
|
+
blocksHandlers.push(otherHandler);
|
50
|
+
} else {
|
51
|
+
blocksHandlers.push(otherHandler.handlerTag);
|
52
|
+
}
|
53
|
+
});
|
54
|
+
|
55
|
+
this.blocksHandlersRelations.set(handler.getTag(), blocksHandlers);
|
56
|
+
}
|
43
57
|
}
|
44
58
|
|
45
59
|
public shouldWaitForHandlerFailure(
|
@@ -49,20 +63,12 @@ export default class InteractionManager {
|
|
49
63
|
const waitFor: number[] | undefined = this.waitForRelations.get(
|
50
64
|
handler.getTag()
|
51
65
|
);
|
52
|
-
if (!waitFor) {
|
53
|
-
return false;
|
54
|
-
}
|
55
|
-
|
56
|
-
let shouldWait = false;
|
57
|
-
|
58
|
-
waitFor.forEach((tag: number): void => {
|
59
|
-
if (tag === otherHandler.getTag()) {
|
60
|
-
shouldWait = true;
|
61
|
-
return; //Returns from callback
|
62
|
-
}
|
63
|
-
});
|
64
66
|
|
65
|
-
return
|
67
|
+
return (
|
68
|
+
waitFor?.find((tag: number) => {
|
69
|
+
return tag === otherHandler.getTag();
|
70
|
+
}) !== undefined
|
71
|
+
);
|
66
72
|
}
|
67
73
|
|
68
74
|
public shouldRecognizeSimultaneously(
|
@@ -71,28 +77,27 @@ export default class InteractionManager {
|
|
71
77
|
): boolean {
|
72
78
|
const simultaneousHandlers: number[] | undefined =
|
73
79
|
this.simultaneousRelations.get(handler.getTag());
|
74
|
-
if (!simultaneousHandlers) {
|
75
|
-
return false;
|
76
|
-
}
|
77
|
-
|
78
|
-
let shouldRecognizeSimultaneously = false;
|
79
80
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
});
|
86
|
-
|
87
|
-
return shouldRecognizeSimultaneously;
|
81
|
+
return (
|
82
|
+
simultaneousHandlers?.find((tag: number) => {
|
83
|
+
return tag === otherHandler.getTag();
|
84
|
+
}) !== undefined
|
85
|
+
);
|
88
86
|
}
|
89
87
|
|
90
88
|
public shouldRequireHandlerToWaitForFailure(
|
91
|
-
|
92
|
-
|
89
|
+
handler: GestureHandler,
|
90
|
+
otherHandler: GestureHandler
|
93
91
|
): boolean {
|
94
|
-
|
95
|
-
|
92
|
+
const waitFor: number[] | undefined = this.blocksHandlersRelations.get(
|
93
|
+
handler.getTag()
|
94
|
+
);
|
95
|
+
|
96
|
+
return (
|
97
|
+
waitFor?.find((tag: number) => {
|
98
|
+
return tag === otherHandler.getTag();
|
99
|
+
}) !== undefined
|
100
|
+
);
|
96
101
|
}
|
97
102
|
|
98
103
|
public shouldHandlerBeCancelledBy(
|
@@ -106,11 +111,13 @@ export default class InteractionManager {
|
|
106
111
|
public dropRelationsForHandlerWithTag(handlerTag: number): void {
|
107
112
|
this.waitForRelations.delete(handlerTag);
|
108
113
|
this.simultaneousRelations.delete(handlerTag);
|
114
|
+
this.blocksHandlersRelations.delete(handlerTag);
|
109
115
|
}
|
110
116
|
|
111
117
|
public reset() {
|
112
118
|
this.waitForRelations.clear();
|
113
119
|
this.simultaneousRelations.clear();
|
120
|
+
this.blocksHandlersRelations.clear();
|
114
121
|
}
|
115
122
|
|
116
123
|
public static getInstance(): InteractionManager {
|
@@ -19,7 +19,10 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
19
19
|
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.DOWN);
|
20
20
|
const target = event.target as HTMLElement;
|
21
21
|
|
22
|
-
target
|
22
|
+
if (target instanceof HTMLDivElement) {
|
23
|
+
target.setPointerCapture(adaptedEvent.pointerId);
|
24
|
+
}
|
25
|
+
|
23
26
|
this.markAsInBounds(adaptedEvent.pointerId);
|
24
27
|
this.trackedPointers.add(adaptedEvent.pointerId);
|
25
28
|
|
@@ -47,7 +50,10 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
47
50
|
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.UP);
|
48
51
|
const target = event.target as HTMLElement;
|
49
52
|
|
50
|
-
target
|
53
|
+
if (target instanceof HTMLDivElement) {
|
54
|
+
target.releasePointerCapture(adaptedEvent.pointerId);
|
55
|
+
}
|
56
|
+
|
51
57
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
52
58
|
this.trackedPointers.delete(adaptedEvent.pointerId);
|
53
59
|
|
@@ -79,7 +85,10 @@ export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
79
85
|
// incorporating it here seems stupid), so we just call it again here, every time
|
80
86
|
// pointer moves until it succeeds.
|
81
87
|
// God, I do love web development.
|
82
|
-
if (
|
88
|
+
if (
|
89
|
+
!target.hasPointerCapture(event.pointerId) &&
|
90
|
+
target instanceof HTMLDivElement
|
91
|
+
) {
|
83
92
|
target.setPointerCapture(event.pointerId);
|
84
93
|
}
|
85
94
|
|
@@ -1,8 +0,0 @@
|
|
1
|
-
package com.swmansion.gesturehandler.react
|
2
|
-
|
3
|
-
import com.facebook.react.bridge.WritableMap
|
4
|
-
import com.swmansion.gesturehandler.core.GestureHandler
|
5
|
-
|
6
|
-
interface RNGestureHandlerEventDataExtractor<T : GestureHandler<T>> {
|
7
|
-
fun extractEventData(handler: T, eventData: WritableMap)
|
8
|
-
}
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|