react-native-gesture-handler 2.33.0 → 2.33.1
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/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerDelegate.java +3 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerRootViewManagerInterface.java +2 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +9 -3
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +5 -8
- package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +1 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +2 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootViewManager.kt +6 -0
- package/apple/RNGestureHandler.mm +15 -3
- package/apple/RNGestureHandlerButtonComponentView.mm +6 -0
- package/lib/commonjs/handlers/createHandler.js +1 -1
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +10 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +8 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +5 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +7 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js +22 -3
- package/lib/commonjs/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +35 -6
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.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/handlers/gestures/gestureComposition.js +14 -2
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js +23 -0
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/specs/RNGestureHandlerRootViewNativeComponent.ts +11 -2
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +5 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/commonjs/web/tools/KeyboardEventManager.js +17 -12
- package/lib/commonjs/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/WheelEventManager.js +15 -5
- package/lib/commonjs/web/tools/WheelEventManager.js.map +1 -1
- package/lib/module/handlers/createHandler.js +1 -1
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +12 -2
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +9 -2
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js +5 -1
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +8 -1
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js +22 -3
- package/lib/module/handlers/gestures/GestureDetector/useMountReactions.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/utils.js +34 -6
- package/lib/module/handlers/gestures/GestureDetector/utils.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/handlers/gestures/gestureComposition.js +14 -2
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js +22 -0
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/specs/RNGestureHandlerRootViewNativeComponent.ts +11 -2
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +5 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -1
- package/lib/module/web/tools/KeyboardEventManager.js +17 -12
- package/lib/module/web/tools/KeyboardEventManager.js.map +1 -1
- package/lib/module/web/tools/WheelEventManager.js +15 -5
- package/lib/module/web/tools/WheelEventManager.js.map +1 -1
- package/lib/typescript/handlers/createHandler.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/index.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +1 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/useMountReactions.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +5 -4
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +4 -0
- package/lib/typescript/handlers/gestures/gesture.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/gestureComposition.d.ts.map +1 -1
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts.map +1 -1
- package/lib/typescript/specs/RNGestureHandlerRootViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts.map +1 -1
- package/lib/typescript/web/tools/KeyboardEventManager.d.ts +2 -1
- package/lib/typescript/web/tools/KeyboardEventManager.d.ts.map +1 -1
- package/lib/typescript/web/tools/WheelEventManager.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/handlers/createHandler.tsx +4 -1
- package/src/handlers/gestures/GestureDetector/Wrap.tsx +17 -1
- package/src/handlers/gestures/GestureDetector/attachHandlers.ts +11 -2
- package/src/handlers/gestures/GestureDetector/index.tsx +4 -0
- package/src/handlers/gestures/GestureDetector/types.ts +3 -0
- package/src/handlers/gestures/GestureDetector/updateHandlers.ts +8 -0
- package/src/handlers/gestures/GestureDetector/useMountReactions.ts +29 -4
- package/src/handlers/gestures/GestureDetector/utils.ts +42 -10
- package/src/handlers/gestures/gesture.ts +11 -0
- package/src/handlers/gestures/gestureComposition.ts +15 -2
- package/src/handlers/gestures/reanimatedWrapper.ts +23 -0
- package/src/specs/RNGestureHandlerRootViewNativeComponent.ts +11 -2
- package/src/web/tools/GestureHandlerWebDelegate.ts +6 -1
- package/src/web/tools/KeyboardEventManager.ts +20 -18
- package/src/web/tools/WheelEventManager.ts +14 -5
|
@@ -54,4 +54,27 @@ if (Reanimated !== undefined && !Reanimated.setGestureState) {
|
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
// Reanimated resolves `getAnimatableRef()` once, when its ref to the wrapped
|
|
58
|
+
// component attaches. Only versions that re-resolve it on update (their
|
|
59
|
+
// `AnimatedComponent` has `_refreshComponentRef`) can be handed a child's host
|
|
60
|
+
// instance that may change, as the legacy `Wrap` does. The class is not
|
|
61
|
+
// exported, so probe it by subpath, as the v3 detector does for
|
|
62
|
+
// `NativeEventsManager`.
|
|
63
|
+
let refreshesAnimatableRef = false;
|
|
64
|
+
try {
|
|
65
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
66
|
+
const AnimatedComponent =
|
|
67
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires, @typescript-eslint/no-unsafe-member-access
|
|
68
|
+
require('react-native-reanimated/src/createAnimatedComponent/AnimatedComponent').default;
|
|
69
|
+
refreshesAnimatableRef =
|
|
70
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
71
|
+
typeof AnimatedComponent?.prototype?._refreshComponentRef === 'function';
|
|
72
|
+
} catch {
|
|
73
|
+
// Reanimated is missing or older; keep handing Reanimated the Wrap itself.
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
export function reanimatedRefreshesAnimatableRef() {
|
|
77
|
+
return refreshesAnimatableRef;
|
|
78
|
+
}
|
|
79
|
+
|
|
57
80
|
export { Reanimated };
|
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { codegenNativeComponent } from 'react-native';
|
|
2
|
-
import type { HostComponent, ViewProps } from 'react-native';
|
|
2
|
+
import type { CodegenTypes, HostComponent, ViewProps } from 'react-native';
|
|
3
3
|
|
|
4
4
|
export interface RootViewNativeProps extends ViewProps {
|
|
5
5
|
unstable_forceActive?: boolean;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// @ts-expect-error WithDefault adds null for codegen, unlike ViewProps.pointerEvents.
|
|
9
|
+
interface NativeProps extends ViewProps {
|
|
10
|
+
pointerEvents?: CodegenTypes.WithDefault<
|
|
11
|
+
'box-none' | 'none' | 'box-only' | 'auto',
|
|
12
|
+
'auto'
|
|
13
|
+
>;
|
|
14
|
+
unstable_forceActive?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export default codegenNativeComponent<NativeProps>(
|
|
9
18
|
'RNGestureHandlerRootView'
|
|
10
19
|
) as HostComponent<RootViewNativeProps>;
|
|
@@ -12,6 +12,7 @@ import { Config } from '../interfaces';
|
|
|
12
12
|
import { MouseButton } from '../../handlers/gestureHandlerCommon';
|
|
13
13
|
import KeyboardEventManager from './KeyboardEventManager';
|
|
14
14
|
import WheelEventManager from './WheelEventManager';
|
|
15
|
+
import PanGestureHandler from '../handlers/PanGestureHandler';
|
|
15
16
|
|
|
16
17
|
interface DefaultViewStyles {
|
|
17
18
|
userSelect: string;
|
|
@@ -49,6 +50,7 @@ export class GestureHandlerWebDelegate
|
|
|
49
50
|
};
|
|
50
51
|
|
|
51
52
|
const config = handler.config;
|
|
53
|
+
const shouldSendWheelEvents = handler instanceof PanGestureHandler;
|
|
52
54
|
|
|
53
55
|
this.setUserSelect(config.enabled);
|
|
54
56
|
this.setTouchAction(config.enabled);
|
|
@@ -56,7 +58,10 @@ export class GestureHandlerWebDelegate
|
|
|
56
58
|
|
|
57
59
|
this.eventManagers.push(new PointerEventManager(this.view));
|
|
58
60
|
this.eventManagers.push(new KeyboardEventManager(this.view));
|
|
59
|
-
|
|
61
|
+
|
|
62
|
+
if (shouldSendWheelEvents) {
|
|
63
|
+
this.eventManagers.push(new WheelEventManager(this.view));
|
|
64
|
+
}
|
|
60
65
|
|
|
61
66
|
this.eventManagers.forEach((manager) =>
|
|
62
67
|
this.gestureHandler.attachEventManager(manager)
|
|
@@ -3,9 +3,10 @@ import EventManager from './EventManager';
|
|
|
3
3
|
import { PointerType } from '../../PointerType';
|
|
4
4
|
|
|
5
5
|
export default class KeyboardEventManager extends EventManager<HTMLElement> {
|
|
6
|
-
private static activationKeys = ['Enter', ' '];
|
|
7
|
-
private static cancelationKeys = ['Tab'];
|
|
8
|
-
private
|
|
6
|
+
private static activationKeys = new Set(['Enter', ' ']);
|
|
7
|
+
private static cancelationKeys = new Set(['Tab']);
|
|
8
|
+
private keyPointer: string | null = null;
|
|
9
|
+
|
|
9
10
|
private static registeredStaticListeners = false;
|
|
10
11
|
private static instances: Set<KeyboardEventManager> = new Set();
|
|
11
12
|
|
|
@@ -13,8 +14,7 @@ export default class KeyboardEventManager extends EventManager<HTMLElement> {
|
|
|
13
14
|
// We need a global listener, as in some cases, keyUp event gets stop-propagated.
|
|
14
15
|
// Then, if we used only component-level listeners the gesture would never end,
|
|
15
16
|
// causing other gestues to fail.
|
|
16
|
-
|
|
17
|
-
if (this.activationKeys.indexOf(event.key) === -1) {
|
|
17
|
+
if (!this.activationKeys.has(event.key)) {
|
|
18
18
|
return;
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -24,30 +24,30 @@ export default class KeyboardEventManager extends EventManager<HTMLElement> {
|
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
private keyDownCallback = (event: KeyboardEvent): void => {
|
|
27
|
-
if (
|
|
28
|
-
KeyboardEventManager.cancelationKeys.
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
27
|
+
if (this.keyPointer !== null) {
|
|
28
|
+
if (KeyboardEventManager.cancelationKeys.has(event.key)) {
|
|
29
|
+
this.dispatchEvent(event, EventTypes.CANCEL);
|
|
30
|
+
this.keyPointer = null;
|
|
31
|
+
}
|
|
32
|
+
|
|
32
33
|
return;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
|
-
if (KeyboardEventManager.activationKeys.
|
|
36
|
+
if (!KeyboardEventManager.activationKeys.has(event.key) || event.repeat) {
|
|
36
37
|
return;
|
|
37
38
|
}
|
|
38
39
|
|
|
40
|
+
this.keyPointer = event.key;
|
|
39
41
|
this.dispatchEvent(event, EventTypes.DOWN);
|
|
40
42
|
};
|
|
41
43
|
|
|
42
44
|
private onKeyUp = (event: KeyboardEvent): void => {
|
|
43
|
-
if (
|
|
44
|
-
KeyboardEventManager.activationKeys.indexOf(event.key) === -1 ||
|
|
45
|
-
!this.isPressed
|
|
46
|
-
) {
|
|
45
|
+
if (this.keyPointer !== event.key) {
|
|
47
46
|
return;
|
|
48
47
|
}
|
|
49
48
|
|
|
50
49
|
this.dispatchEvent(event, EventTypes.UP);
|
|
50
|
+
this.keyPointer = null;
|
|
51
51
|
};
|
|
52
52
|
|
|
53
53
|
private dispatchEvent(event: KeyboardEvent, eventType: EventTypes) {
|
|
@@ -59,15 +59,12 @@ export default class KeyboardEventManager extends EventManager<HTMLElement> {
|
|
|
59
59
|
|
|
60
60
|
switch (eventType) {
|
|
61
61
|
case EventTypes.UP:
|
|
62
|
-
this.isPressed = false;
|
|
63
62
|
this.onPointerUp(adaptedEvent);
|
|
64
63
|
break;
|
|
65
64
|
case EventTypes.DOWN:
|
|
66
|
-
this.isPressed = true;
|
|
67
65
|
this.onPointerDown(adaptedEvent);
|
|
68
66
|
break;
|
|
69
67
|
case EventTypes.CANCEL:
|
|
70
|
-
this.isPressed = false;
|
|
71
68
|
this.onPointerCancel(adaptedEvent);
|
|
72
69
|
break;
|
|
73
70
|
}
|
|
@@ -103,6 +100,11 @@ export default class KeyboardEventManager extends EventManager<HTMLElement> {
|
|
|
103
100
|
}
|
|
104
101
|
}
|
|
105
102
|
|
|
103
|
+
public override resetManager(): void {
|
|
104
|
+
super.resetManager();
|
|
105
|
+
this.keyPointer = null;
|
|
106
|
+
}
|
|
107
|
+
|
|
106
108
|
protected mapEvent(
|
|
107
109
|
event: KeyboardEvent,
|
|
108
110
|
eventType: EventTypes
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import EventManager from './EventManager';
|
|
2
2
|
import { AdaptedEvent, EventTypes } from '../interfaces';
|
|
3
3
|
import { PointerType } from '../../PointerType';
|
|
4
|
+
import { calculateViewScale } from '../utils';
|
|
4
5
|
|
|
5
6
|
export default class WheelEventManager extends EventManager<HTMLElement> {
|
|
6
7
|
private wheelDelta = { x: 0, y: 0 };
|
|
@@ -19,7 +20,9 @@ export default class WheelEventManager extends EventManager<HTMLElement> {
|
|
|
19
20
|
|
|
20
21
|
public registerListeners(): void {
|
|
21
22
|
this.view.addEventListener('pointermove', this.resetDelta);
|
|
22
|
-
this.view.addEventListener('wheel', this.wheelCallback
|
|
23
|
+
this.view.addEventListener('wheel', this.wheelCallback, {
|
|
24
|
+
passive: true,
|
|
25
|
+
});
|
|
23
26
|
}
|
|
24
27
|
|
|
25
28
|
public unregisterListeners(): void {
|
|
@@ -28,11 +31,17 @@ export default class WheelEventManager extends EventManager<HTMLElement> {
|
|
|
28
31
|
}
|
|
29
32
|
|
|
30
33
|
protected mapEvent(event: WheelEvent): AdaptedEvent {
|
|
34
|
+
const rect = this.view.getBoundingClientRect();
|
|
35
|
+
const { scaleX, scaleY } = calculateViewScale(this.view);
|
|
36
|
+
|
|
37
|
+
const x = event.clientX + this.wheelDelta.x;
|
|
38
|
+
const y = event.clientY + this.wheelDelta.y;
|
|
39
|
+
|
|
31
40
|
return {
|
|
32
|
-
x
|
|
33
|
-
y
|
|
34
|
-
offsetX:
|
|
35
|
-
offsetY:
|
|
41
|
+
x,
|
|
42
|
+
y,
|
|
43
|
+
offsetX: (x - rect.left) / scaleX,
|
|
44
|
+
offsetY: (y - rect.top) / scaleY,
|
|
36
45
|
pointerId: -1,
|
|
37
46
|
eventType: EventTypes.MOVE,
|
|
38
47
|
pointerType: PointerType.OTHER,
|