react-native-gesture-handler 2.6.0 → 2.6.1

Sign up to get free protection for your applications and to get access to all the features.
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;