react-native-gesture-handler 2.6.0 → 2.6.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 (177) 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 +20 -9
  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.web.js +1 -1
  14. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  15. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  16. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  17. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
  18. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  19. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  20. package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
  21. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  22. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
  23. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
  24. package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
  25. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  26. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
  27. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  28. package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
  29. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  30. package/lib/commonjs/web/handlers/GestureHandler.js +282 -79
  31. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  32. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
  33. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  34. package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
  35. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
  36. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
  37. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  38. package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
  39. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  40. package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
  41. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  42. package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
  43. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  44. package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
  45. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  46. package/lib/commonjs/web/interfaces.js +22 -1
  47. package/lib/commonjs/web/interfaces.js.map +1 -1
  48. package/lib/commonjs/web/tools/EventManager.js +40 -96
  49. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  50. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
  51. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  52. package/lib/commonjs/web/tools/InteractionManager.js +24 -10
  53. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  54. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  55. package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
  56. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
  57. package/lib/commonjs/web/tools/PointerTracker.js +97 -7
  58. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  59. package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
  60. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
  61. package/lib/commonjs/web/utils.js +15 -0
  62. package/lib/commonjs/web/utils.js.map +1 -0
  63. package/lib/module/EnableExperimentalWebImplementation.js +5 -0
  64. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
  65. package/lib/module/RNGestureHandlerModule.js +1 -1
  66. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  67. package/lib/module/RNGestureHandlerModule.macos.js +19 -10
  68. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  69. package/lib/module/RNGestureHandlerModule.web.js +22 -11
  70. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  71. package/lib/module/components/GestureComponents.web.js +1 -1
  72. package/lib/module/components/GestureComponents.web.js.map +1 -1
  73. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  74. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  75. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
  76. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  77. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  78. package/lib/module/handlers/gestures/eventReceiver.js +14 -20
  79. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  80. package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
  81. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
  82. package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
  83. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  84. package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
  85. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  86. package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
  87. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  88. package/lib/module/web/handlers/GestureHandler.js +276 -79
  89. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  90. package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
  91. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  92. package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
  93. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
  94. package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
  95. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  96. package/lib/module/web/handlers/PanGestureHandler.js +57 -41
  97. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  98. package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
  99. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  100. package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
  101. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  102. package/lib/module/web/handlers/TapGestureHandler.js +52 -50
  103. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  104. package/lib/module/web/interfaces.js +19 -0
  105. package/lib/module/web/interfaces.js.map +1 -1
  106. package/lib/module/web/tools/EventManager.js +39 -95
  107. package/lib/module/web/tools/EventManager.js.map +1 -1
  108. package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
  109. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  110. package/lib/module/web/tools/InteractionManager.js +24 -10
  111. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  112. package/lib/module/web/tools/NodeManager.js.map +1 -1
  113. package/lib/module/web/tools/PointerEventManager.js +116 -0
  114. package/lib/module/web/tools/PointerEventManager.js.map +1 -0
  115. package/lib/module/web/tools/PointerTracker.js +97 -7
  116. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  117. package/lib/module/web/tools/TouchEventManager.js +124 -0
  118. package/lib/module/web/tools/TouchEventManager.js.map +1 -0
  119. package/lib/module/web/utils.js +8 -0
  120. package/lib/module/web/utils.js.map +1 -0
  121. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +5 -2
  122. package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
  123. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  124. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
  125. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
  126. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
  127. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
  128. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
  129. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
  130. package/lib/typescript/web/handlers/GestureHandler.d.ts +41 -32
  131. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
  132. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
  133. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
  134. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
  135. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
  136. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
  137. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
  138. package/lib/typescript/web/interfaces.d.ts +50 -10
  139. package/lib/typescript/web/tools/EventManager.d.ts +28 -26
  140. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
  141. package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
  142. package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
  143. package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
  144. package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
  145. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
  146. package/lib/typescript/web/utils.d.ts +4 -0
  147. package/package.json +2 -2
  148. package/src/EnableExperimentalWebImplementation.ts +9 -0
  149. package/src/RNGestureHandlerModule.macos.ts +25 -10
  150. package/src/RNGestureHandlerModule.ts +4 -1
  151. package/src/RNGestureHandlerModule.web.ts +20 -7
  152. package/src/components/GestureComponents.web.tsx +1 -1
  153. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
  154. package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
  155. package/src/handlers/gestures/GestureDetector.tsx +0 -1
  156. package/src/handlers/gestures/eventReceiver.ts +23 -24
  157. package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
  158. package/src/web/detectors/RotationGestureDetector.ts +20 -52
  159. package/src/web/detectors/ScaleGestureDetector.ts +9 -45
  160. package/src/web/handlers/FlingGestureHandler.ts +45 -22
  161. package/src/web/handlers/GestureHandler.ts +306 -97
  162. package/src/web/handlers/LongPressGestureHandler.ts +30 -24
  163. package/src/web/handlers/ManualGestureHandler.ts +39 -0
  164. package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
  165. package/src/web/handlers/PanGestureHandler.ts +68 -53
  166. package/src/web/handlers/PinchGestureHandler.ts +47 -44
  167. package/src/web/handlers/RotationGestureHandler.ts +52 -51
  168. package/src/web/handlers/TapGestureHandler.ts +74 -56
  169. package/src/web/interfaces.ts +57 -10
  170. package/src/web/tools/EventManager.ts +58 -148
  171. package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
  172. package/src/web/tools/InteractionManager.ts +25 -9
  173. package/src/web/tools/NodeManager.ts +6 -6
  174. package/src/web/tools/PointerEventManager.ts +134 -0
  175. package/src/web/tools/PointerTracker.ts +120 -10
  176. package/src/web/tools/TouchEventManager.ts +167 -0
  177. 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
  }