react-native-gesture-handler 2.12.1 → 2.13.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/RNGestureHandler.podspec +0 -15
- package/android/build.gradle +5 -76
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandler.kt +16 -1
- package/android/src/main/java/com/swmansion/gesturehandler/core/GestureHandlerOrchestrator.kt +43 -18
- package/android/src/main/java/com/swmansion/gesturehandler/core/HoverGestureHandler.kt +120 -0
- package/android/src/main/java/com/swmansion/gesturehandler/core/NativeViewGestureHandler.kt +7 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/Extensions.kt +5 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerButtonViewManager.kt +43 -16
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerModule.kt +21 -0
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootHelper.kt +9 -1
- package/android/src/main/java/com/swmansion/gesturehandler/react/RNGestureHandlerRootView.kt +10 -0
- package/ios/Handlers/RNHoverHandler.h +12 -0
- package/ios/Handlers/RNHoverHandler.m +152 -0
- package/ios/RNGestureHandlerButtonComponentView.mm +2 -0
- package/ios/RNGestureHandlerEvents.h +1 -0
- package/ios/RNGestureHandlerEvents.m +10 -0
- package/ios/RNGestureHandlerManager.mm +2 -0
- package/ios/RNManualActivationRecognizer.m +2 -1
- package/ios/RNRootViewGestureRecognizer.m +7 -2
- package/lib/commonjs/RNGestureHandlerModule.macos.js +3 -1
- package/lib/commonjs/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.web.js +7 -2
- package/lib/commonjs/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js +3 -1
- package/lib/commonjs/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/commonjs/components/DrawerLayout.js +1 -0
- package/lib/commonjs/components/DrawerLayout.js.map +1 -1
- package/lib/commonjs/components/touchables/GenericTouchable.js +1 -2
- package/lib/commonjs/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/commonjs/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/commonjs/components/touchables/index.js.map +1 -1
- package/lib/commonjs/handlers/createHandler.js +3 -3
- package/lib/commonjs/handlers/createHandler.js.map +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js +1 -1
- package/lib/commonjs/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js +3 -1
- package/lib/commonjs/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gesture.js +5 -0
- package/lib/commonjs/handlers/gestures/gesture.js.map +1 -1
- package/lib/commonjs/handlers/gestures/gestureObjects.js +5 -0
- package/lib/commonjs/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/commonjs/handlers/gestures/hoverGesture.js +74 -0
- package/lib/commonjs/handlers/gestures/hoverGesture.js.map +1 -0
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/web/handlers/FlingGestureHandler.js +0 -10
- package/lib/commonjs/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/GestureHandler.js +61 -88
- package/lib/commonjs/web/handlers/GestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/HoverGestureHandler.js +62 -0
- package/lib/commonjs/web/handlers/HoverGestureHandler.js.map +1 -0
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js +6 -7
- package/lib/commonjs/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js +12 -4
- package/lib/commonjs/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/PanGestureHandler.js +2 -7
- package/lib/commonjs/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/commonjs/web/handlers/TapGestureHandler.js +0 -10
- package/lib/commonjs/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/commonjs/web/interfaces.js +1 -1
- package/lib/commonjs/web/interfaces.js.map +1 -1
- package/lib/commonjs/web/tools/EventManager.js +18 -4
- package/lib/commonjs/web/tools/EventManager.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerDelegate.js +6 -0
- package/lib/commonjs/web/tools/GestureHandlerDelegate.js.map +1 -0
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js +5 -7
- package/lib/commonjs/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js +118 -0
- package/lib/commonjs/web/tools/GestureHandlerWebDelegate.js.map +1 -0
- package/lib/commonjs/web/tools/PointerEventManager.js +38 -5
- package/lib/commonjs/web/tools/PointerEventManager.js.map +1 -1
- package/lib/commonjs/web/tools/TouchEventManager.js +2 -2
- package/lib/commonjs/web/tools/TouchEventManager.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.macos.js +2 -1
- package/lib/module/RNGestureHandlerModule.macos.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.web.js +6 -3
- package/lib/module/RNGestureHandlerModule.web.js.map +1 -1
- package/lib/module/RNGestureHandlerModule.windows.js +2 -1
- package/lib/module/RNGestureHandlerModule.windows.js.map +1 -1
- package/lib/module/components/DrawerLayout.js +1 -0
- package/lib/module/components/DrawerLayout.js.map +1 -1
- package/lib/module/components/touchables/GenericTouchable.js +1 -2
- package/lib/module/components/touchables/GenericTouchable.js.map +1 -1
- package/lib/module/components/touchables/TouchableHighlight.js.map +1 -1
- package/lib/module/components/touchables/TouchableNativeFeedback.android.js.map +1 -1
- package/lib/module/components/touchables/TouchableOpacity.js.map +1 -1
- package/lib/module/components/touchables/TouchableWithoutFeedback.js.map +1 -1
- package/lib/module/components/touchables/index.js.map +1 -1
- package/lib/module/handlers/createHandler.js +3 -3
- package/lib/module/handlers/createHandler.js.map +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js +1 -1
- package/lib/module/handlers/gestureHandlerCommon.js.map +1 -1
- package/lib/module/handlers/gestures/GestureDetector.js +2 -1
- package/lib/module/handlers/gestures/GestureDetector.js.map +1 -1
- package/lib/module/handlers/gestures/gesture.js +5 -0
- package/lib/module/handlers/gestures/gesture.js.map +1 -1
- package/lib/module/handlers/gestures/gestureObjects.js +4 -0
- package/lib/module/handlers/gestures/gestureObjects.js.map +1 -1
- package/lib/module/handlers/gestures/hoverGesture.js +62 -0
- package/lib/module/handlers/gestures/hoverGesture.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/web/handlers/FlingGestureHandler.js +0 -10
- package/lib/module/web/handlers/FlingGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/GestureHandler.js +61 -84
- package/lib/module/web/handlers/GestureHandler.js.map +1 -1
- package/lib/module/web/handlers/HoverGestureHandler.js +47 -0
- package/lib/module/web/handlers/HoverGestureHandler.js.map +1 -0
- package/lib/module/web/handlers/LongPressGestureHandler.js +5 -7
- package/lib/module/web/handlers/LongPressGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/NativeViewGestureHandler.js +11 -4
- package/lib/module/web/handlers/NativeViewGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/PanGestureHandler.js +2 -7
- package/lib/module/web/handlers/PanGestureHandler.js.map +1 -1
- package/lib/module/web/handlers/TapGestureHandler.js +0 -10
- package/lib/module/web/handlers/TapGestureHandler.js.map +1 -1
- package/lib/module/web/interfaces.js +1 -1
- package/lib/module/web/interfaces.js.map +1 -1
- package/lib/module/web/tools/EventManager.js +18 -4
- package/lib/module/web/tools/EventManager.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerDelegate.js +2 -0
- package/lib/module/web/tools/GestureHandlerDelegate.js.map +1 -0
- package/lib/module/web/tools/GestureHandlerOrchestrator.js +5 -6
- package/lib/module/web/tools/GestureHandlerOrchestrator.js.map +1 -1
- package/lib/module/web/tools/GestureHandlerWebDelegate.js +102 -0
- package/lib/module/web/tools/GestureHandlerWebDelegate.js.map +1 -0
- package/lib/module/web/tools/PointerEventManager.js +39 -6
- package/lib/module/web/tools/PointerEventManager.js.map +1 -1
- package/lib/module/web/tools/TouchEventManager.js +2 -2
- package/lib/module/web/tools/TouchEventManager.js.map +1 -1
- package/lib/typescript/RNGestureHandlerModule.macos.d.ts +1 -1
- package/lib/typescript/RNGestureHandlerModule.web.d.ts +3 -1
- package/lib/typescript/RNGestureHandlerModule.windows.d.ts +1 -1
- package/lib/typescript/components/DrawerLayout.d.ts +7 -1
- package/lib/typescript/components/touchables/GenericTouchable.d.ts +3 -2
- package/lib/typescript/components/touchables/TouchableHighlight.d.ts +4 -3
- package/lib/typescript/components/touchables/TouchableNativeFeedback.android.d.ts +3 -2
- package/lib/typescript/components/touchables/TouchableOpacity.d.ts +4 -5
- package/lib/typescript/components/touchables/TouchableWithoutFeedback.d.ts +1 -0
- package/lib/typescript/components/touchables/index.d.ts +3 -0
- package/lib/typescript/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/handlers/gestureHandlerCommon.d.ts +3 -1
- package/lib/typescript/handlers/gestures/gesture.d.ts +2 -1
- package/lib/typescript/handlers/gestures/gestureObjects.d.ts +2 -0
- package/lib/typescript/handlers/gestures/hoverGesture.d.ts +32 -0
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/web/handlers/FlingGestureHandler.d.ts +0 -6
- package/lib/typescript/web/handlers/GestureHandler.d.ts +12 -17
- package/lib/typescript/web/handlers/HoverGestureHandler.d.ts +10 -0
- package/lib/typescript/web/handlers/LongPressGestureHandler.d.ts +0 -4
- package/lib/typescript/web/handlers/NativeViewGestureHandler.d.ts +1 -1
- package/lib/typescript/web/handlers/PanGestureHandler.d.ts +0 -4
- package/lib/typescript/web/handlers/TapGestureHandler.d.ts +0 -6
- package/lib/typescript/web/interfaces.d.ts +4 -3
- package/lib/typescript/web/tools/EventManager.d.ts +9 -5
- package/lib/typescript/web/tools/GestureHandlerDelegate.d.ts +22 -0
- package/lib/typescript/web/tools/GestureHandlerWebDelegate.d.ts +21 -0
- package/lib/typescript/web/tools/NodeManager.d.ts +2 -2
- package/lib/typescript/web/tools/PointerEventManager.d.ts +1 -1
- package/lib/typescript/web/tools/TouchEventManager.d.ts +1 -1
- package/package.json +2 -2
- package/src/RNGestureHandlerModule.macos.ts +5 -1
- package/src/RNGestureHandlerModule.web.ts +7 -1
- package/src/RNGestureHandlerModule.windows.ts +5 -1
- package/src/components/DrawerLayout.tsx +9 -0
- package/src/components/touchables/GenericTouchable.tsx +4 -4
- package/src/components/touchables/TouchableHighlight.tsx +6 -3
- package/src/components/touchables/TouchableNativeFeedback.android.tsx +5 -4
- package/src/components/touchables/TouchableOpacity.tsx +6 -7
- package/src/components/touchables/TouchableWithoutFeedback.tsx +3 -1
- package/src/components/touchables/index.ts +3 -0
- package/src/handlers/createHandler.tsx +4 -2
- package/src/handlers/gestureHandlerCommon.ts +39 -0
- package/src/handlers/gestures/GestureDetector.tsx +2 -0
- package/src/handlers/gestures/gesture.ts +6 -0
- package/src/handlers/gestures/gestureObjects.ts +5 -0
- package/src/handlers/gestures/hoverGesture.ts +83 -0
- package/src/index.ts +8 -0
- package/src/web/handlers/FlingGestureHandler.ts +0 -11
- package/src/web/handlers/GestureHandler.ts +68 -88
- package/src/web/handlers/HoverGestureHandler.ts +43 -0
- package/src/web/handlers/LongPressGestureHandler.ts +5 -7
- package/src/web/handlers/NativeViewGestureHandler.ts +11 -4
- package/src/web/handlers/PanGestureHandler.ts +1 -6
- package/src/web/handlers/TapGestureHandler.ts +0 -11
- package/src/web/interfaces.ts +4 -2
- package/src/web/tools/EventManager.ts +15 -7
- package/src/web/tools/GestureHandlerDelegate.ts +23 -0
- package/src/web/tools/GestureHandlerOrchestrator.ts +7 -6
- package/src/web/tools/GestureHandlerWebDelegate.ts +115 -0
- package/src/web/tools/PointerEventManager.ts +46 -16
- package/src/web/tools/TouchEventManager.ts +3 -3
|
@@ -65,16 +65,6 @@ class FlingGestureHandler extends _GestureHandler.default {
|
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
67
|
|
|
68
|
-
transformNativeEvent() {
|
|
69
|
-
const rect = this.view.getBoundingClientRect();
|
|
70
|
-
return {
|
|
71
|
-
x: this.tracker.getLastAvgX() - rect.left,
|
|
72
|
-
y: this.tracker.getLastAvgY() - rect.top,
|
|
73
|
-
absoluteX: this.tracker.getLastAvgX(),
|
|
74
|
-
absoluteY: this.tracker.getLastAvgY()
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
|
|
78
68
|
startFling() {
|
|
79
69
|
this.startX = this.tracker.getLastX(this.keyPointer);
|
|
80
70
|
this.startY = this.tracker.getLastY(this.keyPointer);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","Direction","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","GestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","
|
|
1
|
+
{"version":3,"sources":["FlingGestureHandler.ts"],"names":["DEFAULT_MAX_DURATION_MS","DEFAULT_MIN_ACCEPTABLE_DELTA","DEFAULT_DIRECTION","Direction","RIGHT","DEFAULT_NUMBER_OF_TOUCHES_REQUIRED","FlingGestureHandler","GestureHandler","NaN","init","ref","propsRef","updateGestureConfig","enabled","props","config","direction","numberOfPointers","numberOfPointersRequired","startFling","startX","tracker","getLastX","keyPointer","startY","getLastY","begin","maxNumberOfPointersSimultaneously","delayTimeout","setTimeout","fail","maxDurationMs","tryEndFling","minAcceptableDelta","LEFT","UP","DOWN","clearTimeout","activate","endFling","onPointerDown","event","addToTracker","pointerId","newPointerAction","onPointerAdd","currentState","State","UNDETERMINED","BEGAN","getTrackedPointersCount","onPointerMove","track","onPointerUp","onUp","onPointerRemove","removeFromTracker","force","end","resetConfig"],"mappings":"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","sourcesContent":["import { State } from '../../State';\nimport { Direction } from '../constants';\nimport { AdaptedEvent, Config } from '../interfaces';\n\nimport GestureHandler from './GestureHandler';\n\nconst DEFAULT_MAX_DURATION_MS = 800;\nconst DEFAULT_MIN_ACCEPTABLE_DELTA = 160;\nconst DEFAULT_DIRECTION = Direction.RIGHT;\nconst DEFAULT_NUMBER_OF_TOUCHES_REQUIRED = 1;\n\nexport default class FlingGestureHandler extends GestureHandler {\n private numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n private direction = DEFAULT_DIRECTION;\n\n private maxDurationMs = DEFAULT_MAX_DURATION_MS;\n private minAcceptableDelta = DEFAULT_MIN_ACCEPTABLE_DELTA;\n private delayTimeout!: number;\n\n private startX = 0;\n private startY = 0;\n\n private maxNumberOfPointersSimultaneously = 0;\n private keyPointer = NaN;\n\n public init(ref: number, propsRef: React.RefObject<unknown>): void {\n super.init(ref, propsRef);\n }\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n super.updateGestureConfig({ enabled: enabled, ...props });\n\n if (this.config.direction) {\n this.direction = this.config.direction;\n }\n\n if (this.config.numberOfPointers) {\n this.numberOfPointersRequired = this.config.numberOfPointers;\n }\n }\n\n private startFling(): void {\n this.startX = this.tracker.getLastX(this.keyPointer);\n this.startY = this.tracker.getLastY(this.keyPointer);\n\n this.begin();\n\n this.maxNumberOfPointersSimultaneously = 1;\n\n this.delayTimeout = setTimeout(() => this.fail(), this.maxDurationMs);\n }\n\n private tryEndFling(): boolean {\n if (\n this.maxNumberOfPointersSimultaneously ===\n this.numberOfPointersRequired &&\n ((this.direction & Direction.RIGHT &&\n this.tracker.getLastX(this.keyPointer) - this.startX >\n this.minAcceptableDelta) ||\n (this.direction & Direction.LEFT &&\n this.startX - this.tracker.getLastX(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.UP &&\n this.startY - this.tracker.getLastY(this.keyPointer) >\n this.minAcceptableDelta) ||\n (this.direction & Direction.DOWN &&\n this.tracker.getLastY(this.keyPointer) - this.startY >\n this.minAcceptableDelta))\n ) {\n clearTimeout(this.delayTimeout);\n this.activate();\n\n return true;\n }\n\n return false;\n }\n\n private endFling() {\n if (!this.tryEndFling()) {\n this.fail();\n }\n }\n\n protected onPointerDown(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n this.keyPointer = event.pointerId;\n\n super.onPointerDown(event);\n this.newPointerAction();\n }\n\n protected onPointerAdd(event: AdaptedEvent): void {\n this.tracker.addToTracker(event);\n super.onPointerAdd(event);\n this.newPointerAction();\n }\n\n private newPointerAction(): void {\n if (this.currentState === State.UNDETERMINED) {\n this.startFling();\n }\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n if (\n this.tracker.getTrackedPointersCount() >\n this.maxNumberOfPointersSimultaneously\n ) {\n this.maxNumberOfPointersSimultaneously =\n this.tracker.getTrackedPointersCount();\n }\n }\n\n protected onPointerMove(event: AdaptedEvent): void {\n this.tracker.track(event);\n\n if (this.currentState !== State.BEGAN) {\n return;\n }\n\n this.tryEndFling();\n\n super.onPointerMove(event);\n }\n\n protected onPointerUp(event: AdaptedEvent): void {\n super.onPointerUp(event);\n this.onUp(event);\n\n this.keyPointer = NaN;\n }\n\n protected onPointerRemove(event: AdaptedEvent): void {\n super.onPointerRemove(event);\n this.onUp(event);\n }\n\n private onUp(event: AdaptedEvent): void {\n this.tracker.removeFromTracker(event.pointerId);\n if (this.currentState !== State.BEGAN) {\n return;\n }\n this.endFling();\n }\n\n public activate(force?: boolean): void {\n super.activate(force);\n this.end();\n }\n\n protected resetConfig(): void {\n super.resetConfig();\n this.numberOfPointersRequired = DEFAULT_NUMBER_OF_TOUCHES_REQUIRED;\n this.direction = DEFAULT_DIRECTION;\n }\n}\n"]}
|
|
@@ -5,8 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
|
|
8
|
-
var _reactNative = require("react-native");
|
|
9
|
-
|
|
10
8
|
var _State = require("../../State");
|
|
11
9
|
|
|
12
10
|
var _interfaces = require("../interfaces");
|
|
@@ -15,32 +13,26 @@ var _GestureHandlerOrchestrator = _interopRequireDefault(require("../tools/Gestu
|
|
|
15
13
|
|
|
16
14
|
var _InteractionManager = _interopRequireDefault(require("../tools/InteractionManager"));
|
|
17
15
|
|
|
18
|
-
var _PointerEventManager = _interopRequireDefault(require("../tools/PointerEventManager"));
|
|
19
|
-
|
|
20
16
|
var _PointerTracker = _interopRequireDefault(require("../tools/PointerTracker"));
|
|
21
17
|
|
|
22
|
-
var _TouchEventManager = _interopRequireDefault(require("../tools/TouchEventManager"));
|
|
23
|
-
|
|
24
|
-
var _utils = require("../utils");
|
|
25
|
-
|
|
26
18
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
19
|
|
|
28
20
|
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; }
|
|
29
21
|
|
|
30
22
|
class GestureHandler {
|
|
31
23
|
// Orchestrator properties
|
|
32
|
-
constructor() {
|
|
24
|
+
constructor(delegate) {
|
|
33
25
|
_defineProperty(this, "lastSentState", null);
|
|
34
26
|
|
|
35
27
|
_defineProperty(this, "currentState", _State.State.UNDETERMINED);
|
|
36
28
|
|
|
37
29
|
_defineProperty(this, "shouldCancellWhenOutside", false);
|
|
38
30
|
|
|
39
|
-
_defineProperty(this, "hasCustomActivationCriteria",
|
|
31
|
+
_defineProperty(this, "hasCustomActivationCriteria", false);
|
|
40
32
|
|
|
41
33
|
_defineProperty(this, "enabled", false);
|
|
42
34
|
|
|
43
|
-
_defineProperty(this, "
|
|
35
|
+
_defineProperty(this, "viewRef", void 0);
|
|
44
36
|
|
|
45
37
|
_defineProperty(this, "propsRef", void 0);
|
|
46
38
|
|
|
@@ -50,10 +42,6 @@ class GestureHandler {
|
|
|
50
42
|
enabled: false
|
|
51
43
|
});
|
|
52
44
|
|
|
53
|
-
_defineProperty(this, "view", void 0);
|
|
54
|
-
|
|
55
|
-
_defineProperty(this, "eventManagers", []);
|
|
56
|
-
|
|
57
45
|
_defineProperty(this, "tracker", new _PointerTracker.default());
|
|
58
46
|
|
|
59
47
|
_defineProperty(this, "activationIndex", 0);
|
|
@@ -66,6 +54,8 @@ class GestureHandler {
|
|
|
66
54
|
|
|
67
55
|
_defineProperty(this, "pointerType", _interfaces.PointerType.NONE);
|
|
68
56
|
|
|
57
|
+
_defineProperty(this, "delegate", void 0);
|
|
58
|
+
|
|
69
59
|
_defineProperty(this, "sendEvent", (newState, oldState) => {
|
|
70
60
|
const {
|
|
71
61
|
onGestureHandlerEvent,
|
|
@@ -87,52 +77,32 @@ class GestureHandler {
|
|
|
87
77
|
}
|
|
88
78
|
});
|
|
89
79
|
|
|
90
|
-
this.
|
|
80
|
+
this.delegate = delegate;
|
|
91
81
|
} //
|
|
92
82
|
// Initializing handler
|
|
93
83
|
//
|
|
94
84
|
|
|
95
85
|
|
|
96
|
-
init(
|
|
86
|
+
init(viewRef, propsRef) {
|
|
97
87
|
this.propsRef = propsRef;
|
|
98
|
-
this.
|
|
88
|
+
this.viewRef = viewRef;
|
|
99
89
|
this.currentState = _State.State.UNDETERMINED;
|
|
100
|
-
this.
|
|
101
|
-
this.addEventManager(new _PointerEventManager.default(this.view));
|
|
102
|
-
this.addEventManager(new _TouchEventManager.default(this.view));
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
setView() {
|
|
106
|
-
if (!this.ref) {
|
|
107
|
-
throw new Error(`Cannot find HTML Element for handler ${this.handlerTag}`);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
this.view = (0, _reactNative.findNodeHandle)(this.ref);
|
|
111
|
-
this.view.style['touchAction'] = 'none'; //@ts-ignore This one disables default events on Safari
|
|
112
|
-
|
|
113
|
-
this.view.style['WebkitTouchCallout'] = 'none';
|
|
114
|
-
|
|
115
|
-
if (!this.config.userSelect) {
|
|
116
|
-
this.view.style['webkitUserSelect'] = 'none';
|
|
117
|
-
this.view.style['userSelect'] = 'none';
|
|
118
|
-
} else {
|
|
119
|
-
this.view.style['webkitUserSelect'] = this.config.userSelect;
|
|
120
|
-
this.view.style['userSelect'] = this.config.userSelect;
|
|
121
|
-
}
|
|
90
|
+
this.delegate.init(viewRef, this);
|
|
122
91
|
}
|
|
123
92
|
|
|
124
|
-
|
|
93
|
+
attachEventManager(manager) {
|
|
125
94
|
manager.setOnPointerDown(this.onPointerDown.bind(this));
|
|
126
95
|
manager.setOnPointerAdd(this.onPointerAdd.bind(this));
|
|
127
96
|
manager.setOnPointerUp(this.onPointerUp.bind(this));
|
|
128
97
|
manager.setOnPointerRemove(this.onPointerRemove.bind(this));
|
|
129
98
|
manager.setOnPointerMove(this.onPointerMove.bind(this));
|
|
130
99
|
manager.setOnPointerEnter(this.onPointerEnter.bind(this));
|
|
131
|
-
manager.
|
|
100
|
+
manager.setOnPointerLeave(this.onPointerLeave.bind(this));
|
|
132
101
|
manager.setOnPointerCancel(this.onPointerCancel.bind(this));
|
|
133
102
|
manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));
|
|
103
|
+
manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));
|
|
104
|
+
manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));
|
|
134
105
|
manager.setListeners();
|
|
135
|
-
this.eventManagers.push(manager);
|
|
136
106
|
} //
|
|
137
107
|
// Resetting handler
|
|
138
108
|
//
|
|
@@ -148,7 +118,7 @@ class GestureHandler {
|
|
|
148
118
|
this.tracker.resetTracker();
|
|
149
119
|
this.onReset();
|
|
150
120
|
this.resetProgress();
|
|
151
|
-
this.
|
|
121
|
+
this.delegate.reset();
|
|
152
122
|
this.currentState = _State.State.UNDETERMINED;
|
|
153
123
|
} //
|
|
154
124
|
// State logic
|
|
@@ -190,8 +160,10 @@ class GestureHandler {
|
|
|
190
160
|
|
|
191
161
|
fail(sendIfDisabled) {
|
|
192
162
|
if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.BEGAN) {
|
|
163
|
+
// Here the order of calling the delegate and moveToState is important.
|
|
164
|
+
// At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.
|
|
165
|
+
this.delegate.onFail();
|
|
193
166
|
this.moveToState(_State.State.FAILED, sendIfDisabled);
|
|
194
|
-
this.view.style.cursor = 'auto';
|
|
195
167
|
}
|
|
196
168
|
|
|
197
169
|
this.resetProgress();
|
|
@@ -203,23 +175,25 @@ class GestureHandler {
|
|
|
203
175
|
|
|
204
176
|
cancel(sendIfDisabled) {
|
|
205
177
|
if (this.currentState === _State.State.ACTIVE || this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
|
|
206
|
-
this.onCancel();
|
|
178
|
+
this.onCancel(); // Same as above - order matters
|
|
179
|
+
|
|
180
|
+
this.delegate.onCancel();
|
|
207
181
|
this.moveToState(_State.State.CANCELLED, sendIfDisabled);
|
|
208
|
-
this.view.style.cursor = 'auto';
|
|
209
182
|
}
|
|
210
183
|
}
|
|
211
184
|
|
|
212
185
|
activate(_force = false) {
|
|
213
186
|
if (this.currentState === _State.State.UNDETERMINED || this.currentState === _State.State.BEGAN) {
|
|
187
|
+
this.delegate.onActivate();
|
|
214
188
|
this.moveToState(_State.State.ACTIVE);
|
|
215
|
-
this.view.style.cursor = 'grab';
|
|
216
189
|
}
|
|
217
190
|
}
|
|
218
191
|
|
|
219
192
|
end() {
|
|
220
193
|
if (this.currentState === _State.State.BEGAN || this.currentState === _State.State.ACTIVE) {
|
|
194
|
+
// Same as above - order matters
|
|
195
|
+
this.delegate.onEnd();
|
|
221
196
|
this.moveToState(_State.State.END);
|
|
222
|
-
this.view.style.cursor = 'auto';
|
|
223
197
|
}
|
|
224
198
|
|
|
225
199
|
this.resetProgress();
|
|
@@ -337,7 +311,7 @@ class GestureHandler {
|
|
|
337
311
|
}
|
|
338
312
|
}
|
|
339
313
|
|
|
340
|
-
|
|
314
|
+
onPointerLeave(event) {
|
|
341
315
|
if (this.shouldCancellWhenOutside) {
|
|
342
316
|
switch (this.currentState) {
|
|
343
317
|
case _State.State.ACTIVE:
|
|
@@ -380,6 +354,12 @@ class GestureHandler {
|
|
|
380
354
|
}
|
|
381
355
|
}
|
|
382
356
|
|
|
357
|
+
onPointerMoveOver(_event) {// used only by hover gesture handler atm
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
onPointerMoveOut(_event) {// used only by hover gesture handler atm
|
|
361
|
+
}
|
|
362
|
+
|
|
383
363
|
tryToSendMoveEvent(out) {
|
|
384
364
|
if (this.enabled && this.active && (!out || out && !this.shouldCancellWhenOutside)) {
|
|
385
365
|
this.sendEvent(this.currentState, this.currentState);
|
|
@@ -409,13 +389,13 @@ class GestureHandler {
|
|
|
409
389
|
nativeEvent: {
|
|
410
390
|
numberOfPointers: this.tracker.getTrackedPointersCount(),
|
|
411
391
|
state: newState,
|
|
412
|
-
pointerInside:
|
|
392
|
+
pointerInside: this.delegate.isPointerInBounds({
|
|
413
393
|
x: this.tracker.getLastAvgX(),
|
|
414
394
|
y: this.tracker.getLastAvgY()
|
|
415
395
|
}),
|
|
416
396
|
...this.transformNativeEvent(),
|
|
417
397
|
handlerTag: this.handlerTag,
|
|
418
|
-
target: this.
|
|
398
|
+
target: this.viewRef,
|
|
419
399
|
oldState: newState !== oldState ? oldState : undefined
|
|
420
400
|
},
|
|
421
401
|
timeStamp: Date.now()
|
|
@@ -425,7 +405,7 @@ class GestureHandler {
|
|
|
425
405
|
transformTouchEvent(event) {
|
|
426
406
|
var _event$touchEventType;
|
|
427
407
|
|
|
428
|
-
const rect = this.
|
|
408
|
+
const rect = this.delegate.measureView();
|
|
429
409
|
const all = [];
|
|
430
410
|
const changed = [];
|
|
431
411
|
const trackerData = this.tracker.getData(); // This if handles edge case where all pointers have been cancelled
|
|
@@ -441,8 +421,8 @@ class GestureHandler {
|
|
|
441
421
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
442
422
|
all.push({
|
|
443
423
|
id: id,
|
|
444
|
-
x: element.lastX - rect.
|
|
445
|
-
y: element.lastY - rect.
|
|
424
|
+
x: element.lastX - rect.pageX,
|
|
425
|
+
y: element.lastY - rect.pageY,
|
|
446
426
|
absoluteX: element.lastX,
|
|
447
427
|
absoluteY: element.lastY
|
|
448
428
|
});
|
|
@@ -452,8 +432,8 @@ class GestureHandler {
|
|
|
452
432
|
if (event.eventType !== _interfaces.EventTypes.CANCEL) {
|
|
453
433
|
changed.push({
|
|
454
434
|
id: this.tracker.getMappedTouchEventId(event.pointerId),
|
|
455
|
-
x: event.x - rect.
|
|
456
|
-
y: event.y - rect.
|
|
435
|
+
x: event.x - rect.pageX,
|
|
436
|
+
y: event.y - rect.pageY,
|
|
457
437
|
absoluteX: event.x,
|
|
458
438
|
absoluteY: event.y
|
|
459
439
|
});
|
|
@@ -462,8 +442,8 @@ class GestureHandler {
|
|
|
462
442
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
463
443
|
changed.push({
|
|
464
444
|
id: id,
|
|
465
|
-
x: element.lastX - rect.
|
|
466
|
-
y: element.lastY - rect.
|
|
445
|
+
x: element.lastX - rect.pageX,
|
|
446
|
+
y: element.lastY - rect.pageY,
|
|
467
447
|
absoluteX: element.lastX,
|
|
468
448
|
absoluteY: element.lastY
|
|
469
449
|
});
|
|
@@ -515,7 +495,7 @@ class GestureHandler {
|
|
|
515
495
|
}
|
|
516
496
|
|
|
517
497
|
cancelTouches() {
|
|
518
|
-
const rect = this.
|
|
498
|
+
const rect = this.delegate.measureView();
|
|
519
499
|
const all = [];
|
|
520
500
|
const changed = [];
|
|
521
501
|
const trackerData = this.tracker.getData();
|
|
@@ -528,15 +508,15 @@ class GestureHandler {
|
|
|
528
508
|
const id = this.tracker.getMappedTouchEventId(key);
|
|
529
509
|
all.push({
|
|
530
510
|
id: id,
|
|
531
|
-
x: element.lastX - rect.
|
|
532
|
-
y: element.lastY - rect.
|
|
511
|
+
x: element.lastX - rect.pageX,
|
|
512
|
+
y: element.lastY - rect.pageY,
|
|
533
513
|
absoluteX: element.lastX,
|
|
534
514
|
absoluteY: element.lastY
|
|
535
515
|
});
|
|
536
516
|
changed.push({
|
|
537
517
|
id: id,
|
|
538
|
-
x: element.lastX - rect.
|
|
539
|
-
y: element.lastY - rect.
|
|
518
|
+
x: element.lastX - rect.pageX,
|
|
519
|
+
y: element.lastY - rect.pageY,
|
|
540
520
|
absoluteX: element.lastX,
|
|
541
521
|
absoluteY: element.lastY
|
|
542
522
|
});
|
|
@@ -559,7 +539,14 @@ class GestureHandler {
|
|
|
559
539
|
}
|
|
560
540
|
|
|
561
541
|
transformNativeEvent() {
|
|
562
|
-
|
|
542
|
+
// those properties are shared by most handlers and if not this method will be overriden
|
|
543
|
+
const rect = this.delegate.measureView();
|
|
544
|
+
return {
|
|
545
|
+
x: this.tracker.getLastAvgX() - rect.pageX,
|
|
546
|
+
y: this.tracker.getLastAvgY() - rect.pageY,
|
|
547
|
+
absoluteX: this.tracker.getLastAvgX(),
|
|
548
|
+
absoluteY: this.tracker.getLastAvgY()
|
|
549
|
+
};
|
|
563
550
|
} //
|
|
564
551
|
// Handling config
|
|
565
552
|
//
|
|
@@ -636,8 +623,10 @@ class GestureHandler {
|
|
|
636
623
|
return true;
|
|
637
624
|
}
|
|
638
625
|
|
|
639
|
-
const
|
|
640
|
-
|
|
626
|
+
const {
|
|
627
|
+
width,
|
|
628
|
+
height
|
|
629
|
+
} = this.delegate.measureView();
|
|
641
630
|
let left = 0;
|
|
642
631
|
let top = 0;
|
|
643
632
|
let right = width;
|
|
@@ -685,9 +674,9 @@ class GestureHandler {
|
|
|
685
674
|
}
|
|
686
675
|
}
|
|
687
676
|
|
|
688
|
-
const rect = this.
|
|
689
|
-
const offsetX = this.tracker.getLastX() - rect.
|
|
690
|
-
const offsetY = this.tracker.getLastY() - rect.
|
|
677
|
+
const rect = this.delegate.measureView();
|
|
678
|
+
const offsetX = this.tracker.getLastX() - rect.pageX;
|
|
679
|
+
const offsetY = this.tracker.getLastY() - rect.pageY;
|
|
691
680
|
|
|
692
681
|
if (offsetX >= left && offsetX <= right && offsetY >= top && offsetY <= bottom) {
|
|
693
682
|
return true;
|
|
@@ -696,14 +685,6 @@ class GestureHandler {
|
|
|
696
685
|
return false;
|
|
697
686
|
}
|
|
698
687
|
|
|
699
|
-
isPointerInBounds({
|
|
700
|
-
x,
|
|
701
|
-
y
|
|
702
|
-
}) {
|
|
703
|
-
const rect = this.view.getBoundingClientRect();
|
|
704
|
-
return x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
688
|
resetConfig() {} //
|
|
708
689
|
// Getters and setters
|
|
709
690
|
//
|
|
@@ -721,16 +702,8 @@ class GestureHandler {
|
|
|
721
702
|
return this.config;
|
|
722
703
|
}
|
|
723
704
|
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
}
|
|
727
|
-
|
|
728
|
-
getView() {
|
|
729
|
-
return this.view;
|
|
730
|
-
}
|
|
731
|
-
|
|
732
|
-
getEventManagers() {
|
|
733
|
-
return this.eventManagers;
|
|
705
|
+
getDelegate() {
|
|
706
|
+
return this.delegate;
|
|
734
707
|
}
|
|
735
708
|
|
|
736
709
|
getTracker() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","hasCustomActivationCriteria","init","ref","setView","addEventManager","PointerEventManager","view","TouchEventManager","Error","handlerTag","style","config","userSelect","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerOut","onPointerOut","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setListeners","eventManagers","push","onCancel","onReset","resetProgress","reset","tracker","resetTracker","forEach","resetManager","moveToState","sendIfDisabled","getTrackedPointersCount","needsPointerData","isFinished","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","FAILED","cursor","cancel","CANCELLED","activate","_force","end","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","target","timeStamp","Date","now","rect","getBoundingClientRect","all","changed","trackerData","getData","size","has","pointerId","element","key","id","getMappedTouchEventId","lastX","left","lastY","top","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hitSlop","right","width","height","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","isPointerInBounds","resetConfig","getTag","setTag","tag","getConfig","getShouldEnableGestureOnSetup","getView","getEventManagers","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { findNodeHandle } from 'react-native';\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerEventManager from '../tools/PointerEventManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport TouchEventManager from '../tools/TouchEventManager';\nimport { isPointerInBounds } from '../utils';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria: boolean;\n protected enabled = false;\n\n private ref!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n protected view!: HTMLElement;\n\n protected eventManagers: EventManager[] = [];\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n public constructor() {\n this.hasCustomActivationCriteria = false;\n }\n\n //\n // Initializing handler\n //\n\n protected init(ref: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.ref = ref;\n\n this.currentState = State.UNDETERMINED;\n\n this.setView();\n this.addEventManager(new PointerEventManager(this.view));\n this.addEventManager(new TouchEventManager(this.view));\n }\n\n private setView() {\n if (!this.ref) {\n throw new Error(\n `Cannot find HTML Element for handler ${this.handlerTag}`\n );\n }\n\n this.view = findNodeHandle(this.ref) as unknown as HTMLElement;\n this.view.style['touchAction'] = 'none';\n //@ts-ignore This one disables default events on Safari\n this.view.style['WebkitTouchCallout'] = 'none';\n\n if (!this.config.userSelect) {\n this.view.style['webkitUserSelect'] = 'none';\n this.view.style['userSelect'] = 'none';\n } else {\n this.view.style['webkitUserSelect'] = this.config.userSelect;\n this.view.style['userSelect'] = this.config.userSelect;\n }\n }\n\n private addEventManager(manager: EventManager): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerOut(this.onPointerOut.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setListeners();\n\n this.eventManagers.push(manager);\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.eventManagers.forEach((manager: EventManager) =>\n manager.resetManager()\n );\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.FAILED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n this.moveToState(State.CANCELLED, sendIfDisabled);\n this.view.style.cursor = 'auto';\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.moveToState(State.ACTIVE);\n this.view.style.cursor = 'grab';\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n this.moveToState(State.END);\n this.view.style.cursor = 'auto';\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerOut(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // 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\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: isPointerInBounds(this.view, {\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.ref,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.left,\n y: event.y - rect.top,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.view.getBoundingClientRect();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.left,\n y: element.lastY - rect.top,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent() {\n return {};\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const width = this.view.getBoundingClientRect().width;\n const height = this.view.getBoundingClientRect().height;\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect: DOMRect = this.view.getBoundingClientRect();\n const offsetX: number = this.tracker.getLastX() - rect.left;\n const offsetY: number = this.tracker.getLastY() - rect.top;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n public isPointerInBounds({ x, y }: { x: number; y: number }): boolean {\n const rect: DOMRect = this.view.getBoundingClientRect();\n\n return (\n x >= rect.left && x <= rect.right && y >= rect.top && y <= rect.bottom\n );\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n protected getConfig() {\n return this.config;\n }\n\n public getShouldEnableGestureOnSetup(): boolean {\n throw new Error('Must override GestureHandler.shouldEnableGestureOnSetup');\n }\n\n public getView(): HTMLElement {\n return this.view;\n }\n\n public getEventManagers(): EventManager[] {\n return this.eventManagers;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["GestureHandler.ts"],"names":["GestureHandler","constructor","delegate","State","UNDETERMINED","enabled","PointerTracker","PointerType","NONE","newState","oldState","onGestureHandlerEvent","onGestureHandlerStateChange","propsRef","current","resultEvent","transformEventData","lastSentState","invokeNullableMethod","currentState","ACTIVE","nativeEvent","undefined","init","viewRef","attachEventManager","manager","setOnPointerDown","onPointerDown","bind","setOnPointerAdd","onPointerAdd","setOnPointerUp","onPointerUp","setOnPointerRemove","onPointerRemove","setOnPointerMove","onPointerMove","setOnPointerEnter","onPointerEnter","setOnPointerLeave","onPointerLeave","setOnPointerCancel","onPointerCancel","setOnPointerOutOfBounds","onPointerOutOfBounds","setOnPointerMoveOver","onPointerMoveOver","setOnPointerMoveOut","onPointerMoveOut","setListeners","onCancel","onReset","resetProgress","reset","tracker","resetTracker","moveToState","sendIfDisabled","getTrackedPointersCount","config","needsPointerData","isFinished","cancelTouches","GestureHandlerOrchestrator","getInstance","onHandlerStateChange","onStateChange","_newState","_oldState","begin","checkHitSlop","BEGAN","fail","onFail","FAILED","cancel","CANCELLED","activate","_force","onActivate","end","onEnd","END","isAwaiting","awaiting","setAwaiting","value","isActive","active","setActive","getShouldResetProgress","shouldResetProgress","setShouldResetProgress","getActivationIndex","activationIndex","setActivationIndex","shouldWaitForHandlerFailure","handler","InteractionManager","shouldRequireToWaitForFailure","shouldRequireHandlerToWaitForFailure","shouldRecognizeSimultaneously","shouldBeCancelledByOther","shouldHandlerBeCancelledBy","event","recordHandlerIfNotPresent","pointerType","TOUCH","cancelMouseAndPenGestures","sendTouchEvent","tryToSendMoveEvent","shouldCancellWhenOutside","_event","out","sendEvent","touchEvent","transformTouchEvent","numberOfPointers","state","pointerInside","isPointerInBounds","x","getLastAvgX","y","getLastAvgY","transformNativeEvent","handlerTag","target","timeStamp","Date","now","rect","measureView","all","changed","trackerData","getData","size","has","pointerId","forEach","element","key","id","getMappedTouchEventId","push","lastX","pageX","lastY","pageY","absoluteX","absoluteY","eventType","EventTypes","CANCEL","TouchEventType","DOWN","ADDITIONAL_POINTER_DOWN","UP","ADDITIONAL_POINTER_UP","MOVE","numberOfTouches","length","touchEventType","changedTouches","allTouches","cancelEvent","updateGestureConfig","props","shouldCancelWhenOutside","setShouldCancelWhenOutside","validateHitSlops","removeHandlerFromOrchestrator","checkCustomActivationCriteria","criterias","indexOf","hasCustomActivationCriteria","hitSlop","left","right","width","Error","height","top","bottom","horizontal","vertical","offsetX","getLastX","offsetY","getLastY","resetConfig","getTag","setTag","tag","getConfig","getDelegate","getTracker","getTrackedPointersID","getState","isEnabled","shouldCancel","getShouldCancelWhenOutside","getPointerType","method","__getHandler","argMapping","__nodeConfig","Array","isArray","index","entries","nativeValue","setValue"],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-empty-function */\nimport { State } from '../../State';\nimport {\n Config,\n AdaptedEvent,\n PropsRef,\n ResultEvent,\n PointerData,\n ResultTouchEvent,\n PointerType,\n TouchEventType,\n EventTypes,\n} from '../interfaces';\nimport EventManager from '../tools/EventManager';\nimport GestureHandlerOrchestrator from '../tools/GestureHandlerOrchestrator';\nimport InteractionManager from '../tools/InteractionManager';\nimport PointerTracker, { TrackerElement } from '../tools/PointerTracker';\nimport { GestureHandlerDelegate } from '../tools/GestureHandlerDelegate';\n\nexport default abstract class GestureHandler {\n private lastSentState: State | null = null;\n protected currentState: State = State.UNDETERMINED;\n\n protected shouldCancellWhenOutside = false;\n protected hasCustomActivationCriteria = false;\n protected enabled = false;\n\n private viewRef!: number;\n private propsRef!: React.RefObject<unknown>;\n private handlerTag!: number;\n protected config: Config = { enabled: false };\n\n protected tracker: PointerTracker = new PointerTracker();\n\n // Orchestrator properties\n protected activationIndex = 0;\n protected awaiting = false;\n protected active = false;\n protected shouldResetProgress = false;\n protected pointerType: PointerType = PointerType.NONE;\n\n protected delegate: GestureHandlerDelegate<unknown>;\n\n public constructor(delegate: GestureHandlerDelegate<unknown>) {\n this.delegate = delegate;\n }\n\n //\n // Initializing handler\n //\n\n protected init(viewRef: number, propsRef: React.RefObject<unknown>) {\n this.propsRef = propsRef;\n this.viewRef = viewRef;\n\n this.currentState = State.UNDETERMINED;\n\n this.delegate.init(viewRef, this);\n }\n\n public attachEventManager(manager: EventManager<unknown>): void {\n manager.setOnPointerDown(this.onPointerDown.bind(this));\n manager.setOnPointerAdd(this.onPointerAdd.bind(this));\n manager.setOnPointerUp(this.onPointerUp.bind(this));\n manager.setOnPointerRemove(this.onPointerRemove.bind(this));\n manager.setOnPointerMove(this.onPointerMove.bind(this));\n manager.setOnPointerEnter(this.onPointerEnter.bind(this));\n manager.setOnPointerLeave(this.onPointerLeave.bind(this));\n manager.setOnPointerCancel(this.onPointerCancel.bind(this));\n manager.setOnPointerOutOfBounds(this.onPointerOutOfBounds.bind(this));\n manager.setOnPointerMoveOver(this.onPointerMoveOver.bind(this));\n manager.setOnPointerMoveOut(this.onPointerMoveOut.bind(this));\n manager.setListeners();\n }\n\n //\n // Resetting handler\n //\n\n protected onCancel(): void {}\n protected onReset(): void {}\n protected resetProgress(): void {}\n\n public reset(): void {\n this.tracker.resetTracker();\n this.onReset();\n this.resetProgress();\n this.delegate.reset();\n this.currentState = State.UNDETERMINED;\n }\n\n //\n // State logic\n //\n\n public moveToState(newState: State, sendIfDisabled?: boolean) {\n if (this.currentState === newState) {\n return;\n }\n\n const oldState = this.currentState;\n this.currentState = newState;\n\n if (\n this.tracker.getTrackedPointersCount() > 0 &&\n this.config.needsPointerData &&\n this.isFinished()\n ) {\n this.cancelTouches();\n }\n\n GestureHandlerOrchestrator.getInstance().onHandlerStateChange(\n this,\n newState,\n oldState,\n sendIfDisabled\n );\n\n this.onStateChange(newState, oldState);\n }\n\n protected onStateChange(_newState: State, _oldState: State): void {}\n\n public begin(): void {\n if (!this.checkHitSlop()) {\n return;\n }\n\n if (this.currentState === State.UNDETERMINED) {\n this.moveToState(State.BEGAN);\n }\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send fail event\n */\n public fail(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.BEGAN\n ) {\n // Here the order of calling the delegate and moveToState is important.\n // At this point we can use currentState as previuos state, because immediately after changing cursor we call moveToState method.\n this.delegate.onFail();\n\n this.moveToState(State.FAILED, sendIfDisabled);\n }\n\n this.resetProgress();\n }\n\n /**\n * @param {boolean} sendIfDisabled - Used when handler becomes disabled. With this flag orchestrator will be forced to send cancel event\n */\n public cancel(sendIfDisabled?: boolean): void {\n if (\n this.currentState === State.ACTIVE ||\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.onCancel();\n\n // Same as above - order matters\n this.delegate.onCancel();\n\n this.moveToState(State.CANCELLED, sendIfDisabled);\n }\n }\n\n public activate(_force = false) {\n if (\n this.currentState === State.UNDETERMINED ||\n this.currentState === State.BEGAN\n ) {\n this.delegate.onActivate();\n\n this.moveToState(State.ACTIVE);\n }\n }\n\n public end() {\n if (\n this.currentState === State.BEGAN ||\n this.currentState === State.ACTIVE\n ) {\n // Same as above - order matters\n this.delegate.onEnd();\n\n this.moveToState(State.END);\n }\n\n this.resetProgress();\n }\n\n //\n // Methods for orchestrator\n //\n\n public isAwaiting(): boolean {\n return this.awaiting;\n }\n public setAwaiting(value: boolean): void {\n this.awaiting = value;\n }\n\n public isActive(): boolean {\n return this.active;\n }\n public setActive(value: boolean): void {\n this.active = value;\n }\n\n public getShouldResetProgress(): boolean {\n return this.shouldResetProgress;\n }\n public setShouldResetProgress(value: boolean): void {\n this.shouldResetProgress = value;\n }\n\n public getActivationIndex(): number {\n return this.activationIndex;\n }\n public setActivationIndex(value: number): void {\n this.activationIndex = value;\n }\n\n public shouldWaitForHandlerFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldWaitForHandlerFailure(\n this,\n handler\n );\n }\n\n public shouldRequireToWaitForFailure(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldRequireHandlerToWaitForFailure(\n this,\n handler\n );\n }\n\n public shouldRecognizeSimultaneously(handler: GestureHandler): boolean {\n if (handler === this) {\n return true;\n }\n\n return InteractionManager.getInstance().shouldRecognizeSimultaneously(\n this,\n handler\n );\n }\n\n public shouldBeCancelledByOther(handler: GestureHandler): boolean {\n if (handler === this) {\n return false;\n }\n\n return InteractionManager.getInstance().shouldHandlerBeCancelledBy(\n this,\n handler\n );\n }\n\n //\n // Event actions\n //\n\n protected onPointerDown(event: AdaptedEvent): void {\n GestureHandlerOrchestrator.getInstance().recordHandlerIfNotPresent(this);\n this.pointerType = event.pointerType;\n\n if (this.pointerType === PointerType.TOUCH) {\n GestureHandlerOrchestrator.getInstance().cancelMouseAndPenGestures(this);\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Adding another pointer to existing ones\n protected onPointerAdd(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerUp(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n // Removing pointer, when there is more than one pointers\n protected onPointerRemove(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMove(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(false);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerLeave(event: AdaptedEvent): void {\n if (this.shouldCancellWhenOutside) {\n switch (this.currentState) {\n case State.ACTIVE:\n this.cancel();\n break;\n case State.BEGAN:\n this.fail();\n break;\n }\n return;\n }\n\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerEnter(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerCancel(event: AdaptedEvent): void {\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n\n this.cancel();\n this.reset();\n }\n protected onPointerOutOfBounds(event: AdaptedEvent): void {\n this.tryToSendMoveEvent(true);\n if (this.config.needsPointerData) {\n this.sendTouchEvent(event);\n }\n }\n protected onPointerMoveOver(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n protected onPointerMoveOut(_event: AdaptedEvent): void {\n // used only by hover gesture handler atm\n }\n private tryToSendMoveEvent(out: boolean): void {\n if (\n this.enabled &&\n this.active &&\n (!out || (out && !this.shouldCancellWhenOutside))\n ) {\n this.sendEvent(this.currentState, this.currentState);\n }\n }\n\n public sendTouchEvent(event: AdaptedEvent): void {\n if (!this.enabled) {\n return;\n }\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n const touchEvent: ResultTouchEvent | undefined =\n this.transformTouchEvent(event);\n\n if (touchEvent) {\n invokeNullableMethod(onGestureHandlerEvent, touchEvent);\n }\n }\n\n //\n // Events Sending\n //\n\n public sendEvent = (newState: State, oldState: State): void => {\n const { onGestureHandlerEvent, onGestureHandlerStateChange }: PropsRef =\n this.propsRef.current as PropsRef;\n\n const resultEvent: ResultEvent = this.transformEventData(\n newState,\n oldState\n );\n\n // In the new API oldState field has to be undefined, unless we send event state changed\n // 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\n // Flipping order with setting oldState to undefined solves issue, when events were being sent twice instead of once\n // However, this may cause trouble in the future (but for now we don't know that)\n\n if (this.lastSentState !== newState) {\n this.lastSentState = newState;\n invokeNullableMethod(onGestureHandlerStateChange, resultEvent);\n }\n if (this.currentState === State.ACTIVE) {\n resultEvent.nativeEvent.oldState = undefined;\n invokeNullableMethod(onGestureHandlerEvent, resultEvent);\n }\n };\n\n private transformEventData(newState: State, oldState: State): ResultEvent {\n return {\n nativeEvent: {\n numberOfPointers: this.tracker.getTrackedPointersCount(),\n state: newState,\n pointerInside: this.delegate.isPointerInBounds({\n x: this.tracker.getLastAvgX(),\n y: this.tracker.getLastAvgY(),\n }),\n ...this.transformNativeEvent(),\n handlerTag: this.handlerTag,\n target: this.viewRef,\n oldState: newState !== oldState ? oldState : undefined,\n },\n timeStamp: Date.now(),\n };\n }\n\n private transformTouchEvent(\n event: AdaptedEvent\n ): ResultTouchEvent | undefined {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n // This if handles edge case where all pointers have been cancelled\n // When pointercancel is triggered, reset method is called. This means that tracker will be reset after first pointer being cancelled\n // The problem is, that handler will receive another pointercancel event from the rest of the pointers\n // To avoid crashing, we don't send event if tracker tracks no pointers, i.e. has been reset\n if (trackerData.size === 0 || !trackerData.has(event.pointerId)) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n // Each pointer sends its own event, so we want changed touches to contain only the pointer that has changed.\n // However, if the event is cancel, we want to cancel all pointers to avoid crashes\n if (event.eventType !== EventTypes.CANCEL) {\n changed.push({\n id: this.tracker.getMappedTouchEventId(event.pointerId),\n x: event.x - rect.pageX,\n y: event.y - rect.pageY,\n absoluteX: event.x,\n absoluteY: event.y,\n });\n } else {\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n }\n\n let eventType: TouchEventType = TouchEventType.UNDETERMINED;\n\n switch (event.eventType) {\n case EventTypes.DOWN:\n case EventTypes.ADDITIONAL_POINTER_DOWN:\n eventType = TouchEventType.DOWN;\n break;\n case EventTypes.UP:\n case EventTypes.ADDITIONAL_POINTER_UP:\n eventType = TouchEventType.UP;\n break;\n case EventTypes.MOVE:\n eventType = TouchEventType.MOVE;\n break;\n case EventTypes.CANCEL:\n eventType = TouchEventType.CANCELLED;\n break;\n }\n\n // Here, when we receive up event, we want to decrease number of touches\n // That's because we want handler to send information that there's one pointer less\n // However, we still want this pointer to be present in allTouches array, so that its data can be accessed\n let numberOfTouches: number = all.length;\n\n if (\n event.eventType === EventTypes.UP ||\n event.eventType === EventTypes.ADDITIONAL_POINTER_UP\n ) {\n --numberOfTouches;\n }\n\n return {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: event.touchEventType ?? eventType,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: numberOfTouches,\n },\n timeStamp: Date.now(),\n };\n }\n\n private cancelTouches(): void {\n const rect = this.delegate.measureView();\n\n const all: PointerData[] = [];\n const changed: PointerData[] = [];\n\n const trackerData = this.tracker.getData();\n\n if (trackerData.size === 0) {\n return;\n }\n\n trackerData.forEach((element: TrackerElement, key: number): void => {\n const id: number = this.tracker.getMappedTouchEventId(key);\n\n all.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n\n changed.push({\n id: id,\n x: element.lastX - rect.pageX,\n y: element.lastY - rect.pageY,\n absoluteX: element.lastX,\n absoluteY: element.lastY,\n });\n });\n\n const cancelEvent: ResultTouchEvent = {\n nativeEvent: {\n handlerTag: this.handlerTag,\n state: this.currentState,\n eventType: TouchEventType.CANCELLED,\n changedTouches: changed,\n allTouches: all,\n numberOfTouches: all.length,\n },\n timeStamp: Date.now(),\n };\n\n const { onGestureHandlerEvent }: PropsRef = this.propsRef\n .current as PropsRef;\n\n invokeNullableMethod(onGestureHandlerEvent, cancelEvent);\n }\n\n protected transformNativeEvent(): Record<string, unknown> {\n // those properties are shared by most handlers and if not this method will be overriden\n const rect = this.delegate.measureView();\n\n return {\n x: this.tracker.getLastAvgX() - rect.pageX,\n y: this.tracker.getLastAvgY() - rect.pageY,\n absoluteX: this.tracker.getLastAvgX(),\n absoluteY: this.tracker.getLastAvgY(),\n };\n }\n\n //\n // Handling config\n //\n\n public updateGestureConfig({ enabled = true, ...props }: Config): void {\n this.config = { enabled: enabled, ...props };\n this.enabled = enabled;\n\n if (this.config.shouldCancelWhenOutside !== undefined) {\n this.setShouldCancelWhenOutside(this.config.shouldCancelWhenOutside);\n }\n\n this.validateHitSlops();\n\n if (this.enabled) {\n return;\n }\n\n switch (this.currentState) {\n case State.ACTIVE:\n this.fail(true);\n break;\n case State.UNDETERMINED:\n GestureHandlerOrchestrator.getInstance().removeHandlerFromOrchestrator(\n this\n );\n break;\n default:\n this.cancel(true);\n break;\n }\n }\n\n protected checkCustomActivationCriteria(criterias: string[]): void {\n for (const key in this.config) {\n if (criterias.indexOf(key) >= 0) {\n this.hasCustomActivationCriteria = true;\n }\n }\n }\n\n private validateHitSlops(): void {\n if (!this.config.hitSlop) {\n return;\n }\n\n if (\n this.config.hitSlop.left !== undefined &&\n this.config.hitSlop.right !== undefined &&\n this.config.hitSlop.width !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define left, right and width at the same time'\n );\n }\n\n if (\n this.config.hitSlop.width !== undefined &&\n this.config.hitSlop.left === undefined &&\n this.config.hitSlop.right === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When width is defined, either left or right has to be defined'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top !== undefined &&\n this.config.hitSlop.bottom !== undefined\n ) {\n throw new Error(\n 'HitSlop Error: Cannot define top, bottom and height at the same time'\n );\n }\n\n if (\n this.config.hitSlop.height !== undefined &&\n this.config.hitSlop.top === undefined &&\n this.config.hitSlop.bottom === undefined\n ) {\n throw new Error(\n 'HitSlop Error: When height is defined, either top or bottom has to be defined'\n );\n }\n }\n\n private checkHitSlop(): boolean {\n if (!this.config.hitSlop) {\n return true;\n }\n\n const { width, height } = this.delegate.measureView();\n\n let left = 0;\n let top = 0;\n let right: number = width;\n let bottom: number = height;\n\n if (this.config.hitSlop.horizontal !== undefined) {\n left -= this.config.hitSlop.horizontal;\n right += this.config.hitSlop.horizontal;\n }\n\n if (this.config.hitSlop.vertical !== undefined) {\n top -= this.config.hitSlop.vertical;\n bottom += this.config.hitSlop.vertical;\n }\n\n if (this.config.hitSlop.left !== undefined) {\n left = -this.config.hitSlop.left;\n }\n\n if (this.config.hitSlop.right !== undefined) {\n right = width + this.config.hitSlop.right;\n }\n\n if (this.config.hitSlop.top !== undefined) {\n top = -this.config.hitSlop.top;\n }\n\n if (this.config.hitSlop.bottom !== undefined) {\n bottom = width + this.config.hitSlop.bottom;\n }\n if (this.config.hitSlop.width !== undefined) {\n if (this.config.hitSlop.left !== undefined) {\n right = left + this.config.hitSlop.width;\n } else if (this.config.hitSlop.right !== undefined) {\n left = right - this.config.hitSlop.width;\n }\n }\n\n if (this.config.hitSlop.height !== undefined) {\n if (this.config.hitSlop.top !== undefined) {\n bottom = top + this.config.hitSlop.height;\n } else if (this.config.hitSlop.bottom !== undefined) {\n top = bottom - this.config.hitSlop.height;\n }\n }\n\n const rect = this.delegate.measureView();\n const offsetX: number = this.tracker.getLastX() - rect.pageX;\n const offsetY: number = this.tracker.getLastY() - rect.pageY;\n\n if (\n offsetX >= left &&\n offsetX <= right &&\n offsetY >= top &&\n offsetY <= bottom\n ) {\n return true;\n }\n return false;\n }\n\n protected resetConfig(): void {}\n\n //\n // Getters and setters\n //\n\n public getTag(): number {\n return this.handlerTag;\n }\n\n public setTag(tag: number): void {\n this.handlerTag = tag;\n }\n\n public getConfig() {\n return this.config;\n }\n\n public getDelegate(): GestureHandlerDelegate<unknown> {\n return this.delegate;\n }\n\n public getTracker(): PointerTracker {\n return this.tracker;\n }\n\n public getTrackedPointersID(): number[] {\n return this.tracker.getTrackedPointersID();\n }\n\n public getState(): State {\n return this.currentState;\n }\n\n public isEnabled(): boolean {\n return this.enabled;\n }\n\n private isFinished(): boolean {\n return (\n this.currentState === State.END ||\n this.currentState === State.FAILED ||\n this.currentState === State.CANCELLED\n );\n }\n\n protected setShouldCancelWhenOutside(shouldCancel: boolean) {\n this.shouldCancellWhenOutside = shouldCancel;\n }\n\n protected getShouldCancelWhenOutside(): boolean {\n return this.shouldCancellWhenOutside;\n }\n\n public getPointerType(): PointerType {\n return this.pointerType;\n }\n}\n\nfunction invokeNullableMethod(\n method:\n | ((event: ResultEvent | ResultTouchEvent) => void)\n | { __getHandler: () => (event: ResultEvent | ResultTouchEvent) => void }\n | { __nodeConfig: { argMapping: unknown[] } },\n event: ResultEvent | ResultTouchEvent\n): void {\n if (!method) {\n return;\n }\n\n if (typeof method === 'function') {\n method(event);\n return;\n }\n\n if ('__getHandler' in method && typeof method.__getHandler === 'function') {\n const handler = method.__getHandler();\n invokeNullableMethod(handler, event);\n return;\n }\n\n if (!('__nodeConfig' in method)) {\n return;\n }\n\n const { argMapping } = method.__nodeConfig;\n if (!Array.isArray(argMapping)) {\n return;\n }\n\n for (const [index, [key, value]] of argMapping.entries()) {\n if (!(key in event.nativeEvent)) {\n continue;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n const nativeValue = event.nativeEvent[key];\n\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n if (value?.setValue) {\n //Reanimated API\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n value.setValue(nativeValue);\n } else {\n //RN Animated API\n method.__nodeConfig.argMapping[index] = [key, nativeValue];\n }\n }\n\n return;\n}\n"]}
|