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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { State } from '../../State';
|
|
2
2
|
import { DEFAULT_TOUCH_SLOP } from '../constants';
|
|
3
|
-
import {
|
|
3
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
|
4
4
|
|
|
5
5
|
import GestureHandler from './GestureHandler';
|
|
6
6
|
import ScaleGestureDetector, {
|
|
@@ -12,17 +12,14 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
12
12
|
private velocity = 0;
|
|
13
13
|
|
|
14
14
|
private startingSpan = 0;
|
|
15
|
-
private spanSlop =
|
|
15
|
+
private spanSlop = DEFAULT_TOUCH_SLOP;
|
|
16
16
|
|
|
17
17
|
private scaleDetectorListener: ScaleGestureListener = {
|
|
18
18
|
onScaleBegin: (detector: ScaleGestureDetector): boolean => {
|
|
19
19
|
this.startingSpan = detector.getCurrentSpan();
|
|
20
20
|
return true;
|
|
21
21
|
},
|
|
22
|
-
onScale: (
|
|
23
|
-
detector: ScaleGestureDetector,
|
|
24
|
-
event: AdaptedPointerEvent
|
|
25
|
-
): boolean => {
|
|
22
|
+
onScale: (detector: ScaleGestureDetector): boolean => {
|
|
26
23
|
const prevScaleFactor: number = this.scale;
|
|
27
24
|
this.scale *= detector.getScaleFactor(
|
|
28
25
|
this.tracker.getTrackedPointersCount()
|
|
@@ -38,13 +35,12 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
38
35
|
this.spanSlop &&
|
|
39
36
|
this.currentState === State.BEGAN
|
|
40
37
|
) {
|
|
41
|
-
this.activate(
|
|
38
|
+
this.activate();
|
|
42
39
|
}
|
|
43
40
|
return true;
|
|
44
41
|
},
|
|
45
42
|
onScaleEnd: (
|
|
46
|
-
_detector: ScaleGestureDetector
|
|
47
|
-
_event: AdaptedPointerEvent
|
|
43
|
+
_detector: ScaleGestureDetector
|
|
48
44
|
// eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
49
45
|
): void => {},
|
|
50
46
|
};
|
|
@@ -57,16 +53,15 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
57
53
|
super.init(ref, propsRef);
|
|
58
54
|
|
|
59
55
|
this.setShouldCancelWhenOutside(false);
|
|
60
|
-
this.spanSlop = DEFAULT_TOUCH_SLOP;
|
|
61
56
|
}
|
|
62
57
|
|
|
63
|
-
public updateGestureConfig({ enabled = true, ...props }): void {
|
|
58
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
64
59
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
65
60
|
|
|
66
61
|
this.enabled = enabled;
|
|
67
62
|
}
|
|
68
63
|
|
|
69
|
-
protected transformNativeEvent(
|
|
64
|
+
protected transformNativeEvent() {
|
|
70
65
|
return {
|
|
71
66
|
focalX: this.scaleGestureDetector.getFocusX(),
|
|
72
67
|
focalY: this.scaleGestureDetector.getFocusY(),
|
|
@@ -75,44 +70,47 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
75
70
|
};
|
|
76
71
|
}
|
|
77
72
|
|
|
78
|
-
protected onPointerDown(event:
|
|
73
|
+
protected onPointerDown(event: AdaptedEvent): void {
|
|
74
|
+
this.tracker.addToTracker(event);
|
|
79
75
|
super.onPointerDown(event);
|
|
76
|
+
}
|
|
80
77
|
|
|
78
|
+
protected onPointerAdd(event: AdaptedEvent): void {
|
|
81
79
|
this.tracker.addToTracker(event);
|
|
80
|
+
super.onPointerAdd(event);
|
|
81
|
+
this.tryBegin();
|
|
82
|
+
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
83
|
+
}
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
protected onPointerUp(event: AdaptedEvent): void {
|
|
86
|
+
super.onPointerUp(event);
|
|
87
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
88
|
+
if (this.currentState !== State.ACTIVE) {
|
|
84
89
|
return;
|
|
85
90
|
}
|
|
91
|
+
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
86
92
|
|
|
87
|
-
if (this.
|
|
88
|
-
this.
|
|
89
|
-
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
protected onPointerUp(event: AdaptedPointerEvent): void {
|
|
93
|
-
if (this.tracker.getTrackedPointersCount() > 1) {
|
|
94
|
-
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
95
|
-
this.tracker.removeFromTracker(event.pointerId);
|
|
93
|
+
if (this.currentState === State.ACTIVE) {
|
|
94
|
+
this.end();
|
|
96
95
|
} else {
|
|
97
|
-
this.
|
|
98
|
-
if (this.currentState !== State.ACTIVE) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
96
|
+
this.fail();
|
|
102
97
|
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
protected onPointerRemove(event: AdaptedEvent): void {
|
|
101
|
+
super.onPointerRemove(event);
|
|
102
|
+
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
103
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
104
|
+
|
|
103
105
|
if (
|
|
104
106
|
this.currentState === State.ACTIVE &&
|
|
105
107
|
this.tracker.getTrackedPointersCount() < 2
|
|
106
108
|
) {
|
|
107
|
-
this.end(
|
|
108
|
-
} else if (
|
|
109
|
-
event.eventType === EventTypes.UP &&
|
|
110
|
-
this.currentState !== State.BEGAN
|
|
111
|
-
) {
|
|
112
|
-
this.fail(event);
|
|
109
|
+
this.end();
|
|
113
110
|
}
|
|
114
111
|
}
|
|
115
|
-
|
|
112
|
+
|
|
113
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
|
116
114
|
if (this.tracker.getTrackedPointersCount() < 2) {
|
|
117
115
|
return;
|
|
118
116
|
}
|
|
@@ -121,30 +119,36 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
121
119
|
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
122
120
|
super.onPointerMove(event);
|
|
123
121
|
}
|
|
124
|
-
protected onPointerOutOfBounds(
|
|
125
|
-
|
|
122
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
123
|
+
if (this.tracker.getTrackedPointersCount() < 2) {
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
this.tracker.track(event);
|
|
127
|
+
|
|
128
|
+
this.scaleGestureDetector.onTouchEvent(event, this.tracker);
|
|
129
|
+
super.onPointerOutOfBounds(event);
|
|
126
130
|
}
|
|
127
131
|
|
|
128
|
-
protected onPointerCancel(
|
|
132
|
+
protected onPointerCancel(event: AdaptedEvent): void {
|
|
133
|
+
super.onPointerCancel(event);
|
|
129
134
|
this.reset();
|
|
130
135
|
}
|
|
131
136
|
|
|
132
|
-
private tryBegin(
|
|
137
|
+
private tryBegin(): void {
|
|
133
138
|
if (this.currentState !== State.UNDETERMINED) {
|
|
134
139
|
return;
|
|
135
140
|
}
|
|
136
141
|
|
|
137
142
|
this.resetProgress();
|
|
138
|
-
|
|
139
|
-
this.begin(event);
|
|
143
|
+
this.begin();
|
|
140
144
|
}
|
|
141
145
|
|
|
142
|
-
|
|
146
|
+
public activate(force?: boolean): void {
|
|
143
147
|
if (this.currentState !== State.ACTIVE) {
|
|
144
148
|
this.resetProgress();
|
|
145
149
|
}
|
|
146
150
|
|
|
147
|
-
super.activate(
|
|
151
|
+
super.activate(force);
|
|
148
152
|
}
|
|
149
153
|
|
|
150
154
|
protected onReset(): void {
|
|
@@ -155,7 +159,6 @@ export default class PinchGestureHandler extends GestureHandler {
|
|
|
155
159
|
if (this.currentState === State.ACTIVE) {
|
|
156
160
|
return;
|
|
157
161
|
}
|
|
158
|
-
|
|
159
162
|
this.velocity = 0;
|
|
160
163
|
this.scale = 1;
|
|
161
164
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { State } from '../../State';
|
|
2
|
-
import {
|
|
2
|
+
import { AdaptedEvent, Config } from '../interfaces';
|
|
3
3
|
|
|
4
4
|
import GestureHandler from './GestureHandler';
|
|
5
5
|
import RotationGestureDetector, {
|
|
@@ -17,10 +17,7 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
17
17
|
|
|
18
18
|
private rotationGestureListener: RotationGestureListener = {
|
|
19
19
|
onRotationBegin: (_detector: RotationGestureDetector): boolean => true,
|
|
20
|
-
onRotation: (
|
|
21
|
-
detector: RotationGestureDetector,
|
|
22
|
-
event: AdaptedPointerEvent
|
|
23
|
-
): boolean => {
|
|
20
|
+
onRotation: (detector: RotationGestureDetector): boolean => {
|
|
24
21
|
const previousRotation: number = this.rotation;
|
|
25
22
|
this.rotation += detector.getRotation();
|
|
26
23
|
|
|
@@ -34,16 +31,13 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
34
31
|
Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD &&
|
|
35
32
|
this.currentState === State.BEGAN
|
|
36
33
|
) {
|
|
37
|
-
this.activate(
|
|
34
|
+
this.activate();
|
|
38
35
|
}
|
|
39
36
|
|
|
40
37
|
return true;
|
|
41
38
|
},
|
|
42
|
-
onRotationEnd: (
|
|
43
|
-
|
|
44
|
-
event: AdaptedPointerEvent
|
|
45
|
-
): void => {
|
|
46
|
-
this.end(event);
|
|
39
|
+
onRotationEnd: (_detector: RotationGestureDetector): void => {
|
|
40
|
+
this.end();
|
|
47
41
|
},
|
|
48
42
|
};
|
|
49
43
|
|
|
@@ -57,13 +51,13 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
57
51
|
this.setShouldCancelWhenOutside(false);
|
|
58
52
|
}
|
|
59
53
|
|
|
60
|
-
public updateGestureConfig({ enabled = true, ...props }): void {
|
|
54
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
61
55
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
62
56
|
|
|
63
57
|
this.enabled = enabled;
|
|
64
58
|
}
|
|
65
59
|
|
|
66
|
-
protected transformNativeEvent(
|
|
60
|
+
protected transformNativeEvent() {
|
|
67
61
|
return {
|
|
68
62
|
rotation: this.rotation ? this.rotation : 0,
|
|
69
63
|
anchorX: this.getAnchorX(),
|
|
@@ -84,24 +78,21 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
84
78
|
return anchorY ? anchorY : this.cachedAnchorY;
|
|
85
79
|
}
|
|
86
80
|
|
|
87
|
-
protected onPointerDown(event:
|
|
81
|
+
protected onPointerDown(event: AdaptedEvent): void {
|
|
82
|
+
this.tracker.addToTracker(event);
|
|
88
83
|
super.onPointerDown(event);
|
|
84
|
+
}
|
|
89
85
|
|
|
86
|
+
protected onPointerAdd(event: AdaptedEvent): void {
|
|
90
87
|
this.tracker.addToTracker(event);
|
|
88
|
+
super.onPointerAdd(event);
|
|
91
89
|
|
|
92
|
-
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
this.tryBegin(event);
|
|
90
|
+
this.tryBegin();
|
|
97
91
|
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
98
92
|
}
|
|
99
93
|
|
|
100
|
-
protected onPointerMove(event:
|
|
101
|
-
if (
|
|
102
|
-
this.tracker.getTrackedPointersCount() < 2 ||
|
|
103
|
-
!this.rotationGestureDetector
|
|
104
|
-
) {
|
|
94
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
|
95
|
+
if (this.tracker.getTrackedPointersCount() < 2) {
|
|
105
96
|
return;
|
|
106
97
|
}
|
|
107
98
|
|
|
@@ -119,55 +110,64 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
119
110
|
super.onPointerMove(event);
|
|
120
111
|
}
|
|
121
112
|
|
|
122
|
-
protected
|
|
123
|
-
if (
|
|
124
|
-
this.tracker.resetTracker();
|
|
113
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
114
|
+
if (this.tracker.getTrackedPointersCount() < 2) {
|
|
125
115
|
return;
|
|
126
116
|
}
|
|
127
117
|
|
|
128
|
-
if (this.
|
|
129
|
-
this.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
this.
|
|
133
|
-
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
134
|
-
if (this.currentState !== State.ACTIVE) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
118
|
+
if (this.getAnchorX()) {
|
|
119
|
+
this.cachedAnchorX = this.getAnchorX();
|
|
120
|
+
}
|
|
121
|
+
if (this.getAnchorY()) {
|
|
122
|
+
this.cachedAnchorY = this.getAnchorY();
|
|
137
123
|
}
|
|
138
124
|
|
|
139
|
-
|
|
125
|
+
this.tracker.track(event);
|
|
126
|
+
|
|
127
|
+
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
128
|
+
|
|
129
|
+
super.onPointerOutOfBounds(event);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
protected onPointerUp(event: AdaptedEvent): void {
|
|
133
|
+
super.onPointerUp(event);
|
|
134
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
135
|
+
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
136
|
+
|
|
137
|
+
if (this.currentState !== State.ACTIVE) {
|
|
140
138
|
return;
|
|
141
139
|
}
|
|
142
140
|
|
|
143
141
|
if (this.currentState === State.ACTIVE) {
|
|
144
|
-
this.end(
|
|
142
|
+
this.end();
|
|
145
143
|
} else {
|
|
146
|
-
this.fail(
|
|
144
|
+
this.fail();
|
|
147
145
|
}
|
|
148
146
|
}
|
|
149
147
|
|
|
150
|
-
protected
|
|
151
|
-
|
|
148
|
+
protected onPointerRemove(event: AdaptedEvent): void {
|
|
149
|
+
super.onPointerRemove(event);
|
|
150
|
+
this.rotationGestureDetector.onTouchEvent(event, this.tracker);
|
|
151
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
protected onPointerCancel(event: AdaptedEvent): void {
|
|
155
|
+
super.onPointerCancel(event);
|
|
156
|
+
this.end();
|
|
157
|
+
|
|
152
158
|
this.reset();
|
|
153
159
|
}
|
|
154
160
|
|
|
155
|
-
protected tryBegin(
|
|
161
|
+
protected tryBegin(): void {
|
|
156
162
|
if (this.currentState !== State.UNDETERMINED) {
|
|
157
163
|
return;
|
|
158
164
|
}
|
|
159
165
|
|
|
160
|
-
this.
|
|
161
|
-
|
|
162
|
-
this.begin(event);
|
|
166
|
+
this.begin();
|
|
163
167
|
}
|
|
164
168
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
this.resetProgress();
|
|
168
|
-
}
|
|
169
|
-
|
|
170
|
-
super.activate(event);
|
|
169
|
+
public activate(_force?: boolean): void {
|
|
170
|
+
super.activate();
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
protected onReset(): void {
|
|
@@ -177,5 +177,6 @@ export default class RotationGestureHandler extends GestureHandler {
|
|
|
177
177
|
|
|
178
178
|
this.rotation = 0;
|
|
179
179
|
this.velocity = 0;
|
|
180
|
+
this.rotationGestureDetector.reset();
|
|
180
181
|
}
|
|
181
182
|
}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { State } from '../../State';
|
|
2
|
-
import {
|
|
2
|
+
import { AdaptedEvent, Config, EventTypes } from '../interfaces';
|
|
3
3
|
|
|
4
4
|
import GestureHandler from './GestureHandler';
|
|
5
5
|
|
|
6
6
|
const DEFAULT_MAX_DURATION_MS = 500;
|
|
7
|
-
const DEFAULT_MAX_DELAY_MS =
|
|
7
|
+
const DEFAULT_MAX_DELAY_MS = 500;
|
|
8
8
|
const DEFAULT_NUMBER_OF_TAPS = 1;
|
|
9
9
|
const DEFAULT_MIN_NUMBER_OF_POINTERS = 1;
|
|
10
10
|
|
|
@@ -36,7 +36,7 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
36
36
|
this.setShouldCancelWhenOutside(true);
|
|
37
37
|
}
|
|
38
38
|
|
|
39
|
-
public updateGestureConfig({ enabled = true, ...props }): void {
|
|
39
|
+
public updateGestureConfig({ enabled = true, ...props }: Config): void {
|
|
40
40
|
super.updateGestureConfig({ enabled: enabled, ...props });
|
|
41
41
|
|
|
42
42
|
this.enabled = enabled;
|
|
@@ -61,8 +61,8 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
61
61
|
this.maxDeltaY = this.config.maxDeltaY;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
if (this.config.
|
|
65
|
-
this.maxDistSq = this.config.
|
|
64
|
+
if (this.config.maxDist !== undefined) {
|
|
65
|
+
this.maxDistSq = this.config.maxDist * this.config.maxDist;
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
if (this.config.minPointers !== undefined) {
|
|
@@ -82,12 +82,14 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
82
82
|
this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;
|
|
83
83
|
}
|
|
84
84
|
|
|
85
|
-
protected transformNativeEvent(
|
|
85
|
+
protected transformNativeEvent() {
|
|
86
|
+
const rect: DOMRect = this.view.getBoundingClientRect();
|
|
87
|
+
|
|
86
88
|
return {
|
|
87
|
-
x:
|
|
88
|
-
y:
|
|
89
|
-
absoluteX:
|
|
90
|
-
absoluteY:
|
|
89
|
+
x: this.tracker.getLastAvgX() - rect.left,
|
|
90
|
+
y: this.tracker.getLastAvgY() - rect.top,
|
|
91
|
+
absoluteX: this.tracker.getLastAvgX(),
|
|
92
|
+
absoluteY: this.tracker.getLastAvgY(),
|
|
91
93
|
};
|
|
92
94
|
}
|
|
93
95
|
|
|
@@ -96,68 +98,72 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
96
98
|
clearTimeout(this.delayTimeout);
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
private startTap(
|
|
101
|
+
private startTap(): void {
|
|
100
102
|
this.clearTimeouts();
|
|
101
103
|
|
|
102
|
-
this.waitTimeout = setTimeout(() => this.fail(
|
|
104
|
+
this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
private endTap(
|
|
107
|
+
private endTap(): void {
|
|
106
108
|
this.clearTimeouts();
|
|
107
109
|
|
|
108
110
|
if (
|
|
109
111
|
++this.tapsSoFar === this.numberOfTaps &&
|
|
110
112
|
this.currentMaxNumberOfPointers >= this.minNumberOfPointers
|
|
111
113
|
) {
|
|
112
|
-
this.activate(
|
|
114
|
+
this.activate();
|
|
113
115
|
} else {
|
|
114
|
-
this.delayTimeout = setTimeout(() => this.fail(
|
|
116
|
+
this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);
|
|
115
117
|
}
|
|
116
118
|
}
|
|
117
119
|
|
|
118
120
|
//Handling Events
|
|
119
|
-
protected onPointerDown(event:
|
|
120
|
-
super.onPointerDown(event);
|
|
121
|
+
protected onPointerDown(event: AdaptedEvent): void {
|
|
121
122
|
this.tracker.addToTracker(event);
|
|
123
|
+
super.onPointerDown(event);
|
|
122
124
|
|
|
123
125
|
this.trySettingPosition(event);
|
|
124
126
|
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
this.startX = event.x;
|
|
128
|
+
this.startY = event.y;
|
|
129
|
+
|
|
130
|
+
this.lastX = event.x;
|
|
131
|
+
this.lastY = event.y;
|
|
132
|
+
|
|
131
133
|
this.updateState(event);
|
|
132
134
|
}
|
|
133
135
|
|
|
134
|
-
protected onPointerAdd(
|
|
136
|
+
protected onPointerAdd(event: AdaptedEvent): void {
|
|
137
|
+
super.onPointerAdd(event);
|
|
138
|
+
this.tracker.addToTracker(event);
|
|
139
|
+
this.trySettingPosition(event);
|
|
140
|
+
|
|
135
141
|
this.offsetX += this.lastX - this.startX;
|
|
136
|
-
this.offsetY += this.lastY
|
|
142
|
+
this.offsetY += this.lastY - this.startY;
|
|
137
143
|
|
|
138
144
|
this.lastX = this.tracker.getLastAvgX();
|
|
139
145
|
this.lastY = this.tracker.getLastAvgY();
|
|
140
146
|
|
|
141
|
-
this.startX = this.
|
|
142
|
-
this.startY = this.
|
|
143
|
-
}
|
|
147
|
+
this.startX = this.tracker.getLastAvgX();
|
|
148
|
+
this.startY = this.tracker.getLastAvgY();
|
|
144
149
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.tracker.removeFromTracker(event.pointerId);
|
|
150
|
+
this.updateState(event);
|
|
151
|
+
}
|
|
148
152
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
+
protected onPointerUp(event: AdaptedEvent): void {
|
|
154
|
+
super.onPointerUp(event);
|
|
155
|
+
this.lastX = this.tracker.getLastAvgX();
|
|
156
|
+
this.lastY = this.tracker.getLastAvgY();
|
|
153
157
|
|
|
154
|
-
|
|
155
|
-
}
|
|
158
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
156
159
|
|
|
157
160
|
this.updateState(event);
|
|
158
161
|
}
|
|
159
162
|
|
|
160
|
-
protected onPointerRemove(
|
|
163
|
+
protected onPointerRemove(event: AdaptedEvent): void {
|
|
164
|
+
super.onPointerRemove(event);
|
|
165
|
+
this.tracker.removeFromTracker(event.pointerId);
|
|
166
|
+
|
|
161
167
|
this.offsetX += this.lastX - this.startX;
|
|
162
168
|
this.offsetY += this.lastY = this.startY;
|
|
163
169
|
|
|
@@ -166,31 +172,41 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
166
172
|
|
|
167
173
|
this.startX = this.lastX;
|
|
168
174
|
this.startY = this.lastY;
|
|
175
|
+
|
|
176
|
+
this.updateState(event);
|
|
169
177
|
}
|
|
170
178
|
|
|
171
|
-
protected onPointerMove(event:
|
|
179
|
+
protected onPointerMove(event: AdaptedEvent): void {
|
|
172
180
|
this.trySettingPosition(event);
|
|
181
|
+
this.tracker.track(event);
|
|
173
182
|
|
|
174
183
|
this.lastX = this.tracker.getLastAvgX();
|
|
175
184
|
this.lastY = this.tracker.getLastAvgY();
|
|
176
185
|
|
|
177
186
|
this.updateState(event);
|
|
187
|
+
|
|
188
|
+
super.onPointerMove(event);
|
|
178
189
|
}
|
|
179
|
-
|
|
190
|
+
|
|
191
|
+
protected onPointerOutOfBounds(event: AdaptedEvent): void {
|
|
180
192
|
this.trySettingPosition(event);
|
|
193
|
+
this.tracker.track(event);
|
|
181
194
|
|
|
182
195
|
this.lastX = this.tracker.getLastAvgX();
|
|
183
196
|
this.lastY = this.tracker.getLastAvgY();
|
|
184
197
|
|
|
185
198
|
this.updateState(event);
|
|
199
|
+
|
|
200
|
+
super.onPointerOutOfBounds(event);
|
|
186
201
|
}
|
|
187
202
|
|
|
188
|
-
protected onPointerCancel(event:
|
|
203
|
+
protected onPointerCancel(event: AdaptedEvent): void {
|
|
204
|
+
super.onPointerCancel(event);
|
|
189
205
|
this.tracker.resetTracker();
|
|
190
|
-
this.fail(
|
|
206
|
+
this.fail();
|
|
191
207
|
}
|
|
192
208
|
|
|
193
|
-
private updateState(event:
|
|
209
|
+
private updateState(event: AdaptedEvent): void {
|
|
194
210
|
if (
|
|
195
211
|
this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()
|
|
196
212
|
) {
|
|
@@ -198,23 +214,23 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
198
214
|
}
|
|
199
215
|
|
|
200
216
|
if (this.shouldFail()) {
|
|
201
|
-
this.fail(
|
|
217
|
+
this.fail();
|
|
202
218
|
return;
|
|
203
219
|
}
|
|
204
220
|
|
|
205
221
|
switch (this.currentState) {
|
|
206
222
|
case State.UNDETERMINED:
|
|
207
223
|
if (event.eventType === EventTypes.DOWN) {
|
|
208
|
-
this.begin(
|
|
224
|
+
this.begin();
|
|
209
225
|
}
|
|
210
|
-
this.startTap(
|
|
226
|
+
this.startTap();
|
|
211
227
|
break;
|
|
212
228
|
case State.BEGAN:
|
|
213
229
|
if (event.eventType === EventTypes.UP) {
|
|
214
|
-
this.endTap(
|
|
230
|
+
this.endTap();
|
|
215
231
|
}
|
|
216
232
|
if (event.eventType === EventTypes.DOWN) {
|
|
217
|
-
this.startTap(
|
|
233
|
+
this.startTap();
|
|
218
234
|
}
|
|
219
235
|
break;
|
|
220
236
|
default:
|
|
@@ -222,7 +238,7 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
222
238
|
}
|
|
223
239
|
}
|
|
224
240
|
|
|
225
|
-
private trySettingPosition(event:
|
|
241
|
+
private trySettingPosition(event: AdaptedEvent): void {
|
|
226
242
|
if (this.currentState !== State.UNDETERMINED) {
|
|
227
243
|
return;
|
|
228
244
|
}
|
|
@@ -235,6 +251,7 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
235
251
|
|
|
236
252
|
private shouldFail(): boolean {
|
|
237
253
|
const dx = this.lastX - this.startX + this.offsetX;
|
|
254
|
+
|
|
238
255
|
if (
|
|
239
256
|
this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&
|
|
240
257
|
Math.abs(dx) > this.maxDeltaX
|
|
@@ -250,17 +267,17 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
250
267
|
return true;
|
|
251
268
|
}
|
|
252
269
|
|
|
253
|
-
const
|
|
270
|
+
const distSq = dy * dy + dx * dx;
|
|
254
271
|
|
|
255
|
-
return
|
|
272
|
+
return (
|
|
273
|
+
this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq
|
|
274
|
+
);
|
|
256
275
|
}
|
|
257
276
|
|
|
258
|
-
|
|
259
|
-
super.activate(
|
|
277
|
+
public activate(): void {
|
|
278
|
+
super.activate();
|
|
260
279
|
|
|
261
|
-
|
|
262
|
-
this.end(event);
|
|
263
|
-
}
|
|
280
|
+
this.end();
|
|
264
281
|
}
|
|
265
282
|
|
|
266
283
|
protected onCancel(): void {
|
|
@@ -269,6 +286,7 @@ export default class TapGestureHandler extends GestureHandler {
|
|
|
269
286
|
}
|
|
270
287
|
|
|
271
288
|
protected resetProgress(): void {
|
|
289
|
+
this.clearTimeouts();
|
|
272
290
|
this.tapsSoFar = 0;
|
|
273
291
|
this.currentMaxNumberOfPointers = 0;
|
|
274
292
|
}
|