react-native-gesture-handler 2.6.0 → 2.6.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (196) hide show
  1. package/android/build.gradle +2 -2
  2. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  3. package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  4. package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
  5. package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
  6. package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
  7. package/lib/commonjs/RNGestureHandlerModule.js +1 -1
  8. package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
  9. package/lib/commonjs/RNGestureHandlerModule.macos.js +22 -13
  10. package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
  11. package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
  12. package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
  13. package/lib/commonjs/components/GestureComponents.js +6 -4
  14. package/lib/commonjs/components/GestureComponents.js.map +1 -1
  15. package/lib/commonjs/components/GestureComponents.web.js +1 -1
  16. package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
  17. package/lib/commonjs/components/Swipeable.js +4 -4
  18. package/lib/commonjs/components/Swipeable.js.map +1 -1
  19. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  20. package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  21. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
  22. package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  23. package/lib/commonjs/handlers/gestures/GestureDetector.js +4 -2
  24. package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
  25. package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
  26. package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
  27. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
  28. package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
  29. package/lib/commonjs/utils.js +10 -6
  30. package/lib/commonjs/utils.js.map +1 -1
  31. package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
  32. package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
  33. package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
  34. package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
  35. package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
  36. package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
  37. package/lib/commonjs/web/handlers/GestureHandler.js +330 -79
  38. package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
  39. package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
  40. package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
  41. package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
  42. package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
  43. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
  44. package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
  45. package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
  46. package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
  47. package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
  48. package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
  49. package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
  50. package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
  51. package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
  52. package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
  53. package/lib/commonjs/web/interfaces.js +22 -1
  54. package/lib/commonjs/web/interfaces.js.map +1 -1
  55. package/lib/commonjs/web/tools/EventManager.js +40 -96
  56. package/lib/commonjs/web/tools/EventManager.js.map +1 -1
  57. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
  58. package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  59. package/lib/commonjs/web/tools/InteractionManager.js +24 -10
  60. package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
  61. package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
  62. package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
  63. package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
  64. package/lib/commonjs/web/tools/PointerTracker.js +97 -7
  65. package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
  66. package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
  67. package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
  68. package/lib/commonjs/web/utils.js +15 -0
  69. package/lib/commonjs/web/utils.js.map +1 -0
  70. package/lib/module/EnableExperimentalWebImplementation.js +5 -0
  71. package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
  72. package/lib/module/RNGestureHandlerModule.js +1 -1
  73. package/lib/module/RNGestureHandlerModule.js.map +1 -1
  74. package/lib/module/RNGestureHandlerModule.macos.js +21 -14
  75. package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
  76. package/lib/module/RNGestureHandlerModule.web.js +22 -11
  77. package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
  78. package/lib/module/components/GestureComponents.js +6 -4
  79. package/lib/module/components/GestureComponents.js.map +1 -1
  80. package/lib/module/components/GestureComponents.web.js +1 -1
  81. package/lib/module/components/GestureComponents.web.js.map +1 -1
  82. package/lib/module/components/Swipeable.js +4 -4
  83. package/lib/module/components/Swipeable.js.map +1 -1
  84. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
  85. package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
  86. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
  87. package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
  88. package/lib/module/handlers/gestures/GestureDetector.js +5 -3
  89. package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
  90. package/lib/module/handlers/gestures/eventReceiver.js +14 -20
  91. package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
  92. package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
  93. package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
  94. package/lib/module/utils.js +7 -6
  95. package/lib/module/utils.js.map +1 -1
  96. package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
  97. package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
  98. package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
  99. package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
  100. package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
  101. package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
  102. package/lib/module/web/handlers/GestureHandler.js +324 -79
  103. package/lib/module/web/handlers/GestureHandler.js.map +1 -1
  104. package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
  105. package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
  106. package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
  107. package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
  108. package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
  109. package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
  110. package/lib/module/web/handlers/PanGestureHandler.js +57 -41
  111. package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
  112. package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
  113. package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
  114. package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
  115. package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
  116. package/lib/module/web/handlers/TapGestureHandler.js +52 -50
  117. package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
  118. package/lib/module/web/interfaces.js +19 -0
  119. package/lib/module/web/interfaces.js.map +1 -1
  120. package/lib/module/web/tools/EventManager.js +39 -95
  121. package/lib/module/web/tools/EventManager.js.map +1 -1
  122. package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
  123. package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
  124. package/lib/module/web/tools/InteractionManager.js +24 -10
  125. package/lib/module/web/tools/InteractionManager.js.map +1 -1
  126. package/lib/module/web/tools/NodeManager.js.map +1 -1
  127. package/lib/module/web/tools/PointerEventManager.js +116 -0
  128. package/lib/module/web/tools/PointerEventManager.js.map +1 -0
  129. package/lib/module/web/tools/PointerTracker.js +97 -7
  130. package/lib/module/web/tools/PointerTracker.js.map +1 -1
  131. package/lib/module/web/tools/TouchEventManager.js +124 -0
  132. package/lib/module/web/tools/TouchEventManager.js.map +1 -0
  133. package/lib/module/web/utils.js +8 -0
  134. package/lib/module/web/utils.js.map +1 -0
  135. package/lib/typescript/RNGestureHandlerModule.macos.d.ts +6 -3
  136. package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
  137. package/lib/typescript/components/Swipeable.d.ts +3 -3
  138. package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
  139. package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
  140. package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
  141. package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
  142. package/lib/typescript/utils.d.ts +4 -0
  143. package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
  144. package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
  145. package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
  146. package/lib/typescript/web/handlers/GestureHandler.d.ts +42 -32
  147. package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
  148. package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
  149. package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
  150. package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
  151. package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
  152. package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
  153. package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
  154. package/lib/typescript/web/interfaces.d.ts +50 -10
  155. package/lib/typescript/web/tools/EventManager.d.ts +28 -26
  156. package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
  157. package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
  158. package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
  159. package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
  160. package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
  161. package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
  162. package/lib/typescript/web/utils.d.ts +4 -0
  163. package/package.json +2 -2
  164. package/src/EnableExperimentalWebImplementation.ts +9 -0
  165. package/src/RNGestureHandlerModule.macos.ts +28 -13
  166. package/src/RNGestureHandlerModule.ts +4 -1
  167. package/src/RNGestureHandlerModule.web.ts +20 -7
  168. package/src/components/GestureComponents.tsx +12 -16
  169. package/src/components/GestureComponents.web.tsx +1 -1
  170. package/src/components/Swipeable.tsx +11 -7
  171. package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
  172. package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
  173. package/src/handlers/gestures/GestureDetector.tsx +8 -4
  174. package/src/handlers/gestures/eventReceiver.ts +23 -24
  175. package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
  176. package/src/utils.ts +6 -6
  177. package/src/web/detectors/RotationGestureDetector.ts +20 -52
  178. package/src/web/detectors/ScaleGestureDetector.ts +9 -45
  179. package/src/web/handlers/FlingGestureHandler.ts +45 -22
  180. package/src/web/handlers/GestureHandler.ts +365 -97
  181. package/src/web/handlers/LongPressGestureHandler.ts +30 -24
  182. package/src/web/handlers/ManualGestureHandler.ts +39 -0
  183. package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
  184. package/src/web/handlers/PanGestureHandler.ts +68 -53
  185. package/src/web/handlers/PinchGestureHandler.ts +47 -44
  186. package/src/web/handlers/RotationGestureHandler.ts +52 -51
  187. package/src/web/handlers/TapGestureHandler.ts +74 -56
  188. package/src/web/interfaces.ts +57 -10
  189. package/src/web/tools/EventManager.ts +58 -148
  190. package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
  191. package/src/web/tools/InteractionManager.ts +25 -9
  192. package/src/web/tools/NodeManager.ts +6 -6
  193. package/src/web/tools/PointerEventManager.ts +134 -0
  194. package/src/web/tools/PointerTracker.ts +120 -10
  195. package/src/web/tools/TouchEventManager.ts +167 -0
  196. package/src/web/utils.ts +8 -0
@@ -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;