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.
Files changed (212) hide show
  1. package/README.md +9 -3
  2. package/android/build.gradle +103 -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
+ }