react-native-gesture-handler 2.6.0 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/android/build.gradle +2 -2
  2. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  3. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  4. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  5. package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
  6. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
  7. package/lib/commonjs/RNGestureHandlerModule.js +1 -1
  8. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  9. package/lib/commonjs/RNGestureHandlerModule.macos.js +22 -13
  10. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  11. package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
  12. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  13. package/lib/commonjs/components/GestureComponents.js +6 -4
  14. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  15. package/lib/commonjs/components/GestureComponents.web.js +1 -1
  16. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  17. package/lib/commonjs/components/Swipeable.js +4 -4
  18. package/lib/commonjs/components/Swipeable.js.map +1 -1
  19. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  20. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  21. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
  22. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  23. package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
  24. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  25. package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
  26. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  27. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
  28. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
  29. package/lib/commonjs/utils.js +10 -6
  30. package/lib/commonjs/utils.js.map +1 -1
  31. package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
  32. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  33. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
  34. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  35. package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
  36. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  37. package/lib/commonjs/web/handlers/GestureHandler.js +330 -79
  38. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  39. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
  40. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  41. package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
  42. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
  43. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
  44. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  45. package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
  46. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  47. package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
  48. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  49. package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
  50. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
  52. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/interfaces.js +22 -1
  54. package/lib/commonjs/web/interfaces.js.map +1 -1
  55. package/lib/commonjs/web/tools/EventManager.js +40 -96
  56. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  57. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
  58. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  59. package/lib/commonjs/web/tools/InteractionManager.js +24 -10
  60. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  61. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  62. package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
  63. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
  64. package/lib/commonjs/web/tools/PointerTracker.js +97 -7
  65. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  66. package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
  67. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
  68. package/lib/commonjs/web/utils.js +15 -0
  69. package/lib/commonjs/web/utils.js.map +1 -0
  70. package/lib/module/EnableExperimentalWebImplementation.js +5 -0
  71. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
  72. package/lib/module/RNGestureHandlerModule.js +1 -1
  73. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/module/RNGestureHandlerModule.macos.js +21 -14
  75. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  76. package/lib/module/RNGestureHandlerModule.web.js +22 -11
  77. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  78. package/lib/module/components/GestureComponents.js +6 -4
  79. package/lib/module/components/GestureComponents.js.map +1 -1
  80. package/lib/module/components/GestureComponents.web.js +1 -1
  81. package/lib/module/components/GestureComponents.web.js.map +1 -1
  82. package/lib/module/components/Swipeable.js +4 -4
  83. package/lib/module/components/Swipeable.js.map +1 -1
  84. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  85. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  86. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
  87. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  88. package/lib/module/handlers/gestures/GestureDetector.js +5 -3
  89. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  90. package/lib/module/handlers/gestures/eventReceiver.js +14 -20
  91. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  92. package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
  93. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
  94. package/lib/module/utils.js +7 -6
  95. package/lib/module/utils.js.map +1 -1
  96. package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
  97. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  98. package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
  99. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  100. package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
  101. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  102. package/lib/module/web/handlers/GestureHandler.js +324 -79
  103. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  104. package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
  105. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  106. package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
  107. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
  108. package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
  109. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/PanGestureHandler.js +57 -41
  111. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  112. package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
  113. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
  115. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/TapGestureHandler.js +52 -50
  117. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  118. package/lib/module/web/interfaces.js +19 -0
  119. package/lib/module/web/interfaces.js.map +1 -1
  120. package/lib/module/web/tools/EventManager.js +39 -95
  121. package/lib/module/web/tools/EventManager.js.map +1 -1
  122. package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
  123. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  124. package/lib/module/web/tools/InteractionManager.js +24 -10
  125. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  126. package/lib/module/web/tools/NodeManager.js.map +1 -1
  127. package/lib/module/web/tools/PointerEventManager.js +116 -0
  128. package/lib/module/web/tools/PointerEventManager.js.map +1 -0
  129. package/lib/module/web/tools/PointerTracker.js +97 -7
  130. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  131. package/lib/module/web/tools/TouchEventManager.js +124 -0
  132. package/lib/module/web/tools/TouchEventManager.js.map +1 -0
  133. package/lib/module/web/utils.js +8 -0
  134. package/lib/module/web/utils.js.map +1 -0
  135. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +6 -3
  136. package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
  137. package/lib/typescript/components/Swipeable.d.ts +3 -3
  138. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  139. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
  140. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
  141. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
  142. package/lib/typescript/utils.d.ts +4 -0
  143. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
  144. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
  145. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
  146. package/lib/typescript/web/handlers/GestureHandler.d.ts +42 -32
  147. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
  148. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
  149. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
  150. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
  151. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
  152. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
  153. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
  154. package/lib/typescript/web/interfaces.d.ts +50 -10
  155. package/lib/typescript/web/tools/EventManager.d.ts +28 -26
  156. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
  157. package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
  158. package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
  159. package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
  160. package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
  161. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
  162. package/lib/typescript/web/utils.d.ts +4 -0
  163. package/package.json +2 -2
  164. package/src/EnableExperimentalWebImplementation.ts +9 -0
  165. package/src/RNGestureHandlerModule.macos.ts +28 -13
  166. package/src/RNGestureHandlerModule.ts +4 -1
  167. package/src/RNGestureHandlerModule.web.ts +20 -7
  168. package/src/components/GestureComponents.tsx +12 -16
  169. package/src/components/GestureComponents.web.tsx +1 -1
  170. package/src/components/Swipeable.tsx +11 -7
  171. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
  172. package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
  173. package/src/handlers/gestures/GestureDetector.tsx +8 -4
  174. package/src/handlers/gestures/eventReceiver.ts +23 -24
  175. package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
  176. package/src/utils.ts +6 -6
  177. package/src/web/detectors/RotationGestureDetector.ts +20 -52
  178. package/src/web/detectors/ScaleGestureDetector.ts +9 -45
  179. package/src/web/handlers/FlingGestureHandler.ts +45 -22
  180. package/src/web/handlers/GestureHandler.ts +365 -97
  181. package/src/web/handlers/LongPressGestureHandler.ts +30 -24
  182. package/src/web/handlers/ManualGestureHandler.ts +39 -0
  183. package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
  184. package/src/web/handlers/PanGestureHandler.ts +68 -53
  185. package/src/web/handlers/PinchGestureHandler.ts +47 -44
  186. package/src/web/handlers/RotationGestureHandler.ts +52 -51
  187. package/src/web/handlers/TapGestureHandler.ts +74 -56
  188. package/src/web/interfaces.ts +57 -10
  189. package/src/web/tools/EventManager.ts +58 -148
  190. package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
  191. package/src/web/tools/InteractionManager.ts +25 -9
  192. package/src/web/tools/NodeManager.ts +6 -6
  193. package/src/web/tools/PointerEventManager.ts +134 -0
  194. package/src/web/tools/PointerTracker.ts +120 -10
  195. package/src/web/tools/TouchEventManager.ts +167 -0
  196. package/src/web/utils.ts +8 -0
@@ -1,7 +1,6 @@
1
1
  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; }
2
2
 
3
3
  import { State } from '../../State';
4
- import { EventTypes } from '../interfaces';
5
4
  import GestureHandler from './GestureHandler';
6
5
  import RotationGestureDetector from '../detectors/RotationGestureDetector';
7
6
  const ROTATION_RECOGNITION_THRESHOLD = Math.PI / 36;
@@ -19,7 +18,7 @@ export default class RotationGestureHandler extends GestureHandler {
19
18
 
20
19
  _defineProperty(this, "rotationGestureListener", {
21
20
  onRotationBegin: _detector => true,
22
- onRotation: (detector, event) => {
21
+ onRotation: detector => {
23
22
  const previousRotation = this.rotation;
24
23
  this.rotation += detector.getRotation();
25
24
  const delta = detector.getTimeDelta();
@@ -29,13 +28,13 @@ export default class RotationGestureHandler extends GestureHandler {
29
28
  }
30
29
 
31
30
  if (Math.abs(this.rotation) >= ROTATION_RECOGNITION_THRESHOLD && this.currentState === State.BEGAN) {
32
- this.activate(event);
31
+ this.activate();
33
32
  }
34
33
 
35
34
  return true;
36
35
  },
37
- onRotationEnd: (_detector, event) => {
38
- this.end(event);
36
+ onRotationEnd: _detector => {
37
+ this.end();
39
38
  }
40
39
  });
41
40
 
@@ -58,7 +57,7 @@ export default class RotationGestureHandler extends GestureHandler {
58
57
  this.enabled = enabled;
59
58
  }
60
59
 
61
- transformNativeEvent(_event) {
60
+ transformNativeEvent() {
62
61
  return {
63
62
  rotation: this.rotation ? this.rotation : 0,
64
63
  anchorX: this.getAnchorX(),
@@ -78,19 +77,19 @@ export default class RotationGestureHandler extends GestureHandler {
78
77
  }
79
78
 
80
79
  onPointerDown(event) {
81
- super.onPointerDown(event);
82
80
  this.tracker.addToTracker(event);
81
+ super.onPointerDown(event);
82
+ }
83
83
 
84
- if (this.tracker.getTrackedPointersCount() <= 1) {
85
- return;
86
- }
87
-
88
- this.tryBegin(event);
84
+ onPointerAdd(event) {
85
+ this.tracker.addToTracker(event);
86
+ super.onPointerAdd(event);
87
+ this.tryBegin();
89
88
  this.rotationGestureDetector.onTouchEvent(event, this.tracker);
90
89
  }
91
90
 
92
91
  onPointerMove(event) {
93
- if (this.tracker.getTrackedPointersCount() < 2 || !this.rotationGestureDetector) {
92
+ if (this.tracker.getTrackedPointersCount() < 2) {
94
93
  return;
95
94
  }
96
95
 
@@ -107,55 +106,62 @@ export default class RotationGestureHandler extends GestureHandler {
107
106
  super.onPointerMove(event);
108
107
  }
109
108
 
110
- onPointerUp(event) {
111
- if (!this.rotationGestureDetector) {
112
- this.tracker.resetTracker();
109
+ onPointerOutOfBounds(event) {
110
+ if (this.tracker.getTrackedPointersCount() < 2) {
113
111
  return;
114
112
  }
115
113
 
116
- if (this.tracker.getTrackedPointersCount() > 1) {
117
- this.rotationGestureDetector.onTouchEvent(event, this.tracker);
118
- this.tracker.removeFromTracker(event.pointerId);
119
- } else {
120
- this.tracker.removeFromTracker(event.pointerId);
121
- this.rotationGestureDetector.onTouchEvent(event, this.tracker);
114
+ if (this.getAnchorX()) {
115
+ this.cachedAnchorX = this.getAnchorX();
116
+ }
122
117
 
123
- if (this.currentState !== State.ACTIVE) {
124
- return;
125
- }
118
+ if (this.getAnchorY()) {
119
+ this.cachedAnchorY = this.getAnchorY();
126
120
  }
127
121
 
128
- if (event.eventType !== EventTypes.UP) {
122
+ this.tracker.track(event);
123
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
124
+ super.onPointerOutOfBounds(event);
125
+ }
126
+
127
+ onPointerUp(event) {
128
+ super.onPointerUp(event);
129
+ this.tracker.removeFromTracker(event.pointerId);
130
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
131
+
132
+ if (this.currentState !== State.ACTIVE) {
129
133
  return;
130
134
  }
131
135
 
132
136
  if (this.currentState === State.ACTIVE) {
133
- this.end(event);
137
+ this.end();
134
138
  } else {
135
- this.fail(event);
139
+ this.fail();
136
140
  }
137
141
  }
138
142
 
143
+ onPointerRemove(event) {
144
+ super.onPointerRemove(event);
145
+ this.rotationGestureDetector.onTouchEvent(event, this.tracker);
146
+ this.tracker.removeFromTracker(event.pointerId);
147
+ }
148
+
139
149
  onPointerCancel(event) {
140
- this.end(event);
150
+ super.onPointerCancel(event);
151
+ this.end();
141
152
  this.reset();
142
153
  }
143
154
 
144
- tryBegin(event) {
155
+ tryBegin() {
145
156
  if (this.currentState !== State.UNDETERMINED) {
146
157
  return;
147
158
  }
148
159
 
149
- this.resetProgress();
150
- this.begin(event);
160
+ this.begin();
151
161
  }
152
162
 
153
- activate(event, _force) {
154
- if (this.currentState !== State.ACTIVE) {
155
- this.resetProgress();
156
- }
157
-
158
- super.activate(event);
163
+ activate(_force) {
164
+ super.activate();
159
165
  }
160
166
 
161
167
  onReset() {
@@ -165,6 +171,7 @@ export default class RotationGestureHandler extends GestureHandler {
165
171
 
166
172
  this.rotation = 0;
167
173
  this.velocity = 0;
174
+ this.rotationGestureDetector.reset();
168
175
  }
169
176
 
170
177
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["RotationGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","RotationGestureDetector","ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","onRotationBegin","_detector","onRotation","detector","event","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","BEGAN","activate","onRotationEnd","end","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","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":["State","GestureHandler","RotationGestureDetector","ROTATION_RECOGNITION_THRESHOLD","Math","PI","RotationGestureHandler","onRotationBegin","_detector","onRotation","detector","previousRotation","rotation","getRotation","delta","getTimeDelta","velocity","abs","currentState","BEGAN","activate","onRotationEnd","end","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"]}
@@ -4,7 +4,7 @@ import { State } from '../../State';
4
4
  import { EventTypes } from '../interfaces';
5
5
  import GestureHandler from './GestureHandler';
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
  export default class TapGestureHandler extends GestureHandler {
@@ -81,8 +81,8 @@ export default class TapGestureHandler extends GestureHandler {
81
81
  this.maxDeltaY = this.config.maxDeltaY;
82
82
  }
83
83
 
84
- if (this.config.maxDistSq !== undefined) {
85
- this.maxDistSq = this.config.maxDistSq;
84
+ if (this.config.maxDist !== undefined) {
85
+ this.maxDistSq = this.config.maxDist * this.config.maxDist;
86
86
  }
87
87
 
88
88
  if (this.config.minPointers !== undefined) {
@@ -101,12 +101,13 @@ export default class TapGestureHandler extends GestureHandler {
101
101
  this.minNumberOfPointers = DEFAULT_MIN_NUMBER_OF_POINTERS;
102
102
  }
103
103
 
104
- transformNativeEvent(event) {
104
+ transformNativeEvent() {
105
+ const rect = this.view.getBoundingClientRect();
105
106
  return {
106
- x: event.offsetX,
107
- y: event.offsetY,
108
- absoluteX: event.x,
109
- absoluteY: event.y
107
+ x: this.tracker.getLastAvgX() - rect.left,
108
+ y: this.tracker.getLastAvgY() - rect.top,
109
+ absoluteX: this.tracker.getLastAvgX(),
110
+ absoluteY: this.tracker.getLastAvgY()
110
111
  };
111
112
  }
112
113
 
@@ -115,85 +116,88 @@ export default class TapGestureHandler extends GestureHandler {
115
116
  clearTimeout(this.delayTimeout);
116
117
  }
117
118
 
118
- startTap(event) {
119
+ startTap() {
119
120
  this.clearTimeouts();
120
- this.waitTimeout = setTimeout(() => this.fail(event), this.maxDurationMs);
121
+ this.waitTimeout = setTimeout(() => this.fail(), this.maxDurationMs);
121
122
  }
122
123
 
123
- endTap(event) {
124
+ endTap() {
124
125
  this.clearTimeouts();
125
126
 
126
127
  if (++this.tapsSoFar === this.numberOfTaps && this.currentMaxNumberOfPointers >= this.minNumberOfPointers) {
127
- this.activate(event);
128
+ this.activate();
128
129
  } else {
129
- this.delayTimeout = setTimeout(() => this.fail(event), this.maxDelayMs);
130
+ this.delayTimeout = setTimeout(() => this.fail(), this.maxDelayMs);
130
131
  }
131
132
  } //Handling Events
132
133
 
133
134
 
134
135
  onPointerDown(event) {
135
- super.onPointerDown(event);
136
136
  this.tracker.addToTracker(event);
137
+ super.onPointerDown(event);
137
138
  this.trySettingPosition(event);
138
-
139
- if (this.tracker.getTrackedPointersCount() > 1) {
140
- this.onPointerAdd(event);
141
- } else {
142
- this.lastX = this.tracker.getLastAvgX();
143
- this.lastY = this.tracker.getLastAvgY();
144
- }
145
-
139
+ this.startX = event.x;
140
+ this.startY = event.y;
141
+ this.lastX = event.x;
142
+ this.lastY = event.y;
146
143
  this.updateState(event);
147
144
  }
148
145
 
149
- onPointerAdd(_event) {
146
+ onPointerAdd(event) {
147
+ super.onPointerAdd(event);
148
+ this.tracker.addToTracker(event);
149
+ this.trySettingPosition(event);
150
150
  this.offsetX += this.lastX - this.startX;
151
- this.offsetY += this.lastY = this.startY;
151
+ this.offsetY += this.lastY - this.startY;
152
152
  this.lastX = this.tracker.getLastAvgX();
153
153
  this.lastY = this.tracker.getLastAvgY();
154
- this.startX = this.lastX;
155
- this.startY = this.lastY;
154
+ this.startX = this.tracker.getLastAvgX();
155
+ this.startY = this.tracker.getLastAvgY();
156
+ this.updateState(event);
156
157
  }
157
158
 
158
159
  onPointerUp(event) {
159
- if (this.tracker.getTrackedPointersCount() > 1) {
160
- this.tracker.removeFromTracker(event.pointerId);
161
- this.onPointerRemove(event);
162
- } else {
163
- this.lastX = this.tracker.getLastAvgX();
164
- this.lastY = this.tracker.getLastAvgY();
165
- this.tracker.removeFromTracker(event.pointerId);
166
- }
167
-
160
+ super.onPointerUp(event);
161
+ this.lastX = this.tracker.getLastAvgX();
162
+ this.lastY = this.tracker.getLastAvgY();
163
+ this.tracker.removeFromTracker(event.pointerId);
168
164
  this.updateState(event);
169
165
  }
170
166
 
171
- onPointerRemove(_event) {
167
+ onPointerRemove(event) {
168
+ super.onPointerRemove(event);
169
+ this.tracker.removeFromTracker(event.pointerId);
172
170
  this.offsetX += this.lastX - this.startX;
173
171
  this.offsetY += this.lastY = this.startY;
174
172
  this.lastX = this.tracker.getLastAvgX();
175
173
  this.lastY = this.tracker.getLastAvgY();
176
174
  this.startX = this.lastX;
177
175
  this.startY = this.lastY;
176
+ this.updateState(event);
178
177
  }
179
178
 
180
179
  onPointerMove(event) {
181
180
  this.trySettingPosition(event);
181
+ this.tracker.track(event);
182
182
  this.lastX = this.tracker.getLastAvgX();
183
183
  this.lastY = this.tracker.getLastAvgY();
184
184
  this.updateState(event);
185
+ super.onPointerMove(event);
185
186
  }
186
187
 
187
188
  onPointerOutOfBounds(event) {
188
189
  this.trySettingPosition(event);
190
+ this.tracker.track(event);
189
191
  this.lastX = this.tracker.getLastAvgX();
190
192
  this.lastY = this.tracker.getLastAvgY();
191
193
  this.updateState(event);
194
+ super.onPointerOutOfBounds(event);
192
195
  }
193
196
 
194
197
  onPointerCancel(event) {
198
+ super.onPointerCancel(event);
195
199
  this.tracker.resetTracker();
196
- this.fail(event);
200
+ this.fail();
197
201
  }
198
202
 
199
203
  updateState(event) {
@@ -202,26 +206,26 @@ export default class TapGestureHandler extends GestureHandler {
202
206
  }
203
207
 
204
208
  if (this.shouldFail()) {
205
- this.fail(event);
209
+ this.fail();
206
210
  return;
207
211
  }
208
212
 
209
213
  switch (this.currentState) {
210
214
  case State.UNDETERMINED:
211
215
  if (event.eventType === EventTypes.DOWN) {
212
- this.begin(event);
216
+ this.begin();
213
217
  }
214
218
 
215
- this.startTap(event);
219
+ this.startTap();
216
220
  break;
217
221
 
218
222
  case State.BEGAN:
219
223
  if (event.eventType === EventTypes.UP) {
220
- this.endTap(event);
224
+ this.endTap();
221
225
  }
222
226
 
223
227
  if (event.eventType === EventTypes.DOWN) {
224
- this.startTap(event);
228
+ this.startTap();
225
229
  }
226
230
 
227
231
  break;
@@ -255,16 +259,13 @@ export default class TapGestureHandler extends GestureHandler {
255
259
  return true;
256
260
  }
257
261
 
258
- const dist = dy * dy + dx * dx;
259
- return this.maxDistSq !== Number.MIN_SAFE_INTEGER && dist > this.maxDistSq;
262
+ const distSq = dy * dy + dx * dx;
263
+ return this.maxDistSq !== Number.MIN_SAFE_INTEGER && distSq > this.maxDistSq;
260
264
  }
261
265
 
262
- activate(event) {
263
- super.activate(event);
264
-
265
- if (!this.isAwaiting()) {
266
- this.end(event);
267
- }
266
+ activate() {
267
+ super.activate();
268
+ this.end();
268
269
  }
269
270
 
270
271
  onCancel() {
@@ -273,6 +274,7 @@ export default class TapGestureHandler extends GestureHandler {
273
274
  }
274
275
 
275
276
  resetProgress() {
277
+ this.clearTimeouts();
276
278
  this.tapsSoFar = 0;
277
279
  this.currentMaxNumberOfPointers = 0;
278
280
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["TapGestureHandler.ts"],"names":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","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","UNDETERMINED","eventType","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":["State","EventTypes","GestureHandler","DEFAULT_MAX_DURATION_MS","DEFAULT_MAX_DELAY_MS","DEFAULT_NUMBER_OF_TAPS","DEFAULT_MIN_NUMBER_OF_POINTERS","TapGestureHandler","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","UNDETERMINED","eventType","DOWN","begin","BEGAN","UP","dx","Math","abs","dy","distSq","end","onCancel","resetProgress"],"mappings":"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","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"]}
@@ -23,4 +23,23 @@ export let EventTypes;
23
23
  EventTypes[EventTypes["OUT"] = 6] = "OUT";
24
24
  EventTypes[EventTypes["CANCEL"] = 7] = "CANCEL";
25
25
  })(EventTypes || (EventTypes = {}));
26
+
27
+ export let TouchEventType;
28
+
29
+ (function (TouchEventType) {
30
+ TouchEventType[TouchEventType["UNDETERMINED"] = 0] = "UNDETERMINED";
31
+ TouchEventType[TouchEventType["DOWN"] = 1] = "DOWN";
32
+ TouchEventType[TouchEventType["MOVE"] = 2] = "MOVE";
33
+ TouchEventType[TouchEventType["UP"] = 3] = "UP";
34
+ TouchEventType[TouchEventType["CANCELLED"] = 4] = "CANCELLED";
35
+ })(TouchEventType || (TouchEventType = {}));
36
+
37
+ export let PointerType;
38
+
39
+ (function (PointerType) {
40
+ PointerType["NONE"] = "none";
41
+ PointerType["MOUSE"] = "mouse";
42
+ PointerType["TOUCH"] = "touch";
43
+ PointerType["PEN"] = "pen";
44
+ })(PointerType || (PointerType = {}));
26
45
  //# sourceMappingURL=interfaces.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["interfaces.ts"],"names":["MouseButtons","EventTypes"],"mappings":"AA6FA,WAAYA,YAAZ;;WAAYA,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,KAAAA,Y;;AAWZ,WAAYC,UAAZ;;WAAYA,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,KAAAA,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":"AA6HA,WAAYA,YAAZ;;WAAYA,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,KAAAA,Y;;AAWZ,WAAYC,UAAZ;;WAAYA,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,KAAAA,U;;AAWZ,WAAYC,cAAZ;;WAAYA,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,KAAAA,c;;AAQZ,WAAYC,WAAZ;;WAAYA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;AAAAA,EAAAA,W;GAAAA,W,KAAAA,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"]}