react-native-gesture-handler 2.6.0 → 2.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/android/build.gradle +2 -2
  2. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  3. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  4. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  5. package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
  6. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
  7. package/lib/commonjs/RNGestureHandlerModule.js +1 -1
  8. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  9. package/lib/commonjs/RNGestureHandlerModule.macos.js +20 -9
  10. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  11. package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
  12. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  13. package/lib/commonjs/components/GestureComponents.web.js +1 -1
  14. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  15. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  16. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  17. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
  18. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  19. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  20. package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
  21. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  22. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
  23. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
  24. package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
  25. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  26. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
  27. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  28. package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
  29. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  30. package/lib/commonjs/web/handlers/GestureHandler.js +282 -79
  31. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  32. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
  33. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  34. package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
  35. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
  36. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
  37. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  38. package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
  39. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  40. package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
  41. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  42. package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
  43. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  44. package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
  45. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  46. package/lib/commonjs/web/interfaces.js +22 -1
  47. package/lib/commonjs/web/interfaces.js.map +1 -1
  48. package/lib/commonjs/web/tools/EventManager.js +40 -96
  49. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  50. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
  51. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  52. package/lib/commonjs/web/tools/InteractionManager.js +24 -10
  53. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  54. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  55. package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
  56. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
  57. package/lib/commonjs/web/tools/PointerTracker.js +97 -7
  58. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  59. package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
  60. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
  61. package/lib/commonjs/web/utils.js +15 -0
  62. package/lib/commonjs/web/utils.js.map +1 -0
  63. package/lib/module/EnableExperimentalWebImplementation.js +5 -0
  64. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
  65. package/lib/module/RNGestureHandlerModule.js +1 -1
  66. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  67. package/lib/module/RNGestureHandlerModule.macos.js +19 -10
  68. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  69. package/lib/module/RNGestureHandlerModule.web.js +22 -11
  70. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  71. package/lib/module/components/GestureComponents.web.js +1 -1
  72. package/lib/module/components/GestureComponents.web.js.map +1 -1
  73. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  74. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  75. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
  76. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  77. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  78. package/lib/module/handlers/gestures/eventReceiver.js +14 -20
  79. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  80. package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
  81. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
  82. package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
  83. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  84. package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
  85. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  86. package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
  87. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  88. package/lib/module/web/handlers/GestureHandler.js +276 -79
  89. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  90. package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
  91. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  92. package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
  93. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
  94. package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
  95. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  96. package/lib/module/web/handlers/PanGestureHandler.js +57 -41
  97. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  98. package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
  99. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  100. package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
  101. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  102. package/lib/module/web/handlers/TapGestureHandler.js +52 -50
  103. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  104. package/lib/module/web/interfaces.js +19 -0
  105. package/lib/module/web/interfaces.js.map +1 -1
  106. package/lib/module/web/tools/EventManager.js +39 -95
  107. package/lib/module/web/tools/EventManager.js.map +1 -1
  108. package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
  109. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  110. package/lib/module/web/tools/InteractionManager.js +24 -10
  111. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  112. package/lib/module/web/tools/NodeManager.js.map +1 -1
  113. package/lib/module/web/tools/PointerEventManager.js +116 -0
  114. package/lib/module/web/tools/PointerEventManager.js.map +1 -0
  115. package/lib/module/web/tools/PointerTracker.js +97 -7
  116. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  117. package/lib/module/web/tools/TouchEventManager.js +124 -0
  118. package/lib/module/web/tools/TouchEventManager.js.map +1 -0
  119. package/lib/module/web/utils.js +8 -0
  120. package/lib/module/web/utils.js.map +1 -0
  121. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +5 -2
  122. package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
  123. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  124. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
  125. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
  126. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
  127. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
  128. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
  129. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
  130. package/lib/typescript/web/handlers/GestureHandler.d.ts +41 -32
  131. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
  132. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
  133. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
  134. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
  135. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
  136. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
  137. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
  138. package/lib/typescript/web/interfaces.d.ts +50 -10
  139. package/lib/typescript/web/tools/EventManager.d.ts +28 -26
  140. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
  141. package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
  142. package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
  143. package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
  144. package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
  145. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
  146. package/lib/typescript/web/utils.d.ts +4 -0
  147. package/package.json +2 -2
  148. package/src/EnableExperimentalWebImplementation.ts +9 -0
  149. package/src/RNGestureHandlerModule.macos.ts +25 -10
  150. package/src/RNGestureHandlerModule.ts +4 -1
  151. package/src/RNGestureHandlerModule.web.ts +20 -7
  152. package/src/components/GestureComponents.web.tsx +1 -1
  153. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
  154. package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
  155. package/src/handlers/gestures/GestureDetector.tsx +0 -1
  156. package/src/handlers/gestures/eventReceiver.ts +23 -24
  157. package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
  158. package/src/web/detectors/RotationGestureDetector.ts +20 -52
  159. package/src/web/detectors/ScaleGestureDetector.ts +9 -45
  160. package/src/web/handlers/FlingGestureHandler.ts +45 -22
  161. package/src/web/handlers/GestureHandler.ts +306 -97
  162. package/src/web/handlers/LongPressGestureHandler.ts +30 -24
  163. package/src/web/handlers/ManualGestureHandler.ts +39 -0
  164. package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
  165. package/src/web/handlers/PanGestureHandler.ts +68 -53
  166. package/src/web/handlers/PinchGestureHandler.ts +47 -44
  167. package/src/web/handlers/RotationGestureHandler.ts +52 -51
  168. package/src/web/handlers/TapGestureHandler.ts +74 -56
  169. package/src/web/interfaces.ts +57 -10
  170. package/src/web/tools/EventManager.ts +58 -148
  171. package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
  172. package/src/web/tools/InteractionManager.ts +25 -9
  173. package/src/web/tools/NodeManager.ts +6 -6
  174. package/src/web/tools/PointerEventManager.ts +134 -0
  175. package/src/web/tools/PointerTracker.ts +120 -10
  176. package/src/web/tools/TouchEventManager.ts +167 -0
  177. package/src/web/utils.ts +8 -0
@@ -9,12 +9,20 @@ var _reactNative = require("react-native");
9
9
 
10
10
  var _State = require("../../State");
11
11
 
12
- var _EventManager = _interopRequireDefault(require("../tools/EventManager"));
12
+ var _interfaces = require("../interfaces");
13
13
 
14
14
  var _GestureHandlerOrchestrator = _interopRequireDefault(require("../tools/GestureHandlerOrchestrator"));
15
15
 
16
+ var _InteractionManager = _interopRequireDefault(require("../tools/InteractionManager"));
17
+
18
+ var _PointerEventManager = _interopRequireDefault(require("../tools/PointerEventManager"));
19
+
16
20
  var _PointerTracker = _interopRequireDefault(require("../tools/PointerTracker"));
17
21
 
22
+ var _TouchEventManager = _interopRequireDefault(require("../tools/TouchEventManager"));
23
+
24
+ var _utils = require("../utils");
25
+
18
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
27
 
20
28
  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; }
@@ -36,20 +44,18 @@ class GestureHandler {
36
44
 
37
45
  _defineProperty(this, "propsRef", void 0);
38
46
 
47
+ _defineProperty(this, "handlerTag", void 0);
48
+
39
49
  _defineProperty(this, "config", {
40
50
  enabled: false
41
51
  });
42
52
 
43
- _defineProperty(this, "handlerTag", void 0);
44
-
45
- _defineProperty(this, "view", null);
53
+ _defineProperty(this, "view", void 0);
46
54
 
47
- _defineProperty(this, "eventManager", void 0);
55
+ _defineProperty(this, "eventManagers", []);
48
56
 
49
57
  _defineProperty(this, "tracker", new _PointerTracker.default());
50
58
 
51
- _defineProperty(this, "interactionManager", void 0);
52
-
53
59
  _defineProperty(this, "activationIndex", 0);
54
60
 
55
61
  _defineProperty(this, "awaiting", false);
@@ -58,12 +64,14 @@ class GestureHandler {
58
64
 
59
65
  _defineProperty(this, "shouldResetProgress", false);
60
66
 
61
- _defineProperty(this, "sendEvent", (event, newState, oldState) => {
67
+ _defineProperty(this, "pointerType", _interfaces.PointerType.NONE);
68
+
69
+ _defineProperty(this, "sendEvent", (newState, oldState) => {
62
70
  const {
63
71
  onGestureHandlerEvent,
64
72
  onGestureHandlerStateChange
65
73
  } = this.propsRef.current;
66
- const resultEvent = this.transformEventData(event, newState, oldState); // In the new API oldState field has to be undefined, unless we send event state changed
74
+ const resultEvent = this.transformEventData(newState, oldState); // In the new API oldState field has to be undefined, unless we send event state changed
67
75
  // Here the order is flipped to avoid workarounds such as making backup of the state and setting it to undefined first, then changing it back
68
76
  // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once
69
77
  // However, this may cause trouble in the future (but for now we don't know that)
@@ -89,17 +97,17 @@ class GestureHandler {
89
97
  this.propsRef = propsRef;
90
98
  this.ref = ref;
91
99
  this.currentState = _State.State.UNDETERMINED;
92
- this.setView(ref);
93
- this.setEventManager();
100
+ this.setView();
101
+ this.addEventManager(new _PointerEventManager.default(this.view));
102
+ this.addEventManager(new _TouchEventManager.default(this.view));
94
103
  }
95
104
 
96
- setView(ref) {
97
- if (!ref) {
98
- this.view = null;
99
- return;
105
+ setView() {
106
+ if (!this.ref) {
107
+ throw new Error(`Cannot find HTML Element for handler ${this.handlerTag}`);
100
108
  }
101
109
 
102
- this.view = (0, _reactNative.findNodeHandle)(ref);
110
+ this.view = (0, _reactNative.findNodeHandle)(this.ref);
103
111
  this.view.style['touchAction'] = 'none';
104
112
  this.view.style['webkitUserSelect'] = 'none';
105
113
  this.view.style['userSelect'] = 'none'; //@ts-ignore This one disables default events on Safari
@@ -107,24 +115,18 @@ class GestureHandler {
107
115
  this.view.style['WebkitTouchCallout'] = 'none';
108
116
  }
109
117
 
110
- setEventManager() {
111
- if (!this.view) {
112
- return;
113
- }
114
-
115
- this.eventManager = new _EventManager.default(this.view);
116
- this.eventManager.setOnPointerDown(this.onPointerDown.bind(this));
117
- this.eventManager.setOnPointerUp(this.onPointerUp.bind(this));
118
- this.eventManager.setOnPointerMove(this.onPointerMove.bind(this));
119
- this.eventManager.setOnPointerEnter(this.onPointerEnter.bind(this));
120
- this.eventManager.setOnPointerOut(this.onPointerOut.bind(this));
121
- this.eventManager.setOnPointerCancel(this.onPointerCancel.bind(this));
122
- this.eventManager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
123
- this.eventManager.setListeners();
124
- }
125
-
126
- setInteractionManager(manager) {
127
- this.interactionManager = manager;
118
+ addEventManager(manager) {
119
+ manager.setOnPointerDown(this.onPointerDown.bind(this));
120
+ manager.setOnPointerAdd(this.onPointerAdd.bind(this));
121
+ manager.setOnPointerUp(this.onPointerUp.bind(this));
122
+ manager.setOnPointerRemove(this.onPointerRemove.bind(this));
123
+ manager.setOnPointerMove(this.onPointerMove.bind(this));
124
+ manager.setOnPointerEnter(this.onPointerEnter.bind(this));
125
+ manager.setOnPointerOut(this.onPointerOut.bind(this));
126
+ manager.setOnPointerCancel(this.onPointerCancel.bind(this));
127
+ manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
128
+ manager.setListeners();
129
+ this.eventManagers.push(manager);
128
130
  } //
129
131
  // Resetting handler
130
132
  //
@@ -139,13 +141,15 @@ class GestureHandler {
139
141
  reset() {
140
142
  this.tracker.resetTracker();
141
143
  this.onReset();
144
+ this.resetProgress();
145
+ this.eventManagers.forEach(manager => manager.resetManager());
142
146
  this.currentState = _State.State.UNDETERMINED;
143
147
  } //
144
148
  // State logic
145
149
  //
146
150
 
147
151
 
148
- moveToState(newState, event) {
152
+ moveToState(newState, sendIfDisabled) {
149
153
  if (this.currentState === newState) {
150
154
  return;
151
155
  }
@@ -153,47 +157,59 @@ class GestureHandler {
153
157
  const oldState = this.currentState;
154
158
  this.currentState = newState;
155
159
 
156
- _GestureHandlerOrchestrator.default.getInstance().onHandlerStateChange(this, newState, oldState, event);
160
+ _GestureHandlerOrchestrator.default.getInstance().onHandlerStateChange(this, newState, oldState, sendIfDisabled);
157
161
 
158
162
  this.onStateChange(newState, oldState);
159
163
  }
160
164
 
161
165
  onStateChange(_newState, _oldState) {}
162
166
 
163
- begin(event) {
164
- if (!this.checkHitSlop(event)) {
167
+ begin() {
168
+ if (!this.checkHitSlop()) {
165
169
  return;
166
170
  }
167
171
 
168
172
  if (this.currentState === _State.State.UNDETERMINED) {
169
- this.moveToState(_State.State.BEGAN, event);
173
+ this.moveToState(_State.State.BEGAN);
170
174
  }
171
175
  }
176
+ /**
177
+ * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event
178
+ */
179
+
172
180
 
173
- fail(event) {
181
+ fail(sendIfDisabled) {
174
182
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
175
- this.moveToState(_State.State.FAILED, event);
183
+ this.moveToState(_State.State.FAILED, sendIfDisabled);
184
+ this.view.style.cursor = 'auto';
176
185
  }
177
186
 
178
187
  this.resetProgress();
179
188
  }
189
+ /**
190
+ * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event
191
+ */
180
192
 
181
- cancel(event) {
193
+
194
+ cancel(sendIfDisabled) {
182
195
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
183
196
  this.onCancel();
184
- this.moveToState(_State.State.CANCELLED, event);
197
+ this.moveToState(_State.State.CANCELLED, sendIfDisabled);
198
+ this.view.style.cursor = 'auto';
185
199
  }
186
200
  }
187
201
 
188
- activate(event, _force = false) {
202
+ activate(_force = false) {
189
203
  if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
190
- this.moveToState(_State.State.ACTIVE, event);
204
+ this.moveToState(_State.State.ACTIVE);
205
+ this.view.style.cursor = 'grab';
191
206
  }
192
207
  }
193
208
 
194
- end(event) {
209
+ end() {
195
210
  if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
196
- this.moveToState(_State.State.END, event);
211
+ this.moveToState(_State.State.END);
212
+ this.view.style.cursor = 'auto';
197
213
  }
198
214
 
199
215
  this.resetProgress();
@@ -239,7 +255,7 @@ class GestureHandler {
239
255
  return false;
240
256
  }
241
257
 
242
- return this.interactionManager.shouldWaitForHandlerFailure(this, handler);
258
+ return _InteractionManager.default.getInstance().shouldWaitForHandlerFailure(this, handler);
243
259
  }
244
260
 
245
261
  shouldRequireToWaitForFailure(handler) {
@@ -247,7 +263,7 @@ class GestureHandler {
247
263
  return false;
248
264
  }
249
265
 
250
- return this.interactionManager.shouldRequireHandlerToWaitForFailure(this, handler);
266
+ return _InteractionManager.default.getInstance().shouldRequireHandlerToWaitForFailure(this, handler);
251
267
  }
252
268
 
253
269
  shouldRecognizeSimultaneously(handler) {
@@ -255,7 +271,7 @@ class GestureHandler {
255
271
  return true;
256
272
  }
257
273
 
258
- return this.interactionManager.shouldRecognizeSimultaneously(this, handler);
274
+ return _InteractionManager.default.getInstance().shouldRecognizeSimultaneously(this, handler);
259
275
  }
260
276
 
261
277
  shouldBeCancelledByOther(handler) {
@@ -263,59 +279,114 @@ class GestureHandler {
263
279
  return false;
264
280
  }
265
281
 
266
- return this.interactionManager.shouldHandlerBeCancelledBy(this, handler);
282
+ return _InteractionManager.default.getInstance().shouldHandlerBeCancelledBy(this, handler);
267
283
  } //
268
284
  // Event actions
269
285
  //
270
286
 
271
287
 
272
- onPointerDown(_event) {
288
+ onPointerDown(event) {
273
289
  _GestureHandlerOrchestrator.default.getInstance().recordHandlerIfNotPresent(this);
290
+
291
+ this.pointerType = event.pointerType;
292
+
293
+ if (this.pointerType === _interfaces.PointerType.TOUCH) {
294
+ _GestureHandlerOrchestrator.default.getInstance().cancelMouseAndPenGestures(this);
295
+ }
296
+
297
+ if (this.config.needsPointerData) {
298
+ this.sendTouchEvent(event);
299
+ }
274
300
  } // Adding another pointer to existing ones
275
301
 
276
302
 
277
- onPointerAdd(_event) {}
303
+ onPointerAdd(event) {
304
+ if (this.config.needsPointerData) {
305
+ this.sendTouchEvent(event);
306
+ }
307
+ }
278
308
 
279
- onPointerUp(_event) {} // Removing pointer, when there is more than one pointers
309
+ onPointerUp(event) {
310
+ if (this.config.needsPointerData) {
311
+ this.sendTouchEvent(event);
312
+ }
313
+ } // Removing pointer, when there is more than one pointers
280
314
 
281
315
 
282
- onPointerRemove(_event) {}
316
+ onPointerRemove(event) {
317
+ if (this.config.needsPointerData) {
318
+ this.sendTouchEvent(event);
319
+ }
320
+ }
283
321
 
284
322
  onPointerMove(event) {
285
- this.tryToSendMoveEvent(event, false);
323
+ this.tryToSendMoveEvent(false);
324
+
325
+ if (this.config.needsPointerData) {
326
+ this.sendTouchEvent(event);
327
+ }
286
328
  }
287
329
 
288
- onPointerOut(_event) {}
330
+ onPointerOut(event) {
331
+ if (this.config.needsPointerData) {
332
+ this.sendTouchEvent(event);
333
+ }
334
+ }
289
335
 
290
- onPointerEnter(_event) {}
336
+ onPointerEnter(event) {
337
+ if (this.config.needsPointerData) {
338
+ this.sendTouchEvent(event);
339
+ }
340
+ }
291
341
 
292
- onPointerCancel(_event) {}
342
+ onPointerCancel(event) {
343
+ if (this.config.needsPointerData) {
344
+ this.sendTouchEvent(event);
345
+ }
346
+ }
293
347
 
294
348
  onPointerOutOfBounds(event) {
295
- this.tryToSendMoveEvent(event, true);
349
+ this.tryToSendMoveEvent(true);
350
+
351
+ if (this.config.needsPointerData) {
352
+ this.sendTouchEvent(event);
353
+ }
296
354
  }
297
355
 
298
- tryToSendMoveEvent(event, out) {
299
- if (this.currentState === _State.State.ACTIVE && (!out || out && !this.shouldCancellWhenOutside)) {
300
- this.sendEvent(event, this.currentState, this.currentState);
356
+ tryToSendMoveEvent(out) {
357
+ if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) {
358
+ this.sendEvent(this.currentState, this.currentState);
359
+ }
360
+ }
361
+
362
+ sendTouchEvent(event) {
363
+ if (!this.enabled) {
364
+ return;
365
+ }
366
+
367
+ const {
368
+ onGestureHandlerEvent
369
+ } = this.propsRef.current;
370
+ const touchEvent = this.transformTouchEvent(event);
371
+
372
+ if (touchEvent) {
373
+ invokeNullableMethod(onGestureHandlerEvent, touchEvent);
301
374
  }
302
375
  } //
303
376
  // Events Sending
304
377
  //
305
378
 
306
379
 
307
- transformEventData(event, newState, oldState) {
308
- var _this$eventManager;
309
-
380
+ transformEventData(newState, oldState) {
310
381
  return {
311
382
  nativeEvent: {
312
383
  numberOfPointers: this.tracker.getTrackedPointersCount(),
313
384
  state: newState,
314
- pointerInside: (_this$eventManager = this.eventManager) === null || _this$eventManager === void 0 ? void 0 : _this$eventManager.isPointerInBounds({
315
- x: event.x,
316
- y: event.y
385
+ pointerInside: (0, _utils.isPointerInBounds)(this.view, {
386
+ x: this.tracker.getLastAvgX(),
387
+ y: this.tracker.getLastAvgY()
317
388
  }),
318
- ...this.transformNativeEvent(event),
389
+ ...this.transformNativeEvent(),
319
390
  handlerTag: this.handlerTag,
320
391
  target: this.ref,
321
392
  oldState: newState !== oldState ? oldState : undefined
@@ -324,7 +395,99 @@ class GestureHandler {
324
395
  };
325
396
  }
326
397
 
327
- transformNativeEvent(_event) {
398
+ transformTouchEvent(event) {
399
+ var _event$touchEventType;
400
+
401
+ const rect = this.view.getBoundingClientRect();
402
+ const all = [];
403
+ const changed = [];
404
+ const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled
405
+ // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled
406
+ // The problem is, that handler will receive another pointercancel event from the rest of the pointers
407
+ // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset
408
+
409
+ if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {
410
+ return;
411
+ }
412
+
413
+ trackerData.forEach((element, key) => {
414
+ const id = this.tracker.getMappedTouchEventId(key);
415
+ all.push({
416
+ id: id,
417
+ x: element.lastX - rect.left,
418
+ y: element.lastY - rect.top,
419
+ absoluteX: element.lastX,
420
+ absoluteY: element.lastY
421
+ });
422
+ }); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.
423
+ // However, if the event is cancel, we want to cancel all pointers to avoid crashes
424
+
425
+ if (event.eventType !== _interfaces.EventTypes.CANCEL) {
426
+ changed.push({
427
+ id: this.tracker.getMappedTouchEventId(event.pointerId),
428
+ x: event.x - rect.left,
429
+ y: event.y - rect.top,
430
+ absoluteX: event.x,
431
+ absoluteY: event.y
432
+ });
433
+ } else {
434
+ trackerData.forEach((element, key) => {
435
+ const id = this.tracker.getMappedTouchEventId(key);
436
+ changed.push({
437
+ id: id,
438
+ x: element.lastX - rect.left,
439
+ y: element.lastY - rect.top,
440
+ absoluteX: element.lastX,
441
+ absoluteY: element.lastY
442
+ });
443
+ });
444
+ }
445
+
446
+ let eventType = _interfaces.TouchEventType.UNDETERMINED;
447
+
448
+ switch (event.eventType) {
449
+ case _interfaces.EventTypes.DOWN:
450
+ case _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN:
451
+ eventType = _interfaces.TouchEventType.DOWN;
452
+ break;
453
+
454
+ case _interfaces.EventTypes.UP:
455
+ case _interfaces.EventTypes.ADDITIONAL_POINTER_UP:
456
+ eventType = _interfaces.TouchEventType.UP;
457
+ break;
458
+
459
+ case _interfaces.EventTypes.MOVE:
460
+ eventType = _interfaces.TouchEventType.MOVE;
461
+ break;
462
+
463
+ case _interfaces.EventTypes.CANCEL:
464
+ eventType = _interfaces.TouchEventType.CANCELLED;
465
+ break;
466
+ } // Here, when we receive up event, we want to decrease number of touches
467
+ // That's because we want handler to send information that there's one pointer less
468
+ // However, we still want this pointer to be present in allTouches array, so that its data can be accessed
469
+
470
+
471
+ let numberOfTouches = all.length;
472
+
473
+ if (event.eventType === _interfaces.EventTypes.UP || event.eventType === _interfaces.EventTypes.ADDITIONAL_POINTER_UP) {
474
+ --numberOfTouches;
475
+ }
476
+
477
+ return {
478
+ nativeEvent: {
479
+ handlerTag: this.handlerTag,
480
+ state: this.currentState,
481
+ eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType,
482
+ changedTouches: changed,
483
+ allTouches: all,
484
+ numberOfTouches: numberOfTouches
485
+ },
486
+ timeStamp: Date.now()
487
+ };
488
+ }
489
+
490
+ transformNativeEvent() {
328
491
  return {};
329
492
  } //
330
493
  // Handling config
@@ -336,10 +499,30 @@ class GestureHandler {
336
499
  ...props
337
500
  }) {
338
501
  this.config = {
339
- enabled,
502
+ enabled: enabled,
340
503
  ...props
341
504
  };
505
+ this.enabled = enabled;
342
506
  this.validateHitSlops();
507
+
508
+ if (this.enabled) {
509
+ return;
510
+ }
511
+
512
+ switch (this.currentState) {
513
+ case _State.State.ACTIVE:
514
+ this.fail(true);
515
+ break;
516
+
517
+ case _State.State.UNDETERMINED:
518
+ _GestureHandlerOrchestrator.default.getInstance().removeHandlerFromOrchestrator(this);
519
+
520
+ break;
521
+
522
+ default:
523
+ this.cancel(true);
524
+ break;
525
+ }
343
526
  }
344
527
 
345
528
  checkCustomActivationCriteria(criterias) {
@@ -372,8 +555,8 @@ class GestureHandler {
372
555
  }
373
556
  }
374
557
 
375
- checkHitSlop(event) {
376
- if (!this.config.hitSlop || !this.view) {
558
+ checkHitSlop() {
559
+ if (!this.config.hitSlop) {
377
560
  return true;
378
561
  }
379
562
 
@@ -426,13 +609,25 @@ class GestureHandler {
426
609
  }
427
610
  }
428
611
 
429
- if (event.offsetX >= left && event.offsetX <= right && event.offsetY >= top && event.offsetY <= bottom) {
612
+ const rect = this.view.getBoundingClientRect();
613
+ const offsetX = this.tracker.getLastX() - rect.left;
614
+ const offsetY = this.tracker.getLastY() - rect.top;
615
+
616
+ if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
430
617
  return true;
431
618
  }
432
619
 
433
620
  return false;
434
621
  }
435
622
 
623
+ isPointerInBounds({
624
+ x,
625
+ y
626
+ }) {
627
+ const rect = this.view.getBoundingClientRect();
628
+ return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
629
+ }
630
+
436
631
  resetConfig() {} //
437
632
  // Getters and setters
438
633
  //
@@ -458,8 +653,8 @@ class GestureHandler {
458
653
  return this.view;
459
654
  }
460
655
 
461
- getEventManager() {
462
- return this.eventManager;
656
+ getEventManagers() {
657
+ return this.eventManagers;
463
658
  }
464
659
 
465
660
  getTracker() {
@@ -474,14 +669,22 @@ class GestureHandler {
474
669
  return this.currentState;
475
670
  }
476
671
 
477
- setShouldCancelWhenOutside(flag) {
478
- this.shouldCancellWhenOutside = flag;
672
+ isEnabled() {
673
+ return this.enabled;
674
+ }
675
+
676
+ setShouldCancelWhenOutside(shouldCancel) {
677
+ this.shouldCancellWhenOutside = shouldCancel;
479
678
  }
480
679
 
481
680
  getShouldCancelWhenOutside() {
482
681
  return this.shouldCancellWhenOutside;
483
682
  }
484
683
 
684
+ getPointerType() {
685
+ return this.pointerType;
686
+ }
687
+
485
688
  }
486
689
 
487
690
  exports.default = GestureHandler;