react-native-gesture-handler 2.6.0 → 2.6.2

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 (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
@@ -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);
53
+ _defineProperty(this, "view", void 0);
44
54
 
45
- _defineProperty(this, "view", null);
46
-
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,61 +141,79 @@ 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
  }
152
156
 
157
+ if (this.tracker.getTrackedPointersCount() > 0 && (newState === _State.State.END || newState === _State.State.CANCELLED || newState === _State.State.FAILED)) {
158
+ this.cancelTouches();
159
+ }
160
+
153
161
  const oldState = this.currentState;
154
162
  this.currentState = newState;
155
163
 
156
- _GestureHandlerOrchestrator.default.getInstance().onHandlerStateChange(this, newState, oldState, event);
164
+ _GestureHandlerOrchestrator.default.getInstance().onHandlerStateChange(this, newState, oldState, sendIfDisabled);
157
165
 
158
166
  this.onStateChange(newState, oldState);
159
167
  }
160
168
 
161
169
  onStateChange(_newState, _oldState) {}
162
170
 
163
- begin(event) {
164
- if (!this.checkHitSlop(event)) {
171
+ begin() {
172
+ if (!this.checkHitSlop()) {
165
173
  return;
166
174
  }
167
175
 
168
176
  if (this.currentState === _State.State.UNDETERMINED) {
169
- this.moveToState(_State.State.BEGAN, event);
177
+ this.moveToState(_State.State.BEGAN);
170
178
  }
171
179
  }
180
+ /**
181
+ * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event
182
+ */
183
+
172
184
 
173
- fail(event) {
185
+ fail(sendIfDisabled) {
174
186
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
175
- this.moveToState(_State.State.FAILED, event);
187
+ this.moveToState(_State.State.FAILED, sendIfDisabled);
188
+ this.view.style.cursor = 'auto';
176
189
  }
177
190
 
178
191
  this.resetProgress();
179
192
  }
193
+ /**
194
+ * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event
195
+ */
180
196
 
181
- cancel(event) {
197
+
198
+ cancel(sendIfDisabled) {
182
199
  if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
183
200
  this.onCancel();
184
- this.moveToState(_State.State.CANCELLED, event);
201
+ this.moveToState(_State.State.CANCELLED, sendIfDisabled);
202
+ this.view.style.cursor = 'auto';
185
203
  }
186
204
  }
187
205
 
188
- activate(event, _force = false) {
206
+ activate(_force = false) {
189
207
  if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
190
- this.moveToState(_State.State.ACTIVE, event);
208
+ this.moveToState(_State.State.ACTIVE);
209
+ this.view.style.cursor = 'grab';
191
210
  }
192
211
  }
193
212
 
194
- end(event) {
213
+ end() {
195
214
  if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
196
- this.moveToState(_State.State.END, event);
215
+ this.moveToState(_State.State.END);
216
+ this.view.style.cursor = 'auto';
197
217
  }
198
218
 
199
219
  this.resetProgress();
@@ -239,7 +259,7 @@ class GestureHandler {
239
259
  return false;
240
260
  }
241
261
 
242
- return this.interactionManager.shouldWaitForHandlerFailure(this, handler);
262
+ return _InteractionManager.default.getInstance().shouldWaitForHandlerFailure(this, handler);
243
263
  }
244
264
 
245
265
  shouldRequireToWaitForFailure(handler) {
@@ -247,7 +267,7 @@ class GestureHandler {
247
267
  return false;
248
268
  }
249
269
 
250
- return this.interactionManager.shouldRequireHandlerToWaitForFailure(this, handler);
270
+ return _InteractionManager.default.getInstance().shouldRequireHandlerToWaitForFailure(this, handler);
251
271
  }
252
272
 
253
273
  shouldRecognizeSimultaneously(handler) {
@@ -255,7 +275,7 @@ class GestureHandler {
255
275
  return true;
256
276
  }
257
277
 
258
- return this.interactionManager.shouldRecognizeSimultaneously(this, handler);
278
+ return _InteractionManager.default.getInstance().shouldRecognizeSimultaneously(this, handler);
259
279
  }
260
280
 
261
281
  shouldBeCancelledByOther(handler) {
@@ -263,59 +283,114 @@ class GestureHandler {
263
283
  return false;
264
284
  }
265
285
 
266
- return this.interactionManager.shouldHandlerBeCancelledBy(this, handler);
286
+ return _InteractionManager.default.getInstance().shouldHandlerBeCancelledBy(this, handler);
267
287
  } //
268
288
  // Event actions
269
289
  //
270
290
 
271
291
 
272
- onPointerDown(_event) {
292
+ onPointerDown(event) {
273
293
  _GestureHandlerOrchestrator.default.getInstance().recordHandlerIfNotPresent(this);
294
+
295
+ this.pointerType = event.pointerType;
296
+
297
+ if (this.pointerType === _interfaces.PointerType.TOUCH) {
298
+ _GestureHandlerOrchestrator.default.getInstance().cancelMouseAndPenGestures(this);
299
+ }
300
+
301
+ if (this.config.needsPointerData) {
302
+ this.sendTouchEvent(event);
303
+ }
274
304
  } // Adding another pointer to existing ones
275
305
 
276
306
 
277
- onPointerAdd(_event) {}
307
+ onPointerAdd(event) {
308
+ if (this.config.needsPointerData) {
309
+ this.sendTouchEvent(event);
310
+ }
311
+ }
278
312
 
279
- onPointerUp(_event) {} // Removing pointer, when there is more than one pointers
313
+ onPointerUp(event) {
314
+ if (this.config.needsPointerData) {
315
+ this.sendTouchEvent(event);
316
+ }
317
+ } // Removing pointer, when there is more than one pointers
280
318
 
281
319
 
282
- onPointerRemove(_event) {}
320
+ onPointerRemove(event) {
321
+ if (this.config.needsPointerData) {
322
+ this.sendTouchEvent(event);
323
+ }
324
+ }
283
325
 
284
326
  onPointerMove(event) {
285
- this.tryToSendMoveEvent(event, false);
327
+ this.tryToSendMoveEvent(false);
328
+
329
+ if (this.config.needsPointerData) {
330
+ this.sendTouchEvent(event);
331
+ }
286
332
  }
287
333
 
288
- onPointerOut(_event) {}
334
+ onPointerOut(event) {
335
+ if (this.config.needsPointerData) {
336
+ this.sendTouchEvent(event);
337
+ }
338
+ }
289
339
 
290
- onPointerEnter(_event) {}
340
+ onPointerEnter(event) {
341
+ if (this.config.needsPointerData) {
342
+ this.sendTouchEvent(event);
343
+ }
344
+ }
291
345
 
292
- onPointerCancel(_event) {}
346
+ onPointerCancel(event) {
347
+ if (this.config.needsPointerData) {
348
+ this.sendTouchEvent(event);
349
+ }
350
+ }
293
351
 
294
352
  onPointerOutOfBounds(event) {
295
- this.tryToSendMoveEvent(event, true);
353
+ this.tryToSendMoveEvent(true);
354
+
355
+ if (this.config.needsPointerData) {
356
+ this.sendTouchEvent(event);
357
+ }
296
358
  }
297
359
 
298
- tryToSendMoveEvent(event, out) {
299
- if (this.currentState === _State.State.ACTIVE && (!out || out && !this.shouldCancellWhenOutside)) {
300
- this.sendEvent(event, this.currentState, this.currentState);
360
+ tryToSendMoveEvent(out) {
361
+ if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) {
362
+ this.sendEvent(this.currentState, this.currentState);
363
+ }
364
+ }
365
+
366
+ sendTouchEvent(event) {
367
+ if (!this.enabled) {
368
+ return;
369
+ }
370
+
371
+ const {
372
+ onGestureHandlerEvent
373
+ } = this.propsRef.current;
374
+ const touchEvent = this.transformTouchEvent(event);
375
+
376
+ if (touchEvent) {
377
+ invokeNullableMethod(onGestureHandlerEvent, touchEvent);
301
378
  }
302
379
  } //
303
380
  // Events Sending
304
381
  //
305
382
 
306
383
 
307
- transformEventData(event, newState, oldState) {
308
- var _this$eventManager;
309
-
384
+ transformEventData(newState, oldState) {
310
385
  return {
311
386
  nativeEvent: {
312
387
  numberOfPointers: this.tracker.getTrackedPointersCount(),
313
388
  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
389
+ pointerInside: (0, _utils.isPointerInBounds)(this.view, {
390
+ x: this.tracker.getLastAvgX(),
391
+ y: this.tracker.getLastAvgY()
317
392
  }),
318
- ...this.transformNativeEvent(event),
393
+ ...this.transformNativeEvent(),
319
394
  handlerTag: this.handlerTag,
320
395
  target: this.ref,
321
396
  oldState: newState !== oldState ? oldState : undefined
@@ -324,7 +399,143 @@ class GestureHandler {
324
399
  };
325
400
  }
326
401
 
327
- transformNativeEvent(_event) {
402
+ transformTouchEvent(event) {
403
+ var _event$touchEventType;
404
+
405
+ const rect = this.view.getBoundingClientRect();
406
+ const all = [];
407
+ const changed = [];
408
+ const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled
409
+ // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled
410
+ // The problem is, that handler will receive another pointercancel event from the rest of the pointers
411
+ // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset
412
+
413
+ if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {
414
+ return;
415
+ }
416
+
417
+ trackerData.forEach((element, key) => {
418
+ const id = this.tracker.getMappedTouchEventId(key);
419
+ all.push({
420
+ id: id,
421
+ x: element.lastX - rect.left,
422
+ y: element.lastY - rect.top,
423
+ absoluteX: element.lastX,
424
+ absoluteY: element.lastY
425
+ });
426
+ }); // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.
427
+ // However, if the event is cancel, we want to cancel all pointers to avoid crashes
428
+
429
+ if (event.eventType !== _interfaces.EventTypes.CANCEL) {
430
+ changed.push({
431
+ id: this.tracker.getMappedTouchEventId(event.pointerId),
432
+ x: event.x - rect.left,
433
+ y: event.y - rect.top,
434
+ absoluteX: event.x,
435
+ absoluteY: event.y
436
+ });
437
+ } else {
438
+ trackerData.forEach((element, key) => {
439
+ const id = this.tracker.getMappedTouchEventId(key);
440
+ changed.push({
441
+ id: id,
442
+ x: element.lastX - rect.left,
443
+ y: element.lastY - rect.top,
444
+ absoluteX: element.lastX,
445
+ absoluteY: element.lastY
446
+ });
447
+ });
448
+ }
449
+
450
+ let eventType = _interfaces.TouchEventType.UNDETERMINED;
451
+
452
+ switch (event.eventType) {
453
+ case _interfaces.EventTypes.DOWN:
454
+ case _interfaces.EventTypes.ADDITIONAL_POINTER_DOWN:
455
+ eventType = _interfaces.TouchEventType.DOWN;
456
+ break;
457
+
458
+ case _interfaces.EventTypes.UP:
459
+ case _interfaces.EventTypes.ADDITIONAL_POINTER_UP:
460
+ eventType = _interfaces.TouchEventType.UP;
461
+ break;
462
+
463
+ case _interfaces.EventTypes.MOVE:
464
+ eventType = _interfaces.TouchEventType.MOVE;
465
+ break;
466
+
467
+ case _interfaces.EventTypes.CANCEL:
468
+ eventType = _interfaces.TouchEventType.CANCELLED;
469
+ break;
470
+ } // Here, when we receive up event, we want to decrease number of touches
471
+ // That's because we want handler to send information that there's one pointer less
472
+ // However, we still want this pointer to be present in allTouches array, so that its data can be accessed
473
+
474
+
475
+ let numberOfTouches = all.length;
476
+
477
+ if (event.eventType === _interfaces.EventTypes.UP || event.eventType === _interfaces.EventTypes.ADDITIONAL_POINTER_UP) {
478
+ --numberOfTouches;
479
+ }
480
+
481
+ return {
482
+ nativeEvent: {
483
+ handlerTag: this.handlerTag,
484
+ state: this.currentState,
485
+ eventType: (_event$touchEventType = event.touchEventType) !== null && _event$touchEventType !== void 0 ? _event$touchEventType : eventType,
486
+ changedTouches: changed,
487
+ allTouches: all,
488
+ numberOfTouches: numberOfTouches
489
+ },
490
+ timeStamp: Date.now()
491
+ };
492
+ }
493
+
494
+ cancelTouches() {
495
+ const rect = this.view.getBoundingClientRect();
496
+ const all = [];
497
+ const changed = [];
498
+ const trackerData = this.tracker.getData();
499
+
500
+ if (trackerData.size === 0) {
501
+ return;
502
+ }
503
+
504
+ trackerData.forEach((element, key) => {
505
+ const id = this.tracker.getMappedTouchEventId(key);
506
+ all.push({
507
+ id: id,
508
+ x: element.lastX - rect.left,
509
+ y: element.lastY - rect.top,
510
+ absoluteX: element.lastX,
511
+ absoluteY: element.lastY
512
+ });
513
+ changed.push({
514
+ id: id,
515
+ x: element.lastX - rect.left,
516
+ y: element.lastY - rect.top,
517
+ absoluteX: element.lastX,
518
+ absoluteY: element.lastY
519
+ });
520
+ });
521
+ const cancelEvent = {
522
+ nativeEvent: {
523
+ handlerTag: this.handlerTag,
524
+ state: this.currentState,
525
+ eventType: _interfaces.TouchEventType.CANCELLED,
526
+ changedTouches: changed,
527
+ allTouches: all,
528
+ numberOfTouches: all.length
529
+ },
530
+ timeStamp: Date.now()
531
+ };
532
+ const {
533
+ onGestureHandlerEvent
534
+ } = this.propsRef.current;
535
+ invokeNullableMethod(onGestureHandlerEvent, cancelEvent);
536
+ }
537
+
538
+ transformNativeEvent() {
328
539
  return {};
329
540
  } //
330
541
  // Handling config
@@ -336,10 +547,30 @@ class GestureHandler {
336
547
  ...props
337
548
  }) {
338
549
  this.config = {
339
- enabled,
550
+ enabled: enabled,
340
551
  ...props
341
552
  };
553
+ this.enabled = enabled;
342
554
  this.validateHitSlops();
555
+
556
+ if (this.enabled) {
557
+ return;
558
+ }
559
+
560
+ switch (this.currentState) {
561
+ case _State.State.ACTIVE:
562
+ this.fail(true);
563
+ break;
564
+
565
+ case _State.State.UNDETERMINED:
566
+ _GestureHandlerOrchestrator.default.getInstance().removeHandlerFromOrchestrator(this);
567
+
568
+ break;
569
+
570
+ default:
571
+ this.cancel(true);
572
+ break;
573
+ }
343
574
  }
344
575
 
345
576
  checkCustomActivationCriteria(criterias) {
@@ -372,8 +603,8 @@ class GestureHandler {
372
603
  }
373
604
  }
374
605
 
375
- checkHitSlop(event) {
376
- if (!this.config.hitSlop || !this.view) {
606
+ checkHitSlop() {
607
+ if (!this.config.hitSlop) {
377
608
  return true;
378
609
  }
379
610
 
@@ -426,13 +657,25 @@ class GestureHandler {
426
657
  }
427
658
  }
428
659
 
429
- if (event.offsetX >= left && event.offsetX <= right && event.offsetY >= top && event.offsetY <= bottom) {
660
+ const rect = this.view.getBoundingClientRect();
661
+ const offsetX = this.tracker.getLastX() - rect.left;
662
+ const offsetY = this.tracker.getLastY() - rect.top;
663
+
664
+ if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
430
665
  return true;
431
666
  }
432
667
 
433
668
  return false;
434
669
  }
435
670
 
671
+ isPointerInBounds({
672
+ x,
673
+ y
674
+ }) {
675
+ const rect = this.view.getBoundingClientRect();
676
+ return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
677
+ }
678
+
436
679
  resetConfig() {} //
437
680
  // Getters and setters
438
681
  //
@@ -458,8 +701,8 @@ class GestureHandler {
458
701
  return this.view;
459
702
  }
460
703
 
461
- getEventManager() {
462
- return this.eventManager;
704
+ getEventManagers() {
705
+ return this.eventManagers;
463
706
  }
464
707
 
465
708
  getTracker() {
@@ -474,14 +717,22 @@ class GestureHandler {
474
717
  return this.currentState;
475
718
  }
476
719
 
477
- setShouldCancelWhenOutside(flag) {
478
- this.shouldCancellWhenOutside = flag;
720
+ isEnabled() {
721
+ return this.enabled;
722
+ }
723
+
724
+ setShouldCancelWhenOutside(shouldCancel) {
725
+ this.shouldCancellWhenOutside = shouldCancel;
479
726
  }
480
727
 
481
728
  getShouldCancelWhenOutside() {
482
729
  return this.shouldCancellWhenOutside;
483
730
  }
484
731
 
732
+ getPointerType() {
733
+ return this.pointerType;
734
+ }
735
+
485
736
  }
486
737
 
487
738
  exports.default = GestureHandler;