react-native-gesture-handler 2.16.2 → 2.17.0
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +9 -3
- package/android/build.gradle +105 -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
|
+
}
|