react-native-gesture-handler 2.6.0 → 2.6.2

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