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.
Files changed (212) hide show
  1. package/README.md +9 -3
  2. package/android/build.gradle +105 -0
  3. package/android/gradle.properties +7 -0
  4. package/android/paper/src/main/java/com/facebook/react/viewmanagers/RNGestureHandlerButtonManagerDelegate.java +7 -7
  5. package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +16 -8
  6. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +9 -5
  7. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerInteractionManager.kt +4 -0
  8. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +1 -1
  9. package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerTouchEvent.kt +1 -0
  10. package/apple/RNGestureHandlerButtonComponentView.mm +10 -0
  11. package/apple/RNGestureHandlerModule.mm +2 -3
  12. package/lib/commonjs/components/GestureButtons.js +27 -12
  13. package/lib/commonjs/components/GestureButtons.js.map +1 -1
  14. package/lib/commonjs/handlers/createHandler.js +1 -3
  15. package/lib/commonjs/handlers/createHandler.js.map +1 -1
  16. package/lib/commonjs/handlers/gestureHandlerCommon.js +3 -3
  17. package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
  18. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js +42 -0
  19. package/lib/commonjs/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
  20. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js +83 -0
  21. package/lib/commonjs/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
  22. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js +25 -0
  23. package/lib/commonjs/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
  24. package/lib/commonjs/handlers/gestures/GestureDetector/index.js +143 -0
  25. package/lib/commonjs/handlers/gestures/GestureDetector/index.js.map +1 -0
  26. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js +25 -0
  27. package/lib/commonjs/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
  28. package/lib/commonjs/handlers/gestures/GestureDetector/types.js +6 -0
  29. package/lib/commonjs/handlers/gestures/GestureDetector/types.js.map +1 -0
  30. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js +80 -0
  31. package/lib/commonjs/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
  32. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js +180 -0
  33. package/lib/commonjs/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
  34. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js +55 -0
  35. package/lib/commonjs/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
  36. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js +47 -0
  37. package/lib/commonjs/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
  38. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js +176 -0
  39. package/lib/commonjs/handlers/gestures/GestureDetector/utils.js.map +1 -0
  40. package/lib/commonjs/handlers/gestures/gestureComposition.js +3 -1
  41. package/lib/commonjs/handlers/gestures/gestureComposition.js.map +1 -1
  42. package/lib/commonjs/handlers/gestures/gestureStateManager.js +8 -0
  43. package/lib/commonjs/handlers/gestures/gestureStateManager.js.map +1 -1
  44. package/lib/commonjs/handlers/gestures/reanimatedWrapper.js.map +1 -1
  45. package/lib/commonjs/utils.js +36 -0
  46. package/lib/commonjs/utils.js.map +1 -1
  47. package/lib/commonjs/web/detectors/RotationGestureDetector.js +6 -8
  48. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  49. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +5 -6
  50. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  51. package/lib/commonjs/web/handlers/FlingGestureHandler.js +1 -0
  52. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/handlers/GestureHandler.js +56 -64
  54. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  55. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +1 -0
  56. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  57. package/lib/commonjs/web/handlers/ManualGestureHandler.js +1 -0
  58. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -1
  59. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +7 -4
  60. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  61. package/lib/commonjs/web/handlers/PanGestureHandler.js +28 -18
  62. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  63. package/lib/commonjs/web/handlers/PinchGestureHandler.js +1 -0
  64. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  65. package/lib/commonjs/web/handlers/RotationGestureHandler.js +1 -0
  66. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  67. package/lib/commonjs/web/handlers/TapGestureHandler.js +18 -12
  68. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  69. package/lib/commonjs/web/interfaces.js.map +1 -1
  70. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +1 -6
  71. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  72. package/lib/commonjs/web/tools/PointerEventManager.js +7 -2
  73. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
  74. package/lib/commonjs/web/tools/PointerTracker.js +89 -57
  75. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  76. package/lib/commonjs/web/tools/TouchEventManager.js +6 -2
  77. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
  78. package/lib/commonjs/web/tools/Vector.js +2 -1
  79. package/lib/commonjs/web/tools/Vector.js.map +1 -1
  80. package/lib/commonjs/web/utils.js +31 -0
  81. package/lib/commonjs/web/utils.js.map +1 -1
  82. package/lib/module/components/GestureButtons.js +24 -6
  83. package/lib/module/components/GestureButtons.js.map +1 -1
  84. package/lib/module/handlers/createHandler.js +2 -4
  85. package/lib/module/handlers/createHandler.js.map +1 -1
  86. package/lib/module/handlers/gestureHandlerCommon.js +1 -1
  87. package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
  88. package/lib/module/handlers/gestures/GestureDetector/Wrap.js +26 -0
  89. package/lib/module/handlers/gestures/GestureDetector/Wrap.js.map +1 -0
  90. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js +65 -0
  91. package/lib/module/handlers/gestures/GestureDetector/attachHandlers.js.map +1 -0
  92. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js +12 -0
  93. package/lib/module/handlers/gestures/GestureDetector/dropHandlers.js.map +1 -0
  94. package/lib/module/handlers/gestures/GestureDetector/index.js +115 -0
  95. package/lib/module/handlers/gestures/GestureDetector/index.js.map +1 -0
  96. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js +18 -0
  97. package/lib/module/handlers/gestures/GestureDetector/needsToReattach.js.map +1 -0
  98. package/lib/module/handlers/gestures/GestureDetector/types.js +2 -0
  99. package/lib/module/handlers/gestures/GestureDetector/types.js.map +1 -0
  100. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js +64 -0
  101. package/lib/module/handlers/gestures/GestureDetector/updateHandlers.js.map +1 -0
  102. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js +165 -0
  103. package/lib/module/handlers/gestures/GestureDetector/useAnimatedGesture.js.map +1 -0
  104. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js +41 -0
  105. package/lib/module/handlers/gestures/GestureDetector/useDetectorUpdater.js.map +1 -0
  106. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js +36 -0
  107. package/lib/module/handlers/gestures/GestureDetector/useViewRefHandler.js.map +1 -0
  108. package/lib/module/handlers/gestures/GestureDetector/utils.js +142 -0
  109. package/lib/module/handlers/gestures/GestureDetector/utils.js.map +1 -0
  110. package/lib/module/handlers/gestures/gestureComposition.js +3 -1
  111. package/lib/module/handlers/gestures/gestureComposition.js.map +1 -1
  112. package/lib/module/handlers/gestures/gestureStateManager.js +8 -0
  113. package/lib/module/handlers/gestures/gestureStateManager.js.map +1 -1
  114. package/lib/module/handlers/gestures/reanimatedWrapper.js.map +1 -1
  115. package/lib/module/utils.js +34 -0
  116. package/lib/module/utils.js.map +1 -1
  117. package/lib/module/web/detectors/RotationGestureDetector.js +6 -8
  118. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  119. package/lib/module/web/detectors/ScaleGestureDetector.js +5 -6
  120. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  121. package/lib/module/web/handlers/FlingGestureHandler.js +1 -0
  122. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  123. package/lib/module/web/handlers/GestureHandler.js +56 -64
  124. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  125. package/lib/module/web/handlers/LongPressGestureHandler.js +1 -0
  126. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  127. package/lib/module/web/handlers/ManualGestureHandler.js +1 -0
  128. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -1
  129. package/lib/module/web/handlers/NativeViewGestureHandler.js +7 -4
  130. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  131. package/lib/module/web/handlers/PanGestureHandler.js +28 -18
  132. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  133. package/lib/module/web/handlers/PinchGestureHandler.js +1 -0
  134. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  135. package/lib/module/web/handlers/RotationGestureHandler.js +1 -0
  136. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  137. package/lib/module/web/handlers/TapGestureHandler.js +18 -12
  138. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  139. package/lib/module/web/interfaces.js.map +1 -1
  140. package/lib/module/web/tools/GestureHandlerOrchestrator.js +1 -6
  141. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  142. package/lib/module/web/tools/PointerEventManager.js +8 -3
  143. package/lib/module/web/tools/PointerEventManager.js.map +1 -1
  144. package/lib/module/web/tools/PointerTracker.js +89 -57
  145. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  146. package/lib/module/web/tools/TouchEventManager.js +7 -3
  147. package/lib/module/web/tools/TouchEventManager.js.map +1 -1
  148. package/lib/module/web/tools/Vector.js +2 -1
  149. package/lib/module/web/tools/Vector.js.map +1 -1
  150. package/lib/module/web/utils.js +29 -0
  151. package/lib/module/web/utils.js.map +1 -1
  152. package/lib/typescript/components/GestureButtons.d.ts +3 -34
  153. package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -2
  154. package/lib/typescript/handlers/gestures/GestureDetector/Wrap.d.ts +13 -0
  155. package/lib/typescript/handlers/gestures/GestureDetector/attachHandlers.d.ts +13 -0
  156. package/lib/typescript/handlers/gestures/GestureDetector/dropHandlers.d.ts +2 -0
  157. package/lib/typescript/handlers/gestures/{GestureDetector.d.ts → GestureDetector/index.d.ts} +4 -12
  158. package/lib/typescript/handlers/gestures/GestureDetector/needsToReattach.d.ts +3 -0
  159. package/lib/typescript/handlers/gestures/GestureDetector/types.d.ts +20 -0
  160. package/lib/typescript/handlers/gestures/GestureDetector/updateHandlers.d.ts +4 -0
  161. package/lib/typescript/handlers/gestures/GestureDetector/useAnimatedGesture.d.ts +2 -0
  162. package/lib/typescript/handlers/gestures/GestureDetector/useDetectorUpdater.d.ts +5 -0
  163. package/lib/typescript/handlers/gestures/GestureDetector/useViewRefHandler.d.ts +3 -0
  164. package/lib/typescript/handlers/gestures/GestureDetector/utils.d.ts +12 -0
  165. package/lib/typescript/handlers/gestures/reanimatedWrapper.d.ts +1 -1
  166. package/lib/typescript/utils.d.ts +10 -0
  167. package/lib/typescript/web/handlers/GestureHandler.d.ts +1 -0
  168. package/lib/typescript/web/interfaces.d.ts +1 -0
  169. package/lib/typescript/web/tools/PointerTracker.d.ts +34 -31
  170. package/lib/typescript/web/utils.d.ts +4 -0
  171. package/package.json +5 -5
  172. package/src/components/GestureButtons.tsx +36 -4
  173. package/src/handlers/createHandler.tsx +1 -3
  174. package/src/handlers/gestureHandlerCommon.ts +4 -1
  175. package/src/handlers/gestures/GestureDetector/Wrap.tsx +35 -0
  176. package/src/handlers/gestures/GestureDetector/attachHandlers.ts +112 -0
  177. package/src/handlers/gestures/GestureDetector/dropHandlers.ts +14 -0
  178. package/src/handlers/gestures/GestureDetector/index.tsx +187 -0
  179. package/src/handlers/gestures/GestureDetector/needsToReattach.ts +27 -0
  180. package/src/handlers/gestures/GestureDetector/types.ts +32 -0
  181. package/src/handlers/gestures/GestureDetector/updateHandlers.ts +94 -0
  182. package/src/handlers/gestures/GestureDetector/useAnimatedGesture.ts +206 -0
  183. package/src/handlers/gestures/GestureDetector/useDetectorUpdater.ts +69 -0
  184. package/src/handlers/gestures/GestureDetector/useViewRefHandler.ts +54 -0
  185. package/src/handlers/gestures/GestureDetector/utils.ts +185 -0
  186. package/src/handlers/gestures/gestureComposition.ts +2 -0
  187. package/src/handlers/gestures/gestureStateManager.ts +12 -4
  188. package/src/handlers/gestures/reanimatedWrapper.ts +19 -17
  189. package/src/utils.ts +39 -0
  190. package/src/web/detectors/RotationGestureDetector.ts +6 -8
  191. package/src/web/detectors/ScaleGestureDetector.ts +5 -6
  192. package/src/web/handlers/FlingGestureHandler.ts +2 -0
  193. package/src/web/handlers/GestureHandler.ts +53 -62
  194. package/src/web/handlers/LongPressGestureHandler.ts +2 -0
  195. package/src/web/handlers/ManualGestureHandler.ts +2 -0
  196. package/src/web/handlers/NativeViewGestureHandler.ts +8 -4
  197. package/src/web/handlers/PanGestureHandler.ts +32 -19
  198. package/src/web/handlers/PinchGestureHandler.ts +2 -0
  199. package/src/web/handlers/RotationGestureHandler.ts +2 -0
  200. package/src/web/handlers/TapGestureHandler.ts +20 -12
  201. package/src/web/interfaces.ts +1 -0
  202. package/src/web/tools/GestureHandlerOrchestrator.ts +1 -7
  203. package/src/web/tools/PointerEventManager.ts +10 -3
  204. package/src/web/tools/PointerTracker.ts +81 -74
  205. package/src/web/tools/TouchEventManager.ts +5 -3
  206. package/src/web/tools/Vector.ts +2 -4
  207. package/src/web/utils.ts +34 -0
  208. package/lib/commonjs/handlers/gestures/GestureDetector.js +0 -704
  209. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +0 -1
  210. package/lib/module/handlers/gestures/GestureDetector.js +0 -654
  211. package/lib/module/handlers/gestures/GestureDetector.js.map +0 -1
  212. 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
- lastX: number;
6
- lastY: number;
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 cachedAverages: { x: number; y: number } = { x: 0, y: 0 };
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
- lastX: event.x,
46
- lastY: event.y,
47
- timeStamp: event.time,
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.cachedAverages = {
56
- x: this.getLastAvgX(),
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.lastX = event.x;
84
- element.lastY = event.y;
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
- const avgX: number = this.getLastAvgX();
89
- const avgY: number = this.getLastAvgY();
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 getVelocityX(pointerId: number): number {
125
- return this.trackedPointers.get(pointerId)?.velocityX as number;
126
- }
127
- public getVelocityY(pointerId: number): number {
128
- return this.trackedPointers.get(pointerId)?.velocityY as number;
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 this.trackedPointers.get(pointerId)?.lastX as number;
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 this.trackedPointers.get(this.lastMovedPointerId)?.lastX as number;
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 this.trackedPointers.get(pointerId)?.lastY as number;
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 this.trackedPointers.get(this.lastMovedPointerId)?.lastY as number;
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 getLastAvgX(): number {
178
- const avgX: number = this.getSumX() / this.trackedPointers.size;
179
- return isNaN(avgX) ? this.cachedAverages.x : avgX;
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
- public getLastAvgY(): number {
182
- const avgY: number = this.getSumY() / this.trackedPointers.size;
183
- return isNaN(avgY) ? this.cachedAverages.y : avgY;
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
- public getSumX(ignoredPointer?: number): number {
186
- let sumX = 0;
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
- sumX += value.lastX;
192
+ sum.x += value.abosoluteCoords.x;
193
+ sum.y += value.abosoluteCoords.y;
191
194
  }
192
195
  });
193
196
 
194
- return sumX;
197
+ return sum;
195
198
  }
196
- public getSumY(ignoredPointer?: number): number {
197
- let sumY = 0;
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
- sumY += value.lastY;
205
+ sum.x += value.relativeCoords.x;
206
+ sum.y += value.relativeCoords.y;
202
207
  }
203
208
  });
204
209
 
205
- return sumY;
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,
@@ -25,10 +25,8 @@ export default class Vector {
25
25
  }
26
26
 
27
27
  static fromVelocity(tracker: PointerTracker, pointerId: number) {
28
- return new Vector(
29
- tracker.getVelocityX(pointerId),
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
+ }