react-native-gesture-handler 2.6.0 → 2.6.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/build.gradle +2 -2
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js +20 -9
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +1 -1
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +282 -79
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +22 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +40 -96
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +24 -10
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +97 -7
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
- package/lib/commonjs/web/utils.js +15 -0
- package/lib/commonjs/web/utils.js.map +1 -0
- package/lib/module/EnableExperimentalWebImplementation.js +5 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +1 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +19 -10
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +22 -11
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +1 -1
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +14 -20
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +276 -79
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +57 -41
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +52 -50
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +19 -0
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -95
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +24 -10
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +116 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +97 -7
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +124 -0
- package/lib/module/web/tools/TouchEventManager.js.map +1 -0
- package/lib/module/web/utils.js +8 -0
- package/lib/module/web/utils.js.map +1 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +5 -2
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
- package/lib/typescript/web/handlers/GestureHandler.d.ts +41 -32
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
- package/lib/typescript/web/interfaces.d.ts +50 -10
- package/lib/typescript/web/tools/EventManager.d.ts +28 -26
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
- package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +2 -2
- package/src/EnableExperimentalWebImplementation.ts +9 -0
- package/src/RNGestureHandlerModule.macos.ts +25 -10
- package/src/RNGestureHandlerModule.ts +4 -1
- package/src/RNGestureHandlerModule.web.ts +20 -7
- package/src/components/GestureComponents.web.tsx +1 -1
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
- package/src/handlers/gestures/GestureDetector.tsx +0 -1
- package/src/handlers/gestures/eventReceiver.ts +23 -24
- package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
- package/src/web/detectors/RotationGestureDetector.ts +20 -52
- package/src/web/detectors/ScaleGestureDetector.ts +9 -45
- package/src/web/handlers/FlingGestureHandler.ts +45 -22
- package/src/web/handlers/GestureHandler.ts +306 -97
- package/src/web/handlers/LongPressGestureHandler.ts +30 -24
- package/src/web/handlers/ManualGestureHandler.ts +39 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
- package/src/web/handlers/PanGestureHandler.ts +68 -53
- package/src/web/handlers/PinchGestureHandler.ts +47 -44
- package/src/web/handlers/RotationGestureHandler.ts +52 -51
- package/src/web/handlers/TapGestureHandler.ts +74 -56
- package/src/web/interfaces.ts +57 -10
- package/src/web/tools/EventManager.ts +58 -148
- package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
- package/src/web/tools/InteractionManager.ts +25 -9
- package/src/web/tools/NodeManager.ts +6 -6
- package/src/web/tools/PointerEventManager.ts +134 -0
- package/src/web/tools/PointerTracker.ts +120 -10
- package/src/web/tools/TouchEventManager.ts +167 -0
- package/src/web/utils.ts +8 -0
|
@@ -6,32 +6,20 @@ import {
|
|
|
6
6
|
GestureUpdateEvent,
|
|
7
7
|
GestureStateChangeEvent,
|
|
8
8
|
} from '../gestureHandlerCommon';
|
|
9
|
-
import { GestureStateManagerType } from './gestureStateManager';
|
|
10
9
|
import { findHandler, findOldGestureHandler } from '../handlersRegistry';
|
|
11
10
|
import { BaseGesture } from './gesture';
|
|
12
|
-
import {
|
|
11
|
+
import {
|
|
12
|
+
GestureStateManager,
|
|
13
|
+
GestureStateManagerType,
|
|
14
|
+
} from './gestureStateManager';
|
|
13
15
|
|
|
14
16
|
let gestureHandlerEventSubscription: EmitterSubscription | null = null;
|
|
15
17
|
let gestureHandlerStateChangeEventSubscription: EmitterSubscription | null = null;
|
|
16
18
|
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
const dummyStateManager: GestureStateManagerType = {
|
|
22
|
-
begin: () => {
|
|
23
|
-
console.warn(warningMessage);
|
|
24
|
-
},
|
|
25
|
-
activate: () => {
|
|
26
|
-
console.warn(warningMessage);
|
|
27
|
-
},
|
|
28
|
-
end: () => {
|
|
29
|
-
console.warn(warningMessage);
|
|
30
|
-
},
|
|
31
|
-
fail: () => {
|
|
32
|
-
console.warn(warningMessage);
|
|
33
|
-
},
|
|
34
|
-
};
|
|
19
|
+
const gestureStateManagers: Map<number, GestureStateManagerType> = new Map<
|
|
20
|
+
number,
|
|
21
|
+
GestureStateManagerType
|
|
22
|
+
>();
|
|
35
23
|
|
|
36
24
|
const lastUpdateEvent: (GestureUpdateEvent | undefined)[] = [];
|
|
37
25
|
|
|
@@ -83,21 +71,32 @@ export function onGestureHandlerEvent(
|
|
|
83
71
|
handler.handlers.onEnd?.(event, false);
|
|
84
72
|
}
|
|
85
73
|
handler.handlers.onFinalize?.(event, false);
|
|
74
|
+
gestureStateManagers.delete(event.handlerTag);
|
|
86
75
|
lastUpdateEvent[handler.handlers.handlerTag] = undefined;
|
|
87
76
|
}
|
|
88
77
|
} else if (isTouchEvent(event)) {
|
|
78
|
+
if (!gestureStateManagers.has(event.handlerTag)) {
|
|
79
|
+
gestureStateManagers.set(
|
|
80
|
+
event.handlerTag,
|
|
81
|
+
GestureStateManager.create(event.handlerTag)
|
|
82
|
+
);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
86
|
+
const manager = gestureStateManagers.get(event.handlerTag)!;
|
|
87
|
+
|
|
89
88
|
switch (event.eventType) {
|
|
90
89
|
case TouchEventType.TOUCHES_DOWN:
|
|
91
|
-
handler.handlers?.onTouchesDown?.(event,
|
|
90
|
+
handler.handlers?.onTouchesDown?.(event, manager);
|
|
92
91
|
break;
|
|
93
92
|
case TouchEventType.TOUCHES_MOVE:
|
|
94
|
-
handler.handlers?.onTouchesMove?.(event,
|
|
93
|
+
handler.handlers?.onTouchesMove?.(event, manager);
|
|
95
94
|
break;
|
|
96
95
|
case TouchEventType.TOUCHES_UP:
|
|
97
|
-
handler.handlers?.onTouchesUp?.(event,
|
|
96
|
+
handler.handlers?.onTouchesUp?.(event, manager);
|
|
98
97
|
break;
|
|
99
98
|
case TouchEventType.TOUCHES_CANCELLED:
|
|
100
|
-
handler.handlers?.onTouchesCancelled?.(event,
|
|
99
|
+
handler.handlers?.onTouchesCancelled?.(event, manager);
|
|
101
100
|
break;
|
|
102
101
|
}
|
|
103
102
|
} else {
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import NodeManager from '../../web/tools/NodeManager';
|
|
2
|
+
import { GestureStateManagerType } from './gestureStateManager';
|
|
3
|
+
|
|
4
|
+
export const GestureStateManager = {
|
|
5
|
+
create(handlerTag: number): GestureStateManagerType {
|
|
6
|
+
return {
|
|
7
|
+
begin: () => {
|
|
8
|
+
NodeManager.getHandler(handlerTag).begin();
|
|
9
|
+
},
|
|
10
|
+
|
|
11
|
+
activate: () => {
|
|
12
|
+
NodeManager.getHandler(handlerTag).activate();
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
fail: () => {
|
|
16
|
+
NodeManager.getHandler(handlerTag).fail();
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
end: () => {
|
|
20
|
+
NodeManager.getHandler(handlerTag).end();
|
|
21
|
+
},
|
|
22
|
+
};
|
|
23
|
+
},
|
|
24
|
+
};
|
|
@@ -1,29 +1,17 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { AdaptedEvent, EventTypes } from '../interfaces';
|
|
2
2
|
import PointerTracker from '../tools/PointerTracker';
|
|
3
3
|
|
|
4
4
|
export interface RotationGestureListener {
|
|
5
5
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
|
6
|
-
onRotation: (
|
|
7
|
-
|
|
8
|
-
event: AdaptedPointerEvent
|
|
9
|
-
) => boolean;
|
|
10
|
-
onRotationEnd: (
|
|
11
|
-
detector: RotationGestureDetector,
|
|
12
|
-
event: AdaptedPointerEvent
|
|
13
|
-
) => void;
|
|
6
|
+
onRotation: (detector: RotationGestureDetector) => boolean;
|
|
7
|
+
onRotationEnd: (detector: RotationGestureDetector) => void;
|
|
14
8
|
}
|
|
15
9
|
|
|
16
10
|
export default class RotationGestureDetector
|
|
17
11
|
implements RotationGestureListener {
|
|
18
12
|
onRotationBegin: (detector: RotationGestureDetector) => boolean;
|
|
19
|
-
onRotation: (
|
|
20
|
-
|
|
21
|
-
event: AdaptedPointerEvent
|
|
22
|
-
) => boolean;
|
|
23
|
-
onRotationEnd: (
|
|
24
|
-
detector: RotationGestureDetector,
|
|
25
|
-
event: AdaptedPointerEvent
|
|
26
|
-
) => void;
|
|
13
|
+
onRotation: (detector: RotationGestureDetector) => boolean;
|
|
14
|
+
onRotationEnd: (detector: RotationGestureDetector) => void;
|
|
27
15
|
|
|
28
16
|
private currentTime = 0;
|
|
29
17
|
private previousTime = 0;
|
|
@@ -44,10 +32,7 @@ export default class RotationGestureDetector
|
|
|
44
32
|
this.onRotationEnd = callbacks.onRotationEnd;
|
|
45
33
|
}
|
|
46
34
|
|
|
47
|
-
private updateCurrent(
|
|
48
|
-
event: AdaptedPointerEvent,
|
|
49
|
-
tracker: PointerTracker
|
|
50
|
-
): void {
|
|
35
|
+
private updateCurrent(event: AdaptedEvent, tracker: PointerTracker): void {
|
|
51
36
|
this.previousTime = this.currentTime;
|
|
52
37
|
this.currentTime = event.time;
|
|
53
38
|
|
|
@@ -66,6 +51,7 @@ export default class RotationGestureDetector
|
|
|
66
51
|
|
|
67
52
|
//Angle diff should be positive when rotating in clockwise direction
|
|
68
53
|
const angle: number = -Math.atan2(vectorY, vectorX);
|
|
54
|
+
|
|
69
55
|
this.rotation = Number.isNaN(this.previousAngle)
|
|
70
56
|
? 0
|
|
71
57
|
: this.previousAngle - angle;
|
|
@@ -85,14 +71,14 @@ export default class RotationGestureDetector
|
|
|
85
71
|
}
|
|
86
72
|
}
|
|
87
73
|
|
|
88
|
-
private finish(
|
|
74
|
+
private finish(): void {
|
|
89
75
|
if (!this.isInProgress) {
|
|
90
76
|
return;
|
|
91
77
|
}
|
|
92
78
|
|
|
93
79
|
this.isInProgress = false;
|
|
94
80
|
this.keyPointers = [NaN, NaN];
|
|
95
|
-
this.onRotationEnd(this
|
|
81
|
+
this.onRotationEnd(this);
|
|
96
82
|
}
|
|
97
83
|
|
|
98
84
|
private setKeyPointers(tracker: PointerTracker): void {
|
|
@@ -106,12 +92,7 @@ export default class RotationGestureDetector
|
|
|
106
92
|
this.keyPointers[1] = pointerIDs.next().value as number;
|
|
107
93
|
}
|
|
108
94
|
|
|
109
|
-
public onTouchEvent(
|
|
110
|
-
event: AdaptedPointerEvent,
|
|
111
|
-
tracker: PointerTracker
|
|
112
|
-
): boolean {
|
|
113
|
-
this.adaptEvent(event, tracker);
|
|
114
|
-
|
|
95
|
+
public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {
|
|
115
96
|
switch (event.eventType) {
|
|
116
97
|
case EventTypes.DOWN:
|
|
117
98
|
this.isInProgress = false;
|
|
@@ -121,7 +102,6 @@ export default class RotationGestureDetector
|
|
|
121
102
|
if (this.isInProgress) {
|
|
122
103
|
break;
|
|
123
104
|
}
|
|
124
|
-
|
|
125
105
|
this.isInProgress = true;
|
|
126
106
|
|
|
127
107
|
this.previousTime = event.time;
|
|
@@ -139,7 +119,7 @@ export default class RotationGestureDetector
|
|
|
139
119
|
}
|
|
140
120
|
|
|
141
121
|
this.updateCurrent(event, tracker);
|
|
142
|
-
this.onRotation(this
|
|
122
|
+
this.onRotation(this);
|
|
143
123
|
|
|
144
124
|
break;
|
|
145
125
|
|
|
@@ -149,38 +129,21 @@ export default class RotationGestureDetector
|
|
|
149
129
|
}
|
|
150
130
|
|
|
151
131
|
if (this.keyPointers.indexOf(event.pointerId) >= 0) {
|
|
152
|
-
this.finish(
|
|
132
|
+
this.finish();
|
|
153
133
|
}
|
|
154
134
|
|
|
155
135
|
break;
|
|
156
136
|
|
|
157
137
|
case EventTypes.UP:
|
|
158
|
-
this.
|
|
138
|
+
if (this.isInProgress) {
|
|
139
|
+
this.finish();
|
|
140
|
+
}
|
|
159
141
|
break;
|
|
160
142
|
}
|
|
161
143
|
|
|
162
144
|
return true;
|
|
163
145
|
}
|
|
164
146
|
|
|
165
|
-
private adaptEvent(
|
|
166
|
-
event: AdaptedPointerEvent,
|
|
167
|
-
tracker: PointerTracker
|
|
168
|
-
): void {
|
|
169
|
-
if (
|
|
170
|
-
tracker.getTrackedPointersCount() &&
|
|
171
|
-
event.eventType === EventTypes.DOWN
|
|
172
|
-
) {
|
|
173
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
if (
|
|
177
|
-
tracker.getTrackedPointersCount() > 1 &&
|
|
178
|
-
event.eventType === EventTypes.UP
|
|
179
|
-
) {
|
|
180
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
147
|
public getTimeDelta(): number {
|
|
185
148
|
return this.currentTime + this.previousTime;
|
|
186
149
|
}
|
|
@@ -196,4 +159,9 @@ export default class RotationGestureDetector
|
|
|
196
159
|
public getRotation(): number {
|
|
197
160
|
return this.rotation;
|
|
198
161
|
}
|
|
162
|
+
|
|
163
|
+
public reset(): void {
|
|
164
|
+
this.keyPointers = [NaN, NaN];
|
|
165
|
+
this.isInProgress = false;
|
|
166
|
+
}
|
|
199
167
|
}
|
|
@@ -1,30 +1,18 @@
|
|
|
1
1
|
import { DEFAULT_TOUCH_SLOP } from '../constants';
|
|
2
|
-
import {
|
|
2
|
+
import { AdaptedEvent, EventTypes } from '../interfaces';
|
|
3
3
|
|
|
4
4
|
import PointerTracker from '../tools/PointerTracker';
|
|
5
5
|
|
|
6
6
|
export interface ScaleGestureListener {
|
|
7
7
|
onScaleBegin: (detector: ScaleGestureDetector) => boolean;
|
|
8
|
-
onScale: (
|
|
9
|
-
|
|
10
|
-
event: AdaptedPointerEvent
|
|
11
|
-
) => boolean;
|
|
12
|
-
onScaleEnd: (
|
|
13
|
-
detector: ScaleGestureDetector,
|
|
14
|
-
event: AdaptedPointerEvent
|
|
15
|
-
) => void;
|
|
8
|
+
onScale: (detector: ScaleGestureDetector) => boolean;
|
|
9
|
+
onScaleEnd: (detector: ScaleGestureDetector) => void;
|
|
16
10
|
}
|
|
17
11
|
|
|
18
12
|
export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
19
13
|
public onScaleBegin: (detector: ScaleGestureDetector) => boolean;
|
|
20
|
-
public onScale: (
|
|
21
|
-
|
|
22
|
-
event: AdaptedPointerEvent
|
|
23
|
-
) => boolean;
|
|
24
|
-
public onScaleEnd: (
|
|
25
|
-
detector: ScaleGestureDetector,
|
|
26
|
-
event: AdaptedPointerEvent
|
|
27
|
-
) => void;
|
|
14
|
+
public onScale: (detector: ScaleGestureDetector) => boolean;
|
|
15
|
+
public onScaleEnd: (detector: ScaleGestureDetector) => void;
|
|
28
16
|
|
|
29
17
|
private focusX!: number;
|
|
30
18
|
private focusY!: number;
|
|
@@ -50,12 +38,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
|
50
38
|
this.minSpan = 0;
|
|
51
39
|
}
|
|
52
40
|
|
|
53
|
-
public onTouchEvent(
|
|
54
|
-
event: AdaptedPointerEvent,
|
|
55
|
-
tracker: PointerTracker
|
|
56
|
-
): boolean {
|
|
57
|
-
this.adaptEvent(event, tracker);
|
|
58
|
-
|
|
41
|
+
public onTouchEvent(event: AdaptedEvent, tracker: PointerTracker): boolean {
|
|
59
42
|
this.currentTime = event.time;
|
|
60
43
|
|
|
61
44
|
const action: EventTypes = event.eventType;
|
|
@@ -68,7 +51,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
|
68
51
|
|
|
69
52
|
if (action === EventTypes.DOWN || streamComplete) {
|
|
70
53
|
if (this.inProgress) {
|
|
71
|
-
this.onScaleEnd(this
|
|
54
|
+
this.onScaleEnd(this);
|
|
72
55
|
this.inProgress = false;
|
|
73
56
|
this.initialSpan = 0;
|
|
74
57
|
}
|
|
@@ -127,7 +110,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
|
127
110
|
this.focusY = focusY;
|
|
128
111
|
|
|
129
112
|
if (this.inProgress && (span < this.minSpan || configChanged)) {
|
|
130
|
-
this.onScaleEnd(this
|
|
113
|
+
this.onScaleEnd(this);
|
|
131
114
|
this.inProgress = false;
|
|
132
115
|
this.initialSpan = span;
|
|
133
116
|
}
|
|
@@ -153,7 +136,7 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
|
153
136
|
|
|
154
137
|
this.currentSpan = span;
|
|
155
138
|
|
|
156
|
-
if (this.inProgress && !this.onScale(this
|
|
139
|
+
if (this.inProgress && !this.onScale(this)) {
|
|
157
140
|
return true;
|
|
158
141
|
}
|
|
159
142
|
|
|
@@ -163,25 +146,6 @@ export default class ScaleGestureDetector implements ScaleGestureListener {
|
|
|
163
146
|
return true;
|
|
164
147
|
}
|
|
165
148
|
|
|
166
|
-
private adaptEvent(
|
|
167
|
-
event: AdaptedPointerEvent,
|
|
168
|
-
tracker: PointerTracker
|
|
169
|
-
): void {
|
|
170
|
-
if (
|
|
171
|
-
tracker.getTrackedPointersCount() > 1 &&
|
|
172
|
-
event.eventType === EventTypes.DOWN
|
|
173
|
-
) {
|
|
174
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_DOWN;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (
|
|
178
|
-
tracker.getTrackedPointersCount() > 1 &&
|
|
179
|
-
event.eventType === EventTypes.UP
|
|
180
|
-
) {
|
|
181
|
-
event.eventType = EventTypes.ADDITIONAL_POINTER_UP;
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
149
|
public getCurrentSpan(): number {
|
|
186
150
|
return this.currentSpan;
|
|
187
151
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { State } from '../../State';
|
|
2
2
|
import { Direction } from '../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
|
4
4
|
|
|
5
5
|
import GestureHandler from './GestureHandler';
|
|
6
6
|
|
|
@@ -26,7 +26,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
26
26
|
super.init(ref, propsRef);
|
|
27
27
|
}
|
|
28
28
|
|
|
29
|
-
public updateGestureConfig({ enabled = true, ...props }): void {
|
|
29
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
30
30
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
31
31
|
|
|
32
32
|
this.enabled = enabled;
|
|
@@ -40,27 +40,29 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
protected transformNativeEvent(
|
|
43
|
+
protected transformNativeEvent() {
|
|
44
|
+
const rect: DOMRect = this.view.getBoundingClientRect();
|
|
45
|
+
|
|
44
46
|
return {
|
|
45
|
-
x:
|
|
46
|
-
y:
|
|
47
|
-
absoluteX:
|
|
48
|
-
absoluteY:
|
|
47
|
+
x: this.tracker.getLastAvgX() - rect.left,
|
|
48
|
+
y: this.tracker.getLastAvgY() - rect.top,
|
|
49
|
+
absoluteX: this.tracker.getLastAvgX(),
|
|
50
|
+
absoluteY: this.tracker.getLastAvgY(),
|
|
49
51
|
};
|
|
50
52
|
}
|
|
51
53
|
|
|
52
|
-
private startFling(event:
|
|
54
|
+
private startFling(event: AdaptedEvent): void {
|
|
53
55
|
this.startX = event.x;
|
|
54
56
|
this.startY = event.y;
|
|
55
57
|
|
|
56
|
-
this.begin(
|
|
58
|
+
this.begin();
|
|
57
59
|
|
|
58
60
|
this.maxNumberOfPointersSimultaneously = 1;
|
|
59
61
|
|
|
60
|
-
this.delayTimeout = setTimeout(() => this.fail(
|
|
62
|
+
this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
|
|
61
63
|
}
|
|
62
64
|
|
|
63
|
-
private tryEndFling(event:
|
|
65
|
+
private tryEndFling(event: AdaptedEvent): boolean {
|
|
64
66
|
if (
|
|
65
67
|
this.maxNumberOfPointersSimultaneously ===
|
|
66
68
|
this.numberOfPointersRequired &&
|
|
@@ -74,7 +76,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
74
76
|
event.y - this.startY > this.minAcceptableDelta))
|
|
75
77
|
) {
|
|
76
78
|
clearTimeout(this.delayTimeout);
|
|
77
|
-
this.activate(
|
|
79
|
+
this.activate();
|
|
78
80
|
|
|
79
81
|
return true;
|
|
80
82
|
}
|
|
@@ -82,17 +84,25 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
82
84
|
return false;
|
|
83
85
|
}
|
|
84
86
|
|
|
85
|
-
private endFling(event:
|
|
87
|
+
private endFling(event: AdaptedEvent) {
|
|
86
88
|
if (!this.tryEndFling(event)) {
|
|
87
|
-
this.fail(
|
|
89
|
+
this.fail();
|
|
88
90
|
}
|
|
89
91
|
}
|
|
90
92
|
|
|
91
|
-
protected onPointerDown(event:
|
|
93
|
+
protected onPointerDown(event: AdaptedEvent): void {
|
|
94
|
+
this.tracker.addToTracker(event);
|
|
92
95
|
super.onPointerDown(event);
|
|
96
|
+
this.newPointerAction(event);
|
|
97
|
+
}
|
|
93
98
|
|
|
99
|
+
protected onPointerAdd(event: AdaptedEvent): void {
|
|
94
100
|
this.tracker.addToTracker(event);
|
|
101
|
+
super.onPointerAdd(event);
|
|
102
|
+
this.newPointerAction(event);
|
|
103
|
+
}
|
|
95
104
|
|
|
105
|
+
private newPointerAction(event: AdaptedEvent): void {
|
|
96
106
|
if (this.currentState === State.UNDETERMINED) {
|
|
97
107
|
this.startFling(event);
|
|
98
108
|
}
|
|
@@ -111,7 +121,7 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
111
121
|
}
|
|
112
122
|
}
|
|
113
123
|
|
|
114
|
-
protected onPointerMove(event:
|
|
124
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
|
115
125
|
this.tracker.track(event);
|
|
116
126
|
|
|
117
127
|
if (this.currentState !== State.BEGAN) {
|
|
@@ -123,19 +133,32 @@ export default class FlingGestureHandler extends GestureHandler {
|
|
|
123
133
|
super.onPointerMove(event);
|
|
124
134
|
}
|
|
125
135
|
|
|
126
|
-
protected onPointerUp(event:
|
|
127
|
-
|
|
136
|
+
protected onPointerUp(event: AdaptedEvent): void {
|
|
137
|
+
super.onPointerUp(event);
|
|
138
|
+
this.onUp(event);
|
|
139
|
+
}
|
|
128
140
|
|
|
141
|
+
protected onPointerRemove(event: AdaptedEvent): void {
|
|
142
|
+
super.onPointerRemove(event);
|
|
143
|
+
this.onUp(event);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
private onUp(event: AdaptedEvent): void {
|
|
147
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
129
148
|
if (this.currentState !== State.BEGAN) {
|
|
130
149
|
return;
|
|
131
150
|
}
|
|
132
|
-
|
|
133
151
|
this.endFling(event);
|
|
134
152
|
}
|
|
135
153
|
|
|
136
|
-
protected
|
|
137
|
-
super.
|
|
138
|
-
this.
|
|
154
|
+
protected onPointerCancel(event: AdaptedEvent): void {
|
|
155
|
+
super.onPointerCancel(event);
|
|
156
|
+
this.reset();
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
public activate(force?: boolean): void {
|
|
160
|
+
super.activate(force);
|
|
161
|
+
this.end();
|
|
139
162
|
}
|
|
140
163
|
|
|
141
164
|
protected resetConfig(): void {
|