react-native-gesture-handler 2.12.0 → 2.13.0
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 +4 -4
- 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 +4 -2
- 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 +4 -4
- 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 +3 -2
- 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 +5 -3
- package/src/handlers/gestureHandlerCommon.ts +39 -0
- package/src/handlers/gestures/GestureDetector.tsx +3 -1
- 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
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { findNodeHandle } from 'react-native';
|
|
2
|
+
import type GestureHandler from '../handlers/GestureHandler';
|
|
3
|
+
import {
|
|
4
|
+
GestureHandlerDelegate,
|
|
5
|
+
MeasureResult,
|
|
6
|
+
} from './GestureHandlerDelegate';
|
|
7
|
+
import PointerEventManager from './PointerEventManager';
|
|
8
|
+
import TouchEventManager from './TouchEventManager';
|
|
9
|
+
import { State } from '../../State';
|
|
10
|
+
import { isPointerInBounds } from '../utils';
|
|
11
|
+
import EventManager from './EventManager';
|
|
12
|
+
|
|
13
|
+
export class GestureHandlerWebDelegate
|
|
14
|
+
implements GestureHandlerDelegate<HTMLElement>
|
|
15
|
+
{
|
|
16
|
+
private view!: HTMLElement;
|
|
17
|
+
private gestureHandler!: GestureHandler;
|
|
18
|
+
private eventManagers: EventManager<unknown>[] = [];
|
|
19
|
+
|
|
20
|
+
getView(): HTMLElement {
|
|
21
|
+
return this.view;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
init(viewRef: number, handler: GestureHandler): void {
|
|
25
|
+
if (!viewRef) {
|
|
26
|
+
throw new Error(
|
|
27
|
+
`Cannot find HTML Element for handler ${handler.getTag()}`
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
this.gestureHandler = handler;
|
|
32
|
+
this.view = findNodeHandle(viewRef) as unknown as HTMLElement;
|
|
33
|
+
|
|
34
|
+
this.view.style['touchAction'] = 'none';
|
|
35
|
+
//@ts-ignore This one disables default events on Safari
|
|
36
|
+
this.view.style['WebkitTouchCallout'] = 'none';
|
|
37
|
+
|
|
38
|
+
const config = handler.getConfig();
|
|
39
|
+
|
|
40
|
+
if (!config.userSelect) {
|
|
41
|
+
this.view.style['webkitUserSelect'] = 'none';
|
|
42
|
+
this.view.style['userSelect'] = 'none';
|
|
43
|
+
} else {
|
|
44
|
+
this.view.style['webkitUserSelect'] = config.userSelect;
|
|
45
|
+
this.view.style['userSelect'] = config.userSelect;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
this.eventManagers.push(new PointerEventManager(this.view));
|
|
49
|
+
this.eventManagers.push(new TouchEventManager(this.view));
|
|
50
|
+
|
|
51
|
+
this.eventManagers.forEach((manager) =>
|
|
52
|
+
this.gestureHandler.attachEventManager(manager)
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
isPointerInBounds({ x, y }: { x: number; y: number }): boolean {
|
|
57
|
+
return isPointerInBounds(this.view, { x, y });
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
measureView(): MeasureResult {
|
|
61
|
+
const rect = this.view.getBoundingClientRect();
|
|
62
|
+
|
|
63
|
+
return {
|
|
64
|
+
pageX: rect.left,
|
|
65
|
+
pageY: rect.top,
|
|
66
|
+
width: rect.width,
|
|
67
|
+
height: rect.height,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
reset(): void {
|
|
72
|
+
this.eventManagers.forEach((manager: EventManager<unknown>) =>
|
|
73
|
+
manager.resetManager()
|
|
74
|
+
);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
tryResetCursor() {
|
|
78
|
+
const config = this.gestureHandler.getConfig();
|
|
79
|
+
|
|
80
|
+
if (
|
|
81
|
+
config.activeCursor &&
|
|
82
|
+
config.activeCursor !== 'auto' &&
|
|
83
|
+
this.gestureHandler.getState() === State.ACTIVE
|
|
84
|
+
) {
|
|
85
|
+
this.view.style.cursor = 'auto';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
onBegin(): void {
|
|
90
|
+
// no-op for now
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
onActivate(): void {
|
|
94
|
+
const config = this.gestureHandler.getConfig();
|
|
95
|
+
|
|
96
|
+
if (
|
|
97
|
+
(!this.view.style.cursor || this.view.style.cursor === 'auto') &&
|
|
98
|
+
config.activeCursor
|
|
99
|
+
) {
|
|
100
|
+
this.view.style.cursor = config.activeCursor;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
onEnd(): void {
|
|
105
|
+
this.tryResetCursor();
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
onCancel(): void {
|
|
109
|
+
this.tryResetCursor();
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
onFail(): void {
|
|
113
|
+
this.tryResetCursor();
|
|
114
|
+
}
|
|
115
|
+
}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
AdaptedEvent,
|
|
3
|
-
EventTypes,
|
|
4
|
-
MouseButtons,
|
|
5
|
-
PointerType,
|
|
6
|
-
} from '../interfaces';
|
|
1
|
+
import { AdaptedEvent, EventTypes, PointerType } from '../interfaces';
|
|
7
2
|
import EventManager from './EventManager';
|
|
8
3
|
import { isPointerInBounds } from '../utils';
|
|
9
4
|
|
|
10
|
-
export default class PointerEventManager extends EventManager {
|
|
5
|
+
export default class PointerEventManager extends EventManager<HTMLElement> {
|
|
11
6
|
private trackedPointers = new Set<number>();
|
|
12
7
|
|
|
13
8
|
public setListeners(): void {
|
|
@@ -69,14 +64,24 @@ export default class PointerEventManager extends EventManager {
|
|
|
69
64
|
return;
|
|
70
65
|
}
|
|
71
66
|
|
|
72
|
-
if (
|
|
73
|
-
event.pointerType === PointerType.MOUSE &&
|
|
74
|
-
event.buttons !== MouseButtons.LEFT
|
|
75
|
-
) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
67
|
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.MOVE);
|
|
68
|
+
const target = event.target as HTMLElement;
|
|
69
|
+
|
|
70
|
+
// You may be wondering why are we setting pointer capture here, when we
|
|
71
|
+
// already set it in `pointerdown` handler. Well, that's a great question,
|
|
72
|
+
// for which I don't have an answer. Specification (https://www.w3.org/TR/pointerevents2/#dom-element-setpointercapture)
|
|
73
|
+
// says that the requirement for `setPointerCapture` to work is that pointer
|
|
74
|
+
// must be in 'active buttons state`, otherwise it will fail silently, which
|
|
75
|
+
// is lovely. Obviously, when `pointerdown` is fired, one of the buttons
|
|
76
|
+
// (when using mouse) is pressed, but that doesn't mean that `setPointerCapture`
|
|
77
|
+
// will succeed, for some reason. Since it fails silently, we don't actually know
|
|
78
|
+
// if it worked or not (there's `gotpointercapture` event, but the complexity of
|
|
79
|
+
// incorporating it here seems stupid), so we just call it again here, every time
|
|
80
|
+
// pointer moves until it succeeds.
|
|
81
|
+
// God, I do love web development.
|
|
82
|
+
if (!target.hasPointerCapture(event.pointerId)) {
|
|
83
|
+
target.setPointerCapture(event.pointerId);
|
|
84
|
+
}
|
|
80
85
|
|
|
81
86
|
const inBounds: boolean = isPointerInBounds(this.view, {
|
|
82
87
|
x: adaptedEvent.x,
|
|
@@ -97,8 +102,8 @@ export default class PointerEventManager extends EventManager {
|
|
|
97
102
|
}
|
|
98
103
|
} else {
|
|
99
104
|
if (pointerIndex >= 0) {
|
|
100
|
-
adaptedEvent.eventType = EventTypes.
|
|
101
|
-
this.
|
|
105
|
+
adaptedEvent.eventType = EventTypes.LEAVE;
|
|
106
|
+
this.onPointerLeave(adaptedEvent);
|
|
102
107
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
|
103
108
|
} else {
|
|
104
109
|
this.onPointerOutOfBounds(adaptedEvent);
|
|
@@ -122,6 +127,31 @@ export default class PointerEventManager extends EventManager {
|
|
|
122
127
|
this.trackedPointers.clear();
|
|
123
128
|
});
|
|
124
129
|
|
|
130
|
+
// onPointerEnter and onPointerLeave are triggered by a custom logic responsible for
|
|
131
|
+
// handling shouldCancelWhenOutside flag, and are unreliable unless the pointer is down.
|
|
132
|
+
// We therefore use pointerenter and pointerleave events to handle the hover gesture,
|
|
133
|
+
// mapping them to onPointerMoveOver and onPointerMoveOut respectively.
|
|
134
|
+
|
|
135
|
+
this.view.addEventListener('pointerenter', (event: PointerEvent): void => {
|
|
136
|
+
if (event.pointerType === PointerType.TOUCH) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.ENTER);
|
|
141
|
+
|
|
142
|
+
this.onPointerMoveOver(adaptedEvent);
|
|
143
|
+
});
|
|
144
|
+
|
|
145
|
+
this.view.addEventListener('pointerleave', (event: PointerEvent): void => {
|
|
146
|
+
if (event.pointerType === PointerType.TOUCH) {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
const adaptedEvent: AdaptedEvent = this.mapEvent(event, EventTypes.LEAVE);
|
|
151
|
+
|
|
152
|
+
this.onPointerMoveOut(adaptedEvent);
|
|
153
|
+
});
|
|
154
|
+
|
|
125
155
|
this.view.addEventListener(
|
|
126
156
|
'lostpointercapture',
|
|
127
157
|
(event: PointerEvent): void => {
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
import EventManager from './EventManager';
|
|
9
9
|
import { isPointerInBounds } from '../utils';
|
|
10
10
|
|
|
11
|
-
export default class TouchEventManager extends EventManager {
|
|
11
|
+
export default class TouchEventManager extends EventManager<HTMLElement> {
|
|
12
12
|
public setListeners(): void {
|
|
13
13
|
this.view.addEventListener('touchstart', (event: TouchEvent) => {
|
|
14
14
|
for (let i = 0; i < event.changedTouches.length; ++i) {
|
|
@@ -75,8 +75,8 @@ export default class TouchEventManager extends EventManager {
|
|
|
75
75
|
}
|
|
76
76
|
} else {
|
|
77
77
|
if (pointerIndex >= 0) {
|
|
78
|
-
adaptedEvent.eventType = EventTypes.
|
|
79
|
-
this.
|
|
78
|
+
adaptedEvent.eventType = EventTypes.LEAVE;
|
|
79
|
+
this.onPointerLeave(adaptedEvent);
|
|
80
80
|
this.markAsOutOfBounds(adaptedEvent.pointerId);
|
|
81
81
|
} else {
|
|
82
82
|
this.onPointerOutOfBounds(adaptedEvent);
|