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
@@ -7,8 +7,6 @@ exports.default = void 0;
7
7
 
8
8
  var _State = require("../../State");
9
9
 
10
- var _interfaces = require("../interfaces");
11
-
12
10
  var _GestureHandler = _interopRequireDefault(require("./GestureHandler"));
13
11
 
14
12
  var _RotationGestureDetector = _interopRequireDefault(require("../detectors/RotationGestureDetector"));
@@ -33,7 +31,7 @@ class RotationGestureHandler extends _GestureHandler.default {
33
31
 
34
32
  _defineProperty(this, "rotationGestureListener", {
35
33
  onRotationBegin: _detector => true,
36
- onRotation: (detector, event) => {
34
+ onRotation: detector => {
37
35
  const previousRotation = this.rotation;
38
36
  this.rotation += detector.getRotation();
39
37
  const delta = detector.getTimeDelta();
@@ -43,13 +41,13 @@ class RotationGestureHandler extends _GestureHandler.default {
43
41
  }
44
42
 
45
43
  if (Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD && this.currentState === _State.State.BEGAN) {
46
- this.activate(event);
44
+ this.activate();
47
45
  }
48
46
 
49
47
  return true;
50
48
  },
51
- onRotationEnd: (_detector, event) => {
52
- this.end(event);
49
+ onRotationEnd: _detector => {
50
+ this.end();
53
51
  }
54
52
  });
55
53
 
@@ -72,7 +70,7 @@ class RotationGestureHandler extends _GestureHandler.default {
72
70
  this.enabled = enabled;
73
71
  }
74
72
 
75
- transformNativeEvent(_event) {
73
+ transformNativeEvent() {
76
74
  return {
77
75
  rotation: this.rotation ? this.rotation : 0,
78
76
  anchorX: this.getAnchorX(),
@@ -92,19 +90,19 @@ class RotationGestureHandler extends _GestureHandler.default {
92
90
  }
93
91
 
94
92
  onPointerDown(event) {
95
- super.onPointerDown(event);
96
93
  this.tracker.addToTracker(event);
94
+ super.onPointerDown(event);
95
+ }
97
96
 
98
- if (this.tracker.getTrackedPointersCount() <= 1) {
99
- return;
100
- }
101
-
102
- this.tryBegin(event);
97
+ onPointerAdd(event) {
98
+ this.tracker.addToTracker(event);
99
+ super.onPointerAdd(event);
100
+ this.tryBegin();
103
101
  this.rotationGestureDetector.onTouchEvent(event, this.tracker);
104
102
  }
105
103
 
106
104
  onPointerMove(event) {
107
- if (this.tracker.getTrackedPointersCount() < 2 || !this.rotationGestureDetector) {
105
+ if (this.tracker.getTrackedPointersCount() < 2) {
108
106
  return;
109
107
  }
110
108
 
@@ -121,55 +119,62 @@ class RotationGestureHandler extends _GestureHandler.default {
121
119
  super.onPointerMove(event);
122
120
  }
123
121
 
124
- onPointerUp(event) {
125
- if (!this.rotationGestureDetector) {
126
- this.tracker.resetTracker();
122
+ onPointerOutOfBounds(event) {
123
+ if (this.tracker.getTrackedPointersCount() < 2) {
127
124
  return;
128
125
  }
129
126
 
130
- if (this.tracker.getTrackedPointersCount() > 1) {
131
- this.rotationGestureDetector.onTouchEvent(event, this.tracker);
132
- this.tracker.removeFromTracker(event.pointerId);
133
- } else {
134
- this.tracker.removeFromTracker(event.pointerId);
135
- this.rotationGestureDetector.onTouchEvent(event, this.tracker);
127
+ if (this.getAnchorX()) {
128
+ this.cachedAnchorX = this.getAnchorX();
129
+ }
136
130
 
137
- if (this.currentState !== _State.State.ACTIVE) {
138
- return;
139
- }
131
+ if (this.getAnchorY()) {
132
+ this.cachedAnchorY = this.getAnchorY();
140
133
  }
141
134
 
142
- if (event.eventType !== _interfaces.EventTypes.UP) {
135
+ this.tracker.track(event);
136
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
137
+ super.onPointerOutOfBounds(event);
138
+ }
139
+
140
+ onPointerUp(event) {
141
+ super.onPointerUp(event);
142
+ this.tracker.removeFromTracker(event.pointerId);
143
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
144
+
145
+ if (this.currentState !== _State.State.ACTIVE) {
143
146
  return;
144
147
  }
145
148
 
146
149
  if (this.currentState === _State.State.ACTIVE) {
147
- this.end(event);
150
+ this.end();
148
151
  } else {
149
- this.fail(event);
152
+ this.fail();
150
153
  }
151
154
  }
152
155
 
156
+ onPointerRemove(event) {
157
+ super.onPointerRemove(event);
158
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
159
+ this.tracker.removeFromTracker(event.pointerId);
160
+ }
161
+
153
162
  onPointerCancel(event) {
154
- this.end(event);
163
+ super.onPointerCancel(event);
164
+ this.end();
155
165
  this.reset();
156
166
  }
157
167
 
158
- tryBegin(event) {
168
+ tryBegin() {
159
169
  if (this.currentState !== _State.State.UNDETERMINED) {
160
170
  return;
161
171
  }
162
172
 
163
- this.resetProgress();
164
- this.begin(event);
173
+ this.begin();
165
174
  }
166
175
 
167
- activate(event, _force) {
168
- if (this.currentState !== _State.State.ACTIVE) {
169
- this.resetProgress();
170
- }
171
-
172
- super.activate(event);
176
+ activate(_force) {
177
+ super.activate();
173
178
  }
174
179
 
175
180
  onReset() {
@@ -179,6 +184,7 @@ class RotationGestureHandler extends _GestureHandler.default {
179
184
 
180
185
  this.rotation = 0;
181
186
  this.velocity = 0;
187
+ this.rotationGestureDetector.reset();
182
188
  }
183
189
 
184
190
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["RotationGestureHandler.ts"],"names":["ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","GestureHandler","onRotationBegin","_detector","onRotation","detector","event","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","State","BEGAN","activate","onRotationEnd","end","RotationGestureDetector","rotationGestureListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","_event","anchorX","getAnchorX","anchorY","getAnchorY","rotationGestureDetector","cachedAnchorX","cachedAnchorY","onPointerDown","tracker","addToTracker","getTrackedPointersCount","tryBegin","onTouchEvent","onPointerMove","track","onPointerUp","resetTracker","removeFromTracker","pointerId","ACTIVE","eventType","EventTypes","UP","fail","onPointerCancel","reset","UNDETERMINED","resetProgress","begin","_force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedPointerEvent, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport RotationGestureDetector, {\n RotationGestureListener,\n} from '../detectors/RotationGestureDetector';\n\nconst ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;\n\nexport default class RotationGestureHandler extends GestureHandler {\n private rotation = 0;\n private velocity = 0;\n\n private cachedAnchorX = 0;\n private cachedAnchorY = 0;\n\n private rotationGestureListener: RotationGestureListener = {\n onRotationBegin: (_detector: RotationGestureDetector): boolean => true,\n onRotation: (\n detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ): boolean => {\n const previousRotation: number = this.rotation;\n this.rotation += detector.getRotation();\n\n const delta = detector.getTimeDelta();\n\n if (delta > 0) {\n this.velocity = (this.rotation - previousRotation) / delta;\n }\n\n if (\n Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD &&\n this.currentState === State.BEGAN\n ) {\n this.activate(event);\n }\n\n return true;\n },\n onRotationEnd: (\n _detector: RotationGestureDetector,\n event: AdaptedPointerEvent\n ): void => {\n this.end(event);\n },\n };\n\n private rotationGestureDetector: RotationGestureDetector = new RotationGestureDetector(\n this.rotationGestureListener\n );\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n }\n\n protected transformNativeEvent(_event: AdaptedPointerEvent) {\n return {\n rotation: this.rotation ? this.rotation : 0,\n anchorX: this.getAnchorX(),\n anchorY: this.getAnchorY(),\n velocity: this.velocity ? this.velocity : 0,\n };\n }\n\n public getAnchorX(): number {\n const anchorX = this.rotationGestureDetector.getAnchorX();\n\n return anchorX ? anchorX : this.cachedAnchorX;\n }\n\n public getAnchorY(): number {\n const anchorY = this.rotationGestureDetector.getAnchorY();\n\n return anchorY ? anchorY : this.cachedAnchorY;\n }\n\n protected onPointerDown(event: AdaptedPointerEvent): void {\n super.onPointerDown(event);\n\n this.tracker.addToTracker(event);\n\n if (this.tracker.getTrackedPointersCount() <= 1) {\n return;\n }\n\n this.tryBegin(event);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerMove(event: AdaptedPointerEvent): void {\n if (\n this.tracker.getTrackedPointersCount() < 2 ||\n !this.rotationGestureDetector\n ) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedPointerEvent): void {\n if (!this.rotationGestureDetector) {\n this.tracker.resetTracker();\n return;\n }\n\n if (this.tracker.getTrackedPointersCount() > 1) {\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n } else {\n this.tracker.removeFromTracker(event.pointerId);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n }\n\n if (event.eventType !== EventTypes.UP) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.end(event);\n } else {\n this.fail(event);\n }\n }\n\n protected onPointerCancel(event: AdaptedPointerEvent): void {\n this.end(event);\n this.reset();\n }\n\n protected tryBegin(event: AdaptedPointerEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.resetProgress();\n\n this.begin(event);\n }\n\n protected activate(event: AdaptedPointerEvent, _force?: boolean): void {\n if (this.currentState !== State.ACTIVE) {\n this.resetProgress();\n }\n\n super.activate(event);\n }\n\n protected onReset(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.rotation = 0;\n this.velocity = 0;\n }\n}\n"]}
1
+ {"version":3,"sources":["RotationGestureHandler.ts"],"names":["ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","GestureHandler","onRotationBegin","_detector","onRotation","detector","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","State","BEGAN","activate","onRotationEnd","end","RotationGestureDetector","rotationGestureListener","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","transformNativeEvent","anchorX","getAnchorX","anchorY","getAnchorY","rotationGestureDetector","cachedAnchorX","cachedAnchorY","onPointerDown","event","tracker","addToTracker","onPointerAdd","tryBegin","onTouchEvent","onPointerMove","getTrackedPointersCount","track","onPointerOutOfBounds","onPointerUp","removeFromTracker","pointerId","ACTIVE","fail","onPointerRemove","onPointerCancel","reset","UNDETERMINED","begin","_force","onReset"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\nimport RotationGestureDetector, {\n RotationGestureListener,\n} from '../detectors/RotationGestureDetector';\n\nconst ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;\n\nexport default class RotationGestureHandler extends GestureHandler {\n private rotation = 0;\n private velocity = 0;\n\n private cachedAnchorX = 0;\n private cachedAnchorY = 0;\n\n private rotationGestureListener: RotationGestureListener = {\n onRotationBegin: (_detector: RotationGestureDetector): boolean => true,\n onRotation: (detector: RotationGestureDetector): boolean => {\n const previousRotation: number = this.rotation;\n this.rotation += detector.getRotation();\n\n const delta = detector.getTimeDelta();\n\n if (delta > 0) {\n this.velocity = (this.rotation - previousRotation) / delta;\n }\n\n if (\n Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD &&\n this.currentState === State.BEGAN\n ) {\n this.activate();\n }\n\n return true;\n },\n onRotationEnd: (_detector: RotationGestureDetector): void => {\n this.end();\n },\n };\n\n private rotationGestureDetector: RotationGestureDetector = new RotationGestureDetector(\n this.rotationGestureListener\n );\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n\n this.setShouldCancelWhenOutside(false);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n }\n\n protected transformNativeEvent() {\n return {\n rotation: this.rotation ? this.rotation : 0,\n anchorX: this.getAnchorX(),\n anchorY: this.getAnchorY(),\n velocity: this.velocity ? this.velocity : 0,\n };\n }\n\n public getAnchorX(): number {\n const anchorX = this.rotationGestureDetector.getAnchorX();\n\n return anchorX ? anchorX : this.cachedAnchorX;\n }\n\n public getAnchorY(): number {\n const anchorY = this.rotationGestureDetector.getAnchorY();\n\n return anchorY ? anchorY : this.cachedAnchorY;\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n\n this.tryBegin();\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n if (this.tracker.getTrackedPointersCount() < 2) {\n return;\n }\n\n if (this.getAnchorX()) {\n this.cachedAnchorX = this.getAnchorX();\n }\n if (this.getAnchorY()) {\n this.cachedAnchorY = this.getAnchorY();\n }\n\n this.tracker.track(event);\n\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.tracker.removeFromTracker(event.pointerId);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n\n if (this.currentState !== State.ACTIVE) {\n return;\n }\n\n if (this.currentState === State.ACTIVE) {\n this.end();\n } else {\n this.fail();\n }\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.rotationGestureDetector.onTouchEvent(event, this.tracker);\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.end();\n\n this.reset();\n }\n\n protected tryBegin(): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.begin();\n }\n\n public activate(_force?: boolean): void {\n super.activate();\n }\n\n protected onReset(): void {\n if (this.currentState === State.ACTIVE) {\n return;\n }\n\n this.rotation = 0;\n this.velocity = 0;\n this.rotationGestureDetector.reset();\n }\n}\n"]}
@@ -16,7 +16,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
16
16
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
17
17
 
18
18
  const DEFAULT_MAX_DURATION_MS = 500;
19
- const DEFAULT_MAX_DELAY_MS = 200;
19
+ const DEFAULT_MAX_DELAY_MS = 500;
20
20
  const DEFAULT_NUMBER_OF_TAPS = 1;
21
21
  const DEFAULT_MIN_NUMBER_OF_POINTERS = 1;
22
22
 
@@ -94,8 +94,8 @@ class TapGestureHandler extends _GestureHandler.default {
94
94
  this.maxDeltaY = this.config.maxDeltaY;
95
95
  }
96
96
 
97
- if (this.config.maxDistSq !== undefined) {
98
- this.maxDistSq = this.config.maxDistSq;
97
+ if (this.config.maxDist !== undefined) {
98
+ this.maxDistSq = this.config.maxDist * this.config.maxDist;
99
99
  }
100
100
 
101
101
  if (this.config.minPointers !== undefined) {
@@ -114,12 +114,13 @@ class TapGestureHandler extends _GestureHandler.default {
114
114
  this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;
115
115
  }
116
116
 
117
- transformNativeEvent(event) {
117
+ transformNativeEvent() {
118
+ const rect = this.view.getBoundingClientRect();
118
119
  return {
119
- x: event.offsetX,
120
- y: event.offsetY,
121
- absoluteX: event.x,
122
- absoluteY: event.y
120
+ x: this.tracker.getLastAvgX() - rect.left,
121
+ y: this.tracker.getLastAvgY() - rect.top,
122
+ absoluteX: this.tracker.getLastAvgX(),
123
+ absoluteY: this.tracker.getLastAvgY()
123
124
  };
124
125
  }
125
126
 
@@ -128,85 +129,88 @@ class TapGestureHandler extends _GestureHandler.default {
128
129
  clearTimeout(this.delayTimeout);
129
130
  }
130
131
 
131
- startTap(event) {
132
+ startTap() {
132
133
  this.clearTimeouts();
133
- this.waitTimeout = setTimeout(() => this.fail(event), this.maxDurationMs);
134
+ this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
134
135
  }
135
136
 
136
- endTap(event) {
137
+ endTap() {
137
138
  this.clearTimeouts();
138
139
 
139
140
  if (++this.tapsSoFar === this.numberOfTaps && this.currentMaxNumberOfPointers >= this.minNumberOfPointers) {
140
- this.activate(event);
141
+ this.activate();
141
142
  } else {
142
- this.delayTimeout = setTimeout(() => this.fail(event), this.maxDelayMs);
143
+ this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);
143
144
  }
144
145
  } //Handling Events
145
146
 
146
147
 
147
148
  onPointerDown(event) {
148
- super.onPointerDown(event);
149
149
  this.tracker.addToTracker(event);
150
+ super.onPointerDown(event);
150
151
  this.trySettingPosition(event);
151
-
152
- if (this.tracker.getTrackedPointersCount() > 1) {
153
- this.onPointerAdd(event);
154
- } else {
155
- this.lastX = this.tracker.getLastAvgX();
156
- this.lastY = this.tracker.getLastAvgY();
157
- }
158
-
152
+ this.startX = event.x;
153
+ this.startY = event.y;
154
+ this.lastX = event.x;
155
+ this.lastY = event.y;
159
156
  this.updateState(event);
160
157
  }
161
158
 
162
- onPointerAdd(_event) {
159
+ onPointerAdd(event) {
160
+ super.onPointerAdd(event);
161
+ this.tracker.addToTracker(event);
162
+ this.trySettingPosition(event);
163
163
  this.offsetX += this.lastX - this.startX;
164
- this.offsetY += this.lastY = this.startY;
164
+ this.offsetY += this.lastY - this.startY;
165
165
  this.lastX = this.tracker.getLastAvgX();
166
166
  this.lastY = this.tracker.getLastAvgY();
167
- this.startX = this.lastX;
168
- this.startY = this.lastY;
167
+ this.startX = this.tracker.getLastAvgX();
168
+ this.startY = this.tracker.getLastAvgY();
169
+ this.updateState(event);
169
170
  }
170
171
 
171
172
  onPointerUp(event) {
172
- if (this.tracker.getTrackedPointersCount() > 1) {
173
- this.tracker.removeFromTracker(event.pointerId);
174
- this.onPointerRemove(event);
175
- } else {
176
- this.lastX = this.tracker.getLastAvgX();
177
- this.lastY = this.tracker.getLastAvgY();
178
- this.tracker.removeFromTracker(event.pointerId);
179
- }
180
-
173
+ super.onPointerUp(event);
174
+ this.lastX = this.tracker.getLastAvgX();
175
+ this.lastY = this.tracker.getLastAvgY();
176
+ this.tracker.removeFromTracker(event.pointerId);
181
177
  this.updateState(event);
182
178
  }
183
179
 
184
- onPointerRemove(_event) {
180
+ onPointerRemove(event) {
181
+ super.onPointerRemove(event);
182
+ this.tracker.removeFromTracker(event.pointerId);
185
183
  this.offsetX += this.lastX - this.startX;
186
184
  this.offsetY += this.lastY = this.startY;
187
185
  this.lastX = this.tracker.getLastAvgX();
188
186
  this.lastY = this.tracker.getLastAvgY();
189
187
  this.startX = this.lastX;
190
188
  this.startY = this.lastY;
189
+ this.updateState(event);
191
190
  }
192
191
 
193
192
  onPointerMove(event) {
194
193
  this.trySettingPosition(event);
194
+ this.tracker.track(event);
195
195
  this.lastX = this.tracker.getLastAvgX();
196
196
  this.lastY = this.tracker.getLastAvgY();
197
197
  this.updateState(event);
198
+ super.onPointerMove(event);
198
199
  }
199
200
 
200
201
  onPointerOutOfBounds(event) {
201
202
  this.trySettingPosition(event);
203
+ this.tracker.track(event);
202
204
  this.lastX = this.tracker.getLastAvgX();
203
205
  this.lastY = this.tracker.getLastAvgY();
204
206
  this.updateState(event);
207
+ super.onPointerOutOfBounds(event);
205
208
  }
206
209
 
207
210
  onPointerCancel(event) {
211
+ super.onPointerCancel(event);
208
212
  this.tracker.resetTracker();
209
- this.fail(event);
213
+ this.fail();
210
214
  }
211
215
 
212
216
  updateState(event) {
@@ -215,26 +219,26 @@ class TapGestureHandler extends _GestureHandler.default {
215
219
  }
216
220
 
217
221
  if (this.shouldFail()) {
218
- this.fail(event);
222
+ this.fail();
219
223
  return;
220
224
  }
221
225
 
222
226
  switch (this.currentState) {
223
227
  case _State.State.UNDETERMINED:
224
228
  if (event.eventType === _interfaces.EventTypes.DOWN) {
225
- this.begin(event);
229
+ this.begin();
226
230
  }
227
231
 
228
- this.startTap(event);
232
+ this.startTap();
229
233
  break;
230
234
 
231
235
  case _State.State.BEGAN:
232
236
  if (event.eventType === _interfaces.EventTypes.UP) {
233
- this.endTap(event);
237
+ this.endTap();
234
238
  }
235
239
 
236
240
  if (event.eventType === _interfaces.EventTypes.DOWN) {
237
- this.startTap(event);
241
+ this.startTap();
238
242
  }
239
243
 
240
244
  break;
@@ -268,16 +272,13 @@ class TapGestureHandler extends _GestureHandler.default {
268
272
  return true;
269
273
  }
270
274
 
271
- const dist = dy * dy + dx * dx;
272
- return this.maxDistSq !== Number.MIN_SAFE_INTEGER && dist > this.maxDistSq;
275
+ const distSq = dy * dy + dx * dx;
276
+ return this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq;
273
277
  }
274
278
 
275
- activate(event) {
276
- super.activate(event);
277
-
278
- if (!this.isAwaiting()) {
279
- this.end(event);
280
- }
279
+ activate() {
280
+ super.activate();
281
+ this.end();
281
282
  }
282
283
 
283
284
  onCancel() {
@@ -286,6 +287,7 @@ class TapGestureHandler extends _GestureHandler.default {
286
287
  }
287
288
 
288
289
  resetProgress() {
290
+ this.clearTimeouts();
289
291
  this.tapsSoFar = 0;
290
292
  this.currentMaxNumberOfPointers = 0;
291
293
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["TapGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","GestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDistSq","minPointers","minNumberOfPointers","resetConfig","transformNativeEvent","event","x","offsetX","y","offsetY","absoluteX","absoluteY","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","tracker","addToTracker","trySettingPosition","getTrackedPointersCount","onPointerAdd","lastX","getLastAvgX","lastY","getLastAvgY","updateState","_event","startX","startY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","onPointerOutOfBounds","onPointerCancel","resetTracker","shouldFail","currentState","State","UNDETERMINED","eventType","EventTypes","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","dist","isAwaiting","end","onCancel","resetProgress"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { AdaptedPointerEvent, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 200;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n this.setShouldCancelWhenOutside(true);\n }\n\n public updateGestureConfig({ enabled = true, ...props }): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDistSq !== undefined) {\n this.maxDistSq = this.config.maxDistSq;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n protected transformNativeEvent(event: AdaptedPointerEvent) {\n return {\n x: event.offsetX,\n y: event.offsetY,\n absoluteX: event.x,\n absoluteY: event.y,\n };\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(event: AdaptedPointerEvent): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(event), this.maxDurationMs);\n }\n\n private endTap(event: AdaptedPointerEvent): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate(event);\n } else {\n this.delayTimeout = setTimeout(() => this.fail(event), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedPointerEvent): void {\n super.onPointerDown(event);\n this.tracker.addToTracker(event);\n\n this.trySettingPosition(event);\n\n if (this.tracker.getTrackedPointersCount() > 1) {\n this.onPointerAdd(event);\n } else {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n }\n this.updateState(event);\n }\n\n protected onPointerAdd(_event: AdaptedPointerEvent): void {\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n\n protected onPointerUp(event: AdaptedPointerEvent): void {\n if (this.tracker.getTrackedPointersCount() > 1) {\n this.tracker.removeFromTracker(event.pointerId);\n\n this.onPointerRemove(event);\n } else {\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n }\n\n this.updateState(event);\n }\n\n protected onPointerRemove(_event: AdaptedPointerEvent): void {\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n }\n\n protected onPointerMove(event: AdaptedPointerEvent): void {\n this.trySettingPosition(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n protected onPointerOutOfBounds(event: AdaptedPointerEvent): void {\n this.trySettingPosition(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerCancel(event: AdaptedPointerEvent): void {\n this.tracker.resetTracker();\n this.fail(event);\n }\n\n private updateState(event: AdaptedPointerEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail(event);\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin(event);\n }\n this.startTap(event);\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap(event);\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap(event);\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedPointerEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const dist = dy * dy + dx * dx;\n\n return this.maxDistSq !== Number.MIN_SAFE_INTEGER && dist > this.maxDistSq;\n }\n\n protected activate(event: AdaptedPointerEvent): void {\n super.activate(event);\n\n if (!this.isAwaiting()) {\n this.end(event);\n }\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]}
1
+ {"version":3,"sources":["TapGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","GestureHandler","Number","MIN_SAFE_INTEGER","init","ref","propsRef","setShouldCancelWhenOutside","updateGestureConfig","enabled","props","config","numberOfTaps","undefined","maxDurationMs","maxDelayMs","maxDeltaX","maxDeltaY","maxDist","maxDistSq","minPointers","minNumberOfPointers","resetConfig","transformNativeEvent","rect","view","getBoundingClientRect","x","tracker","getLastAvgX","left","y","getLastAvgY","top","absoluteX","absoluteY","clearTimeouts","clearTimeout","waitTimeout","delayTimeout","startTap","setTimeout","fail","endTap","tapsSoFar","currentMaxNumberOfPointers","activate","onPointerDown","event","addToTracker","trySettingPosition","startX","startY","lastX","lastY","updateState","onPointerAdd","offsetX","offsetY","onPointerUp","removeFromTracker","pointerId","onPointerRemove","onPointerMove","track","onPointerOutOfBounds","onPointerCancel","resetTracker","getTrackedPointersCount","shouldFail","currentState","State","UNDETERMINED","eventType","EventTypes","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":";;;;;;;AAAA;;AACA;;AAEA;;;;;;AAEA,MAAMA,uBAAuB,GAAG,GAAhC;AACA,MAAMC,oBAAoB,GAAG,GAA7B;AACA,MAAMC,sBAAsB,GAAG,CAA/B;AACA,MAAMC,8BAA8B,GAAG,CAAvC;;AAEe,MAAMC,iBAAN,SAAgCC,uBAAhC,CAA+C;AAAA;AAAA;;AAAA,uCACxCC,MAAM,CAACC,gBADiC;;AAAA,uCAExCD,MAAM,CAACC,gBAFiC;;AAAA,uCAGxCD,MAAM,CAACC,gBAHiC;;AAAA,2CAIpCP,uBAJoC;;AAAA,wCAKvCC,oBALuC;;AAAA,0CAOrCC,sBAPqC;;AAAA,iDAQ9BC,8BAR8B;;AAAA,wDASvB,CATuB;;AAAA,oCAW3C,CAX2C;;AAAA,oCAY3C,CAZ2C;;AAAA,qCAa1C,CAb0C;;AAAA,qCAc1C,CAd0C;;AAAA,mCAe5C,CAf4C;;AAAA,mCAgB5C,CAhB4C;;AAAA;;AAAA;;AAAA,uCAqBxC,CArBwC;AAAA;;AAuBrDK,EAAAA,IAAI,CAACC,GAAD,EAAcC,QAAd,EAAwD;AACjE,UAAMF,IAAN,CAAWC,GAAX,EAAgBC,QAAhB;AACA,SAAKC,0BAAL,CAAgC,IAAhC;AACD;;AAEMC,EAAAA,mBAAmB,CAAC;AAAEC,IAAAA,OAAO,GAAG,IAAZ;AAAkB,OAAGC;AAArB,GAAD,EAA6C;AACrE,UAAMF,mBAAN,CAA0B;AAAEC,MAAAA,OAAO,EAAEA,OAAX;AAAoB,SAAGC;AAAvB,KAA1B;AAEA,SAAKD,OAAL,GAAeA,OAAf;;AAEA,QAAI,KAAKE,MAAL,CAAYC,YAAZ,KAA6BC,SAAjC,EAA4C;AAC1C,WAAKD,YAAL,GAAoB,KAAKD,MAAL,CAAYC,YAAhC;AACD;;AAED,QAAI,KAAKD,MAAL,CAAYG,aAAZ,KAA8BD,SAAlC,EAA6C;AAC3C,WAAKC,aAAL,GAAqB,KAAKH,MAAL,CAAYG,aAAjC;AACD;;AAED,QAAI,KAAKH,MAAL,CAAYI,UAAZ,KAA2BF,SAA/B,EAA0C;AACxC,WAAKE,UAAL,GAAkB,KAAKJ,MAAL,CAAYI,UAA9B;AACD;;AAED,QAAI,KAAKJ,MAAL,CAAYK,SAAZ,KAA0BH,SAA9B,EAAyC;AACvC,WAAKG,SAAL,GAAiB,KAAKL,MAAL,CAAYK,SAA7B;AACD;;AAED,QAAI,KAAKL,MAAL,CAAYM,SAAZ,KAA0BJ,SAA9B,EAAyC;AACvC,WAAKI,SAAL,GAAiB,KAAKN,MAAL,CAAYM,SAA7B;AACD;;AAED,QAAI,KAAKN,MAAL,CAAYO,OAAZ,KAAwBL,SAA5B,EAAuC;AACrC,WAAKM,SAAL,GAAiB,KAAKR,MAAL,CAAYO,OAAZ,GAAsB,KAAKP,MAAL,CAAYO,OAAnD;AACD;;AAED,QAAI,KAAKP,MAAL,CAAYS,WAAZ,KAA4BP,SAAhC,EAA2C;AACzC,WAAKQ,mBAAL,GAA2B,KAAKV,MAAL,CAAYS,WAAvC;AACD;AACF;;AAESE,EAAAA,WAAW,GAAS;AAC5B,UAAMA,WAAN;AAEA,SAAKN,SAAL,GAAiBd,MAAM,CAACC,gBAAxB;AACA,SAAKc,SAAL,GAAiBf,MAAM,CAACC,gBAAxB;AACA,SAAKgB,SAAL,GAAiBjB,MAAM,CAACC,gBAAxB;AACA,SAAKW,aAAL,GAAqBlB,uBAArB;AACA,SAAKmB,UAAL,GAAkBlB,oBAAlB;AACA,SAAKe,YAAL,GAAoBd,sBAApB;AACA,SAAKuB,mBAAL,GAA2BtB,8BAA3B;AACD;;AAESwB,EAAAA,oBAAoB,GAAG;AAC/B,UAAMC,IAAa,GAAG,KAAKC,IAAL,CAAUC,qBAAV,EAAtB;AAEA,WAAO;AACLC,MAAAA,CAAC,EAAE,KAAKC,OAAL,CAAaC,WAAb,KAA6BL,IAAI,CAACM,IADhC;AAELC,MAAAA,CAAC,EAAE,KAAKH,OAAL,CAAaI,WAAb,KAA6BR,IAAI,CAACS,GAFhC;AAGLC,MAAAA,SAAS,EAAE,KAAKN,OAAL,CAAaC,WAAb,EAHN;AAILM,MAAAA,SAAS,EAAE,KAAKP,OAAL,CAAaI,WAAb;AAJN,KAAP;AAMD;;AAEOI,EAAAA,aAAa,GAAS;AAC5BC,IAAAA,YAAY,CAAC,KAAKC,WAAN,CAAZ;AACAD,IAAAA,YAAY,CAAC,KAAKE,YAAN,CAAZ;AACD;;AAEOC,EAAAA,QAAQ,GAAS;AACvB,SAAKJ,aAAL;AAEA,SAAKE,WAAL,GAAmBG,UAAU,CAAC,MAAM,KAAKC,IAAL,EAAP,EAAoB,KAAK5B,aAAzB,CAA7B;AACD;;AAEO6B,EAAAA,MAAM,GAAS;AACrB,SAAKP,aAAL;;AAEA,QACE,EAAE,KAAKQ,SAAP,KAAqB,KAAKhC,YAA1B,IACA,KAAKiC,0BAAL,IAAmC,KAAKxB,mBAF1C,EAGE;AACA,WAAKyB,QAAL;AACD,KALD,MAKO;AACL,WAAKP,YAAL,GAAoBE,UAAU,CAAC,MAAM,KAAKC,IAAL,EAAP,EAAoB,KAAK3B,UAAzB,CAA9B;AACD;AACF,GA3G2D,CA6G5D;;;AACUgC,EAAAA,aAAa,CAACC,KAAD,EAA4B;AACjD,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,UAAMD,aAAN,CAAoBC,KAApB;AAEA,SAAKE,kBAAL,CAAwBF,KAAxB;AAEA,SAAKG,MAAL,GAAcH,KAAK,CAACrB,CAApB;AACA,SAAKyB,MAAL,GAAcJ,KAAK,CAACjB,CAApB;AAEA,SAAKsB,KAAL,GAAaL,KAAK,CAACrB,CAAnB;AACA,SAAK2B,KAAL,GAAaN,KAAK,CAACjB,CAAnB;AAEA,SAAKwB,WAAL,CAAiBP,KAAjB;AACD;;AAESQ,EAAAA,YAAY,CAACR,KAAD,EAA4B;AAChD,UAAMQ,YAAN,CAAmBR,KAAnB;AACA,SAAKpB,OAAL,CAAaqB,YAAb,CAA0BD,KAA1B;AACA,SAAKE,kBAAL,CAAwBF,KAAxB;AAEA,SAAKS,OAAL,IAAgB,KAAKJ,KAAL,GAAa,KAAKF,MAAlC;AACA,SAAKO,OAAL,IAAgB,KAAKJ,KAAL,GAAa,KAAKF,MAAlC;AAEA,SAAKC,KAAL,GAAa,KAAKzB,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKyB,KAAL,GAAa,KAAK1B,OAAL,CAAaI,WAAb,EAAb;AAEA,SAAKmB,MAAL,GAAc,KAAKvB,OAAL,CAAaC,WAAb,EAAd;AACA,SAAKuB,MAAL,GAAc,KAAKxB,OAAL,CAAaI,WAAb,EAAd;AAEA,SAAKuB,WAAL,CAAiBP,KAAjB;AACD;;AAESW,EAAAA,WAAW,CAACX,KAAD,EAA4B;AAC/C,UAAMW,WAAN,CAAkBX,KAAlB;AACA,SAAKK,KAAL,GAAa,KAAKzB,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKyB,KAAL,GAAa,KAAK1B,OAAL,CAAaI,WAAb,EAAb;AAEA,SAAKJ,OAAL,CAAagC,iBAAb,CAA+BZ,KAAK,CAACa,SAArC;AAEA,SAAKN,WAAL,CAAiBP,KAAjB;AACD;;AAESc,EAAAA,eAAe,CAACd,KAAD,EAA4B;AACnD,UAAMc,eAAN,CAAsBd,KAAtB;AACA,SAAKpB,OAAL,CAAagC,iBAAb,CAA+BZ,KAAK,CAACa,SAArC;AAEA,SAAKJ,OAAL,IAAgB,KAAKJ,KAAL,GAAa,KAAKF,MAAlC;AACA,SAAKO,OAAL,IAAgB,KAAKJ,KAAL,GAAa,KAAKF,MAAlC;AAEA,SAAKC,KAAL,GAAa,KAAKzB,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKyB,KAAL,GAAa,KAAK1B,OAAL,CAAaI,WAAb,EAAb;AAEA,SAAKmB,MAAL,GAAc,KAAKE,KAAnB;AACA,SAAKD,MAAL,GAAc,KAAKE,KAAnB;AAEA,SAAKC,WAAL,CAAiBP,KAAjB;AACD;;AAESe,EAAAA,aAAa,CAACf,KAAD,EAA4B;AACjD,SAAKE,kBAAL,CAAwBF,KAAxB;AACA,SAAKpB,OAAL,CAAaoC,KAAb,CAAmBhB,KAAnB;AAEA,SAAKK,KAAL,GAAa,KAAKzB,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKyB,KAAL,GAAa,KAAK1B,OAAL,CAAaI,WAAb,EAAb;AAEA,SAAKuB,WAAL,CAAiBP,KAAjB;AAEA,UAAMe,aAAN,CAAoBf,KAApB;AACD;;AAESiB,EAAAA,oBAAoB,CAACjB,KAAD,EAA4B;AACxD,SAAKE,kBAAL,CAAwBF,KAAxB;AACA,SAAKpB,OAAL,CAAaoC,KAAb,CAAmBhB,KAAnB;AAEA,SAAKK,KAAL,GAAa,KAAKzB,OAAL,CAAaC,WAAb,EAAb;AACA,SAAKyB,KAAL,GAAa,KAAK1B,OAAL,CAAaI,WAAb,EAAb;AAEA,SAAKuB,WAAL,CAAiBP,KAAjB;AAEA,UAAMiB,oBAAN,CAA2BjB,KAA3B;AACD;;AAESkB,EAAAA,eAAe,CAAClB,KAAD,EAA4B;AACnD,UAAMkB,eAAN,CAAsBlB,KAAtB;AACA,SAAKpB,OAAL,CAAauC,YAAb;AACA,SAAKzB,IAAL;AACD;;AAEOa,EAAAA,WAAW,CAACP,KAAD,EAA4B;AAC7C,QACE,KAAKH,0BAAL,GAAkC,KAAKjB,OAAL,CAAawC,uBAAb,EADpC,EAEE;AACA,WAAKvB,0BAAL,GAAkC,KAAKjB,OAAL,CAAawC,uBAAb,EAAlC;AACD;;AAED,QAAI,KAAKC,UAAL,EAAJ,EAAuB;AACrB,WAAK3B,IAAL;AACA;AACD;;AAED,YAAQ,KAAK4B,YAAb;AACE,WAAKC,aAAMC,YAAX;AACE,YAAIxB,KAAK,CAACyB,SAAN,KAAoBC,uBAAWC,IAAnC,EAAyC;AACvC,eAAKC,KAAL;AACD;;AACD,aAAKpC,QAAL;AACA;;AACF,WAAK+B,aAAMM,KAAX;AACE,YAAI7B,KAAK,CAACyB,SAAN,KAAoBC,uBAAWI,EAAnC,EAAuC;AACrC,eAAKnC,MAAL;AACD;;AACD,YAAIK,KAAK,CAACyB,SAAN,KAAoBC,uBAAWC,IAAnC,EAAyC;AACvC,eAAKnC,QAAL;AACD;;AACD;;AACF;AACE;AAhBJ;AAkBD;;AAEOU,EAAAA,kBAAkB,CAACF,KAAD,EAA4B;AACpD,QAAI,KAAKsB,YAAL,KAAsBC,aAAMC,YAAhC,EAA8C;AAC5C;AACD;;AAED,SAAKf,OAAL,GAAe,CAAf;AACA,SAAKC,OAAL,GAAe,CAAf;AACA,SAAKP,MAAL,GAAcH,KAAK,CAACrB,CAApB;AACA,SAAKyB,MAAL,GAAcJ,KAAK,CAACjB,CAApB;AACD;;AAEOsC,EAAAA,UAAU,GAAY;AAC5B,UAAMU,EAAE,GAAG,KAAK1B,KAAL,GAAa,KAAKF,MAAlB,GAA2B,KAAKM,OAA3C;;AAEA,QACE,KAAKzC,SAAL,KAAmBd,MAAM,CAACC,gBAA1B,IACA6E,IAAI,CAACC,GAAL,CAASF,EAAT,IAAe,KAAK/D,SAFtB,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAMkE,EAAE,GAAG,KAAK5B,KAAL,GAAa,KAAKF,MAAlB,GAA2B,KAAKM,OAA3C;;AACA,QACE,KAAKzC,SAAL,KAAmBf,MAAM,CAACC,gBAA1B,IACA6E,IAAI,CAACC,GAAL,CAASC,EAAT,IAAe,KAAKjE,SAFtB,EAGE;AACA,aAAO,IAAP;AACD;;AAED,UAAMkE,MAAM,GAAGD,EAAE,GAAGA,EAAL,GAAUH,EAAE,GAAGA,EAA9B;AAEA,WACE,KAAK5D,SAAL,KAAmBjB,MAAM,CAACC,gBAA1B,IAA8CgF,MAAM,GAAG,KAAKhE,SAD9D;AAGD;;AAEM2B,EAAAA,QAAQ,GAAS;AACtB,UAAMA,QAAN;AAEA,SAAKsC,GAAL;AACD;;AAESC,EAAAA,QAAQ,GAAS;AACzB,SAAKC,aAAL;AACA,SAAKlD,aAAL;AACD;;AAESkD,EAAAA,aAAa,GAAS;AAC9B,SAAKlD,aAAL;AACA,SAAKQ,SAAL,GAAiB,CAAjB;AACA,SAAKC,0BAAL,GAAkC,CAAlC;AACD;;AAzR2D","sourcesContent":["import { State } from '../../State';\nimport { AdaptedEvent, Config, EventTypes } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 500;\nconst DEFAULT_MAX_DELAY_MS = 500;\nconst DEFAULT_NUMBER_OF_TAPS = 1;\nconst DEFAULT_MIN_NUMBER_OF_POINTERS = 1;\n\nexport default class TapGestureHandler extends GestureHandler {\n private maxDeltaX = Number.MIN_SAFE_INTEGER;\n private maxDeltaY = Number.MIN_SAFE_INTEGER;\n private maxDistSq = Number.MIN_SAFE_INTEGER;\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private maxDelayMs = DEFAULT_MAX_DELAY_MS;\n\n private numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n private minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n private currentMaxNumberOfPointers = 1;\n\n private startX = 0;\n private startY = 0;\n private offsetX = 0;\n private offsetY = 0;\n private lastX = 0;\n private lastY = 0;\n\n private waitTimeout: number | undefined;\n private delayTimeout: number | undefined;\n\n private tapsSoFar = 0;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n this.setShouldCancelWhenOutside(true);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n this.enabled = enabled;\n\n if (this.config.numberOfTaps !== undefined) {\n this.numberOfTaps = this.config.numberOfTaps;\n }\n\n if (this.config.maxDurationMs !== undefined) {\n this.maxDurationMs = this.config.maxDurationMs;\n }\n\n if (this.config.maxDelayMs !== undefined) {\n this.maxDelayMs = this.config.maxDelayMs;\n }\n\n if (this.config.maxDeltaX !== undefined) {\n this.maxDeltaX = this.config.maxDeltaX;\n }\n\n if (this.config.maxDeltaY !== undefined) {\n this.maxDeltaY = this.config.maxDeltaY;\n }\n\n if (this.config.maxDist !== undefined) {\n this.maxDistSq = this.config.maxDist * this.config.maxDist;\n }\n\n if (this.config.minPointers !== undefined) {\n this.minNumberOfPointers = this.config.minPointers;\n }\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n\n this.maxDeltaX = Number.MIN_SAFE_INTEGER;\n this.maxDeltaY = Number.MIN_SAFE_INTEGER;\n this.maxDistSq = Number.MIN_SAFE_INTEGER;\n this.maxDurationMs = DEFAULT_MAX_DURATION_MS;\n this.maxDelayMs = DEFAULT_MAX_DELAY_MS;\n this.numberOfTaps = DEFAULT_NUMBER_OF_TAPS;\n this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;\n }\n\n protected transformNativeEvent() {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return {\n x: this.tracker.getLastAvgX() - rect.left,\n y: this.tracker.getLastAvgY() - rect.top,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n private clearTimeouts(): void {\n clearTimeout(this.waitTimeout);\n clearTimeout(this.delayTimeout);\n }\n\n private startTap(): void {\n this.clearTimeouts();\n\n this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private endTap(): void {\n this.clearTimeouts();\n\n if (\n ++this.tapsSoFar === this.numberOfTaps &&\n this.currentMaxNumberOfPointers >= this.minNumberOfPointers\n ) {\n this.activate();\n } else {\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);\n }\n }\n\n //Handling Events\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerDown(event);\n\n this.trySettingPosition(event);\n\n this.startX = event.x;\n this.startY = event.y;\n\n this.lastX = event.x;\n this.lastY = event.y;\n\n this.updateState(event);\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n super.onPointerAdd(event);\n this.tracker.addToTracker(event);\n this.trySettingPosition(event);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY - this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.tracker.getLastAvgX();\n this.startY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.tracker.removeFromTracker(event.pointerId);\n\n this.updateState(event);\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.tracker.removeFromTracker(event.pointerId);\n\n this.offsetX += this.lastX - this.startX;\n this.offsetY += this.lastY = this.startY;\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.startX = this.lastX;\n this.startY = this.lastY;\n\n this.updateState(event);\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerMove(event);\n }\n\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.trySettingPosition(event);\n this.tracker.track(event);\n\n this.lastX = this.tracker.getLastAvgX();\n this.lastY = this.tracker.getLastAvgY();\n\n this.updateState(event);\n\n super.onPointerOutOfBounds(event);\n }\n\n protected onPointerCancel(event: AdaptedEvent): void {\n super.onPointerCancel(event);\n this.tracker.resetTracker();\n this.fail();\n }\n\n private updateState(event: AdaptedEvent): void {\n if (\n this.currentMaxNumberOfPointers < this.tracker.getTrackedPointersCount()\n ) {\n this.currentMaxNumberOfPointers = this.tracker.getTrackedPointersCount();\n }\n\n if (this.shouldFail()) {\n this.fail();\n return;\n }\n\n switch (this.currentState) {\n case State.UNDETERMINED:\n if (event.eventType === EventTypes.DOWN) {\n this.begin();\n }\n this.startTap();\n break;\n case State.BEGAN:\n if (event.eventType === EventTypes.UP) {\n this.endTap();\n }\n if (event.eventType === EventTypes.DOWN) {\n this.startTap();\n }\n break;\n default:\n break;\n }\n }\n\n private trySettingPosition(event: AdaptedEvent): void {\n if (this.currentState !== State.UNDETERMINED) {\n return;\n }\n\n this.offsetX = 0;\n this.offsetY = 0;\n this.startX = event.x;\n this.startY = event.y;\n }\n\n private shouldFail(): boolean {\n const dx = this.lastX - this.startX + this.offsetX;\n\n if (\n this.maxDeltaX !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dx) > this.maxDeltaX\n ) {\n return true;\n }\n\n const dy = this.lastY - this.startY + this.offsetY;\n if (\n this.maxDeltaY !== Number.MIN_SAFE_INTEGER &&\n Math.abs(dy) > this.maxDeltaY\n ) {\n return true;\n }\n\n const distSq = dy * dy + dx * dx;\n\n return (\n this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq\n );\n }\n\n public activate(): void {\n super.activate();\n\n this.end();\n }\n\n protected onCancel(): void {\n this.resetProgress();\n this.clearTimeouts();\n }\n\n protected resetProgress(): void {\n this.clearTimeouts();\n this.tapsSoFar = 0;\n this.currentMaxNumberOfPointers = 0;\n }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.EventTypes = exports.MouseButtons = void 0;
6
+ exports.PointerType = exports.TouchEventType = exports.EventTypes = exports.MouseButtons = void 0;
7
7
  let MouseButtons;
8
8
  exports.MouseButtons = MouseButtons;
9
9
 
@@ -31,4 +31,25 @@ exports.EventTypes = EventTypes;
31
31
  EventTypes[EventTypes["OUT"] = 6] = "OUT";
32
32
  EventTypes[EventTypes["CANCEL"] = 7] = "CANCEL";
33
33
  })(EventTypes || (exports.EventTypes = EventTypes = {}));
34
+
35
+ let TouchEventType;
36
+ exports.TouchEventType = TouchEventType;
37
+
38
+ (function (TouchEventType) {
39
+ TouchEventType[TouchEventType["UNDETERMINED"] = 0] = "UNDETERMINED";
40
+ TouchEventType[TouchEventType["DOWN"] = 1] = "DOWN";
41
+ TouchEventType[TouchEventType["MOVE"] = 2] = "MOVE";
42
+ TouchEventType[TouchEventType["UP"] = 3] = "UP";
43
+ TouchEventType[TouchEventType["CANCELLED"] = 4] = "CANCELLED";
44
+ })(TouchEventType || (exports.TouchEventType = TouchEventType = {}));
45
+
46
+ let PointerType;
47
+ exports.PointerType = PointerType;
48
+
49
+ (function (PointerType) {
50
+ PointerType["NONE"] = "none";
51
+ PointerType["MOUSE"] = "mouse";
52
+ PointerType["TOUCH"] = "touch";
53
+ PointerType["PEN"] = "pen";
54
+ })(PointerType || (exports.PointerType = PointerType = {}));
34
55
  //# sourceMappingURL=interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes"],"mappings":";;;;;;IA6FYA,Y;;;WAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;GAAAA,Y,4BAAAA,Y;;IAWAC,U;;;WAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U","sourcesContent":["import { Directions } from '../Directions';\nimport { State } from '../State';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record<string, ConfigArgs> {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n hitSlop?: HitSlop;\n\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record<string, NativeEventArgs> {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n}\n\nexport interface ResultEvent extends Record<string, NativeEvent | number> {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedPointerEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: string;\n buttons: number;\n time: number;\n}\n\nexport enum MouseButtons {\n NONE,\n LEFT,\n RIGHT,\n LEFT_RIGHT,\n SCROLL,\n SCROLL_LEFT,\n SCROLL_RIGHT,\n SCROLL_LEFT_RIGHT,\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n OUT,\n CANCEL,\n}\n"]}
1
+ {"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes","TouchEventType","PointerType"],"mappings":";;;;;;IA6HYA,Y;;;WAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;AAAAA,EAAAA,Y,CAAAA,Y;GAAAA,Y,4BAAAA,Y;;IAWAC,U;;;WAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;AAAAA,EAAAA,U,CAAAA,U;GAAAA,U,0BAAAA,U;;IAWAC,c;;;WAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;AAAAA,EAAAA,c,CAAAA,c;GAAAA,c,8BAAAA,c;;IAQAC,W;;;WAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,2BAAAA,W","sourcesContent":["import { Directions } from '../Directions';\nimport { State } from '../State';\n\nexport interface HitSlop {\n left?: number;\n right?: number;\n top?: number;\n bottom?: number;\n horizontal?: number;\n vertical?: number;\n width?: number;\n height?: number;\n}\n\nexport interface Handler {\n handlerTag: number;\n}\n\ntype ConfigArgs =\n | number\n | boolean\n | HitSlop\n | Directions\n | Handler[]\n | null\n | undefined;\n\nexport interface Config extends Record<string, ConfigArgs> {\n enabled?: boolean;\n simultaneousHandlers?: Handler[] | null;\n waitFor?: Handler[] | null;\n hitSlop?: HitSlop;\n shouldCancelWhenOutside?: boolean;\n\n activateAfterLongPress?: number;\n failOffsetXStart?: number;\n failOffsetYStart?: number;\n failOffsetXEnd?: number;\n failOffsetYEnd?: number;\n activeOffsetXStart?: number;\n activeOffsetXEnd?: number;\n activeOffsetYStart?: number;\n activeOffsetYEnd?: number;\n minPointers?: number;\n maxPointers?: number;\n minDist?: number;\n minDistSq?: number;\n minVelocity?: number;\n minVelocityX?: number;\n minVelocityY?: number;\n minVelocitySq?: number;\n maxDist?: number;\n maxDistSq?: number;\n numberOfPointers?: number;\n minDurationMs?: number;\n numberOfTaps?: number;\n maxDurationMs?: number;\n maxDelayMs?: number;\n maxDeltaX?: number;\n maxDeltaY?: number;\n shouldActivateOnStart?: boolean;\n disallowInterruption?: boolean;\n direction?: Directions;\n}\n\ntype NativeEventArgs = number | State | boolean | undefined;\ninterface NativeEvent extends Record<string, NativeEventArgs> {\n numberOfPointers: number;\n state: State;\n pointerInside: boolean | undefined;\n handlerTag: number;\n target: number;\n oldState?: State;\n}\n\nexport interface PointerData {\n id: number;\n x: number;\n y: number;\n absoluteX: number;\n absoluteY: number;\n}\n\ntype TouchNativeArgs = number | State | TouchEventType | PointerData[];\n\ninterface NativeTouchEvent extends Record<string, TouchNativeArgs> {\n handlerTag: number;\n state: State;\n eventType: TouchEventType;\n changedTouches: PointerData[];\n allTouches: PointerData[];\n numberOfTouches: number;\n}\n\nexport interface ResultEvent extends Record<string, NativeEvent | number> {\n nativeEvent: NativeEvent;\n timeStamp: number;\n}\n\nexport interface ResultTouchEvent\n extends Record<string, NativeTouchEvent | number> {\n nativeEvent: NativeTouchEvent;\n timeStamp: number;\n}\n\nexport interface PropsRef {\n onGestureHandlerEvent: () => void;\n onGestureHandlerStateChange: () => void;\n}\n\nexport interface AdaptedEvent {\n x: number;\n y: number;\n offsetX: number;\n offsetY: number;\n pointerId: number;\n eventType: EventTypes;\n pointerType: PointerType;\n buttons: number;\n time: number;\n allTouches?: TouchList;\n changedTouches?: TouchList;\n touchEventType?: TouchEventType;\n}\n\nexport enum MouseButtons {\n NONE,\n LEFT,\n RIGHT,\n LEFT_RIGHT,\n SCROLL,\n SCROLL_LEFT,\n SCROLL_RIGHT,\n SCROLL_LEFT_RIGHT,\n}\n\nexport enum EventTypes {\n DOWN,\n ADDITIONAL_POINTER_DOWN,\n UP,\n ADDITIONAL_POINTER_UP,\n MOVE,\n ENTER,\n OUT,\n CANCEL,\n}\n\nexport enum TouchEventType {\n UNDETERMINED,\n DOWN,\n MOVE,\n UP,\n CANCELLED,\n}\n\nexport enum PointerType {\n NONE = 'none',\n MOUSE = 'mouse',\n TOUCH = 'touch',\n PEN = 'pen',\n}\n"]}