Skip to content

Commit 04ec35f

Browse files
committed
v2 compatibility
1 parent 089466e commit 04ec35f

File tree

2 files changed

+44
-13
lines changed

2 files changed

+44
-13
lines changed

packages/react-native-gesture-handler/src/web/handlers/GestureHandler.ts

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -416,23 +416,41 @@ export default abstract class GestureHandler implements IGestureHandler {
416416
if (!this.viewRef) {
417417
throw new Error(tagMessage('Cannot handle event when target is null'));
418418
}
419-
return {
420-
nativeEvent: {
421-
state: newState,
422-
handlerTag: this.handlerTag,
423-
oldState: oldState,
424-
handlerData: {
425-
pointerType: this.pointerType,
419+
if (this.actionType === ActionType.NATIVE_DETECTOR) {
420+
return {
421+
nativeEvent: {
422+
state: newState,
423+
handlerTag: this.handlerTag,
424+
oldState: oldState,
425+
handlerData: {
426+
pointerType: this.pointerType,
427+
numberOfPointers: this.tracker.trackedPointersCount,
428+
pointerInside: this.delegate.isPointerInBounds(
429+
this.tracker.getAbsoluteCoordsAverage()
430+
),
431+
...this.transformNativeEvent(),
432+
target: this.viewRef,
433+
},
434+
} as StateChangeEvent<unknown> | UpdateEvent<unknown>,
435+
timeStamp: Date.now(),
436+
};
437+
} else {
438+
return {
439+
nativeEvent: {
426440
numberOfPointers: this.tracker.trackedPointersCount,
441+
state: newState,
427442
pointerInside: this.delegate.isPointerInBounds(
428443
this.tracker.getAbsoluteCoordsAverage()
429444
),
430445
...this.transformNativeEvent(),
446+
handlerTag: this.handlerTag,
431447
target: this.viewRef,
448+
oldState: newState !== oldState ? oldState : undefined,
449+
pointerType: this.pointerType,
432450
},
433-
} as StateChangeEvent<unknown> | UpdateEvent<unknown>,
434-
timeStamp: Date.now(),
435-
};
451+
timeStamp: Date.now(),
452+
};
453+
}
436454
}
437455

438456
private transformTouchEvent(event: AdaptedEvent): ResultEvent | undefined {

packages/react-native-gesture-handler/src/web/interfaces.ts

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
import { Directions } from '../Directions';
99
import { PointerType } from '../PointerType';
1010
import { GestureHandlerEvent } from '../v3/types';
11+
import { State } from '../State';
1112

1213
export interface HitSlop {
1314
left?: number;
@@ -83,6 +84,17 @@ export interface Config extends Record<string, ConfigArgs> {
8384
enableTrackpadTwoFingerGesture?: boolean;
8485
}
8586

87+
type NativeEventArgs = number | State | boolean | undefined;
88+
interface NativeEvent extends Record<string, NativeEventArgs> {
89+
numberOfPointers: number;
90+
state: State;
91+
pointerInside: boolean | undefined;
92+
handlerTag: number;
93+
target: number;
94+
oldState?: State;
95+
pointerType: PointerType;
96+
}
97+
8698
export interface Point {
8799
x: number;
88100
y: number;
@@ -96,9 +108,10 @@ export interface PointerData {
96108
absoluteY: number;
97109
}
98110

99-
export interface ResultEvent
100-
extends Record<string, GestureHandlerEvent<unknown> | number> {
101-
nativeEvent: GestureHandlerEvent<unknown>;
111+
// Native event has to stay for v2 compatibility
112+
type ResultEventType = GestureHandlerEvent<unknown> | NativeEvent;
113+
export interface ResultEvent extends Record<string, ResultEventType | number> {
114+
nativeEvent: ResultEventType;
102115
timeStamp: number;
103116
}
104117

0 commit comments

Comments
 (0)