react-native-gesture-handler 2.16.2 → 2.17.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/README.md +9 -3
- package/android/build.gradle +103 -0
- package/android/gradle.properties +7 -0
- package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +7 -7
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -8
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -5
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +4 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +1 -0
- package/apple/RNGestureHandlerButtonComponentView.mm +10 -0
- package/apple/RNGestureHandlerModule.mm +2 -3
- package/lib/commonjs/components/GestureButtons.js +27 -12
- package/lib/commonjs/components/GestureButtons.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +1 -3
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +3 -3
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +42 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +83 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js +143 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +25 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js +6 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +80 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +180 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +55 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +47 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +176 -0
- package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/commonjs/handlers/gestures/gestureComposition.js +3 -1
- package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/commonjs/utils.js +36 -0
- package/lib/commonjs/utils.js.map +1 -1
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +56 -64
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +28 -18
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +18 -12
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +7 -2
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerTracker.js +89 -57
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +6 -2
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/Vector.js +2 -1
- package/lib/commonjs/web/tools/Vector.js.map +1 -1
- package/lib/commonjs/web/utils.js +31 -0
- package/lib/commonjs/web/utils.js.map +1 -1
- package/lib/module/components/GestureButtons.js +24 -6
- package/lib/module/components/GestureButtons.js.map +1 -1
- package/lib/module/handlers/createHandler.js +2 -4
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js +26 -0
- package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +65 -0
- package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
- package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js +115 -0
- package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
- package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js +2 -0
- package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +64 -0
- package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +165 -0
- package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +41 -0
- package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +36 -0
- package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js +142 -0
- package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -0
- package/lib/module/handlers/gestures/gestureComposition.js +3 -1
- package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.js +8 -0
- package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
- package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
- package/lib/module/utils.js +34 -0
- package/lib/module/utils.js.map +1 -1
- package/lib/module/web/detectors/RotationGestureDetector.js +6 -8
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +5 -6
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +1 -0
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +56 -64
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +7 -4
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +28 -18
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +1 -0
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +1 -0
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +18 -12
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -6
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +8 -3
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/PointerTracker.js +89 -57
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +7 -3
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/web/tools/Vector.js +2 -1
- package/lib/module/web/tools/Vector.js.map +1 -1
- package/lib/module/web/utils.js +29 -0
- package/lib/module/web/utils.js.map +1 -1
- package/lib/typescript/components/GestureButtons.d.ts +3 -34
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -2
- package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +13 -0
- package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +2 -0
- package/lib/typescript/handlers/gestures/{GestureDetector.d.ts → GestureDetector/index.d.ts} +4 -12
- package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +20 -0
- package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +4 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +2 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +5 -0
- package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +3 -0
- package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +12 -0
- package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -1
- package/lib/typescript/utils.d.ts +10 -0
- package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
- package/lib/typescript/web/interfaces.d.ts +1 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +34 -31
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +5 -5
- package/src/components/GestureButtons.tsx +36 -4
- package/src/handlers/createHandler.tsx +1 -3
- package/src/handlers/gestureHandlerCommon.ts +4 -1
- package/src/handlers/gestures/GestureDetector/Wrap.tsx +35 -0
- package/src/handlers/gestures/GestureDetector/attachHandlers.ts +112 -0
- package/src/handlers/gestures/GestureDetector/dropHandlers.ts +14 -0
- package/src/handlers/gestures/GestureDetector/index.tsx +187 -0
- package/src/handlers/gestures/GestureDetector/needsToReattach.ts +27 -0
- package/src/handlers/gestures/GestureDetector/types.ts +32 -0
- package/src/handlers/gestures/GestureDetector/updateHandlers.ts +94 -0
- package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +206 -0
- package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +69 -0
- package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +54 -0
- package/src/handlers/gestures/GestureDetector/utils.ts +185 -0
- package/src/handlers/gestures/gestureComposition.ts +2 -0
- package/src/handlers/gestures/gestureStateManager.ts +12 -4
- package/src/handlers/gestures/reanimatedWrapper.ts +19 -17
- package/src/utils.ts +39 -0
- package/src/web/detectors/RotationGestureDetector.ts +6 -8
- package/src/web/detectors/ScaleGestureDetector.ts +5 -6
- package/src/web/handlers/FlingGestureHandler.ts +2 -0
- package/src/web/handlers/GestureHandler.ts +53 -62
- package/src/web/handlers/LongPressGestureHandler.ts +2 -0
- package/src/web/handlers/ManualGestureHandler.ts +2 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +8 -4
- package/src/web/handlers/PanGestureHandler.ts +32 -19
- package/src/web/handlers/PinchGestureHandler.ts +2 -0
- package/src/web/handlers/RotationGestureHandler.ts +2 -0
- package/src/web/handlers/TapGestureHandler.ts +20 -12
- package/src/web/interfaces.ts +1 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +1 -7
- package/src/web/tools/PointerEventManager.ts +10 -3
- package/src/web/tools/PointerTracker.ts +81 -74
- package/src/web/tools/TouchEventManager.ts +5 -3
- package/src/web/tools/Vector.ts +2 -4
- package/src/web/utils.ts +34 -0
- package/lib/commonjs/handlers/gestures/GestureDetector.js +0 -704
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +0 -1
- package/lib/module/handlers/gestures/GestureDetector.js +0 -654
- package/lib/module/handlers/gestures/GestureDetector.js.map +0 -1
- package/src/handlers/gestures/GestureDetector.tsx +0 -889
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import { AdaptedEvent } from '../interfaces';
|
|
1
|
+
import { AdaptedEvent, Point } from '../interfaces';
|
|
2
2
|
import VelocityTracker from './VelocityTracker';
|
|
3
3
|
|
|
4
4
|
export interface TrackerElement {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
timeStamp: number;
|
|
9
|
-
|
|
5
|
+
abosoluteCoords: Point;
|
|
6
|
+
relativeCoords: Point;
|
|
7
|
+
timestamp: number;
|
|
10
8
|
velocityX: number;
|
|
11
9
|
velocityY: number;
|
|
12
10
|
}
|
|
@@ -24,7 +22,8 @@ export default class PointerTracker {
|
|
|
24
22
|
|
|
25
23
|
private lastMovedPointerId: number;
|
|
26
24
|
|
|
27
|
-
private
|
|
25
|
+
private cachedAbsoluteAverages: { x: number; y: number } = { x: 0, y: 0 };
|
|
26
|
+
private cachedRelativeAverages: { x: number; y: number } = { x: 0, y: 0 };
|
|
28
27
|
|
|
29
28
|
public constructor() {
|
|
30
29
|
this.lastMovedPointerId = NaN;
|
|
@@ -42,9 +41,9 @@ export default class PointerTracker {
|
|
|
42
41
|
this.lastMovedPointerId = event.pointerId;
|
|
43
42
|
|
|
44
43
|
const newElement: TrackerElement = {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
44
|
+
abosoluteCoords: { x: event.x, y: event.y },
|
|
45
|
+
relativeCoords: { x: event.offsetX, y: event.offsetY },
|
|
46
|
+
timestamp: event.time,
|
|
48
47
|
velocityX: 0,
|
|
49
48
|
velocityY: 0,
|
|
50
49
|
};
|
|
@@ -52,10 +51,8 @@ export default class PointerTracker {
|
|
|
52
51
|
this.trackedPointers.set(event.pointerId, newElement);
|
|
53
52
|
this.mapTouchEventId(event.pointerId);
|
|
54
53
|
|
|
55
|
-
this.
|
|
56
|
-
|
|
57
|
-
y: this.getLastAvgY(),
|
|
58
|
-
};
|
|
54
|
+
this.cachedAbsoluteAverages = this.getAbsoluteCoordsAverage();
|
|
55
|
+
this.cachedRelativeAverages = this.getRelativeCoordsAverage();
|
|
59
56
|
}
|
|
60
57
|
|
|
61
58
|
public removeFromTracker(pointerId: number): void {
|
|
@@ -80,18 +77,13 @@ export default class PointerTracker {
|
|
|
80
77
|
element.velocityX = velocityX;
|
|
81
78
|
element.velocityY = velocityY;
|
|
82
79
|
|
|
83
|
-
element.
|
|
84
|
-
element.
|
|
80
|
+
element.abosoluteCoords = { x: event.x, y: event.y };
|
|
81
|
+
element.relativeCoords = { x: event.offsetX, y: event.offsetY };
|
|
85
82
|
|
|
86
83
|
this.trackedPointers.set(event.pointerId, element);
|
|
87
84
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
this.cachedAverages = {
|
|
92
|
-
x: avgX,
|
|
93
|
-
y: avgY,
|
|
94
|
-
};
|
|
85
|
+
this.cachedAbsoluteAverages = this.getAbsoluteCoordsAverage();
|
|
86
|
+
this.cachedRelativeAverages = this.getRelativeCoordsAverage();
|
|
95
87
|
}
|
|
96
88
|
|
|
97
89
|
//Mapping TouchEvents ID
|
|
@@ -121,52 +113,42 @@ export default class PointerTracker {
|
|
|
121
113
|
return NaN;
|
|
122
114
|
}
|
|
123
115
|
|
|
124
|
-
public
|
|
125
|
-
return
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
116
|
+
public getVelocity(pointerId: number) {
|
|
117
|
+
return {
|
|
118
|
+
x: this.trackedPointers.get(pointerId)?.velocityX as number,
|
|
119
|
+
y: this.trackedPointers.get(pointerId)?.velocityY as number,
|
|
120
|
+
};
|
|
129
121
|
}
|
|
130
122
|
|
|
131
|
-
|
|
132
|
-
* Returns X coordinate of last moved pointer
|
|
133
|
-
*/
|
|
134
|
-
public getLastX(): number;
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
*
|
|
138
|
-
* @param pointerId
|
|
139
|
-
* Returns X coordinate of given pointer
|
|
140
|
-
*/
|
|
141
|
-
// eslint-disable-next-line @typescript-eslint/unified-signatures
|
|
142
|
-
public getLastX(pointerId: number): number;
|
|
143
|
-
|
|
144
|
-
public getLastX(pointerId?: number): number {
|
|
123
|
+
public getLastAbsoluteCoords(pointerId?: number) {
|
|
145
124
|
if (pointerId !== undefined) {
|
|
146
|
-
return
|
|
125
|
+
return {
|
|
126
|
+
x: this.trackedPointers.get(pointerId)?.abosoluteCoords.x as number,
|
|
127
|
+
y: this.trackedPointers.get(pointerId)?.abosoluteCoords.y as number,
|
|
128
|
+
};
|
|
147
129
|
} else {
|
|
148
|
-
return
|
|
130
|
+
return {
|
|
131
|
+
x: this.trackedPointers.get(this.lastMovedPointerId)?.abosoluteCoords
|
|
132
|
+
.x as number,
|
|
133
|
+
y: this.trackedPointers.get(this.lastMovedPointerId)?.abosoluteCoords
|
|
134
|
+
.y as number,
|
|
135
|
+
};
|
|
149
136
|
}
|
|
150
137
|
}
|
|
151
138
|
|
|
152
|
-
|
|
153
|
-
* Returns Y coordinate of last moved pointer
|
|
154
|
-
*/
|
|
155
|
-
public getLastY(): number;
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
*
|
|
159
|
-
* @param pointerId
|
|
160
|
-
* Returns Y coordinate of given pointer
|
|
161
|
-
*/
|
|
162
|
-
// eslint-disable-next-line @typescript-eslint/unified-signatures
|
|
163
|
-
public getLastY(pointerId: number): number;
|
|
164
|
-
|
|
165
|
-
public getLastY(pointerId?: number): number {
|
|
139
|
+
public getLastRelativeCoords(pointerId?: number) {
|
|
166
140
|
if (pointerId !== undefined) {
|
|
167
|
-
return
|
|
141
|
+
return {
|
|
142
|
+
x: this.trackedPointers.get(pointerId)?.relativeCoords.x as number,
|
|
143
|
+
y: this.trackedPointers.get(pointerId)?.relativeCoords.y as number,
|
|
144
|
+
};
|
|
168
145
|
} else {
|
|
169
|
-
return
|
|
146
|
+
return {
|
|
147
|
+
x: this.trackedPointers.get(this.lastMovedPointerId)?.relativeCoords
|
|
148
|
+
.x as number,
|
|
149
|
+
y: this.trackedPointers.get(this.lastMovedPointerId)?.relativeCoords
|
|
150
|
+
.y as number,
|
|
151
|
+
};
|
|
170
152
|
}
|
|
171
153
|
}
|
|
172
154
|
|
|
@@ -174,39 +156,64 @@ export default class PointerTracker {
|
|
|
174
156
|
// This may happen when pointers have already been removed from tracker (i.e. pointerup event).
|
|
175
157
|
// In situation when NaN would be sent as a response, we return cached value.
|
|
176
158
|
// That prevents handlers from crashing
|
|
177
|
-
public
|
|
178
|
-
const
|
|
179
|
-
|
|
159
|
+
public getAbsoluteCoordsAverage() {
|
|
160
|
+
const coordsSum = this.getAbsoluteCoordsSum();
|
|
161
|
+
|
|
162
|
+
const avgX = coordsSum.x / this.trackedPointers.size;
|
|
163
|
+
const avgY = coordsSum.y / this.trackedPointers.size;
|
|
164
|
+
|
|
165
|
+
const averages = {
|
|
166
|
+
x: isNaN(avgX) ? this.cachedAbsoluteAverages.x : avgX,
|
|
167
|
+
y: isNaN(avgY) ? this.cachedAbsoluteAverages.y : avgY,
|
|
168
|
+
};
|
|
169
|
+
|
|
170
|
+
return averages;
|
|
180
171
|
}
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
172
|
+
|
|
173
|
+
public getRelativeCoordsAverage() {
|
|
174
|
+
const coordsSum = this.getRelativeCoordsSum();
|
|
175
|
+
|
|
176
|
+
const avgX = coordsSum.x / this.trackedPointers.size;
|
|
177
|
+
const avgY = coordsSum.y / this.trackedPointers.size;
|
|
178
|
+
|
|
179
|
+
const averages = {
|
|
180
|
+
x: isNaN(avgX) ? this.cachedRelativeAverages.x : avgX,
|
|
181
|
+
y: isNaN(avgY) ? this.cachedRelativeAverages.y : avgY,
|
|
182
|
+
};
|
|
183
|
+
|
|
184
|
+
return averages;
|
|
184
185
|
}
|
|
185
|
-
|
|
186
|
-
|
|
186
|
+
|
|
187
|
+
public getAbsoluteCoordsSum(ignoredPointer?: number) {
|
|
188
|
+
const sum = { x: 0, y: 0 };
|
|
187
189
|
|
|
188
190
|
this.trackedPointers.forEach((value, key) => {
|
|
189
191
|
if (key !== ignoredPointer) {
|
|
190
|
-
|
|
192
|
+
sum.x += value.abosoluteCoords.x;
|
|
193
|
+
sum.y += value.abosoluteCoords.y;
|
|
191
194
|
}
|
|
192
195
|
});
|
|
193
196
|
|
|
194
|
-
return
|
|
197
|
+
return sum;
|
|
195
198
|
}
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
|
|
200
|
+
public getRelativeCoordsSum(ignoredPointer?: number) {
|
|
201
|
+
const sum = { x: 0, y: 0 };
|
|
198
202
|
|
|
199
203
|
this.trackedPointers.forEach((value, key) => {
|
|
200
204
|
if (key !== ignoredPointer) {
|
|
201
|
-
|
|
205
|
+
sum.x += value.relativeCoords.x;
|
|
206
|
+
sum.y += value.relativeCoords.y;
|
|
202
207
|
}
|
|
203
208
|
});
|
|
204
209
|
|
|
205
|
-
return
|
|
210
|
+
return sum;
|
|
206
211
|
}
|
|
212
|
+
|
|
207
213
|
public getTrackedPointersCount(): number {
|
|
208
214
|
return this.trackedPointers.size;
|
|
209
215
|
}
|
|
216
|
+
|
|
210
217
|
public getTrackedPointersID(): number[] {
|
|
211
218
|
const keys: number[] = [];
|
|
212
219
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdaptedEvent, EventTypes, TouchEventType } from '../interfaces';
|
|
2
2
|
import EventManager from './EventManager';
|
|
3
|
-
import { isPointerInBounds } from '../utils';
|
|
3
|
+
import { calculateViewScale, isPointerInBounds } from '../utils';
|
|
4
4
|
import { PointerType } from '../../PointerType';
|
|
5
5
|
|
|
6
6
|
export default class TouchEventManager extends EventManager<HTMLElement> {
|
|
@@ -156,11 +156,13 @@ export default class TouchEventManager extends EventManager<HTMLElement> {
|
|
|
156
156
|
const clientX = event.changedTouches[index].clientX;
|
|
157
157
|
const clientY = event.changedTouches[index].clientY;
|
|
158
158
|
|
|
159
|
+
const { scaleX, scaleY } = calculateViewScale(this.view);
|
|
160
|
+
|
|
159
161
|
return {
|
|
160
162
|
x: clientX,
|
|
161
163
|
y: clientY,
|
|
162
|
-
offsetX: clientX - rect.left,
|
|
163
|
-
offsetY: clientY - rect.top,
|
|
164
|
+
offsetX: (clientX - rect.left) / scaleX,
|
|
165
|
+
offsetY: (clientY - rect.top) / scaleY,
|
|
164
166
|
pointerId: event.changedTouches[index].identifier,
|
|
165
167
|
eventType: eventType,
|
|
166
168
|
pointerType: PointerType.TOUCH,
|
package/src/web/tools/Vector.ts
CHANGED
|
@@ -25,10 +25,8 @@ export default class Vector {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
static fromVelocity(tracker: PointerTracker, pointerId: number) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
tracker.getVelocityY(pointerId)
|
|
31
|
-
);
|
|
28
|
+
const velocity = tracker.getVelocity(pointerId);
|
|
29
|
+
return new Vector(velocity.x, velocity.y);
|
|
32
30
|
}
|
|
33
31
|
|
|
34
32
|
get magnitude() {
|
package/src/web/utils.ts
CHANGED
|
@@ -18,3 +18,37 @@ export const degToRad = (degrees: number) => (degrees * Math.PI) / 180;
|
|
|
18
18
|
|
|
19
19
|
export const coneToDeviation = (degrees: number) =>
|
|
20
20
|
Math.cos(degToRad(degrees / 2));
|
|
21
|
+
|
|
22
|
+
export function calculateViewScale(view: HTMLElement) {
|
|
23
|
+
const styles = getComputedStyle(view);
|
|
24
|
+
|
|
25
|
+
const resultScales = {
|
|
26
|
+
scaleX: 1,
|
|
27
|
+
scaleY: 1,
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
const scales = styles.scale.split(' ');
|
|
31
|
+
|
|
32
|
+
if (scales[0] !== 'none') {
|
|
33
|
+
resultScales.scaleX = parseFloat(scales[0]);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
if (scales[1]) {
|
|
37
|
+
resultScales.scaleY = parseFloat(scales[1]);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const matrixElements = new RegExp(/matrix\((.+)\)/).exec(
|
|
41
|
+
styles.transform
|
|
42
|
+
)?.[1];
|
|
43
|
+
|
|
44
|
+
if (!matrixElements) {
|
|
45
|
+
return resultScales;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const matrixElementsArray = matrixElements.split(', ');
|
|
49
|
+
|
|
50
|
+
resultScales.scaleX *= parseFloat(matrixElementsArray[0]);
|
|
51
|
+
resultScales.scaleY *= parseFloat(matrixElementsArray[3]);
|
|
52
|
+
|
|
53
|
+
return resultScales;
|
|
54
|
+
}
|