@ghia/native 0.0.0 → 0.11.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/LICENSE +201 -0
- package/browser.mjs +7 -0
- package/dist/aria.d.ts +72 -0
- package/dist/aria.d.ts.map +1 -0
- package/dist/aria.js +2 -0
- package/dist/aria.js.map +1 -0
- package/dist/automation/client.d.ts +243 -0
- package/dist/automation/client.d.ts.map +1 -0
- package/dist/automation/client.js +801 -0
- package/dist/automation/client.js.map +1 -0
- package/dist/automation/index.d.ts +5 -0
- package/dist/automation/index.d.ts.map +1 -0
- package/dist/automation/index.js +4 -0
- package/dist/automation/index.js.map +1 -0
- package/dist/automation/protocol.d.ts +309 -0
- package/dist/automation/protocol.d.ts.map +1 -0
- package/dist/automation/protocol.js +320 -0
- package/dist/automation/protocol.js.map +1 -0
- package/dist/blob-images.d.ts +32 -0
- package/dist/blob-images.d.ts.map +1 -0
- package/dist/blob-images.js +55 -0
- package/dist/blob-images.js.map +1 -0
- package/dist/bounds.d.ts +61 -0
- package/dist/bounds.d.ts.map +1 -0
- package/dist/bounds.js +85 -0
- package/dist/bounds.js.map +1 -0
- package/dist/clipboard-global.d.ts +11 -0
- package/dist/clipboard-global.d.ts.map +1 -0
- package/dist/clipboard-global.js +2 -0
- package/dist/clipboard-global.js.map +1 -0
- package/dist/clipboard.d.ts +19 -0
- package/dist/clipboard.d.ts.map +1 -0
- package/dist/clipboard.js +41 -0
- package/dist/clipboard.js.map +1 -0
- package/dist/cpu-throttle.d.ts +6 -0
- package/dist/cpu-throttle.d.ts.map +1 -0
- package/dist/cpu-throttle.js +42 -0
- package/dist/cpu-throttle.js.map +1 -0
- package/dist/events/data-transfer.d.ts +23 -0
- package/dist/events/data-transfer.d.ts.map +1 -0
- package/dist/events/data-transfer.js +97 -0
- package/dist/events/data-transfer.js.map +1 -0
- package/dist/events/dispatch.d.ts +144 -0
- package/dist/events/dispatch.d.ts.map +1 -0
- package/dist/events/dispatch.js +241 -0
- package/dist/events/dispatch.js.map +1 -0
- package/dist/events/drag.d.ts +21 -0
- package/dist/events/drag.d.ts.map +1 -0
- package/dist/events/drag.js +111 -0
- package/dist/events/drag.js.map +1 -0
- package/dist/events/event-props.d.ts +19 -0
- package/dist/events/event-props.d.ts.map +1 -0
- package/dist/events/event-props.js +104 -0
- package/dist/events/event-props.js.map +1 -0
- package/dist/events/keyboard-defaults.d.ts +18 -0
- package/dist/events/keyboard-defaults.d.ts.map +1 -0
- package/dist/events/keyboard-defaults.js +121 -0
- package/dist/events/keyboard-defaults.js.map +1 -0
- package/dist/events/listeners.d.ts +18 -0
- package/dist/events/listeners.d.ts.map +1 -0
- package/dist/events/listeners.js +49 -0
- package/dist/events/listeners.js.map +1 -0
- package/dist/events/route.d.ts +17 -0
- package/dist/events/route.d.ts.map +1 -0
- package/dist/events/route.js +36 -0
- package/dist/events/route.js.map +1 -0
- package/dist/events/types.d.ts +269 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +2 -0
- package/dist/events/types.js.map +1 -0
- package/dist/events/window-target.d.ts +120 -0
- package/dist/events/window-target.d.ts.map +1 -0
- package/dist/events/window-target.js +311 -0
- package/dist/events/window-target.js.map +1 -0
- package/dist/eyedropper.d.ts +33 -0
- package/dist/eyedropper.d.ts.map +1 -0
- package/dist/eyedropper.js +66 -0
- package/dist/eyedropper.js.map +1 -0
- package/dist/focus.d.ts +18 -0
- package/dist/focus.d.ts.map +1 -0
- package/dist/focus.js +26 -0
- package/dist/focus.js.map +1 -0
- package/dist/fonts.d.ts +12 -0
- package/dist/fonts.d.ts.map +1 -0
- package/dist/fonts.js +17 -0
- package/dist/fonts.js.map +1 -0
- package/dist/forms.d.ts +10 -0
- package/dist/forms.d.ts.map +1 -0
- package/dist/forms.js +9 -0
- package/dist/forms.js.map +1 -0
- package/dist/host-runtime.d.ts +108 -0
- package/dist/host-runtime.d.ts.map +1 -0
- package/dist/host-runtime.js +213 -0
- package/dist/host-runtime.js.map +1 -0
- package/dist/host.d.ts +2403 -0
- package/dist/host.d.ts.map +1 -0
- package/dist/host.js +30 -0
- package/dist/host.js.map +1 -0
- package/dist/idle-gc.d.ts +36 -0
- package/dist/idle-gc.d.ts.map +1 -0
- package/dist/idle-gc.js +70 -0
- package/dist/idle-gc.js.map +1 -0
- package/dist/keyframes.d.ts +108 -0
- package/dist/keyframes.d.ts.map +1 -0
- package/dist/keyframes.js +107 -0
- package/dist/keyframes.js.map +1 -0
- package/dist/layout-animation.d.ts +38 -0
- package/dist/layout-animation.d.ts.map +1 -0
- package/dist/layout-animation.js +41 -0
- package/dist/layout-animation.js.map +1 -0
- package/dist/match-media.d.ts +62 -0
- package/dist/match-media.d.ts.map +1 -0
- package/dist/match-media.js +272 -0
- package/dist/match-media.js.map +1 -0
- package/dist/media-query.d.ts +21 -0
- package/dist/media-query.d.ts.map +1 -0
- package/dist/media-query.js +599 -0
- package/dist/media-query.js.map +1 -0
- package/dist/motion-bindings.d.ts +36 -0
- package/dist/motion-bindings.d.ts.map +1 -0
- package/dist/motion-bindings.js +107 -0
- package/dist/motion-bindings.js.map +1 -0
- package/dist/motion-config.d.ts +20 -0
- package/dist/motion-config.d.ts.map +1 -0
- package/dist/motion-config.js +51 -0
- package/dist/motion-config.js.map +1 -0
- package/dist/motion-span.d.ts +57 -0
- package/dist/motion-span.d.ts.map +1 -0
- package/dist/motion-span.js +150 -0
- package/dist/motion-span.js.map +1 -0
- package/dist/motion-value.d.ts +269 -0
- package/dist/motion-value.d.ts.map +1 -0
- package/dist/motion-value.js +941 -0
- package/dist/motion-value.js.map +1 -0
- package/dist/motion-variants.d.ts +190 -0
- package/dist/motion-variants.d.ts.map +1 -0
- package/dist/motion-variants.js +249 -0
- package/dist/motion-variants.js.map +1 -0
- package/dist/mutations.d.ts +65 -0
- package/dist/mutations.d.ts.map +1 -0
- package/dist/mutations.js +320 -0
- package/dist/mutations.js.map +1 -0
- package/dist/nativeview.d.ts +10 -0
- package/dist/nativeview.d.ts.map +1 -0
- package/dist/nativeview.js +92 -0
- package/dist/nativeview.js.map +1 -0
- package/dist/observers.d.ts +92 -0
- package/dist/observers.d.ts.map +1 -0
- package/dist/observers.js +579 -0
- package/dist/observers.js.map +1 -0
- package/dist/presence.d.ts +63 -0
- package/dist/presence.d.ts.map +1 -0
- package/dist/presence.js +54 -0
- package/dist/presence.js.map +1 -0
- package/dist/renderer-state.d.ts +155 -0
- package/dist/renderer-state.d.ts.map +1 -0
- package/dist/renderer-state.js +302 -0
- package/dist/renderer-state.js.map +1 -0
- package/dist/reorder.d.ts +63 -0
- package/dist/reorder.d.ts.map +1 -0
- package/dist/reorder.js +303 -0
- package/dist/reorder.js.map +1 -0
- package/dist/runtime.d.ts +23 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +157 -0
- package/dist/runtime.js.map +1 -0
- package/dist/screen.d.ts +8 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +16 -0
- package/dist/screen.js.map +1 -0
- package/dist/scroll.d.ts +79 -0
- package/dist/scroll.d.ts.map +1 -0
- package/dist/scroll.js +170 -0
- package/dist/scroll.js.map +1 -0
- package/dist/style-images.d.ts +20 -0
- package/dist/style-images.d.ts.map +1 -0
- package/dist/style-images.js +57 -0
- package/dist/style-images.js.map +1 -0
- package/dist/svg.d.ts +16 -0
- package/dist/svg.d.ts.map +1 -0
- package/dist/svg.js +119 -0
- package/dist/svg.js.map +1 -0
- package/dist/testing.d.ts +811 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +1187 -0
- package/dist/testing.js.map +1 -0
- package/dist/text-match.d.ts +8 -0
- package/dist/text-match.d.ts.map +1 -0
- package/dist/text-match.js +10 -0
- package/dist/text-match.js.map +1 -0
- package/dist/text-selection.d.ts +34 -0
- package/dist/text-selection.d.ts.map +1 -0
- package/dist/text-selection.js +23 -0
- package/dist/text-selection.js.map +1 -0
- package/dist/universal-style.d.ts +22 -0
- package/dist/universal-style.d.ts.map +1 -0
- package/dist/universal-style.js +58 -0
- package/dist/universal-style.js.map +1 -0
- package/dist/web-animations.d.ts +300 -0
- package/dist/web-animations.d.ts.map +1 -0
- package/dist/web-animations.js +1032 -0
- package/dist/web-animations.js.map +1 -0
- package/dist/webview.d.ts +39 -0
- package/dist/webview.d.ts.map +1 -0
- package/dist/webview.js +26 -0
- package/dist/webview.js.map +1 -0
- package/gpuix-native.darwin-arm64.node +4 -0
- package/index.cjs +789 -0
- package/index.d.ts +2603 -0
- package/index.js +729 -0
- package/package.json +96 -4
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { EventPayload } from "../../index.js";
|
|
2
|
+
import { type DomEventRoot } from "./dispatch.js";
|
|
3
|
+
import type { HostDropEffect } from "./types.js";
|
|
4
|
+
export declare function isDragEvent(event: EventPayload): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Runs the events of drags, one drag at a time, both kinds: files from the OS
|
|
7
|
+
* and an element with `draggable`.
|
|
8
|
+
*
|
|
9
|
+
* Native sends every drag event whether or not anything listens, because the DOM
|
|
10
|
+
* delivers a drop only to a target whose last `dragover` was cancelled, and native
|
|
11
|
+
* cannot wait for JS to say so. A drop that nothing accepted is delivered as the
|
|
12
|
+
* `dragleave` the DOM fires in its place. `cancelDrag` tells native that the
|
|
13
|
+
* handler of `dragstart` cancelled the drag; native may already have sent a
|
|
14
|
+
* move or two, which are dropped here.
|
|
15
|
+
*
|
|
16
|
+
* A `dragover` returns the drop effect it ended with, `"none"` unless a handler
|
|
17
|
+
* cancelled it with an effect the source allows. For a drag of files native
|
|
18
|
+
* answers the OS with it.
|
|
19
|
+
*/
|
|
20
|
+
export declare function createDragDispatcher(cancelDrag: () => void): (root: DomEventRoot, event: EventPayload) => HostDropEffect | undefined;
|
|
21
|
+
//# sourceMappingURL=drag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drag.d.ts","sourceRoot":"","sources":["../../js/events/drag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAQlD,OAAO,EAAoB,KAAK,YAAY,EAAE,MAAM,eAAe,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAYhD,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAExD;AAuBD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,IAAI,GACrB,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,KAAK,cAAc,GAAG,SAAS,CAsEzE"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { allowsDropEffect, createDataTransfer, defaultDropEffect, } from "./data-transfer.js";
|
|
2
|
+
import { dispatchDomEvent } from "./dispatch.js";
|
|
3
|
+
import { hasDomListener } from "./route.js";
|
|
4
|
+
const DRAG_TYPES = new Set([
|
|
5
|
+
"dragstart",
|
|
6
|
+
"drag",
|
|
7
|
+
"dragend",
|
|
8
|
+
"dragenter",
|
|
9
|
+
"dragover",
|
|
10
|
+
"dragleave",
|
|
11
|
+
"drop",
|
|
12
|
+
]);
|
|
13
|
+
export function isDragEvent(event) {
|
|
14
|
+
return DRAG_TYPES.has(event.eventType);
|
|
15
|
+
}
|
|
16
|
+
const MODE_BY_TYPE = {
|
|
17
|
+
dragstart: "readwrite",
|
|
18
|
+
drop: "readonly",
|
|
19
|
+
};
|
|
20
|
+
function startSession(kind, data) {
|
|
21
|
+
return { kind, data, accepted: false, effect: "none", dropped: false };
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Runs the events of drags, one drag at a time, both kinds: files from the OS
|
|
25
|
+
* and an element with `draggable`.
|
|
26
|
+
*
|
|
27
|
+
* Native sends every drag event whether or not anything listens, because the DOM
|
|
28
|
+
* delivers a drop only to a target whose last `dragover` was cancelled, and native
|
|
29
|
+
* cannot wait for JS to say so. A drop that nothing accepted is delivered as the
|
|
30
|
+
* `dragleave` the DOM fires in its place. `cancelDrag` tells native that the
|
|
31
|
+
* handler of `dragstart` cancelled the drag; native may already have sent a
|
|
32
|
+
* move or two, which are dropped here.
|
|
33
|
+
*
|
|
34
|
+
* A `dragover` returns the drop effect it ended with, `"none"` unless a handler
|
|
35
|
+
* cancelled it with an effect the source allows. For a drag of files native
|
|
36
|
+
* answers the OS with it.
|
|
37
|
+
*/
|
|
38
|
+
export function createDragDispatcher(cancelDrag) {
|
|
39
|
+
let session;
|
|
40
|
+
let cancelled = false;
|
|
41
|
+
return (root, event) => {
|
|
42
|
+
// A drag of files starts with its files; a drag of an element with dragstart.
|
|
43
|
+
if (event.eventType === "dragstart") {
|
|
44
|
+
session = startSession("element", createDataTransfer());
|
|
45
|
+
cancelled = false;
|
|
46
|
+
}
|
|
47
|
+
else if (event.files) {
|
|
48
|
+
session = startSession("files", createDataTransfer(event.files));
|
|
49
|
+
cancelled = false;
|
|
50
|
+
}
|
|
51
|
+
if (cancelled)
|
|
52
|
+
return;
|
|
53
|
+
if (!session) {
|
|
54
|
+
throw new Error(`A "${event.eventType}" drag event arrived before the drag started.`);
|
|
55
|
+
}
|
|
56
|
+
const current = session;
|
|
57
|
+
const data = current.data.dataTransfer;
|
|
58
|
+
// Leaving the window has no related target; moving to another element does.
|
|
59
|
+
const endsDrag = current.kind === "element"
|
|
60
|
+
? event.eventType === "dragend"
|
|
61
|
+
: event.eventType === "drop" ||
|
|
62
|
+
(event.eventType === "dragleave" && event.relatedTarget == null);
|
|
63
|
+
let eventType = event.eventType;
|
|
64
|
+
// What the last target accepted says nothing of the one entered now: it
|
|
65
|
+
// must cancel a dragover of its own before a drop reaches it.
|
|
66
|
+
if (eventType === "dragenter") {
|
|
67
|
+
current.accepted = false;
|
|
68
|
+
current.effect = "none";
|
|
69
|
+
}
|
|
70
|
+
if (eventType === "drop" && !current.accepted)
|
|
71
|
+
eventType = "dragleave";
|
|
72
|
+
if (eventType === "dragenter" || eventType === "dragover") {
|
|
73
|
+
data.dropEffect = defaultDropEffect(data.effectAllowed);
|
|
74
|
+
}
|
|
75
|
+
else if (eventType === "drop") {
|
|
76
|
+
data.dropEffect = current.effect;
|
|
77
|
+
}
|
|
78
|
+
else if (eventType === "dragend") {
|
|
79
|
+
data.dropEffect = current.dropped ? current.effect : "none";
|
|
80
|
+
}
|
|
81
|
+
current.data.mode = MODE_BY_TYPE[eventType] ?? "protected";
|
|
82
|
+
const dispatched = { ...event, eventType, dataTransfer: data };
|
|
83
|
+
let defaultPrevented = false;
|
|
84
|
+
try {
|
|
85
|
+
if (hasDomListener(root.eventHandlers, dispatched)) {
|
|
86
|
+
defaultPrevented = dispatchDomEvent(root, dispatched).defaultPrevented;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
current.data.mode = "protected";
|
|
91
|
+
if (eventType === "dragover") {
|
|
92
|
+
current.accepted =
|
|
93
|
+
defaultPrevented &&
|
|
94
|
+
data.dropEffect !== "none" &&
|
|
95
|
+
allowsDropEffect(data.effectAllowed, data.dropEffect);
|
|
96
|
+
current.effect = current.accepted ? data.dropEffect : "none";
|
|
97
|
+
}
|
|
98
|
+
if (eventType === "drop")
|
|
99
|
+
current.dropped = true;
|
|
100
|
+
if (endsDrag)
|
|
101
|
+
session = undefined;
|
|
102
|
+
}
|
|
103
|
+
if (event.eventType === "dragstart" && defaultPrevented) {
|
|
104
|
+
session = undefined;
|
|
105
|
+
cancelled = true;
|
|
106
|
+
cancelDrag();
|
|
107
|
+
}
|
|
108
|
+
return event.eventType === "dragover" ? current.effect : undefined;
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=drag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drag.js","sourceRoot":"","sources":["../../js/events/drag.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard and focus handler props and the lowercase DOM type each listens for.
|
|
3
|
+
* They have no `on…Capture` twins.
|
|
4
|
+
*/
|
|
5
|
+
export declare const KEYBOARD_FOCUS_EVENT_PROPS: readonly (readonly [string, string])[];
|
|
6
|
+
/** The pointer, mouse, drag and wheel types, lowercase. */
|
|
7
|
+
export declare const POINTER_EVENT_TYPES: ReadonlySet<string>;
|
|
8
|
+
/**
|
|
9
|
+
* The DOM event types that run through `dispatchDomEvent`: native emits them
|
|
10
|
+
* with a propagation path and they are named by their lowercase DOM type.
|
|
11
|
+
*/
|
|
12
|
+
export declare const DOM_DISPATCHED_EVENT_TYPES: ReadonlySet<string>;
|
|
13
|
+
/**
|
|
14
|
+
* Prop name to handler key, with a capture-phase `on…Capture` entry for each.
|
|
15
|
+
* A capture handler is keyed `captureHandlerKey(type)`; both phases share one
|
|
16
|
+
* native listener on `type`.
|
|
17
|
+
*/
|
|
18
|
+
export declare const DOM_DISPATCHED_HANDLER_PROPS: readonly (readonly [string, string])[];
|
|
19
|
+
//# sourceMappingURL=event-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-props.d.ts","sourceRoot":"","sources":["../../js/events/event-props.ts"],"names":[],"mappings":"AA4CA;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAO5E,CAAA;AAuDD,2DAA2D;AAC3D,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,MAAM,CAEnD,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,EAAE,WAAW,CAAC,MAAM,CAKzD,CAAA;AAEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,EAAE,SAAS,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAQ7E,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { captureHandlerKey } from "./dispatch.js";
|
|
2
|
+
/**
|
|
3
|
+
* Pointer, mouse, drag and wheel handler props and the DOM event type each one
|
|
4
|
+
* listens for. Types are the lowercase DOM names.
|
|
5
|
+
*/
|
|
6
|
+
const POINTER_EVENT_PROPS = [
|
|
7
|
+
["onClick", "click"],
|
|
8
|
+
["onAuxClick", "auxclick"],
|
|
9
|
+
["onDoubleClick", "dblclick"],
|
|
10
|
+
["onContextMenu", "contextmenu"],
|
|
11
|
+
["onMouseDown", "mousedown"],
|
|
12
|
+
["onMouseUp", "mouseup"],
|
|
13
|
+
["onMouseMove", "mousemove"],
|
|
14
|
+
["onMouseEnter", "mouseenter"],
|
|
15
|
+
["onMouseLeave", "mouseleave"],
|
|
16
|
+
["onMouseOver", "mouseover"],
|
|
17
|
+
["onMouseOut", "mouseout"],
|
|
18
|
+
["onPointerDown", "pointerdown"],
|
|
19
|
+
["onPointerMove", "pointermove"],
|
|
20
|
+
["onPointerUp", "pointerup"],
|
|
21
|
+
["onPointerEnter", "pointerenter"],
|
|
22
|
+
["onPointerLeave", "pointerleave"],
|
|
23
|
+
["onPointerOver", "pointerover"],
|
|
24
|
+
["onPointerOut", "pointerout"],
|
|
25
|
+
["onPointerCancel", "pointercancel"],
|
|
26
|
+
["onGotPointerCapture", "gotpointercapture"],
|
|
27
|
+
["onLostPointerCapture", "lostpointercapture"],
|
|
28
|
+
["onDragStart", "dragstart"],
|
|
29
|
+
["onDrag", "drag"],
|
|
30
|
+
["onDragEnd", "dragend"],
|
|
31
|
+
["onDragEnter", "dragenter"],
|
|
32
|
+
["onDragOver", "dragover"],
|
|
33
|
+
["onDragLeave", "dragleave"],
|
|
34
|
+
["onDrop", "drop"],
|
|
35
|
+
["onWheel", "wheel"],
|
|
36
|
+
];
|
|
37
|
+
/**
|
|
38
|
+
* Keyboard and focus handler props and the lowercase DOM type each listens for.
|
|
39
|
+
* They have no `on…Capture` twins.
|
|
40
|
+
*/
|
|
41
|
+
export const KEYBOARD_FOCUS_EVENT_PROPS = [
|
|
42
|
+
["onKeyDown", "keydown"],
|
|
43
|
+
["onKeyUp", "keyup"],
|
|
44
|
+
["onFocus", "focus"],
|
|
45
|
+
["onBlur", "blur"],
|
|
46
|
+
["onFocusIn", "focusin"],
|
|
47
|
+
["onFocusOut", "focusout"],
|
|
48
|
+
];
|
|
49
|
+
const tableCoversEveryProp = true;
|
|
50
|
+
void tableCoversEveryProp;
|
|
51
|
+
/** CSS transition and animation events. They bubble and cannot be cancelled. */
|
|
52
|
+
const ANIMATION_EVENT_PROPS = [
|
|
53
|
+
["onTransitionRun", "transitionrun"],
|
|
54
|
+
["onTransitionStart", "transitionstart"],
|
|
55
|
+
["onTransitionEnd", "transitionend"],
|
|
56
|
+
["onTransitionCancel", "transitioncancel"],
|
|
57
|
+
["onAnimationStart", "animationstart"],
|
|
58
|
+
["onAnimationIteration", "animationiteration"],
|
|
59
|
+
["onAnimationEnd", "animationend"],
|
|
60
|
+
["onAnimationCancel", "animationcancel"],
|
|
61
|
+
];
|
|
62
|
+
const animationTableCoversEveryProp = true;
|
|
63
|
+
void animationTableCoversEveryProp;
|
|
64
|
+
/** The state change of an element with `content-visibility: auto`. It bubbles and can be cancelled. */
|
|
65
|
+
const CONTENT_VISIBILITY_EVENT_PROPS = [
|
|
66
|
+
["onContentVisibilityAutoStateChange", "contentvisibilityautostatechange"],
|
|
67
|
+
];
|
|
68
|
+
const contentVisibilityTableCoversEveryProp = true;
|
|
69
|
+
void contentVisibilityTableCoversEveryProp;
|
|
70
|
+
/** Input method composition events. They bubble and cannot be cancelled. */
|
|
71
|
+
const COMPOSITION_EVENT_PROPS = [
|
|
72
|
+
["onCompositionStart", "compositionstart"],
|
|
73
|
+
["onCompositionUpdate", "compositionupdate"],
|
|
74
|
+
["onCompositionEnd", "compositionend"],
|
|
75
|
+
];
|
|
76
|
+
const compositionTableCoversEveryProp = true;
|
|
77
|
+
void compositionTableCoversEveryProp;
|
|
78
|
+
/** The pointer, mouse, drag and wheel types, lowercase. */
|
|
79
|
+
export const POINTER_EVENT_TYPES = new Set(POINTER_EVENT_PROPS.map(([, eventType]) => eventType));
|
|
80
|
+
/**
|
|
81
|
+
* The DOM event types that run through `dispatchDomEvent`: native emits them
|
|
82
|
+
* with a propagation path and they are named by their lowercase DOM type.
|
|
83
|
+
*/
|
|
84
|
+
export const DOM_DISPATCHED_EVENT_TYPES = new Set([
|
|
85
|
+
...POINTER_EVENT_TYPES,
|
|
86
|
+
...ANIMATION_EVENT_PROPS.map(([, eventType]) => eventType),
|
|
87
|
+
...CONTENT_VISIBILITY_EVENT_PROPS.map(([, eventType]) => eventType),
|
|
88
|
+
...COMPOSITION_EVENT_PROPS.map(([, eventType]) => eventType),
|
|
89
|
+
]);
|
|
90
|
+
/**
|
|
91
|
+
* Prop name to handler key, with a capture-phase `on…Capture` entry for each.
|
|
92
|
+
* A capture handler is keyed `captureHandlerKey(type)`; both phases share one
|
|
93
|
+
* native listener on `type`.
|
|
94
|
+
*/
|
|
95
|
+
export const DOM_DISPATCHED_HANDLER_PROPS = [
|
|
96
|
+
...POINTER_EVENT_PROPS,
|
|
97
|
+
...ANIMATION_EVENT_PROPS,
|
|
98
|
+
...CONTENT_VISIBILITY_EVENT_PROPS,
|
|
99
|
+
...COMPOSITION_EVENT_PROPS,
|
|
100
|
+
].flatMap(([propName, eventType]) => [
|
|
101
|
+
[propName, eventType],
|
|
102
|
+
[`${propName}Capture`, captureHandlerKey(eventType)],
|
|
103
|
+
]);
|
|
104
|
+
//# sourceMappingURL=event-props.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"event-props.js","sourceRoot":"","sources":["../../js/events/event-props.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EventPayload } from "../../index.js";
|
|
2
|
+
import type { NativeRenderer } from "../host.js";
|
|
3
|
+
import type { ActiveRoot, DismissLayer } from "../renderer-state.js";
|
|
4
|
+
import { type DomDispatchResult } from "./dispatch.js";
|
|
5
|
+
export interface RootEventContext {
|
|
6
|
+
readonly renderer: NativeRenderer;
|
|
7
|
+
topLayer(): DismissLayer | undefined;
|
|
8
|
+
dispatchDrag(root: ActiveRoot, event: EventPayload): DomDispatchResult["dropEffect"];
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Native may still emit the old camelCase pointer names; handlers are
|
|
12
|
+
* registered under the DOM's lowercase ones.
|
|
13
|
+
*/
|
|
14
|
+
export declare function normalizeEventType(event: EventPayload): EventPayload;
|
|
15
|
+
/** Whether `event` was meant for the live root, and something is there to hear it. */
|
|
16
|
+
export declare function handlesEvent(root: ActiveRoot, event: EventPayload): boolean;
|
|
17
|
+
export declare function runRootEvent(root: ActiveRoot, event: EventPayload, context: RootEventContext): DomDispatchResult;
|
|
18
|
+
//# sourceMappingURL=keyboard-defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-defaults.d.ts","sourceRoot":"","sources":["../../js/events/keyboard-defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAOL,KAAK,iBAAiB,EAIvB,MAAM,eAAe,CAAA;AAOtB,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,QAAQ,IAAI,YAAY,GAAG,SAAS,CAAA;IACpC,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;CACrF;AAkBD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAGpE;AAED,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAkC3E;AAOD,wBAAgB,YAAY,CAC1B,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,GACxB,iBAAiB,CAqCnB"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { createDomEvent, dispatchDomEvent, optionalElement, reportHandlerErrors, requireElement, toRootEvent, } from "./dispatch.js";
|
|
2
|
+
import { scrollKeyName } from "../scroll.js";
|
|
3
|
+
import { moveFocusByTab } from "../focus.js";
|
|
4
|
+
import { isDragEvent } from "./drag.js";
|
|
5
|
+
import { handlerEventType, hasDomListener, isOutsidePress } from "./route.js";
|
|
6
|
+
import { dispatchPropagating, document, isDocumentEvent, window } from "./window-target.js";
|
|
7
|
+
const notHandled = { defaultPrevented: false, propagationStopped: false };
|
|
8
|
+
function hasCommandModifier(event) {
|
|
9
|
+
const modifiers = event.modifiers;
|
|
10
|
+
return Boolean(modifiers?.ctrl || modifiers?.alt || modifiers?.cmd);
|
|
11
|
+
}
|
|
12
|
+
const KEY_EVENT_TYPES = new Set(["keydown", "keyup"]);
|
|
13
|
+
const MOVE_EVENT_TYPES = new Set(["pointermove", "mousemove"]);
|
|
14
|
+
/** A move over no element: it has no path, and only `window` and `document` hear it. */
|
|
15
|
+
function isWindowMove(event) {
|
|
16
|
+
return event.path == null && MOVE_EVENT_TYPES.has(event.eventType);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Native may still emit the old camelCase pointer names; handlers are
|
|
20
|
+
* registered under the DOM's lowercase ones.
|
|
21
|
+
*/
|
|
22
|
+
export function normalizeEventType(event) {
|
|
23
|
+
const eventType = handlerEventType(event.eventType);
|
|
24
|
+
return eventType === event.eventType ? event : { ...event, eventType };
|
|
25
|
+
}
|
|
26
|
+
/** Whether `event` was meant for the live root, and something is there to hear it. */
|
|
27
|
+
export function handlesEvent(root, event) {
|
|
28
|
+
if (event.eventType === "selectionChange") {
|
|
29
|
+
return event.elementId === root.windowSelectionEventId && Boolean(root.handlers.onSelectionChange);
|
|
30
|
+
}
|
|
31
|
+
if (event.eventType === "appearanceChange") {
|
|
32
|
+
return event.elementId === root.windowAppearanceEventId && Boolean(root.handlers.onAppearanceChange);
|
|
33
|
+
}
|
|
34
|
+
// A path whose target the root has dropped is an event native queued before
|
|
35
|
+
// the element was destroyed: nobody can be told about it.
|
|
36
|
+
if (event.path != null && event.path.length > 0 && root.elementById(event.path[0]) === undefined) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
// Document-level in the DOM, so no element id or listener flag: native
|
|
40
|
+
// fires them only for a lock JS asked for or held.
|
|
41
|
+
if (isDocumentEvent(event.eventType)) {
|
|
42
|
+
return window.hasListeners(event.eventType) || document.hasListeners(event.eventType);
|
|
43
|
+
}
|
|
44
|
+
if (KEY_EVENT_TYPES.has(event.eventType)) {
|
|
45
|
+
// Native aims a key at the window when nothing focused listens; that
|
|
46
|
+
// address goes stale when the root is replaced.
|
|
47
|
+
return event.path != null || event.elementId === root.windowKeyEventId;
|
|
48
|
+
}
|
|
49
|
+
if (isDragEvent(event))
|
|
50
|
+
return true;
|
|
51
|
+
if (isWindowMove(event)) {
|
|
52
|
+
return window.hasListeners(event.eventType) || document.hasListeners(event.eventType);
|
|
53
|
+
}
|
|
54
|
+
if (event.path == null || isOutsidePress(event.eventType)) {
|
|
55
|
+
return root.eventHandlers.get(event.elementId)?.has(event.eventType) === true;
|
|
56
|
+
}
|
|
57
|
+
return (hasDomListener(root.eventHandlers, event) ||
|
|
58
|
+
window.hasListeners(event.eventType) ||
|
|
59
|
+
document.hasListeners(event.eventType));
|
|
60
|
+
}
|
|
61
|
+
/** An event of the window (selection, appearance), with `target` as the element when it names one. */
|
|
62
|
+
function windowLevelEvent(root, event) {
|
|
63
|
+
return { ...toRootEvent(root, event, optionalElement(root, event.target)), elementId: 0 };
|
|
64
|
+
}
|
|
65
|
+
export function runRootEvent(root, event, context) {
|
|
66
|
+
if (event.eventType === "selectionChange") {
|
|
67
|
+
root.handlers.onSelectionChange?.(windowLevelEvent(root, event), context.renderer);
|
|
68
|
+
return notHandled;
|
|
69
|
+
}
|
|
70
|
+
if (event.eventType === "appearanceChange") {
|
|
71
|
+
root.handlers.onAppearanceChange?.(windowLevelEvent(root, event), context.renderer);
|
|
72
|
+
return notHandled;
|
|
73
|
+
}
|
|
74
|
+
if (isDocumentEvent(event.eventType)) {
|
|
75
|
+
dispatchPropagating(root, event, root.scoped);
|
|
76
|
+
return notHandled;
|
|
77
|
+
}
|
|
78
|
+
if (isDragEvent(event)) {
|
|
79
|
+
const dropEffect = context.dispatchDrag(root, event);
|
|
80
|
+
return dropEffect === undefined ? notHandled : { ...notHandled, dropEffect };
|
|
81
|
+
}
|
|
82
|
+
if (isOutsidePress(event.eventType)) {
|
|
83
|
+
try {
|
|
84
|
+
const path = (event.path ?? [event.elementId]).map((id) => requireElement(root, id, event.eventType));
|
|
85
|
+
const outside = createDomEvent(root, event, path, null).event;
|
|
86
|
+
outside.currentTarget = requireElement(root, event.elementId, event.eventType);
|
|
87
|
+
root.eventHandlers.get(event.elementId)?.get(event.eventType)?.(outside);
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
reportHandlerErrors(root, [error]);
|
|
91
|
+
}
|
|
92
|
+
return notHandled;
|
|
93
|
+
}
|
|
94
|
+
if (event.path == null && !KEY_EVENT_TYPES.has(event.eventType) && !isWindowMove(event)) {
|
|
95
|
+
// Aimed at one element, with no path to walk, but still cancelable.
|
|
96
|
+
return dispatchDomEvent(root, event);
|
|
97
|
+
}
|
|
98
|
+
const { event: domEvent, ...result } = dispatchPropagating(root, event, root.scoped);
|
|
99
|
+
if (event.eventType === "keydown" && !result.defaultPrevented) {
|
|
100
|
+
runKeyDefault(root, domEvent, context);
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
// The default actions of a key run after every handler had the chance to
|
|
105
|
+
// call preventDefault().
|
|
106
|
+
function runKeyDefault(root, event, context) {
|
|
107
|
+
if (hasCommandModifier(event))
|
|
108
|
+
return;
|
|
109
|
+
if (event.key === "Escape") {
|
|
110
|
+
context.topLayer()?.onEscapeKeyDown(event);
|
|
111
|
+
}
|
|
112
|
+
else if (event.key === "Tab" && root.handlers.tabNavigation !== false) {
|
|
113
|
+
moveFocusByTab(context.renderer, Boolean(event.modifiers?.shift));
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
const scrollKey = scrollKeyName(event.key);
|
|
117
|
+
if (scrollKey)
|
|
118
|
+
context.renderer.scrollByKey?.(scrollKey, Boolean(event.modifiers?.shift));
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=keyboard-defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keyboard-defaults.js","sourceRoot":"","sources":["../../js/events/keyboard-defaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EventHandlerMap, HostEventHandler, MutationRenderer } from "../host.js";
|
|
2
|
+
/**
|
|
3
|
+
* The type native listens for: a capture handler key without its `Capture`
|
|
4
|
+
* suffix, so native hears of a type once while either phase has a handler.
|
|
5
|
+
* Enter and leave keep the suffix: an ancestor hears them in the capture phase
|
|
6
|
+
* only, and native has to tell its capture listener from its bubble one.
|
|
7
|
+
*/
|
|
8
|
+
export declare function nativeEventType(handlerKey: string): string;
|
|
9
|
+
type ListenerRenderer = Pick<MutationRenderer, "setEventListener">;
|
|
10
|
+
/**
|
|
11
|
+
* Registers a handler under `handlerKey` (a bare type or its capture key).
|
|
12
|
+
* Native is told about the type once, when the first of its two phases appears.
|
|
13
|
+
*/
|
|
14
|
+
export declare function registerEventListener(eventHandlers: EventHandlerMap, renderer: ListenerRenderer, elementId: number, handlerKey: string, handler: HostEventHandler): void;
|
|
15
|
+
/** Removes a handler. Native is told only when its type has no handler in either phase. */
|
|
16
|
+
export declare function unregisterEventListener(eventHandlers: EventHandlerMap, renderer: ListenerRenderer, elementId: number, handlerKey: string): void;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=listeners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../js/events/listeners.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAMrF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAG1D;AAkBD,KAAK,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAA;AAElE;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,aAAa,EAAE,eAAe,EAC9B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,gBAAgB,GACxB,IAAI,CAKN;AAED,2FAA2F;AAC3F,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,eAAe,EAC9B,QAAQ,EAAE,gBAAgB,EAC1B,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,IAAI,CAON"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { registerEventHandler, unregisterEventHandler } from "../renderer-state.js";
|
|
2
|
+
import { captureHandlerKey, isEnterLeaveType } from "./dispatch.js";
|
|
3
|
+
const CAPTURE_SUFFIX = "Capture";
|
|
4
|
+
/**
|
|
5
|
+
* The type native listens for: a capture handler key without its `Capture`
|
|
6
|
+
* suffix, so native hears of a type once while either phase has a handler.
|
|
7
|
+
* Enter and leave keep the suffix: an ancestor hears them in the capture phase
|
|
8
|
+
* only, and native has to tell its capture listener from its bubble one.
|
|
9
|
+
*/
|
|
10
|
+
export function nativeEventType(handlerKey) {
|
|
11
|
+
const eventType = withoutCaptureSuffix(handlerKey);
|
|
12
|
+
return isEnterLeaveType(eventType) ? handlerKey : eventType;
|
|
13
|
+
}
|
|
14
|
+
function withoutCaptureSuffix(handlerKey) {
|
|
15
|
+
return handlerKey.endsWith(CAPTURE_SUFFIX)
|
|
16
|
+
? handlerKey.slice(0, -CAPTURE_SUFFIX.length)
|
|
17
|
+
: handlerKey;
|
|
18
|
+
}
|
|
19
|
+
/** Whether a handler is registered that native hears of as `nativeType`. */
|
|
20
|
+
function listening(handlers, nativeType) {
|
|
21
|
+
if (!handlers)
|
|
22
|
+
return false;
|
|
23
|
+
if (handlers.has(nativeType))
|
|
24
|
+
return true;
|
|
25
|
+
return (!isEnterLeaveType(withoutCaptureSuffix(nativeType)) &&
|
|
26
|
+
handlers.has(captureHandlerKey(nativeType)));
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Registers a handler under `handlerKey` (a bare type or its capture key).
|
|
30
|
+
* Native is told about the type once, when the first of its two phases appears.
|
|
31
|
+
*/
|
|
32
|
+
export function registerEventListener(eventHandlers, renderer, elementId, handlerKey, handler) {
|
|
33
|
+
const eventType = nativeEventType(handlerKey);
|
|
34
|
+
const wasListening = listening(eventHandlers.get(elementId), eventType);
|
|
35
|
+
registerEventHandler(eventHandlers, elementId, handlerKey, handler);
|
|
36
|
+
if (!wasListening)
|
|
37
|
+
renderer.setEventListener(elementId, eventType, true);
|
|
38
|
+
}
|
|
39
|
+
/** Removes a handler. Native is told only when its type has no handler in either phase. */
|
|
40
|
+
export function unregisterEventListener(eventHandlers, renderer, elementId, handlerKey) {
|
|
41
|
+
if (!eventHandlers.get(elementId)?.has(handlerKey))
|
|
42
|
+
return;
|
|
43
|
+
const eventType = nativeEventType(handlerKey);
|
|
44
|
+
unregisterEventHandler(eventHandlers, elementId, handlerKey);
|
|
45
|
+
if (!listening(eventHandlers.get(elementId), eventType)) {
|
|
46
|
+
renderer.setEventListener(elementId, eventType, false);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=listeners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.js","sourceRoot":"","sources":["../../js/events/listeners.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAA;AACnF,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEnE,MAAM,cAAc,GAAG,SAAS,CAAA;AAEhC;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,SAAS,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAA;IAClD,OAAO,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAA;AAC7D,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB;IAC9C,OAAO,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;QACxC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC;QAC7C,CAAC,CAAC,UAAU,CAAA;AAChB,CAAC;AAED,4EAA4E;AAC5E,SAAS,SAAS,CAAC,QAAmD,EAAE,UAAkB;IACxF,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAA;IACzC,OAAO,CACL,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACnD,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAC5C,CAAA;AACH,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,aAA8B,EAC9B,QAA0B,EAC1B,SAAiB,EACjB,UAAkB,EAClB,OAAyB;IAEzB,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC7C,MAAM,YAAY,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,CAAA;IACvE,oBAAoB,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;IACnE,IAAI,CAAC,YAAY;QAAE,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;AAC1E,CAAC;AAED,2FAA2F;AAC3F,MAAM,UAAU,uBAAuB,CACrC,aAA8B,EAC9B,QAA0B,EAC1B,SAAiB,EACjB,UAAkB;IAElB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC;QAAE,OAAM;IAC1D,MAAM,SAAS,GAAG,eAAe,CAAC,UAAU,CAAC,CAAA;IAC7C,sBAAsB,CAAC,aAAa,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;IAC5D,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,CAAC,EAAE,CAAC;QACxD,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;IACxD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { EventPayload } from "../../index.js";
|
|
2
|
+
import type { EventHandlerMap } from "../host.js";
|
|
3
|
+
/** The outside press carries the DOM path of its press target, but is not walked along it. */
|
|
4
|
+
export declare function isOutsidePress(eventType: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Handler-map type for an event from native. Native may still emit the old
|
|
7
|
+
* camelCase names (`mouseDown`); handlers are registered under lowercase DOM
|
|
8
|
+
* names, so the two are matched case-insensitively. Other types are untouched.
|
|
9
|
+
*/
|
|
10
|
+
export declare function handlerEventType(eventType: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Whether anything on the event's path has a handler it would run: a handler of
|
|
13
|
+
* either phase anywhere, except for the types that do not bubble, where an
|
|
14
|
+
* ancestor counts only for a capture handler.
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasDomListener(eventHandlers: EventHandlerMap, event: EventPayload): boolean;
|
|
17
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.d.ts","sourceRoot":"","sources":["../../js/events/route.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAOjD,8FAA8F;AAC9F,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,aAAa,EAAE,eAAe,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,CAU3F"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { captureHandlerKey, eventBubbles } from "./dispatch.js";
|
|
2
|
+
import { DOM_DISPATCHED_EVENT_TYPES } from "./event-props.js";
|
|
3
|
+
/** gpuix's own outside-press event: not DOM. Native delivers it to the listening element alone, with the press target in `target`. */
|
|
4
|
+
const MOUSE_DOWN_OUTSIDE = "mousedownoutside";
|
|
5
|
+
/** The outside press carries the DOM path of its press target, but is not walked along it. */
|
|
6
|
+
export function isOutsidePress(eventType) {
|
|
7
|
+
return eventType === MOUSE_DOWN_OUTSIDE;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Handler-map type for an event from native. Native may still emit the old
|
|
11
|
+
* camelCase names (`mouseDown`); handlers are registered under lowercase DOM
|
|
12
|
+
* names, so the two are matched case-insensitively. Other types are untouched.
|
|
13
|
+
*/
|
|
14
|
+
export function handlerEventType(eventType) {
|
|
15
|
+
const lower = eventType.toLowerCase();
|
|
16
|
+
return DOM_DISPATCHED_EVENT_TYPES.has(lower) || lower === MOUSE_DOWN_OUTSIDE ? lower : eventType;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Whether anything on the event's path has a handler it would run: a handler of
|
|
20
|
+
* either phase anywhere, except for the types that do not bubble, where an
|
|
21
|
+
* ancestor counts only for a capture handler.
|
|
22
|
+
*/
|
|
23
|
+
export function hasDomListener(eventHandlers, event) {
|
|
24
|
+
const captureKey = captureHandlerKey(event.eventType);
|
|
25
|
+
const path = event.path ?? [event.elementId];
|
|
26
|
+
const bubbles = eventBubbles(event.eventType);
|
|
27
|
+
return path.some((id, index) => {
|
|
28
|
+
const handlers = eventHandlers.get(id);
|
|
29
|
+
if (!handlers)
|
|
30
|
+
return false;
|
|
31
|
+
if (handlers.has(captureKey))
|
|
32
|
+
return true;
|
|
33
|
+
return (bubbles || index === 0) && handlers.has(event.eventType);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=route.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.js","sourceRoot":"","sources":["../../js/events/route.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAA;AAE7D,sIAAsI;AACtI,MAAM,kBAAkB,GAAG,kBAAkB,CAAA;AAE7C,8FAA8F;AAC9F,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,SAAS,KAAK,kBAAkB,CAAA;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAA;IACrC,OAAO,0BAA0B,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;AAClG,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,aAA8B,EAAE,KAAmB;IAChF,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IACrD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;QAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC3B,IAAI,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAA;QACzC,OAAO,CAAC,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAClE,CAAC,CAAC,CAAA;AACJ,CAAC"}
|