react-native-gesture-handler 2.6.0 → 2.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +2 -2
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
- package/ios/RNGestureHandler.xcodeproj/project.xcworkspace/xcuserdata/jakubpiasecki.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/RNGestureHandler.xcodeproj/xcuserdata/jakubpiasecki.xcuserdatad/xcschemes/xcschememanagement.plist +19 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js +7 -0
- package/lib/commonjs/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js +1 -1
- package/lib/commonjs/RNGestureHandlerModule.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js +20 -9
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +23 -10
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/components/GestureComponents.web.js +1 -1
- package/lib/commonjs/components/GestureComponents.web.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -5
- package/lib/commonjs/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/eventReceiver.js +14 -20
- package/lib/commonjs/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js +32 -0
- package/lib/commonjs/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/commonjs/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/commonjs/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/commonjs/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +282 -79
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/ManualGestureHandler.js +51 -0
- package/lib/commonjs/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +81 -22
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +57 -40
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PinchGestureHandler.js +43 -34
- package/lib/commonjs/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/RotationGestureHandler.js +45 -39
- package/lib/commonjs/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +52 -50
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +22 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +40 -96
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +109 -30
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/InteractionManager.js +24 -10
- package/lib/commonjs/web/tools/InteractionManager.js.map +1 -1
- package/lib/commonjs/web/tools/NodeManager.js.map +1 -1
- package/lib/commonjs/web/tools/PointerEventManager.js +130 -0
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -0
- package/lib/commonjs/web/tools/PointerTracker.js +97 -7
- package/lib/commonjs/web/tools/PointerTracker.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +138 -0
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -0
- package/lib/commonjs/web/utils.js +15 -0
- package/lib/commonjs/web/utils.js.map +1 -0
- package/lib/module/EnableExperimentalWebImplementation.js +5 -0
- package/lib/module/EnableExperimentalWebImplementation.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.js +1 -1
- package/lib/module/RNGestureHandlerModule.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +19 -10
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +22 -11
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/components/GestureComponents.web.js +1 -1
- package/lib/module/components/GestureComponents.web.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js +1 -5
- package/lib/module/fabric/RNGestureHandlerButtonNativeComponent.js.map +1 -1
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js +1 -4
- package/lib/module/fabric/RNGestureHandlerRootViewNativeComponent.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/eventReceiver.js +14 -20
- package/lib/module/handlers/gestures/eventReceiver.js.map +1 -1
- package/lib/module/handlers/gestures/gestureStateManager.web.js +21 -0
- package/lib/module/handlers/gestures/gestureStateManager.web.js.map +1 -0
- package/lib/module/web/detectors/RotationGestureDetector.js +13 -17
- package/lib/module/web/detectors/RotationGestureDetector.js.map +1 -1
- package/lib/module/web/detectors/ScaleGestureDetector.js +3 -14
- package/lib/module/web/detectors/ScaleGestureDetector.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +37 -12
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +276 -79
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/LongPressGestureHandler.js +23 -18
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/ManualGestureHandler.js +39 -0
- package/lib/module/web/handlers/ManualGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/NativeViewGestureHandler.js +80 -22
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +57 -41
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PinchGestureHandler.js +43 -33
- package/lib/module/web/handlers/PinchGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/RotationGestureHandler.js +45 -38
- package/lib/module/web/handlers/RotationGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +52 -50
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +19 -0
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +39 -95
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +107 -30
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/InteractionManager.js +24 -10
- package/lib/module/web/tools/InteractionManager.js.map +1 -1
- package/lib/module/web/tools/NodeManager.js.map +1 -1
- package/lib/module/web/tools/PointerEventManager.js +116 -0
- package/lib/module/web/tools/PointerEventManager.js.map +1 -0
- package/lib/module/web/tools/PointerTracker.js +97 -7
- package/lib/module/web/tools/PointerTracker.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +124 -0
- package/lib/module/web/tools/TouchEventManager.js.map +1 -0
- package/lib/module/web/utils.js +8 -0
- package/lib/module/web/utils.js.map +1 -0
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +5 -2
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +1 -1
- package/lib/typescript/fabric/RNGestureHandlerButtonNativeComponent.d.ts +3 -3
- package/lib/typescript/fabric/RNGestureHandlerRootViewNativeComponent.d.ts +3 -2
- package/lib/typescript/handlers/gestures/gestureStateManager.web.d.ts +4 -0
- package/lib/typescript/web/detectors/RotationGestureDetector.d.ts +7 -7
- package/lib/typescript/web/detectors/ScaleGestureDetector.d.ts +6 -7
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +12 -10
- package/lib/typescript/web/handlers/GestureHandler.d.ts +41 -32
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +6 -9
- package/lib/typescript/web/handlers/ManualGestureHandler.d.ts +11 -0
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +15 -6
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +15 -23
- package/lib/typescript/web/handlers/PinchGestureHandler.d.ts +11 -12
- package/lib/typescript/web/handlers/RotationGestureHandler.d.ts +12 -12
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +11 -14
- package/lib/typescript/web/interfaces.d.ts +50 -10
- package/lib/typescript/web/tools/EventManager.d.ts +28 -26
- package/lib/typescript/web/tools/GestureHandlerOrchestrator.d.ts +4 -2
- package/lib/typescript/web/tools/InteractionManager.d.ts +3 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +3 -3
- package/lib/typescript/web/tools/PointerEventManager.d.ts +6 -0
- package/lib/typescript/web/tools/PointerTracker.d.ts +29 -5
- package/lib/typescript/web/tools/TouchEventManager.d.ts +6 -0
- package/lib/typescript/web/utils.d.ts +4 -0
- package/package.json +2 -2
- package/src/EnableExperimentalWebImplementation.ts +9 -0
- package/src/RNGestureHandlerModule.macos.ts +25 -10
- package/src/RNGestureHandlerModule.ts +4 -1
- package/src/RNGestureHandlerModule.web.ts +20 -7
- package/src/components/GestureComponents.web.tsx +1 -1
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
- package/src/handlers/gestures/GestureDetector.tsx +0 -1
- package/src/handlers/gestures/eventReceiver.ts +23 -24
- package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
- package/src/web/detectors/RotationGestureDetector.ts +20 -52
- package/src/web/detectors/ScaleGestureDetector.ts +9 -45
- package/src/web/handlers/FlingGestureHandler.ts +45 -22
- package/src/web/handlers/GestureHandler.ts +306 -97
- package/src/web/handlers/LongPressGestureHandler.ts +30 -24
- package/src/web/handlers/ManualGestureHandler.ts +39 -0
- package/src/web/handlers/NativeViewGestureHandler.ts +81 -24
- package/src/web/handlers/PanGestureHandler.ts +68 -53
- package/src/web/handlers/PinchGestureHandler.ts +47 -44
- package/src/web/handlers/RotationGestureHandler.ts +52 -51
- package/src/web/handlers/TapGestureHandler.ts +74 -56
- package/src/web/interfaces.ts +57 -10
- package/src/web/tools/EventManager.ts +58 -148
- package/src/web/tools/GestureHandlerOrchestrator.ts +115 -47
- package/src/web/tools/InteractionManager.ts +25 -9
- package/src/web/tools/NodeManager.ts +6 -6
- package/src/web/tools/PointerEventManager.ts +134 -0
- package/src/web/tools/PointerTracker.ts +120 -10
- package/src/web/tools/TouchEventManager.ts +167 -0
- 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
|
|
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, "
|
|
44
|
-
|
|
45
|
-
_defineProperty(this, "view", null);
|
|
53
|
+
_defineProperty(this, "view", void 0);
|
|
46
54
|
|
|
47
|
-
_defineProperty(this, "
|
|
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, "
|
|
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(
|
|
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(
|
|
93
|
-
this.
|
|
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(
|
|
97
|
-
if (!ref) {
|
|
98
|
-
this.
|
|
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
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
this.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
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,
|
|
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,
|
|
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(
|
|
164
|
-
if (!this.checkHitSlop(
|
|
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
|
|
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(
|
|
181
|
+
fail(sendIfDisabled) {
|
|
174
182
|
if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
|
|
175
|
-
this.moveToState(_State.State.FAILED,
|
|
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
|
-
|
|
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,
|
|
197
|
+
this.moveToState(_State.State.CANCELLED, sendIfDisabled);
|
|
198
|
+
this.view.style.cursor = 'auto';
|
|
185
199
|
}
|
|
186
200
|
}
|
|
187
201
|
|
|
188
|
-
activate(
|
|
202
|
+
activate(_force = false) {
|
|
189
203
|
if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
|
|
190
|
-
this.moveToState(_State.State.ACTIVE
|
|
204
|
+
this.moveToState(_State.State.ACTIVE);
|
|
205
|
+
this.view.style.cursor = 'grab';
|
|
191
206
|
}
|
|
192
207
|
}
|
|
193
208
|
|
|
194
|
-
end(
|
|
209
|
+
end() {
|
|
195
210
|
if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
|
|
196
|
-
this.moveToState(_State.State.END
|
|
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
|
|
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
|
|
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
|
|
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
|
|
282
|
+
return _InteractionManager.default.getInstance().shouldHandlerBeCancelledBy(this, handler);
|
|
267
283
|
} //
|
|
268
284
|
// Event actions
|
|
269
285
|
//
|
|
270
286
|
|
|
271
287
|
|
|
272
|
-
onPointerDown(
|
|
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(
|
|
303
|
+
onPointerAdd(event) {
|
|
304
|
+
if (this.config.needsPointerData) {
|
|
305
|
+
this.sendTouchEvent(event);
|
|
306
|
+
}
|
|
307
|
+
}
|
|
278
308
|
|
|
279
|
-
onPointerUp(
|
|
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(
|
|
316
|
+
onPointerRemove(event) {
|
|
317
|
+
if (this.config.needsPointerData) {
|
|
318
|
+
this.sendTouchEvent(event);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
283
321
|
|
|
284
322
|
onPointerMove(event) {
|
|
285
|
-
this.tryToSendMoveEvent(
|
|
323
|
+
this.tryToSendMoveEvent(false);
|
|
324
|
+
|
|
325
|
+
if (this.config.needsPointerData) {
|
|
326
|
+
this.sendTouchEvent(event);
|
|
327
|
+
}
|
|
286
328
|
}
|
|
287
329
|
|
|
288
|
-
onPointerOut(
|
|
330
|
+
onPointerOut(event) {
|
|
331
|
+
if (this.config.needsPointerData) {
|
|
332
|
+
this.sendTouchEvent(event);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
289
335
|
|
|
290
|
-
onPointerEnter(
|
|
336
|
+
onPointerEnter(event) {
|
|
337
|
+
if (this.config.needsPointerData) {
|
|
338
|
+
this.sendTouchEvent(event);
|
|
339
|
+
}
|
|
340
|
+
}
|
|
291
341
|
|
|
292
|
-
onPointerCancel(
|
|
342
|
+
onPointerCancel(event) {
|
|
343
|
+
if (this.config.needsPointerData) {
|
|
344
|
+
this.sendTouchEvent(event);
|
|
345
|
+
}
|
|
346
|
+
}
|
|
293
347
|
|
|
294
348
|
onPointerOutOfBounds(event) {
|
|
295
|
-
this.tryToSendMoveEvent(
|
|
349
|
+
this.tryToSendMoveEvent(true);
|
|
350
|
+
|
|
351
|
+
if (this.config.needsPointerData) {
|
|
352
|
+
this.sendTouchEvent(event);
|
|
353
|
+
}
|
|
296
354
|
}
|
|
297
355
|
|
|
298
|
-
tryToSendMoveEvent(
|
|
299
|
-
if (this.
|
|
300
|
-
this.sendEvent(
|
|
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(
|
|
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: (
|
|
315
|
-
x:
|
|
316
|
-
y:
|
|
385
|
+
pointerInside: (0, _utils.isPointerInBounds)(this.view, {
|
|
386
|
+
x: this.tracker.getLastAvgX(),
|
|
387
|
+
y: this.tracker.getLastAvgY()
|
|
317
388
|
}),
|
|
318
|
-
...this.transformNativeEvent(
|
|
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
|
-
|
|
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(
|
|
376
|
-
if (!this.config.hitSlop
|
|
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
|
-
|
|
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
|
-
|
|
462
|
-
return this.
|
|
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
|
-
|
|
478
|
-
this.
|
|
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;
|