react-native-gesture-handler 2.13.3 → 2.14.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 +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
|