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.
- 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 +22 -13
- 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.js +6 -4
- package/lib/commonjs/components/GestureComponents.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/components/Swipeable.js +4 -4
- package/lib/commonjs/components/Swipeable.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 +4 -2
- 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/utils.js +10 -6
- package/lib/commonjs/utils.js.map +1 -1
- 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 +330 -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 +21 -14
- 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.js +6 -4
- package/lib/module/components/GestureComponents.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/components/Swipeable.js +4 -4
- package/lib/module/components/Swipeable.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 +5 -3
- 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/utils.js +7 -6
- package/lib/module/utils.js.map +1 -1
- 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 +324 -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 +6 -3
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +5 -2
- package/lib/typescript/components/Swipeable.d.ts +3 -3
- 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/utils.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 +42 -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 +28 -13
- package/src/RNGestureHandlerModule.ts +4 -1
- package/src/RNGestureHandlerModule.web.ts +20 -7
- package/src/components/GestureComponents.tsx +12 -16
- package/src/components/GestureComponents.web.tsx +1 -1
- package/src/components/Swipeable.tsx +11 -7
- package/src/fabric/RNGestureHandlerButtonNativeComponent.ts +2 -12
- package/src/fabric/RNGestureHandlerRootViewNativeComponent.ts +2 -8
- package/src/handlers/gestures/GestureDetector.tsx +8 -4
- package/src/handlers/gestures/eventReceiver.ts +23 -24
- package/src/handlers/gestures/gestureStateManager.web.ts +24 -0
- package/src/utils.ts +6 -6
- 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 +365 -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, "
|
|
53
|
+
_defineProperty(this, "view", void 0);
|
|
44
54
|
|
|
45
|
-
_defineProperty(this, "
|
|
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, "
|
|
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,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,
|
|
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,
|
|
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(
|
|
164
|
-
if (!this.checkHitSlop(
|
|
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
|
|
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(
|
|
185
|
+
fail(sendIfDisabled) {
|
|
174
186
|
if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
|
|
175
|
-
this.moveToState(_State.State.FAILED,
|
|
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
|
-
|
|
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,
|
|
201
|
+
this.moveToState(_State.State.CANCELLED, sendIfDisabled);
|
|
202
|
+
this.view.style.cursor = 'auto';
|
|
185
203
|
}
|
|
186
204
|
}
|
|
187
205
|
|
|
188
|
-
activate(
|
|
206
|
+
activate(_force = false) {
|
|
189
207
|
if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
|
|
190
|
-
this.moveToState(_State.State.ACTIVE
|
|
208
|
+
this.moveToState(_State.State.ACTIVE);
|
|
209
|
+
this.view.style.cursor = 'grab';
|
|
191
210
|
}
|
|
192
211
|
}
|
|
193
212
|
|
|
194
|
-
end(
|
|
213
|
+
end() {
|
|
195
214
|
if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
|
|
196
|
-
this.moveToState(_State.State.END
|
|
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
|
|
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
|
|
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
|
|
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
|
|
286
|
+
return _InteractionManager.default.getInstance().shouldHandlerBeCancelledBy(this, handler);
|
|
267
287
|
} //
|
|
268
288
|
// Event actions
|
|
269
289
|
//
|
|
270
290
|
|
|
271
291
|
|
|
272
|
-
onPointerDown(
|
|
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(
|
|
307
|
+
onPointerAdd(event) {
|
|
308
|
+
if (this.config.needsPointerData) {
|
|
309
|
+
this.sendTouchEvent(event);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
278
312
|
|
|
279
|
-
onPointerUp(
|
|
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(
|
|
320
|
+
onPointerRemove(event) {
|
|
321
|
+
if (this.config.needsPointerData) {
|
|
322
|
+
this.sendTouchEvent(event);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
283
325
|
|
|
284
326
|
onPointerMove(event) {
|
|
285
|
-
this.tryToSendMoveEvent(
|
|
327
|
+
this.tryToSendMoveEvent(false);
|
|
328
|
+
|
|
329
|
+
if (this.config.needsPointerData) {
|
|
330
|
+
this.sendTouchEvent(event);
|
|
331
|
+
}
|
|
286
332
|
}
|
|
287
333
|
|
|
288
|
-
onPointerOut(
|
|
334
|
+
onPointerOut(event) {
|
|
335
|
+
if (this.config.needsPointerData) {
|
|
336
|
+
this.sendTouchEvent(event);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
289
339
|
|
|
290
|
-
onPointerEnter(
|
|
340
|
+
onPointerEnter(event) {
|
|
341
|
+
if (this.config.needsPointerData) {
|
|
342
|
+
this.sendTouchEvent(event);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
291
345
|
|
|
292
|
-
onPointerCancel(
|
|
346
|
+
onPointerCancel(event) {
|
|
347
|
+
if (this.config.needsPointerData) {
|
|
348
|
+
this.sendTouchEvent(event);
|
|
349
|
+
}
|
|
350
|
+
}
|
|
293
351
|
|
|
294
352
|
onPointerOutOfBounds(event) {
|
|
295
|
-
this.tryToSendMoveEvent(
|
|
353
|
+
this.tryToSendMoveEvent(true);
|
|
354
|
+
|
|
355
|
+
if (this.config.needsPointerData) {
|
|
356
|
+
this.sendTouchEvent(event);
|
|
357
|
+
}
|
|
296
358
|
}
|
|
297
359
|
|
|
298
|
-
tryToSendMoveEvent(
|
|
299
|
-
if (this.
|
|
300
|
-
this.sendEvent(
|
|
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(
|
|
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: (
|
|
315
|
-
x:
|
|
316
|
-
y:
|
|
389
|
+
pointerInside: (0, _utils.isPointerInBounds)(this.view, {
|
|
390
|
+
x: this.tracker.getLastAvgX(),
|
|
391
|
+
y: this.tracker.getLastAvgY()
|
|
317
392
|
}),
|
|
318
|
-
...this.transformNativeEvent(
|
|
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
|
-
|
|
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(
|
|
376
|
-
if (!this.config.hitSlop
|
|
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
|
-
|
|
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
|
-
|
|
462
|
-
return this.
|
|
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
|
-
|
|
478
|
-
this.
|
|
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;
|