@gjsify/event-bridge 0.1.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/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # @gjsify/event-bridge
2
+
3
+ GTK to DOM event bridge for GJS. Maps GTK4 event controllers to standard DOM events (MouseEvent, PointerEvent, KeyboardEvent, WheelEvent, FocusEvent).
4
+
5
+ Part of the [gjsify](https://github.com/gjsify/gjsify) project — Node.js and Web APIs for GJS (GNOME JavaScript).
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @gjsify/event-bridge
11
+ # or
12
+ yarn add @gjsify/event-bridge
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```typescript
18
+ import { attachEventControllers } from '@gjsify/event-bridge';
19
+
20
+ // Attach GTK4 event controllers that dispatch DOM events
21
+ attachEventControllers(gtkWidget, () => domElement);
22
+ ```
23
+
24
+ ### Supported Event Mappings
25
+
26
+ | GTK Controller | DOM Events |
27
+ |---|---|
28
+ | EventControllerMotion | pointermove, mousemove, pointer/mouse enter/leave/over/out |
29
+ | GestureClick | pointer/mouse down/up, click, dblclick, contextmenu |
30
+ | EventControllerScroll | wheel |
31
+ | EventControllerKey | keydown, keyup |
32
+ | EventControllerFocus | focus, focusin, blur, focusout |
33
+
34
+ ## License
35
+
36
+ MIT
@@ -0,0 +1,196 @@
1
+ import Gtk from "gi://Gtk?version=4.0";
2
+ import Gdk from "gi://Gdk?version=4.0";
3
+ import {
4
+ MouseEvent as OurMouseEvent,
5
+ PointerEvent as OurPointerEvent,
6
+ KeyboardEvent as OurKeyboardEvent,
7
+ WheelEvent as OurWheelEvent,
8
+ FocusEvent as OurFocusEvent
9
+ } from "@gjsify/dom-events";
10
+ import { gdkKeyvalToKey, gdkKeyvalToCode, gdkKeyvalToLocation } from "./key-map.js";
11
+ function extractModifiers(controller) {
12
+ const mods = controller.get_current_event_state();
13
+ return {
14
+ shiftKey: !!(mods & Gdk.ModifierType.SHIFT_MASK),
15
+ ctrlKey: !!(mods & Gdk.ModifierType.CONTROL_MASK),
16
+ altKey: !!(mods & Gdk.ModifierType.ALT_MASK),
17
+ metaKey: !!(mods & Gdk.ModifierType.SUPER_MASK)
18
+ };
19
+ }
20
+ function gtkButtonToDom(gtkButton) {
21
+ if (gtkButton === 1) return 0;
22
+ if (gtkButton === 2) return 1;
23
+ if (gtkButton === 3) return 2;
24
+ return gtkButton - 1;
25
+ }
26
+ function buttonsFromModifiers(controller) {
27
+ const mods = controller.get_current_event_state();
28
+ let buttons = 0;
29
+ if (mods & Gdk.ModifierType.BUTTON1_MASK) buttons |= 1;
30
+ if (mods & Gdk.ModifierType.BUTTON3_MASK) buttons |= 2;
31
+ if (mods & Gdk.ModifierType.BUTTON2_MASK) buttons |= 4;
32
+ return buttons;
33
+ }
34
+ function attachEventControllers(widget, getElement) {
35
+ widget.set_focusable(true);
36
+ widget.set_can_focus(true);
37
+ const state = { lastX: 0, lastY: 0, buttonsPressed: 0, pressedKeys: /* @__PURE__ */ new Set() };
38
+ const motionCtrl = new Gtk.EventControllerMotion();
39
+ motionCtrl.connect("motion", () => {
40
+ const el = getElement();
41
+ if (!el) return;
42
+ const event = motionCtrl.get_current_event();
43
+ if (!event) return;
44
+ const [, x, y] = event.get_position?.() ?? [false, state.lastX, state.lastY];
45
+ const allocW = widget.get_allocated_width();
46
+ const allocH = widget.get_allocated_height();
47
+ const cx = Math.max(0, Math.min(x, allocW));
48
+ const cy = Math.max(0, Math.min(y, allocH));
49
+ const movementX = cx - state.lastX;
50
+ const movementY = cy - state.lastY;
51
+ const mods = extractModifiers(motionCtrl);
52
+ const buttons = buttonsFromModifiers(motionCtrl);
53
+ const init = { ...mods, clientX: cx, clientY: cy, offsetX: cx, offsetY: cy, screenX: cx, screenY: cy, movementX, movementY, buttons, button: 0, bubbles: true, cancelable: true };
54
+ el.dispatchEvent(new OurPointerEvent("pointermove", { ...init, pointerId: 1, pointerType: "mouse", isPrimary: true }));
55
+ el.dispatchEvent(new OurMouseEvent("mousemove", init));
56
+ state.lastX = cx;
57
+ state.lastY = cy;
58
+ });
59
+ motionCtrl.connect("enter", (_ctrl, x, y) => {
60
+ const el = getElement();
61
+ if (!el) return;
62
+ state.lastX = x;
63
+ state.lastY = y;
64
+ const mods = extractModifiers(motionCtrl);
65
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, bubbles: false, cancelable: false };
66
+ el.dispatchEvent(new OurPointerEvent("pointerenter", { ...init, pointerId: 1, pointerType: "mouse", isPrimary: true }));
67
+ el.dispatchEvent(new OurMouseEvent("mouseenter", init));
68
+ el.dispatchEvent(new OurMouseEvent("mouseover", { ...init, bubbles: true }));
69
+ });
70
+ motionCtrl.connect("leave", () => {
71
+ const el = getElement();
72
+ if (!el) return;
73
+ const mods = extractModifiers(motionCtrl);
74
+ const init = { ...mods, clientX: state.lastX, clientY: state.lastY, bubbles: false, cancelable: false };
75
+ el.dispatchEvent(new OurPointerEvent("pointerleave", { ...init, pointerId: 1, pointerType: "mouse", isPrimary: true }));
76
+ el.dispatchEvent(new OurMouseEvent("mouseleave", init));
77
+ el.dispatchEvent(new OurMouseEvent("mouseout", { ...init, bubbles: true }));
78
+ });
79
+ widget.add_controller(motionCtrl);
80
+ const clickCtrl = new Gtk.GestureClick();
81
+ clickCtrl.set_button(0);
82
+ clickCtrl.connect("pressed", (_ctrl, nPress, x, y) => {
83
+ const el = getElement();
84
+ if (!el) return;
85
+ const gtkButton = clickCtrl.get_current_button();
86
+ const domButton = gtkButtonToDom(gtkButton);
87
+ const mods = extractModifiers(clickCtrl);
88
+ state.buttonsPressed |= 1 << domButton;
89
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, button: domButton, buttons: state.buttonsPressed, detail: nPress, bubbles: true, cancelable: true };
90
+ el.dispatchEvent(new OurPointerEvent("pointerdown", { ...init, pointerId: 1, pointerType: "mouse", isPrimary: true }));
91
+ el.dispatchEvent(new OurMouseEvent("mousedown", init));
92
+ widget.grab_focus();
93
+ });
94
+ clickCtrl.connect("released", (_ctrl, nPress, x, y) => {
95
+ const el = getElement();
96
+ if (!el) return;
97
+ const gtkButton = clickCtrl.get_current_button();
98
+ const domButton = gtkButtonToDom(gtkButton);
99
+ const mods = extractModifiers(clickCtrl);
100
+ state.buttonsPressed &= ~(1 << domButton);
101
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, button: domButton, buttons: state.buttonsPressed, detail: nPress, bubbles: true, cancelable: true };
102
+ el.dispatchEvent(new OurPointerEvent("pointerup", { ...init, pointerId: 1, pointerType: "mouse", isPrimary: true }));
103
+ el.dispatchEvent(new OurMouseEvent("mouseup", init));
104
+ if (domButton === 0) {
105
+ el.dispatchEvent(new OurMouseEvent("click", init));
106
+ if (nPress === 2) {
107
+ el.dispatchEvent(new OurMouseEvent("dblclick", init));
108
+ }
109
+ }
110
+ if (domButton === 2) {
111
+ el.dispatchEvent(new OurMouseEvent("contextmenu", { ...init, cancelable: true }));
112
+ }
113
+ });
114
+ widget.add_controller(clickCtrl);
115
+ const scrollCtrl = new Gtk.EventControllerScroll({
116
+ flags: Gtk.EventControllerScrollFlags.BOTH_AXES
117
+ });
118
+ scrollCtrl.connect("scroll", (_ctrl, dx, dy) => {
119
+ const el = getElement();
120
+ if (!el) return;
121
+ const mods = extractModifiers(scrollCtrl);
122
+ const scale = 100;
123
+ const init = { ...mods, clientX: state.lastX, clientY: state.lastY, offsetX: state.lastX, offsetY: state.lastY, screenX: state.lastX, screenY: state.lastY, deltaX: dx * scale, deltaY: dy * scale, deltaZ: 0, deltaMode: 0, bubbles: true, cancelable: true };
124
+ el.dispatchEvent(new OurWheelEvent("wheel", init));
125
+ return false;
126
+ });
127
+ widget.add_controller(scrollCtrl);
128
+ const keyCtrl = new Gtk.EventControllerKey();
129
+ keyCtrl.connect("key-pressed", (_ctrl, keyval, _keycode, modifiers) => {
130
+ const el = getElement();
131
+ if (!el) return false;
132
+ const repeat = state.pressedKeys.has(keyval);
133
+ state.pressedKeys.add(keyval);
134
+ const key = gdkKeyvalToKey(keyval);
135
+ const code = gdkKeyvalToCode(keyval);
136
+ const location = gdkKeyvalToLocation(keyval);
137
+ const init = {
138
+ key,
139
+ code,
140
+ location,
141
+ repeat,
142
+ altKey: !!(modifiers & Gdk.ModifierType.ALT_MASK),
143
+ ctrlKey: !!(modifiers & Gdk.ModifierType.CONTROL_MASK),
144
+ metaKey: !!(modifiers & Gdk.ModifierType.SUPER_MASK),
145
+ shiftKey: !!(modifiers & Gdk.ModifierType.SHIFT_MASK),
146
+ keyCode: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
147
+ which: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
148
+ bubbles: true,
149
+ cancelable: true
150
+ };
151
+ el.dispatchEvent(new OurKeyboardEvent("keydown", init));
152
+ return false;
153
+ });
154
+ keyCtrl.connect("key-released", (_ctrl, keyval, _keycode, modifiers) => {
155
+ const el = getElement();
156
+ if (!el) return;
157
+ state.pressedKeys.delete(keyval);
158
+ const key = gdkKeyvalToKey(keyval);
159
+ const code = gdkKeyvalToCode(keyval);
160
+ const location = gdkKeyvalToLocation(keyval);
161
+ const init = {
162
+ key,
163
+ code,
164
+ location,
165
+ repeat: false,
166
+ altKey: !!(modifiers & Gdk.ModifierType.ALT_MASK),
167
+ ctrlKey: !!(modifiers & Gdk.ModifierType.CONTROL_MASK),
168
+ metaKey: !!(modifiers & Gdk.ModifierType.SUPER_MASK),
169
+ shiftKey: !!(modifiers & Gdk.ModifierType.SHIFT_MASK),
170
+ keyCode: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
171
+ which: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
172
+ bubbles: true,
173
+ cancelable: true
174
+ };
175
+ el.dispatchEvent(new OurKeyboardEvent("keyup", init));
176
+ });
177
+ widget.add_controller(keyCtrl);
178
+ const focusCtrl = new Gtk.EventControllerFocus();
179
+ focusCtrl.connect("enter", () => {
180
+ const el = getElement();
181
+ if (!el) return;
182
+ el.dispatchEvent(new OurFocusEvent("focus", { bubbles: false, cancelable: false }));
183
+ el.dispatchEvent(new OurFocusEvent("focusin", { bubbles: true, cancelable: false }));
184
+ });
185
+ focusCtrl.connect("leave", () => {
186
+ const el = getElement();
187
+ if (!el) return;
188
+ state.pressedKeys.clear();
189
+ el.dispatchEvent(new OurFocusEvent("blur", { bubbles: false, cancelable: false }));
190
+ el.dispatchEvent(new OurFocusEvent("focusout", { bubbles: true, cancelable: false }));
191
+ });
192
+ widget.add_controller(focusCtrl);
193
+ }
194
+ export {
195
+ attachEventControllers
196
+ };
@@ -0,0 +1,8 @@
1
+ import { attachEventControllers } from "./event-bridge.js";
2
+ import { gdkKeyvalToKey, gdkKeyvalToCode, gdkKeyvalToLocation } from "./key-map.js";
3
+ export {
4
+ attachEventControllers,
5
+ gdkKeyvalToCode,
6
+ gdkKeyvalToKey,
7
+ gdkKeyvalToLocation
8
+ };
@@ -0,0 +1,192 @@
1
+ import Gdk from "gi://Gdk?version=4.0";
2
+ const SPECIAL_KEYS = {
3
+ Return: "Enter",
4
+ KP_Enter: "Enter",
5
+ Tab: "Tab",
6
+ ISO_Left_Tab: "Tab",
7
+ BackSpace: "Backspace",
8
+ Escape: "Escape",
9
+ Delete: "Delete",
10
+ KP_Delete: "Delete",
11
+ Insert: "Insert",
12
+ KP_Insert: "Insert",
13
+ Home: "Home",
14
+ KP_Home: "Home",
15
+ End: "End",
16
+ KP_End: "End",
17
+ Page_Up: "PageUp",
18
+ KP_Page_Up: "PageUp",
19
+ Page_Down: "PageDown",
20
+ KP_Page_Down: "PageDown",
21
+ Left: "ArrowLeft",
22
+ KP_Left: "ArrowLeft",
23
+ Up: "ArrowUp",
24
+ KP_Up: "ArrowUp",
25
+ Right: "ArrowRight",
26
+ KP_Right: "ArrowRight",
27
+ Down: "ArrowDown",
28
+ KP_Down: "ArrowDown",
29
+ Shift_L: "Shift",
30
+ Shift_R: "Shift",
31
+ Control_L: "Control",
32
+ Control_R: "Control",
33
+ Alt_L: "Alt",
34
+ Alt_R: "Alt",
35
+ Super_L: "Meta",
36
+ Super_R: "Meta",
37
+ Meta_L: "Meta",
38
+ Meta_R: "Meta",
39
+ Caps_Lock: "CapsLock",
40
+ Num_Lock: "NumLock",
41
+ Scroll_Lock: "ScrollLock",
42
+ Print: "PrintScreen",
43
+ Pause: "Pause",
44
+ Menu: "ContextMenu",
45
+ space: " ",
46
+ F1: "F1",
47
+ F2: "F2",
48
+ F3: "F3",
49
+ F4: "F4",
50
+ F5: "F5",
51
+ F6: "F6",
52
+ F7: "F7",
53
+ F8: "F8",
54
+ F9: "F9",
55
+ F10: "F10",
56
+ F11: "F11",
57
+ F12: "F12",
58
+ KP_Add: "+",
59
+ KP_Subtract: "-",
60
+ KP_Multiply: "*",
61
+ KP_Divide: "/",
62
+ KP_Decimal: ".",
63
+ KP_Separator: ",",
64
+ KP_0: "0",
65
+ KP_1: "1",
66
+ KP_2: "2",
67
+ KP_3: "3",
68
+ KP_4: "4",
69
+ KP_5: "5",
70
+ KP_6: "6",
71
+ KP_7: "7",
72
+ KP_8: "8",
73
+ KP_9: "9"
74
+ };
75
+ const SPECIAL_CODES = {
76
+ Return: "Enter",
77
+ KP_Enter: "NumpadEnter",
78
+ Tab: "Tab",
79
+ ISO_Left_Tab: "Tab",
80
+ BackSpace: "Backspace",
81
+ Escape: "Escape",
82
+ Delete: "Delete",
83
+ KP_Delete: "NumpadDecimal",
84
+ Insert: "Insert",
85
+ KP_Insert: "Numpad0",
86
+ Home: "Home",
87
+ KP_Home: "Numpad7",
88
+ End: "End",
89
+ KP_End: "Numpad1",
90
+ Page_Up: "PageUp",
91
+ KP_Page_Up: "Numpad9",
92
+ Page_Down: "PageDown",
93
+ KP_Page_Down: "Numpad3",
94
+ Left: "ArrowLeft",
95
+ KP_Left: "Numpad4",
96
+ Up: "ArrowUp",
97
+ KP_Up: "Numpad8",
98
+ Right: "ArrowRight",
99
+ KP_Right: "Numpad6",
100
+ Down: "ArrowDown",
101
+ KP_Down: "Numpad2",
102
+ Shift_L: "ShiftLeft",
103
+ Shift_R: "ShiftRight",
104
+ Control_L: "ControlLeft",
105
+ Control_R: "ControlRight",
106
+ Alt_L: "AltLeft",
107
+ Alt_R: "AltRight",
108
+ Super_L: "MetaLeft",
109
+ Super_R: "MetaRight",
110
+ Meta_L: "MetaLeft",
111
+ Meta_R: "MetaRight",
112
+ Caps_Lock: "CapsLock",
113
+ Num_Lock: "NumLock",
114
+ Scroll_Lock: "ScrollLock",
115
+ Print: "PrintScreen",
116
+ Pause: "Pause",
117
+ Menu: "ContextMenu",
118
+ space: "Space",
119
+ F1: "F1",
120
+ F2: "F2",
121
+ F3: "F3",
122
+ F4: "F4",
123
+ F5: "F5",
124
+ F6: "F6",
125
+ F7: "F7",
126
+ F8: "F8",
127
+ F9: "F9",
128
+ F10: "F10",
129
+ F11: "F11",
130
+ F12: "F12",
131
+ KP_Add: "NumpadAdd",
132
+ KP_Subtract: "NumpadSubtract",
133
+ KP_Multiply: "NumpadMultiply",
134
+ KP_Divide: "NumpadDivide",
135
+ KP_Decimal: "NumpadDecimal",
136
+ KP_Separator: "NumpadComma",
137
+ KP_0: "Numpad0",
138
+ KP_1: "Numpad1",
139
+ KP_2: "Numpad2",
140
+ KP_3: "Numpad3",
141
+ KP_4: "Numpad4",
142
+ KP_5: "Numpad5",
143
+ KP_6: "Numpad6",
144
+ KP_7: "Numpad7",
145
+ KP_8: "Numpad8",
146
+ KP_9: "Numpad9"
147
+ };
148
+ function gdkKeyvalToKey(keyval) {
149
+ const name = Gdk.keyval_name(keyval);
150
+ if (name && SPECIAL_KEYS[name]) return SPECIAL_KEYS[name];
151
+ const unicode = Gdk.keyval_to_unicode(keyval);
152
+ if (unicode > 0) return String.fromCodePoint(unicode);
153
+ return name ?? "Unidentified";
154
+ }
155
+ function gdkKeyvalToCode(keyval) {
156
+ const name = Gdk.keyval_name(keyval);
157
+ if (name && SPECIAL_CODES[name]) return SPECIAL_CODES[name];
158
+ const unicode = Gdk.keyval_to_unicode(keyval);
159
+ if (unicode >= 97 && unicode <= 122) return "Key" + String.fromCodePoint(unicode - 32);
160
+ if (unicode >= 65 && unicode <= 90) return "Key" + String.fromCodePoint(unicode);
161
+ if (unicode >= 48 && unicode <= 57) return "Digit" + String.fromCodePoint(unicode);
162
+ if (name) {
163
+ const punct = {
164
+ minus: "Minus",
165
+ equal: "Equal",
166
+ bracketleft: "BracketLeft",
167
+ bracketright: "BracketRight",
168
+ backslash: "Backslash",
169
+ semicolon: "Semicolon",
170
+ apostrophe: "Quote",
171
+ grave: "Backquote",
172
+ comma: "Comma",
173
+ period: "Period",
174
+ slash: "Slash"
175
+ };
176
+ if (punct[name]) return punct[name];
177
+ }
178
+ return name ?? "Unidentified";
179
+ }
180
+ function gdkKeyvalToLocation(keyval) {
181
+ const name = Gdk.keyval_name(keyval);
182
+ if (!name) return 0;
183
+ if (name.startsWith("KP_")) return 3;
184
+ if (name.endsWith("_L")) return 1;
185
+ if (name.endsWith("_R")) return 2;
186
+ return 0;
187
+ }
188
+ export {
189
+ gdkKeyvalToCode,
190
+ gdkKeyvalToKey,
191
+ gdkKeyvalToLocation
192
+ };
@@ -0,0 +1,18 @@
1
+ import Gtk from 'gi://Gtk?version=4.0';
2
+ /**
3
+ * Attach GTK event controllers to a widget and dispatch standard DOM events
4
+ * on the HTMLElement returned by `getElement()`.
5
+ *
6
+ * Controllers attached:
7
+ * - EventControllerMotion → pointermove/mousemove, pointerenter/mouseenter, pointerleave/mouseleave
8
+ * - GestureClick → pointerdown/mousedown, pointerup/mouseup, click, dblclick, contextmenu
9
+ * - EventControllerScroll → wheel
10
+ * - EventControllerKey → keydown, keyup
11
+ * - EventControllerFocus → focus/focusin, blur/focusout
12
+ *
13
+ * @param widget The GTK widget to attach controllers to
14
+ * @param getElement Returns the HTMLElement to dispatch events on (may be null before init)
15
+ */
16
+ export declare function attachEventControllers(widget: Gtk.Widget, getElement: () => {
17
+ dispatchEvent(event: any): boolean;
18
+ } | null): void;
@@ -0,0 +1,2 @@
1
+ export { attachEventControllers } from './event-bridge.js';
2
+ export { gdkKeyvalToKey, gdkKeyvalToCode, gdkKeyvalToLocation } from './key-map.js';
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Convert a Gdk keyval to a DOM `key` string.
3
+ * Uses special-key lookup table, falls back to Gdk.keyval_to_unicode for printable chars.
4
+ */
5
+ export declare function gdkKeyvalToKey(keyval: number): string;
6
+ /**
7
+ * Convert a Gdk keyval to a DOM `code` string.
8
+ */
9
+ export declare function gdkKeyvalToCode(keyval: number): string;
10
+ /**
11
+ * Determine the DOM KeyboardEvent.location from a Gdk keyval.
12
+ * 0=STANDARD, 1=LEFT, 2=RIGHT, 3=NUMPAD
13
+ */
14
+ export declare function gdkKeyvalToLocation(keyval: number): number;
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "@gjsify/event-bridge",
3
+ "version": "0.1.0",
4
+ "description": "Bridge GTK event controllers to standard DOM events (MouseEvent, KeyboardEvent, etc.)",
5
+ "type": "module",
6
+ "module": "lib/esm/index.js",
7
+ "types": "lib/types/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./lib/types/index.d.ts",
11
+ "default": "./lib/esm/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "clear": "rm -rf lib tmp tsconfig.tsbuildinfo || exit 0",
16
+ "check": "tsc --noEmit",
17
+ "build": "yarn build:gjsify && yarn build:types",
18
+ "build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
19
+ "build:types": "tsc"
20
+ },
21
+ "keywords": [
22
+ "gjs",
23
+ "gtk",
24
+ "dom",
25
+ "events",
26
+ "bridge"
27
+ ],
28
+ "dependencies": {
29
+ "@girs/gdk-4.0": "^4.0.0-4.0.0-beta.42",
30
+ "@girs/gjs": "^4.0.0-beta.42",
31
+ "@girs/glib-2.0": "^2.88.0-4.0.0-beta.42",
32
+ "@girs/gtk-4.0": "^4.22.1-4.0.0-beta.42",
33
+ "@gjsify/dom-events": "^0.1.0"
34
+ },
35
+ "devDependencies": {
36
+ "@gjsify/cli": "^0.1.0",
37
+ "@types/node": "^25.5.0",
38
+ "typescript": "^6.0.2"
39
+ }
40
+ }
@@ -0,0 +1,268 @@
1
+ // GTK Event Controller → DOM Event bridge
2
+ // Attaches GTK4 event controllers to a widget and dispatches standard DOM events
3
+ // on the associated HTMLElement. Used by Canvas2DWidget, CanvasWebGLWidget, IFrameWidget.
4
+ //
5
+ // Reference: W3C UIEvents Specification (https://www.w3.org/TR/uievents/)
6
+
7
+ import Gtk from 'gi://Gtk?version=4.0';
8
+ import Gdk from 'gi://Gdk?version=4.0';
9
+ import {
10
+ MouseEvent as OurMouseEvent,
11
+ PointerEvent as OurPointerEvent,
12
+ KeyboardEvent as OurKeyboardEvent,
13
+ WheelEvent as OurWheelEvent,
14
+ FocusEvent as OurFocusEvent,
15
+ } from '@gjsify/dom-events';
16
+ import { gdkKeyvalToKey, gdkKeyvalToCode, gdkKeyvalToLocation } from './key-map.js';
17
+
18
+ interface BridgeState {
19
+ lastX: number;
20
+ lastY: number;
21
+ buttonsPressed: number;
22
+ pressedKeys: Set<number>;
23
+ }
24
+
25
+ /** Extract modifier flags from a GTK event controller's current event state. */
26
+ function extractModifiers(controller: Gtk.EventController) {
27
+ const mods = controller.get_current_event_state() as number;
28
+ return {
29
+ shiftKey: !!(mods & Gdk.ModifierType.SHIFT_MASK),
30
+ ctrlKey: !!(mods & Gdk.ModifierType.CONTROL_MASK),
31
+ altKey: !!(mods & Gdk.ModifierType.ALT_MASK),
32
+ metaKey: !!(mods & Gdk.ModifierType.SUPER_MASK),
33
+ };
34
+ }
35
+
36
+ /** Map GTK button number (1=left, 2=middle, 3=right) to DOM button (0=left, 1=middle, 2=right). */
37
+ function gtkButtonToDom(gtkButton: number): number {
38
+ if (gtkButton === 1) return 0;
39
+ if (gtkButton === 2) return 1;
40
+ if (gtkButton === 3) return 2;
41
+ return gtkButton - 1;
42
+ }
43
+
44
+ /** Read buttons bitmask from Gdk modifier state. */
45
+ function buttonsFromModifiers(controller: Gtk.EventController): number {
46
+ const mods = controller.get_current_event_state() as number;
47
+ let buttons = 0;
48
+ if (mods & Gdk.ModifierType.BUTTON1_MASK) buttons |= 1; // primary
49
+ if (mods & Gdk.ModifierType.BUTTON3_MASK) buttons |= 2; // secondary
50
+ if (mods & Gdk.ModifierType.BUTTON2_MASK) buttons |= 4; // auxiliary
51
+ return buttons;
52
+ }
53
+
54
+ /**
55
+ * Attach GTK event controllers to a widget and dispatch standard DOM events
56
+ * on the HTMLElement returned by `getElement()`.
57
+ *
58
+ * Controllers attached:
59
+ * - EventControllerMotion → pointermove/mousemove, pointerenter/mouseenter, pointerleave/mouseleave
60
+ * - GestureClick → pointerdown/mousedown, pointerup/mouseup, click, dblclick, contextmenu
61
+ * - EventControllerScroll → wheel
62
+ * - EventControllerKey → keydown, keyup
63
+ * - EventControllerFocus → focus/focusin, blur/focusout
64
+ *
65
+ * @param widget The GTK widget to attach controllers to
66
+ * @param getElement Returns the HTMLElement to dispatch events on (may be null before init)
67
+ */
68
+ export function attachEventControllers(
69
+ widget: Gtk.Widget,
70
+ getElement: () => { dispatchEvent(event: any): boolean } | null,
71
+ ): void {
72
+ // Make widget focusable for keyboard events
73
+ widget.set_focusable(true);
74
+ widget.set_can_focus(true);
75
+
76
+ const state: BridgeState = { lastX: 0, lastY: 0, buttonsPressed: 0, pressedKeys: new Set() };
77
+
78
+ // ---- Motion controller ----
79
+ const motionCtrl = new Gtk.EventControllerMotion();
80
+
81
+ motionCtrl.connect('motion', () => {
82
+ const el = getElement();
83
+ if (!el) return;
84
+ // Get coordinates from the current event directly
85
+ const event = motionCtrl.get_current_event();
86
+ if (!event) return;
87
+ const [, x, y] = (event as any).get_position?.() ?? [false, state.lastX, state.lastY];
88
+ // Fall back to widget-local coords from the controller
89
+ const allocW = widget.get_allocated_width();
90
+ const allocH = widget.get_allocated_height();
91
+ const cx = Math.max(0, Math.min(x, allocW));
92
+ const cy = Math.max(0, Math.min(y, allocH));
93
+ const movementX = cx - state.lastX;
94
+ const movementY = cy - state.lastY;
95
+ const mods = extractModifiers(motionCtrl);
96
+ const buttons = buttonsFromModifiers(motionCtrl);
97
+ const init = { ...mods, clientX: cx, clientY: cy, offsetX: cx, offsetY: cy, screenX: cx, screenY: cy, movementX, movementY, buttons, button: 0, bubbles: true, cancelable: true };
98
+
99
+ el.dispatchEvent(new OurPointerEvent('pointermove', { ...init, pointerId: 1, pointerType: 'mouse', isPrimary: true }));
100
+ el.dispatchEvent(new OurMouseEvent('mousemove', init));
101
+
102
+ state.lastX = cx;
103
+ state.lastY = cy;
104
+ });
105
+
106
+ motionCtrl.connect('enter', (_ctrl: Gtk.EventControllerMotion, x: number, y: number) => {
107
+ const el = getElement();
108
+ if (!el) return;
109
+ state.lastX = x;
110
+ state.lastY = y;
111
+ const mods = extractModifiers(motionCtrl);
112
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, bubbles: false, cancelable: false };
113
+
114
+ el.dispatchEvent(new OurPointerEvent('pointerenter', { ...init, pointerId: 1, pointerType: 'mouse', isPrimary: true }));
115
+ el.dispatchEvent(new OurMouseEvent('mouseenter', init));
116
+ el.dispatchEvent(new OurMouseEvent('mouseover', { ...init, bubbles: true }));
117
+ });
118
+
119
+ motionCtrl.connect('leave', () => {
120
+ const el = getElement();
121
+ if (!el) return;
122
+ const mods = extractModifiers(motionCtrl);
123
+ const init = { ...mods, clientX: state.lastX, clientY: state.lastY, bubbles: false, cancelable: false };
124
+
125
+ el.dispatchEvent(new OurPointerEvent('pointerleave', { ...init, pointerId: 1, pointerType: 'mouse', isPrimary: true }));
126
+ el.dispatchEvent(new OurMouseEvent('mouseleave', init));
127
+ el.dispatchEvent(new OurMouseEvent('mouseout', { ...init, bubbles: true }));
128
+ });
129
+
130
+ widget.add_controller(motionCtrl);
131
+
132
+ // ---- Click controller ----
133
+ const clickCtrl = new Gtk.GestureClick();
134
+ clickCtrl.set_button(0); // Listen to all buttons
135
+
136
+ clickCtrl.connect('pressed', (_ctrl: Gtk.GestureClick, nPress: number, x: number, y: number) => {
137
+ const el = getElement();
138
+ if (!el) return;
139
+ const gtkButton = clickCtrl.get_current_button();
140
+ const domButton = gtkButtonToDom(gtkButton);
141
+ const mods = extractModifiers(clickCtrl);
142
+ state.buttonsPressed |= (1 << domButton);
143
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, button: domButton, buttons: state.buttonsPressed, detail: nPress, bubbles: true, cancelable: true };
144
+
145
+ el.dispatchEvent(new OurPointerEvent('pointerdown', { ...init, pointerId: 1, pointerType: 'mouse', isPrimary: true }));
146
+ el.dispatchEvent(new OurMouseEvent('mousedown', init));
147
+
148
+ // Grab focus on click so keyboard events work
149
+ widget.grab_focus();
150
+ });
151
+
152
+ clickCtrl.connect('released', (_ctrl: Gtk.GestureClick, nPress: number, x: number, y: number) => {
153
+ const el = getElement();
154
+ if (!el) return;
155
+ const gtkButton = clickCtrl.get_current_button();
156
+ const domButton = gtkButtonToDom(gtkButton);
157
+ const mods = extractModifiers(clickCtrl);
158
+ state.buttonsPressed &= ~(1 << domButton);
159
+ const init = { ...mods, clientX: x, clientY: y, offsetX: x, offsetY: y, screenX: x, screenY: y, button: domButton, buttons: state.buttonsPressed, detail: nPress, bubbles: true, cancelable: true };
160
+
161
+ el.dispatchEvent(new OurPointerEvent('pointerup', { ...init, pointerId: 1, pointerType: 'mouse', isPrimary: true }));
162
+ el.dispatchEvent(new OurMouseEvent('mouseup', init));
163
+
164
+ // click event (left button only per spec)
165
+ if (domButton === 0) {
166
+ el.dispatchEvent(new OurMouseEvent('click', init));
167
+ if (nPress === 2) {
168
+ el.dispatchEvent(new OurMouseEvent('dblclick', init));
169
+ }
170
+ }
171
+ // contextmenu on right-click
172
+ if (domButton === 2) {
173
+ el.dispatchEvent(new OurMouseEvent('contextmenu', { ...init, cancelable: true }));
174
+ }
175
+ });
176
+
177
+ widget.add_controller(clickCtrl);
178
+
179
+ // ---- Scroll controller ----
180
+ const scrollCtrl = new Gtk.EventControllerScroll({
181
+ flags: Gtk.EventControllerScrollFlags.BOTH_AXES,
182
+ });
183
+
184
+ scrollCtrl.connect('scroll', (_ctrl: Gtk.EventControllerScroll, dx: number, dy: number) => {
185
+ const el = getElement();
186
+ if (!el) return;
187
+ const mods = extractModifiers(scrollCtrl);
188
+ // GTK scroll: discrete ticks are ±1.0 per notch. Scale to ~100px to match browser behavior.
189
+ const scale = 100;
190
+ const init = { ...mods, clientX: state.lastX, clientY: state.lastY, offsetX: state.lastX, offsetY: state.lastY, screenX: state.lastX, screenY: state.lastY, deltaX: dx * scale, deltaY: dy * scale, deltaZ: 0, deltaMode: 0, bubbles: true, cancelable: true };
191
+
192
+ el.dispatchEvent(new OurWheelEvent('wheel', init));
193
+ return false;
194
+ });
195
+
196
+ widget.add_controller(scrollCtrl);
197
+
198
+ // ---- Key controller ----
199
+ const keyCtrl = new Gtk.EventControllerKey();
200
+
201
+ keyCtrl.connect('key-pressed', (_ctrl: Gtk.EventControllerKey, keyval: number, _keycode: number, modifiers: number) => {
202
+ const el = getElement();
203
+ if (!el) return false;
204
+
205
+ const repeat = state.pressedKeys.has(keyval);
206
+ state.pressedKeys.add(keyval);
207
+
208
+ const key = gdkKeyvalToKey(keyval);
209
+ const code = gdkKeyvalToCode(keyval);
210
+ const location = gdkKeyvalToLocation(keyval);
211
+ const init = {
212
+ key, code, location, repeat,
213
+ altKey: !!(modifiers & Gdk.ModifierType.ALT_MASK),
214
+ ctrlKey: !!(modifiers & Gdk.ModifierType.CONTROL_MASK),
215
+ metaKey: !!(modifiers & Gdk.ModifierType.SUPER_MASK),
216
+ shiftKey: !!(modifiers & Gdk.ModifierType.SHIFT_MASK),
217
+ keyCode: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
218
+ which: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
219
+ bubbles: true, cancelable: true,
220
+ };
221
+ el.dispatchEvent(new OurKeyboardEvent('keydown', init));
222
+ return false; // allow GTK propagation
223
+ });
224
+
225
+ keyCtrl.connect('key-released', (_ctrl: Gtk.EventControllerKey, keyval: number, _keycode: number, modifiers: number) => {
226
+ const el = getElement();
227
+ if (!el) return;
228
+
229
+ state.pressedKeys.delete(keyval);
230
+
231
+ const key = gdkKeyvalToKey(keyval);
232
+ const code = gdkKeyvalToCode(keyval);
233
+ const location = gdkKeyvalToLocation(keyval);
234
+ const init = {
235
+ key, code, location, repeat: false,
236
+ altKey: !!(modifiers & Gdk.ModifierType.ALT_MASK),
237
+ ctrlKey: !!(modifiers & Gdk.ModifierType.CONTROL_MASK),
238
+ metaKey: !!(modifiers & Gdk.ModifierType.SUPER_MASK),
239
+ shiftKey: !!(modifiers & Gdk.ModifierType.SHIFT_MASK),
240
+ keyCode: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
241
+ which: key.length === 1 ? key.toUpperCase().charCodeAt(0) : 0,
242
+ bubbles: true, cancelable: true,
243
+ };
244
+ el.dispatchEvent(new OurKeyboardEvent('keyup', init));
245
+ });
246
+
247
+ widget.add_controller(keyCtrl);
248
+
249
+ // ---- Focus controller ----
250
+ const focusCtrl = new Gtk.EventControllerFocus();
251
+
252
+ focusCtrl.connect('enter', () => {
253
+ const el = getElement();
254
+ if (!el) return;
255
+ el.dispatchEvent(new OurFocusEvent('focus', { bubbles: false, cancelable: false }));
256
+ el.dispatchEvent(new OurFocusEvent('focusin', { bubbles: true, cancelable: false }));
257
+ });
258
+
259
+ focusCtrl.connect('leave', () => {
260
+ const el = getElement();
261
+ if (!el) return;
262
+ state.pressedKeys.clear(); // Reset key state on blur
263
+ el.dispatchEvent(new OurFocusEvent('blur', { bubbles: false, cancelable: false }));
264
+ el.dispatchEvent(new OurFocusEvent('focusout', { bubbles: true, cancelable: false }));
265
+ });
266
+
267
+ widget.add_controller(focusCtrl);
268
+ }
package/src/index.ts ADDED
@@ -0,0 +1,6 @@
1
+ // GTK → DOM Event Bridge
2
+ // Bridges GTK4 event controllers to standard DOM events (MouseEvent, KeyboardEvent, etc.)
3
+ // Used by Canvas2DWidget, CanvasWebGLWidget, IFrameWidget, and any future GTK-backed DOM widgets.
4
+
5
+ export { attachEventControllers } from './event-bridge.js';
6
+ export { gdkKeyvalToKey, gdkKeyvalToCode, gdkKeyvalToLocation } from './key-map.js';
package/src/key-map.ts ADDED
@@ -0,0 +1,141 @@
1
+ // Gdk keyval → DOM key/code/location mapping
2
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key/Key_Values
3
+ // Reference: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values
4
+
5
+ import Gdk from 'gi://Gdk?version=4.0';
6
+
7
+ // Special key name → DOM key string
8
+ const SPECIAL_KEYS: Record<string, string> = {
9
+ Return: 'Enter', KP_Enter: 'Enter',
10
+ Tab: 'Tab', ISO_Left_Tab: 'Tab',
11
+ BackSpace: 'Backspace',
12
+ Escape: 'Escape',
13
+ Delete: 'Delete', KP_Delete: 'Delete',
14
+ Insert: 'Insert', KP_Insert: 'Insert',
15
+ Home: 'Home', KP_Home: 'Home',
16
+ End: 'End', KP_End: 'End',
17
+ Page_Up: 'PageUp', KP_Page_Up: 'PageUp',
18
+ Page_Down: 'PageDown', KP_Page_Down: 'PageDown',
19
+ Left: 'ArrowLeft', KP_Left: 'ArrowLeft',
20
+ Up: 'ArrowUp', KP_Up: 'ArrowUp',
21
+ Right: 'ArrowRight', KP_Right: 'ArrowRight',
22
+ Down: 'ArrowDown', KP_Down: 'ArrowDown',
23
+ Shift_L: 'Shift', Shift_R: 'Shift',
24
+ Control_L: 'Control', Control_R: 'Control',
25
+ Alt_L: 'Alt', Alt_R: 'Alt',
26
+ Super_L: 'Meta', Super_R: 'Meta',
27
+ Meta_L: 'Meta', Meta_R: 'Meta',
28
+ Caps_Lock: 'CapsLock',
29
+ Num_Lock: 'NumLock',
30
+ Scroll_Lock: 'ScrollLock',
31
+ Print: 'PrintScreen',
32
+ Pause: 'Pause',
33
+ Menu: 'ContextMenu',
34
+ space: ' ',
35
+ F1: 'F1', F2: 'F2', F3: 'F3', F4: 'F4',
36
+ F5: 'F5', F6: 'F6', F7: 'F7', F8: 'F8',
37
+ F9: 'F9', F10: 'F10', F11: 'F11', F12: 'F12',
38
+ KP_Add: '+', KP_Subtract: '-', KP_Multiply: '*', KP_Divide: '/',
39
+ KP_Decimal: '.', KP_Separator: ',',
40
+ KP_0: '0', KP_1: '1', KP_2: '2', KP_3: '3', KP_4: '4',
41
+ KP_5: '5', KP_6: '6', KP_7: '7', KP_8: '8', KP_9: '9',
42
+ };
43
+
44
+ // Special key name → DOM code string
45
+ const SPECIAL_CODES: Record<string, string> = {
46
+ Return: 'Enter', KP_Enter: 'NumpadEnter',
47
+ Tab: 'Tab', ISO_Left_Tab: 'Tab',
48
+ BackSpace: 'Backspace',
49
+ Escape: 'Escape',
50
+ Delete: 'Delete', KP_Delete: 'NumpadDecimal',
51
+ Insert: 'Insert', KP_Insert: 'Numpad0',
52
+ Home: 'Home', KP_Home: 'Numpad7',
53
+ End: 'End', KP_End: 'Numpad1',
54
+ Page_Up: 'PageUp', KP_Page_Up: 'Numpad9',
55
+ Page_Down: 'PageDown', KP_Page_Down: 'Numpad3',
56
+ Left: 'ArrowLeft', KP_Left: 'Numpad4',
57
+ Up: 'ArrowUp', KP_Up: 'Numpad8',
58
+ Right: 'ArrowRight', KP_Right: 'Numpad6',
59
+ Down: 'ArrowDown', KP_Down: 'Numpad2',
60
+ Shift_L: 'ShiftLeft', Shift_R: 'ShiftRight',
61
+ Control_L: 'ControlLeft', Control_R: 'ControlRight',
62
+ Alt_L: 'AltLeft', Alt_R: 'AltRight',
63
+ Super_L: 'MetaLeft', Super_R: 'MetaRight',
64
+ Meta_L: 'MetaLeft', Meta_R: 'MetaRight',
65
+ Caps_Lock: 'CapsLock',
66
+ Num_Lock: 'NumLock',
67
+ Scroll_Lock: 'ScrollLock',
68
+ Print: 'PrintScreen',
69
+ Pause: 'Pause',
70
+ Menu: 'ContextMenu',
71
+ space: 'Space',
72
+ F1: 'F1', F2: 'F2', F3: 'F3', F4: 'F4',
73
+ F5: 'F5', F6: 'F6', F7: 'F7', F8: 'F8',
74
+ F9: 'F9', F10: 'F10', F11: 'F11', F12: 'F12',
75
+ KP_Add: 'NumpadAdd', KP_Subtract: 'NumpadSubtract',
76
+ KP_Multiply: 'NumpadMultiply', KP_Divide: 'NumpadDivide',
77
+ KP_Decimal: 'NumpadDecimal', KP_Separator: 'NumpadComma',
78
+ KP_0: 'Numpad0', KP_1: 'Numpad1', KP_2: 'Numpad2', KP_3: 'Numpad3',
79
+ KP_4: 'Numpad4', KP_5: 'Numpad5', KP_6: 'Numpad6', KP_7: 'Numpad7',
80
+ KP_8: 'Numpad8', KP_9: 'Numpad9',
81
+ };
82
+
83
+ /**
84
+ * Convert a Gdk keyval to a DOM `key` string.
85
+ * Uses special-key lookup table, falls back to Gdk.keyval_to_unicode for printable chars.
86
+ */
87
+ export function gdkKeyvalToKey(keyval: number): string {
88
+ const name = Gdk.keyval_name(keyval);
89
+ if (name && SPECIAL_KEYS[name]) return SPECIAL_KEYS[name];
90
+
91
+ // Printable character via Unicode
92
+ const unicode = Gdk.keyval_to_unicode(keyval);
93
+ if (unicode > 0) return String.fromCodePoint(unicode);
94
+
95
+ // Fallback: use the Gdk name as-is
96
+ return name ?? 'Unidentified';
97
+ }
98
+
99
+ /**
100
+ * Convert a Gdk keyval to a DOM `code` string.
101
+ */
102
+ export function gdkKeyvalToCode(keyval: number): string {
103
+ const name = Gdk.keyval_name(keyval);
104
+ if (name && SPECIAL_CODES[name]) return SPECIAL_CODES[name];
105
+
106
+ // Letters: a-z → KeyA-KeyZ
107
+ const unicode = Gdk.keyval_to_unicode(keyval);
108
+ if (unicode >= 0x61 && unicode <= 0x7A) return 'Key' + String.fromCodePoint(unicode - 32);
109
+ if (unicode >= 0x41 && unicode <= 0x5A) return 'Key' + String.fromCodePoint(unicode);
110
+
111
+ // Digits: 0-9 → Digit0-Digit9
112
+ if (unicode >= 0x30 && unicode <= 0x39) return 'Digit' + String.fromCodePoint(unicode);
113
+
114
+ // Punctuation and others: best-effort from Gdk name
115
+ if (name) {
116
+ const punct: Record<string, string> = {
117
+ minus: 'Minus', equal: 'Equal', bracketleft: 'BracketLeft',
118
+ bracketright: 'BracketRight', backslash: 'Backslash',
119
+ semicolon: 'Semicolon', apostrophe: 'Quote',
120
+ grave: 'Backquote', comma: 'Comma', period: 'Period',
121
+ slash: 'Slash',
122
+ };
123
+ if (punct[name]) return punct[name];
124
+ }
125
+
126
+ return name ?? 'Unidentified';
127
+ }
128
+
129
+ /**
130
+ * Determine the DOM KeyboardEvent.location from a Gdk keyval.
131
+ * 0=STANDARD, 1=LEFT, 2=RIGHT, 3=NUMPAD
132
+ */
133
+ export function gdkKeyvalToLocation(keyval: number): number {
134
+ const name = Gdk.keyval_name(keyval);
135
+ if (!name) return 0;
136
+
137
+ if (name.startsWith('KP_')) return 3; // NUMPAD
138
+ if (name.endsWith('_L')) return 1; // LEFT
139
+ if (name.endsWith('_R')) return 2; // RIGHT
140
+ return 0; // STANDARD
141
+ }
@@ -0,0 +1 @@
1
+ {"fileNames":["../../../../node_modules/typescript/lib/lib.es5.d.ts","../../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../../node_modules/typescript/lib/lib.dom.d.ts","../../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../../node_modules/typescript/lib/lib.es2025.float16.d.ts","../../../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../web/dom-exception/lib/types/index.d.ts","../../../web/dom-events/lib/types/index.d.ts","../src/key-map.ts","../src/event-bridge.ts","../src/index.ts","../../../../node_modules/@girs/gdk-4.0/gdk-4.0-import.d.ts","../../../../node_modules/@girs/gjs/gettext.d.ts","../../../../node_modules/@girs/gobject-2.0/gobject-2.0-ambient.d.ts","../../../../node_modules/@girs/gobject-2.0/gobject-2.0-import.d.ts","../../../../node_modules/@girs/glib-2.0/glib-2.0-ambient.d.ts","../../../../node_modules/@girs/glib-2.0/glib-2.0-import.d.ts","../../../../node_modules/@girs/glib-2.0/glib-2.0.d.ts","../../../../node_modules/@girs/glib-2.0/index.d.ts","../../../../node_modules/@girs/gobject-2.0/gobject-2.0.d.ts","../../../../node_modules/@girs/gobject-2.0/index.d.ts","../../../../node_modules/@girs/gjs/system.d.ts","../../../../node_modules/@girs/cairo-1.0/cairo-1.0-ambient.d.ts","../../../../node_modules/@girs/cairo-1.0/cairo-1.0-import.d.ts","../../../../node_modules/@girs/cairo-1.0/cairo-1.0.d.ts","../../../../node_modules/@girs/cairo-1.0/index.d.ts","../../../../node_modules/@girs/gjs/cairo.d.ts","../../../../node_modules/@girs/gjs/console.d.ts","../../../../node_modules/@girs/gjs/gi.d.ts","../../../../node_modules/@girs/gjs/gjs-ambient.d.ts","../../../../node_modules/@girs/gjs/gjs.d.ts","../../../../node_modules/@girs/gjs/index.d.ts","../../../../node_modules/@girs/pangocairo-1.0/pangocairo-1.0-ambient.d.ts","../../../../node_modules/@girs/pangocairo-1.0/pangocairo-1.0-import.d.ts","../../../../node_modules/@girs/pango-1.0/pango-1.0-ambient.d.ts","../../../../node_modules/@girs/pango-1.0/pango-1.0-import.d.ts","../../../../node_modules/@girs/harfbuzz-0.0/harfbuzz-0.0-ambient.d.ts","../../../../node_modules/@girs/harfbuzz-0.0/harfbuzz-0.0-import.d.ts","../../../../node_modules/@girs/freetype2-2.0/freetype2-2.0-ambient.d.ts","../../../../node_modules/@girs/freetype2-2.0/freetype2-2.0-import.d.ts","../../../../node_modules/@girs/freetype2-2.0/freetype2-2.0.d.ts","../../../../node_modules/@girs/freetype2-2.0/index.d.ts","../../../../node_modules/@girs/harfbuzz-0.0/harfbuzz-0.0.d.ts","../../../../node_modules/@girs/harfbuzz-0.0/index.d.ts","../../../../node_modules/@girs/gio-2.0/gio-2.0-ambient.d.ts","../../../../node_modules/@girs/gio-2.0/gio-2.0-import.d.ts","../../../../node_modules/@girs/gmodule-2.0/gmodule-2.0-ambient.d.ts","../../../../node_modules/@girs/gmodule-2.0/gmodule-2.0-import.d.ts","../../../../node_modules/@girs/gmodule-2.0/gmodule-2.0.d.ts","../../../../node_modules/@girs/gmodule-2.0/index.d.ts","../../../../node_modules/@girs/gio-2.0/gio-2.0.d.ts","../../../../node_modules/@girs/gio-2.0/index.d.ts","../../../../node_modules/@girs/pango-1.0/pango-1.0.d.ts","../../../../node_modules/@girs/pango-1.0/index.d.ts","../../../../node_modules/@girs/pangocairo-1.0/pangocairo-1.0.d.ts","../../../../node_modules/@girs/pangocairo-1.0/index.d.ts","../../../../node_modules/@girs/gdkpixbuf-2.0/gdkpixbuf-2.0-ambient.d.ts","../../../../node_modules/@girs/gdkpixbuf-2.0/gdkpixbuf-2.0-import.d.ts","../../../../node_modules/@girs/gdkpixbuf-2.0/gdkpixbuf-2.0.d.ts","../../../../node_modules/@girs/gdkpixbuf-2.0/index.d.ts","../../../../node_modules/@girs/gdk-4.0/gdk-4.0.d.ts","../../../../node_modules/@girs/gdk-4.0/index.d.ts","../../../../node_modules/@girs/gdk-4.0/gdk-4.0-ambient.d.ts","../../../../node_modules/@girs/gtk-4.0/gtk-4.0-import.d.ts","../../../../node_modules/@girs/gsk-4.0/gsk-4.0-ambient.d.ts","../../../../node_modules/@girs/gsk-4.0/gsk-4.0-import.d.ts","../../../../node_modules/@girs/graphene-1.0/graphene-1.0-ambient.d.ts","../../../../node_modules/@girs/graphene-1.0/graphene-1.0-import.d.ts","../../../../node_modules/@girs/graphene-1.0/graphene-1.0.d.ts","../../../../node_modules/@girs/graphene-1.0/index.d.ts","../../../../node_modules/@girs/gsk-4.0/gsk-4.0.d.ts","../../../../node_modules/@girs/gsk-4.0/index.d.ts","../../../../node_modules/@girs/gtk-4.0/gtk-4.0.d.ts","../../../../node_modules/@girs/gtk-4.0/index.d.ts","../../../../node_modules/@girs/gtk-4.0/gtk-4.0-ambient.d.ts","../../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../../node_modules/@types/node/globals.typedarray.d.ts","../../../../node_modules/@types/node/buffer.buffer.d.ts","../../../../node_modules/@types/node/globals.d.ts","../../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../../node_modules/@types/node/web-globals/blob.d.ts","../../../../node_modules/@types/node/web-globals/console.d.ts","../../../../node_modules/@types/node/web-globals/crypto.d.ts","../../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../../node_modules/@types/node/web-globals/encoding.d.ts","../../../../node_modules/@types/node/web-globals/events.d.ts","../../../../node_modules/undici-types/utility.d.ts","../../../../node_modules/undici-types/header.d.ts","../../../../node_modules/undici-types/readable.d.ts","../../../../node_modules/undici-types/fetch.d.ts","../../../../node_modules/undici-types/formdata.d.ts","../../../../node_modules/undici-types/connector.d.ts","../../../../node_modules/undici-types/client-stats.d.ts","../../../../node_modules/undici-types/client.d.ts","../../../../node_modules/undici-types/errors.d.ts","../../../../node_modules/undici-types/dispatcher.d.ts","../../../../node_modules/undici-types/global-dispatcher.d.ts","../../../../node_modules/undici-types/global-origin.d.ts","../../../../node_modules/undici-types/pool-stats.d.ts","../../../../node_modules/undici-types/pool.d.ts","../../../../node_modules/undici-types/handlers.d.ts","../../../../node_modules/undici-types/balanced-pool.d.ts","../../../../node_modules/undici-types/round-robin-pool.d.ts","../../../../node_modules/undici-types/h2c-client.d.ts","../../../../node_modules/undici-types/agent.d.ts","../../../../node_modules/undici-types/mock-interceptor.d.ts","../../../../node_modules/undici-types/mock-call-history.d.ts","../../../../node_modules/undici-types/mock-agent.d.ts","../../../../node_modules/undici-types/mock-client.d.ts","../../../../node_modules/undici-types/mock-pool.d.ts","../../../../node_modules/undici-types/snapshot-agent.d.ts","../../../../node_modules/undici-types/mock-errors.d.ts","../../../../node_modules/undici-types/proxy-agent.d.ts","../../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../../node_modules/undici-types/retry-handler.d.ts","../../../../node_modules/undici-types/retry-agent.d.ts","../../../../node_modules/undici-types/api.d.ts","../../../../node_modules/undici-types/cache-interceptor.d.ts","../../../../node_modules/undici-types/interceptors.d.ts","../../../../node_modules/undici-types/util.d.ts","../../../../node_modules/undici-types/cookies.d.ts","../../../../node_modules/undici-types/patch.d.ts","../../../../node_modules/undici-types/websocket.d.ts","../../../../node_modules/undici-types/eventsource.d.ts","../../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../../node_modules/undici-types/content-type.d.ts","../../../../node_modules/undici-types/cache.d.ts","../../../../node_modules/undici-types/index.d.ts","../../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../../node_modules/@types/node/web-globals/importmeta.d.ts","../../../../node_modules/@types/node/web-globals/messaging.d.ts","../../../../node_modules/@types/node/web-globals/navigator.d.ts","../../../../node_modules/@types/node/web-globals/performance.d.ts","../../../../node_modules/@types/node/web-globals/storage.d.ts","../../../../node_modules/@types/node/web-globals/streams.d.ts","../../../../node_modules/@types/node/web-globals/timers.d.ts","../../../../node_modules/@types/node/web-globals/url.d.ts","../../../../node_modules/@types/node/assert.d.ts","../../../../node_modules/@types/node/assert/strict.d.ts","../../../../node_modules/@types/node/async_hooks.d.ts","../../../../node_modules/@types/node/buffer.d.ts","../../../../node_modules/@types/node/child_process.d.ts","../../../../node_modules/@types/node/cluster.d.ts","../../../../node_modules/@types/node/console.d.ts","../../../../node_modules/@types/node/constants.d.ts","../../../../node_modules/@types/node/crypto.d.ts","../../../../node_modules/@types/node/dgram.d.ts","../../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../../node_modules/@types/node/dns.d.ts","../../../../node_modules/@types/node/dns/promises.d.ts","../../../../node_modules/@types/node/domain.d.ts","../../../../node_modules/@types/node/events.d.ts","../../../../node_modules/@types/node/fs.d.ts","../../../../node_modules/@types/node/fs/promises.d.ts","../../../../node_modules/@types/node/http.d.ts","../../../../node_modules/@types/node/http2.d.ts","../../../../node_modules/@types/node/https.d.ts","../../../../node_modules/@types/node/inspector.d.ts","../../../../node_modules/@types/node/inspector.generated.d.ts","../../../../node_modules/@types/node/inspector/promises.d.ts","../../../../node_modules/@types/node/module.d.ts","../../../../node_modules/@types/node/net.d.ts","../../../../node_modules/buffer/index.d.ts","../../../../node_modules/@types/node/os.d.ts","../../../../node_modules/@types/node/path.d.ts","../../../../node_modules/@types/node/path/posix.d.ts","../../../../node_modules/@types/node/path/win32.d.ts","../../../../node_modules/@types/node/perf_hooks.d.ts","../../../../node_modules/@types/node/process.d.ts","../../../../node_modules/@types/node/punycode.d.ts","../../../../node_modules/@types/node/querystring.d.ts","../../../../node_modules/@types/node/quic.d.ts","../../../../node_modules/@types/node/readline.d.ts","../../../../node_modules/@types/node/readline/promises.d.ts","../../../../node_modules/@types/node/repl.d.ts","../../../../node_modules/@types/node/sea.d.ts","../../../../node_modules/@types/node/sqlite.d.ts","../../../../node_modules/@types/node/stream.d.ts","../../../../node_modules/@types/node/stream/consumers.d.ts","../../../../node_modules/@types/node/stream/promises.d.ts","../../../../node_modules/@types/node/stream/web.d.ts","../../../../node_modules/@types/node/string_decoder.d.ts","../../../../node_modules/@types/node/test.d.ts","../../../../node_modules/@types/node/test/reporters.d.ts","../../../../node_modules/@types/node/timers.d.ts","../../../../node_modules/@types/node/timers/promises.d.ts","../../../../node_modules/@types/node/tls.d.ts","../../../../node_modules/@types/node/trace_events.d.ts","../../../../node_modules/@types/node/tty.d.ts","../../../../node_modules/@types/node/url.d.ts","../../../../node_modules/@types/node/util.d.ts","../../../../node_modules/@types/node/util/types.d.ts","../../../../node_modules/@types/node/v8.d.ts","../../../../node_modules/@types/node/vm.d.ts","../../../../node_modules/@types/node/wasi.d.ts","../../../../node_modules/@types/node/worker_threads.d.ts","../../../../node_modules/@types/node/zlib.d.ts","../../../../node_modules/@types/node/index.d.ts"],"fileIdsList":[[65,68,72,120,183,186,191,195,198,200,201,202,215],[68,72,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,120,183,186,191,195,198,200,201,202,215],[66,67,72,120,183,186,191,195,198,200,201,202,215],[72,81,84,120,183,186,191,195,198,200,201,202,215],[72,84,120,183,186,191,195,198,200,201,202,215],[63,72,74,120,183,186,191,195,198,200,201,202,215],[72,82,83,120,183,186,191,195,198,200,201,202,215],[72,104,105,120,183,186,191,195,198,200,201,202,215],[72,104,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,86,92,94,96,98,102,120,183,186,191,195,198,200,201,202,215],[54,72,103,120,183,186,191,195,198,200,201,202,215],[72,99,102,120,183,186,191,195,198,200,201,202,215],[72,102,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,92,94,120,183,186,191,195,198,200,201,202,215],[72,100,101,120,183,186,191,195,198,200,201,202,215],[72,87,94,120,183,186,191,195,198,200,201,202,215],[72,94,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,92,120,183,186,191,195,198,200,201,202,215],[72,88,93,120,183,186,191,195,198,200,201,202,215],[63,68,72,120,183,186,191,195,198,200,201,202,215],[72,120,183,186,191,195,198,200,201,202,215],[55,64,69,70,71,120,183,186,191,195,198,200,201,202,215],[55,61,63,64,69,72,120,183,186,191,195,198,200,201,202,215],[72,73,120,183,186,191,195,198,200,201,202,215],[63,72,120,183,186,191,195,198,200,201,202,215],[58,61,72,120,183,186,191,195,198,200,201,202,215],[61,72,120,183,186,191,195,198,200,201,202,215],[59,60,72,120,183,186,191,195,198,200,201,202,215],[72,89,92,120,183,186,191,195,198,200,201,202,215],[72,92,120,183,186,191,195,198,200,201,202,215],[72,90,91,120,183,186,191,195,198,200,201,202,215],[56,63,72,120,183,186,191,195,198,200,201,202,215],[61,72,74,120,183,186,191,195,198,200,201,202,215],[57,62,72,120,183,186,191,195,198,200,201,202,215],[72,109,112,120,183,186,191,195,198,200,201,202,215],[72,112,120,183,186,191,195,198,200,201,202,215],[72,110,111,120,183,186,191,195,198,200,201,202,215],[72,107,114,120,183,186,191,195,198,200,201,202,215],[72,114,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,86,92,94,96,98,102,104,112,120,183,186,191,195,198,200,201,202,215],[72,108,113,120,183,186,191,195,198,200,201,202,215],[72,116,117,120,183,186,191,195,198,200,201,202,215],[72,116,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,86,92,94,96,98,102,104,112,114,120,183,186,191,195,198,200,201,202,215],[72,106,115,120,183,186,191,195,198,200,201,202,215],[72,79,86,120,183,186,191,195,198,200,201,202,215],[72,86,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,120,183,186,191,195,198,200,201,202,215],[72,80,85,120,183,186,191,195,198,200,201,202,215],[72,78,95,120,183,186,191,195,198,200,201,202,215],[72,77,96,120,183,186,191,195,198,200,201,202,215],[72,96,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,86,92,94,120,183,186,191,195,198,200,201,202,215],[72,76,97,120,183,186,191,195,198,200,201,202,215],[72,75,98,120,183,186,191,195,198,200,201,202,215],[72,98,120,183,186,191,195,198,200,201,202,215],[61,63,72,74,84,86,92,94,96,120,183,186,191,195,198,200,201,202,215],[72,120,180,181,183,186,191,195,198,200,201,202,215],[72,120,182,183,186,191,195,198,200,201,202,215],[72,183,186,191,195,198,200,201,202,215],[72,120,183,186,191,195,198,200,201,202,215,223],[72,120,183,184,186,189,191,194,195,198,200,201,202,204,215,220,232],[72,120,183,184,185,186,191,194,195,198,200,201,202,215],[72,120,183,186,191,195,198,200,201,202,215,233],[72,120,183,186,187,188,191,195,198,200,201,202,206,215],[72,120,183,186,188,191,195,198,200,201,202,215,220,229],[72,120,183,186,189,191,194,195,198,200,201,202,204,215],[72,120,182,183,186,190,191,195,198,200,201,202,215],[72,120,183,186,191,192,195,198,200,201,202,215],[72,120,183,186,191,193,194,195,198,200,201,202,215],[72,120,182,183,186,191,194,195,198,200,201,202,215],[72,120,183,186,191,194,195,196,198,200,201,202,215,220,232],[72,120,183,186,191,194,195,196,198,200,201,202,215,220,223],[72,120,170,183,186,191,194,195,197,198,200,201,202,204,215,220,232],[72,120,183,186,191,194,195,197,198,200,201,202,204,215,220,229,232],[72,120,183,186,191,195,197,198,199,200,201,202,215,220,229,232],[72,118,119,120,121,122,123,124,125,126,127,128,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239],[72,120,183,186,191,194,195,198,200,201,202,215],[72,120,183,186,191,195,198,200,202,215],[72,120,183,186,191,195,198,200,201,202,203,215,232],[72,120,183,186,191,194,195,198,200,201,202,204,215,220],[72,120,183,186,191,195,198,200,201,202,206,215],[72,120,183,186,191,195,198,200,201,202,207,215],[72,120,183,186,191,194,195,198,200,201,202,210,215],[72,120,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239],[72,120,183,186,191,195,198,200,201,202,212,215],[72,120,183,186,191,195,198,200,201,202,213,215],[72,120,183,186,188,191,195,198,200,201,202,204,215,223],[72,120,183,186,191,194,195,198,200,201,202,215,216],[72,120,183,186,191,195,198,200,201,202,215,217,233,236],[72,120,183,186,191,194,195,198,200,201,202,215,220,222,223],[72,120,183,186,191,195,198,200,201,202,215,221,223],[72,120,183,186,191,195,198,200,201,202,215,223,233],[72,120,183,186,191,195,198,200,201,202,215,224],[72,120,180,183,186,191,195,198,200,201,202,215,220,226,232],[72,120,183,186,191,195,198,200,201,202,215,220,225],[72,120,183,186,191,194,195,198,200,201,202,215,227,228],[72,120,183,186,191,195,198,200,201,202,215,227,228],[72,120,183,186,188,191,195,198,200,201,202,204,215,220,229],[72,120,183,186,191,195,198,200,201,202,215,230],[72,120,183,186,191,195,198,200,201,202,204,215,231],[72,120,183,186,191,195,197,198,200,201,202,213,215,232],[72,120,183,186,191,195,198,200,201,202,215,233,234],[72,120,183,186,188,191,195,198,200,201,202,215,234],[72,120,183,186,191,195,198,200,201,202,215,220,235],[72,120,183,186,191,195,198,200,201,202,203,215,236],[72,120,183,186,191,195,198,200,201,202,215,237],[72,120,183,186,188,191,195,198,200,201,202,215],[72,120,170,183,186,191,195,198,200,201,202,215],[72,120,183,186,191,195,198,200,201,202,215,232],[72,120,183,186,191,195,198,200,201,202,215,238],[72,120,183,186,191,195,198,200,201,202,210,215],[72,120,183,186,191,195,198,200,201,202,215,228],[72,120,170,183,186,191,194,195,196,198,200,201,202,210,215,220,223,232,235,236,238],[72,120,183,186,191,195,198,200,201,202,215,220,239],[72,120,135,138,141,142,183,186,191,195,198,200,201,202,215,232],[72,120,138,183,186,191,195,198,200,201,202,215,220,232],[72,120,138,142,183,186,191,195,198,200,201,202,215,232],[72,120,183,186,191,195,198,200,201,202,215,220],[72,120,132,183,186,191,195,198,200,201,202,215],[72,120,136,183,186,191,195,198,200,201,202,215],[72,120,134,135,138,183,186,191,195,198,200,201,202,215,232],[72,120,183,186,191,195,198,200,201,202,204,215,229],[72,120,183,186,191,195,198,200,201,202,215,240],[72,120,132,183,186,191,195,198,200,201,202,215,240],[72,120,134,138,183,186,191,195,198,200,201,202,204,215,232],[72,120,129,130,131,133,137,183,186,191,194,195,198,200,201,202,215,220,232],[72,120,138,147,155,183,186,191,195,198,200,201,202,215],[72,120,130,136,183,186,191,195,198,200,201,202,215],[72,120,138,164,165,183,186,191,195,198,200,201,202,215],[72,120,130,133,138,183,186,191,195,198,200,201,202,215,223,232,240],[72,120,138,183,186,191,195,198,200,201,202,215],[72,120,134,138,183,186,191,195,198,200,201,202,215,232],[72,120,129,183,186,191,195,198,200,201,202,215],[72,120,132,133,134,136,137,138,139,140,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,165,166,167,168,169,183,186,191,195,198,200,201,202,215],[72,120,138,157,160,183,186,191,195,198,200,201,202,215],[72,120,138,147,148,149,183,186,191,195,198,200,201,202,215],[72,120,136,138,148,150,183,186,191,195,198,200,201,202,215],[72,120,137,183,186,191,195,198,200,201,202,215],[72,120,130,132,138,183,186,191,195,198,200,201,202,215],[72,120,138,142,148,150,183,186,191,195,198,200,201,202,215],[72,120,142,183,186,191,195,198,200,201,202,215],[72,120,136,138,141,183,186,191,195,198,200,201,202,215,232],[72,120,130,134,138,147,183,186,191,195,198,200,201,202,215],[72,120,138,157,183,186,191,195,198,200,201,202,215],[72,120,150,183,186,191,195,198,200,201,202,215],[72,120,132,138,164,183,186,191,195,198,200,201,202,215,223,238,240],[50,51,72,105,117,120,183,186,191,195,198,200,201,202,215],[51,52,72,120,183,186,191,195,198,200,201,202,215],[72,105,120,183,186,191,195,198,200,201,202,215],[49,72,120,183,186,191,195,198,200,201,202,215]],"fileInfos":[{"version":"bcd24271a113971ba9eb71ff8cb01bc6b0f872a85c23fdbe5d93065b375933cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f88bedbeb09c6f5a6645cb24c7c55f1aa22d19ae96c8e6959cbd8b85a707bc6","impliedFormat":1},{"version":"7fe93b39b810eadd916be8db880dd7f0f7012a5cc6ffb62de8f62a2117fa6f1f","impliedFormat":1},{"version":"bb0074cc08b84a2374af33d8bf044b80851ccc9e719a5e202eacf40db2c31600","impliedFormat":1},{"version":"1a7daebe4f45fb03d9ec53d60008fbf9ac45a697fdc89e4ce218bc94b94f94d6","impliedFormat":1},{"version":"f94b133a3cb14a288803be545ac2683e0d0ff6661bcd37e31aaaec54fc382aed","impliedFormat":1},{"version":"f59d0650799f8782fd74cf73c19223730c6d1b9198671b1c5b3a38e1188b5953","impliedFormat":1},{"version":"d6b1eba8496bdd0eed6fc8a685768fe01b2da4a0388b5fe7df558290bffcf32f","affectsGlobalScope":true,"impliedFormat":1},{"version":"eadcffda2aa84802c73938e589b9e58248d74c59cb7fcbca6474e3435ac15504","affectsGlobalScope":true,"impliedFormat":1},{"version":"105ba8ff7ba746404fe1a2e189d1d3d2e0eb29a08c18dded791af02f29fb4711","affectsGlobalScope":true,"impliedFormat":1},{"version":"00343ca5b2e3d48fa5df1db6e32ea2a59afab09590274a6cccb1dbae82e60c7c","affectsGlobalScope":true,"impliedFormat":1},{"version":"ebd9f816d4002697cb2864bea1f0b70a103124e18a8cd9645eeccc09bdf80ab4","affectsGlobalScope":true,"impliedFormat":1},{"version":"2c1afac30a01772cd2a9a298a7ce7706b5892e447bb46bdbeef720f7b5da77ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"7b0225f483e4fa685625ebe43dd584bb7973bbd84e66a6ba7bbe175ee1048b4f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c0a4b8ac6ce74679c1da2b3795296f5896e31c38e888469a8e0f99dc3305de60","affectsGlobalScope":true,"impliedFormat":1},{"version":"3084a7b5f569088e0146533a00830e206565de65cae2239509168b11434cd84f","affectsGlobalScope":true,"impliedFormat":1},{"version":"c5079c53f0f141a0698faa903e76cb41cd664e3efb01cc17a5c46ec2eb0bef42","affectsGlobalScope":true,"impliedFormat":1},{"version":"32cafbc484dea6b0ab62cf8473182bbcb23020d70845b406f80b7526f38ae862","affectsGlobalScope":true,"impliedFormat":1},{"version":"fca4cdcb6d6c5ef18a869003d02c9f0fd95df8cfaf6eb431cd3376bc034cad36","affectsGlobalScope":true,"impliedFormat":1},{"version":"b93ec88115de9a9dc1b602291b85baf825c85666bf25985cc5f698073892b467","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c06dcc3fe849fcb297c247865a161f995cc29de7aa823afdd75aaaddc1419b","affectsGlobalScope":true,"impliedFormat":1},{"version":"b77e16112127a4b169ef0b8c3a4d730edf459c5f25fe52d5e436a6919206c4d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"fbffd9337146eff822c7c00acbb78b01ea7ea23987f6c961eba689349e744f8c","affectsGlobalScope":true,"impliedFormat":1},{"version":"a995c0e49b721312f74fdfb89e4ba29bd9824c770bbb4021d74d2bf560e4c6bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"c7b3542146734342e440a84b213384bfa188835537ddbda50d30766f0593aff9","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce6180fa19b1cccd07ee7f7dbb9a367ac19c0ed160573e4686425060b6df7f57","affectsGlobalScope":true,"impliedFormat":1},{"version":"3f02e2476bccb9dbe21280d6090f0df17d2f66b74711489415a8aa4df73c9675","affectsGlobalScope":true,"impliedFormat":1},{"version":"45e3ab34c1c013c8ab2dc1ba4c80c780744b13b5676800ae2e3be27ae862c40c","affectsGlobalScope":true,"impliedFormat":1},{"version":"805c86f6cca8d7702a62a844856dbaa2a3fd2abef0536e65d48732441dde5b5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e42e397f1a5a77994f0185fd1466520691456c772d06bf843e5084ceb879a0ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"f4c2b41f90c95b1c532ecc874bd3c111865793b23aebcc1c3cbbabcd5d76ffb0","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab26191cfad5b66afa11b8bf935ef1cd88fabfcb28d30b2dfa6fad877d050332","affectsGlobalScope":true,"impliedFormat":1},{"version":"2088bc26531e38fb05eedac2951480db5309f6be3fa4a08d2221abb0f5b4200d","affectsGlobalScope":true,"impliedFormat":1},{"version":"cb9d366c425fea79716a8fb3af0d78e6b22ebbab3bd64d25063b42dc9f531c1e","affectsGlobalScope":true,"impliedFormat":1},{"version":"500934a8089c26d57ebdb688fc9757389bb6207a3c8f0674d68efa900d2abb34","affectsGlobalScope":true,"impliedFormat":1},{"version":"689da16f46e647cef0d64b0def88910e818a5877ca5379ede156ca3afb780ac3","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc21cc8b6fee4f4c2440d08035b7ea3c06b3511314c8bab6bef7a92de58a2593","affectsGlobalScope":true,"impliedFormat":1},{"version":"7ca53d13d2957003abb47922a71866ba7cb2068f8d154877c596d63c359fed25","affectsGlobalScope":true,"impliedFormat":1},{"version":"54725f8c4df3d900cb4dac84b64689ce29548da0b4e9b7c2de61d41c79293611","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5594bc3076ac29e6c1ebda77939bc4c8833de72f654b6e376862c0473199323","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f3eb332c2d73e729f3364fcc0c2b375e72a121e8157d25a82d67a138c83a95c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6f4427f9642ce8d500970e4e69d1397f64072ab73b97e476b4002a646ac743b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"48915f327cd1dea4d7bd358d9dc7732f58f9e1626a29cc0c05c8c692419d9bb7","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7bf9377723203b5a6a4b920164df22d56a43f593269ba6ae1fdc97774b68855","affectsGlobalScope":true,"impliedFormat":1},{"version":"f128dae7c44d8f35ee42e0a437000a57c9f06cc04f8b4fb42eebf44954d53dc8","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ecb8e347cb6b2a8927c09b86263663289418df375f5e68e11a0ae683776978f","affectsGlobalScope":true,"impliedFormat":1},{"version":"1ce14b81c5cc821994aa8ec1d42b220dd41b27fcc06373bce3958af7421b77d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3a048b3e9302ef9a34ef4ebb9aecfb28b66abb3bce577206a79fee559c230da","affectsGlobalScope":true,"impliedFormat":1},{"version":"e176cbd59020ce3184e68f10e5f286e027dd444e66d490fe3836118e17babf9c","impliedFormat":99},{"version":"cc32bfdd88ff505c3e6b8851bb85e0a8042c1d8a6950074a4a488eb6d8c0cb21","impliedFormat":99},{"version":"1365850612e65da56dc36c50f0e6b0dffa42a04ea61deab6e807be402ad77da9","signature":"d11e70c24eb78033658ee3793763fcdf9df2fa71fc4fd9621e3fcb31d8b40cd7","impliedFormat":99},{"version":"260a0efd73b82ae4210b46527439bc4e3f97595870db230da421ac79bd44bbc5","signature":"da317dc5021efc2f2d1bcbedb72fd4b9cdc087bdaac59e85108f60577286ecc2","impliedFormat":99},{"version":"d7a9c50bb0db5a6b9881d61fa9c38bdb09d464c9159858f528cdd086cbe2e4ed","signature":"315550d47b119c4cb0b7c235c23e6dc76bd6700865942da83acf378b53318951","impliedFormat":99},{"version":"eca5ae77082fbae75f84f2c7f564d19445e0310ea444e958ab96536ec99f25e2","affectsGlobalScope":true,"impliedFormat":99},{"version":"2085382b07f3cd64087a991b6becb50133f01238539acfd02b4056a94a5ebb9d","impliedFormat":99},{"version":"db35eb1245b36fd3ff663811086d15cb8c68f3b3dc5f5f831db3b0eefbcb033c","impliedFormat":99},{"version":"0f3c61a292d85a2e818df1f9a7c7f37846cb1a6a3a4ecf7894f8a738d4bdb192","affectsGlobalScope":true,"impliedFormat":99},{"version":"8c9787aadb580199528c52892a52d65cf5681cbf431f50c387b4452d830e8260","impliedFormat":99},{"version":"6e9045bc4cb132b149dac58eeb9689f1fdb2b2b356ebbf02b93912b7a0fdbc25","affectsGlobalScope":true,"impliedFormat":99},{"version":"a6f32a624b98546b3ab4f84f0b900206a23542430a715b764796a9b10a27f242","impliedFormat":99},{"version":"a1eeac57c42f81587bdb5ba17781055a64913a1b6896752b5b9e45ba007577a2","impliedFormat":99},{"version":"bce313ff21532aa74f970cecd12a7e2a1b3fa20579ef702c16d627327c64bd98","impliedFormat":99},{"version":"86a89e907573f6d3c8ddab189817f10eff6b0c42ec08c485888d5e8b2efa1e2c","impliedFormat":99},{"version":"e73f713456ae34abd233f29196aa99fdf404cb91164c5122bc19a3d719047cd2","impliedFormat":99},{"version":"54c3513e44305cbe56ef433417d9e42104cdc317a63c43ecf72a1849ee69ccc2","impliedFormat":99},{"version":"7b0dc352c423e02893e3dbefdc5172f227c7638cd40c35c4b1b77af3008613de","affectsGlobalScope":true,"impliedFormat":99},{"version":"409686ee569ee9b47c3588823d5871fe711069a53ee94471fd4bffcc6469ee1a","impliedFormat":99},{"version":"0add61f82f10b4bb3bf837edda13915a643fa650f577e79a03be219c656f9e18","impliedFormat":99},{"version":"4db1053ff2a3a26c56ec68803986fb9a2de7ecb26d6252e1d4b719c48398f799","impliedFormat":99},{"version":"c1bf15bba38171793cfc7112559b1714b0bcb9f79477e012dffc4bb0ef2292a1","impliedFormat":99},{"version":"6922180d916be5ec823dd103ec60bf1ec48bded8e53194a760831a877a7cff0f","impliedFormat":99},{"version":"d0cd0ed5ad50d765e2e30fd7a45ce1b054cce85ff8235d19bbe45152acd32a08","impliedFormat":99},{"version":"7a61ece44b95f226c4166f48ed58e90a7b76242588293c52bb45bd74368c7559","affectsGlobalScope":true,"impliedFormat":99},{"version":"8dd968f41e49b2b0514d16baa1199620746dd6e8017accbea9a39a4b0c2a9d28","impliedFormat":99},{"version":"0ac02f44e71a9befa9af15d07e609ff0fd51c60bbf26fb6f71875707f1b394b1","impliedFormat":99},{"version":"6d57d4863980784f32b9a99064452a369086a45a7dac15f056fb495e8417a30a","affectsGlobalScope":true,"impliedFormat":99},{"version":"91d14e044d65c549c8827e49f93a1a8550657973e39f5cc49562466c3db787a8","impliedFormat":99},{"version":"347c003a385caeaf51a8b30ce282bb73869d87c7a3875fe7c3ccd2daddaf1876","affectsGlobalScope":true,"impliedFormat":99},{"version":"7530ae88145eaec55edad86fbb3c736eda9c9fa356c491c8da28ecde2990b825","impliedFormat":99},{"version":"7804cf99ef91d3b3d0fc402eb685f1386062497517363bb2b6b03cb2067775e8","affectsGlobalScope":true,"impliedFormat":99},{"version":"c419de905ede8758304a529463a9ce7d451c7ac59f52934af475fbc94c206d9e","impliedFormat":99},{"version":"b3dcdeb20d7f0718d174544278f9901c51ba25806c906c5c3a3748210e2aa687","affectsGlobalScope":true,"impliedFormat":99},{"version":"510b80e8d29184ae3d506943bc2405e5dc6337a7724a1585650f40088d18a3ec","impliedFormat":99},{"version":"efc248353f283e5a3b6ff9c59751783b118910d8dea335070195e8415c95af55","impliedFormat":99},{"version":"bc91e84c68f825df58cf6f8df4ea521a46791ffe687546c3cd4e8a6a23f1b1bf","impliedFormat":99},{"version":"c2f4b9ca30387d04ca64a6f6fad507e49ca9ca2a70b34ca64579f2f6050c8bff","impliedFormat":99},{"version":"21ab021acdc50115128766fc952cb9265bbe1e878a6e6712f7999cfcdd3bfbba","impliedFormat":99},{"version":"a67623830d36a6c76f01ce2b51ca3206fb07de66d89b364837eb0fdb901de445","affectsGlobalScope":true,"impliedFormat":99},{"version":"090eb5c7c46bcebe0fdde327c76833c56f3f5503fa2c9b34a908c88ac3536ee6","impliedFormat":99},{"version":"54ac9f13e2b5a9bf9c0a2ceec8135b290d6d5f1b7623f2297f3e7e7f66da5aea","affectsGlobalScope":true,"impliedFormat":99},{"version":"a8fe8ba4b9226110a43330bc743d98e3e3af394e50f018dae034d11821a4b598","impliedFormat":99},{"version":"75fdff836de566cceca1fd40f365af854fbd8139e0fb33a191f8d087c9e43d90","impliedFormat":99},{"version":"e75adffbfda3c908bb319bf8bc4c5f01c23c0a6c129df28edf57bd9e3b9fe7a8","impliedFormat":99},{"version":"981e32c1ee850a697091171963411a0a940d5c1fa1fe3ea88fb9ea7c0f841bd1","impliedFormat":99},{"version":"89108efdef7857496383c406098439765beb2bfc182254de384be680e4fcd84c","impliedFormat":99},{"version":"65794540ef2e02d92221ca25b4a787c7f50a885dcd10b0b6556d434bebd6b1de","impliedFormat":99},{"version":"7be4b4cbbbb1ed788c2bdd6ca1de95f85e892c758960d12a88525f34227fe5ff","impliedFormat":99},{"version":"8b72a707125ca76416917e1850eea6454f1b1ba2af066b58b3889945373f8896","impliedFormat":99},{"version":"5b41c9b462fbcc3f2a4693787478a1128074c8d56603e70317f6f8f797ee03e3","impliedFormat":99},{"version":"fa32b29d6cbe4f293ce9b086be636fa8316768313ac115e8b6867b12698833d2","affectsGlobalScope":true,"impliedFormat":99},{"version":"c6892e72d31ffd365e7d79e84c26fd310d5751557a67db8796a84702120b1ca3","impliedFormat":99},{"version":"34b825347ced4d1afdc8ff7648ca26f9591d10a2c64dc77a052fdc9af13ca31f","impliedFormat":99},{"version":"cefcb600111f84305b4cd93fac9f5e69fd0e5b23ac6b84af7c0e19865cdc18ff","impliedFormat":99},{"version":"ecbc55b9ee0184b94ff7de309e31328a549fb679c710bbcd785eec9c64349f00","impliedFormat":99},{"version":"29cf4a076736c38bf6a7d23d43d2c2ae709a553615ac858686b7186cf0c952cf","impliedFormat":99},{"version":"89015cac57ac6acdd31d143e7843ade6427f03d9df5de62aa5c1cd9ecbe33000","affectsGlobalScope":true,"impliedFormat":99},{"version":"f450021b8c16c3e0bb997ddba60131d8092deacbb912cbc4072baaa6e3746cc9","impliedFormat":99},{"version":"d4e62252c87b057a4fbe0c8c6efadd613f0c84e4050f0db6e96e6f431a49d194","affectsGlobalScope":true,"impliedFormat":99},{"version":"373050f75eeaf4feb36a0093e3fd4d64b3a997c6ff678eca18f3dcd69082bbcb","impliedFormat":99},{"version":"64ce6b3ba42b2b80c9f1a8771744474af0807a0e36f6bcd9059c97337acf6934","affectsGlobalScope":true,"impliedFormat":99},{"version":"4e122a8bb1058597c4f91c754e5b3edfe0f8e6a6806b662f937dd72f58d63cbd","impliedFormat":99},{"version":"5d410316b6c03ace3d207dd1e214ecdc995c366df983b06f64f893f597c92641","impliedFormat":99},{"version":"bf35bc972a15ed41d8ee944d9ea3f8392ce6807c8bed529334f9a37b5ecfa1e2","impliedFormat":99},{"version":"49f3ccea337b806a381c509fe41ded84acc3540407aa34a9d7b89ecd789ee3ef","impliedFormat":99},{"version":"4cda08a56ec1b81dd298d9ed5f7573f0936e8743f47c0a59eb9dea3c3c4ae910","impliedFormat":99},{"version":"0987d83db39de1955b2fc71b8f8107fbb5f1bc4ebaa0ffa4aae9d75c83ae0baa","impliedFormat":99},{"version":"6d71799ede93673b1fdc34a4ef1b0f9701c4191d9e4cd0455589accc24498e03","impliedFormat":99},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ccdaa19852d25ecd84eec365c3bfa16e7859cadecf6e9ca6d0dbbbee439743f","affectsGlobalScope":true,"impliedFormat":1},{"version":"438b41419b1df9f1fbe33b5e1b18f5853432be205991d1b19f5b7f351675541e","affectsGlobalScope":true,"impliedFormat":1},{"version":"096116f8fedc1765d5bd6ef360c257b4a9048e5415054b3bf3c41b07f8951b0b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e5e01375c9e124a83b52ee4b3244ed1a4d214a6cfb54ac73e164a823a4a7860a","affectsGlobalScope":true,"impliedFormat":1},{"version":"f90ae2bbce1505e67f2f6502392e318f5714bae82d2d969185c4a6cecc8af2fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"4b58e207b93a8f1c88bbf2a95ddc686ac83962b13830fe8ad3f404ffc7051fb4","affectsGlobalScope":true,"impliedFormat":1},{"version":"1fefabcb2b06736a66d2904074d56268753654805e829989a46a0161cd8412c5","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"c18a99f01eb788d849ad032b31cafd49de0b19e083fe775370834c5675d7df8e","affectsGlobalScope":true,"impliedFormat":1},{"version":"5247874c2a23b9a62d178ae84f2db6a1d54e6c9a2e7e057e178cc5eea13757fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"cdcf9ea426ad970f96ac930cd176d5c69c6c24eebd9fc580e1572d6c6a88f62c","impliedFormat":1},{"version":"23cd712e2ce083d68afe69224587438e5914b457b8acf87073c22494d706a3d0","impliedFormat":1},{"version":"156a859e21ef3244d13afeeba4e49760a6afa035c149dda52f0c45ea8903b338","impliedFormat":1},{"version":"10ec5e82144dfac6f04fa5d1d6c11763b3e4dbbac6d99101427219ab3e2ae887","impliedFormat":1},{"version":"615754924717c0b1e293e083b83503c0a872717ad5aa60ed7f1a699eb1b4ea5c","impliedFormat":1},{"version":"074de5b2fdead0165a2757e3aaef20f27a6347b1c36adea27d51456795b37682","impliedFormat":1},{"version":"68834d631c8838c715f225509cfc3927913b9cc7a4870460b5b60c8dbdb99baf","impliedFormat":1},{"version":"24371e69a38fc33e268d4a8716dbcda430d6c2c414a99ff9669239c4b8f40dea","impliedFormat":1},{"version":"ccab02f3920fc75c01174c47fcf67882a11daf16baf9e81701d0a94636e94556","impliedFormat":1},{"version":"3e11fce78ad8c0e1d1db4ba5f0652285509be3acdd519529bc8fcef85f7dafd9","impliedFormat":1},{"version":"ea6bc8de8b59f90a7a3960005fd01988f98fd0784e14bc6922dde2e93305ec7d","impliedFormat":1},{"version":"36107995674b29284a115e21a0618c4c2751b32a8766dd4cb3ba740308b16d59","impliedFormat":1},{"version":"914a0ae30d96d71915fc519ccb4efbf2b62c0ddfb3a3fc6129151076bc01dc60","impliedFormat":1},{"version":"9c32412007b5662fd34a8eb04292fb5314ec370d7016d1c2fb8aa193c807fe22","impliedFormat":1},{"version":"7fd1b31fd35876b0aa650811c25ec2c97a3c6387e5473eb18004bed86cdd76b6","impliedFormat":1},{"version":"4d327f7d72ad0918275cea3eee49a6a8dc8114ae1d5b7f3f5d0774de75f7439a","impliedFormat":1},{"version":"6ebe8ebb8659aaa9d1acbf3710d7dae3e923e97610238b9511c25dc39023a166","impliedFormat":1},{"version":"e85d7f8068f6a26710bff0cc8c0fc5e47f71089c3780fbede05857331d2ddec9","impliedFormat":1},{"version":"7befaf0e76b5671be1d47b77fcc65f2b0aad91cc26529df1904f4a7c46d216e9","impliedFormat":1},{"version":"0a60a292b89ca7218b8616f78e5bbd1c96b87e048849469cccb4355e98af959a","impliedFormat":1},{"version":"0b6e25234b4eec6ed96ab138d96eb70b135690d7dd01f3dd8a8ab291c35a683a","impliedFormat":1},{"version":"9666f2f84b985b62400d2e5ab0adae9ff44de9b2a34803c2c5bd3c8325b17dc0","impliedFormat":1},{"version":"40cd35c95e9cf22cfa5bd84e96408b6fcbca55295f4ff822390abb11afbc3dca","impliedFormat":1},{"version":"b1616b8959bf557feb16369c6124a97a0e74ed6f49d1df73bb4b9ddf68acf3f3","impliedFormat":1},{"version":"5b03a034c72146b61573aab280f295b015b9168470f2df05f6080a2122f9b4df","impliedFormat":1},{"version":"40b463c6766ca1b689bfcc46d26b5e295954f32ad43e37ee6953c0a677e4ae2b","impliedFormat":1},{"version":"249b9cab7f5d628b71308c7d9bb0a808b50b091e640ba3ed6e2d0516f4a8d91d","impliedFormat":1},{"version":"80aae6afc67faa5ac0b32b5b8bc8cc9f7fa299cff15cf09cc2e11fd28c6ae29e","impliedFormat":1},{"version":"f473cd2288991ff3221165dcf73cd5d24da30391f87e85b3dd4d0450c787a391","impliedFormat":1},{"version":"499e5b055a5aba1e1998f7311a6c441a369831c70905cc565ceac93c28083d53","impliedFormat":1},{"version":"8aee8b6d4f9f62cf3776cda1305fb18763e2aade7e13cea5bbe699112df85214","impliedFormat":1},{"version":"c63b9ada8c72f95aac5db92aea07e5e87ec810353cdf63b2d78f49a58662cf6c","impliedFormat":1},{"version":"1cc2a09e1a61a5222d4174ab358a9f9de5e906afe79dbf7363d871a7edda3955","impliedFormat":1},{"version":"5d0375ca7310efb77e3ef18d068d53784faf62705e0ad04569597ae0e755c401","impliedFormat":1},{"version":"59af37caec41ecf7b2e76059c9672a49e682c1a2aa6f9d7dc78878f53aa284d6","impliedFormat":1},{"version":"addf417b9eb3f938fddf8d81e96393a165e4be0d4a8b6402292f9c634b1cb00d","impliedFormat":1},{"version":"b64d4d1c5f877f9c666e98e833f0205edb9384acc46e98a1fef344f64d6aba44","impliedFormat":1},{"version":"adf27937dba6af9f08a68c5b1d3fce0ca7d4b960c57e6d6c844e7d1a8e53adae","impliedFormat":1},{"version":"12950411eeab8563b349cb7959543d92d8d02c289ed893d78499a19becb5a8cc","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"c9381908473a1c92cb8c516b184e75f4d226dad95c3a85a5af35f670064d9a2f","impliedFormat":1},{"version":"c3f5289820990ab66b70c7fb5b63cb674001009ff84b13de40619619a9c8175f","affectsGlobalScope":true,"impliedFormat":1},{"version":"b3275d55fac10b799c9546804126239baf020d220136163f763b55a74e50e750","affectsGlobalScope":true,"impliedFormat":1},{"version":"fa68a0a3b7cb32c00e39ee3cd31f8f15b80cac97dce51b6ee7fc14a1e8deb30b","affectsGlobalScope":true,"impliedFormat":1},{"version":"1cf059eaf468efcc649f8cf6075d3cb98e9a35a0fe9c44419ec3d2f5428d7123","affectsGlobalScope":true,"impliedFormat":1},{"version":"6c36e755bced82df7fb6ce8169265d0a7bb046ab4e2cb6d0da0cb72b22033e89","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7721c4f69f93c91360c26a0a84ee885997d748237ef78ef665b153e622b36c1","affectsGlobalScope":true,"impliedFormat":1},{"version":"7a93de4ff8a63bafe62ba86b89af1df0ccb5e40bb85b0c67d6bbcfdcf96bf3d4","affectsGlobalScope":true,"impliedFormat":1},{"version":"90e85f9bc549dfe2b5749b45fe734144e96cd5d04b38eae244028794e142a77e","affectsGlobalScope":true,"impliedFormat":1},{"version":"e0a5deeb610b2a50a6350bd23df6490036a1773a8a71d70f2f9549ab009e67ee","affectsGlobalScope":true,"impliedFormat":1},{"version":"3fad5618174d74a34ee006406d4eb37e8d07dd62eb1315dbf52f48d31a337547","impliedFormat":1},{"version":"7e49f52a159435fc8df4de9dc377ef5860732ca2dc9efec1640531d3cf5da7a3","impliedFormat":1},{"version":"dd4bde4bdc2e5394aed6855e98cf135dfdf5dd6468cad842e03116d31bbcc9bc","impliedFormat":1},{"version":"4d4e879009a84a47c05350b8dca823036ba3a29a3038efed1be76c9f81e45edf","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b50a819485ffe0d237bf0d131e92178d14d11e2aa873d73615a9ec578b341f5","impliedFormat":1},{"version":"9ba13b47cb450a438e3076c4a3f6afb9dc85e17eae50f26d4b2d72c0688c9251","impliedFormat":1},{"version":"b64cd4401633ea4ecadfd700ddc8323a13b63b106ac7127c1d2726f32424622c","impliedFormat":1},{"version":"37c6e5fe5715814412b43cc9b50b24c67a63c4e04e753e0d1305970d65417a60","impliedFormat":1},{"version":"1d024184fb57c58c5c91823f9d10b4915a4867b7934e89115fd0d861a9df27c8","impliedFormat":1},{"version":"ee0e4946247f842c6dd483cbb60a5e6b484fee07996e3a7bc7343dfb68a04c5d","impliedFormat":1},{"version":"ef051f42b7e0ef5ca04552f54c4552eac84099d64b6c5ad0ef4033574b6035b8","impliedFormat":1},{"version":"853a43154f1d01b0173d9cbd74063507ece57170bad7a3b68f3fa1229ad0a92f","impliedFormat":1},{"version":"56231e3c39a031bfb0afb797690b20ed4537670c93c0318b72d5180833d98b72","impliedFormat":1},{"version":"5cc7c39031bfd8b00ad58f32143d59eb6ffc24f5d41a20931269011dccd36c5e","impliedFormat":1},{"version":"12d602a8fe4c2f2ba4f7804f5eda8ba07e0c83bf5cf0cda8baffa2e9967bfb77","affectsGlobalScope":true,"impliedFormat":1},{"version":"a856ab781967b62b288dfd85b860bef0e62f005ed4b1b8fa25c53ce17856acaf","impliedFormat":1},{"version":"cc25940cfb27aa538e60d465f98bb5068d4d7d33131861ace43f04fe6947d68f","impliedFormat":1},{"version":"8db46b61a690f15b245cf16270db044dc047dce9f93b103a59f50262f677ea1f","impliedFormat":1},{"version":"01ff95aa1443e3f7248974e5a771f513cb2ac158c8898f470a1792f817bee497","impliedFormat":1},{"version":"757227c8b345c57d76f7f0e3bbad7a91ffca23f1b2547cbed9e10025816c9cb7","impliedFormat":1},{"version":"959d0327c96dd9bb5521f3ed6af0c435996504cc8dd46baa8e12cb3b3518cef1","impliedFormat":1},{"version":"e1c1a0b4d1ead0de9eca52203aeb1f771f21e6238d6fcd15aa56ac2a02f1b7bf","impliedFormat":1},{"version":"101f482fd48cb4c7c0468dcc6d62c843d842977aea6235644b1edd05e81fbf22","impliedFormat":1},{"version":"266bee0a41e9c3ba335583e21e9277ae03822402cf5e8e1d99f5196853613b98","affectsGlobalScope":true,"impliedFormat":1},{"version":"386606f8a297988535cb1401959041cfa7f59d54b8a9ed09738e65c98684c976","impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"3ef397f12387eff17f550bc484ea7c27d21d43816bbe609d495107f44b97e933","impliedFormat":1},{"version":"1023282e2ba810bc07905d3668349fbd37a26411f0c8f94a70ef3c05fe523fcf","impliedFormat":1},{"version":"b214ebcf76c51b115453f69729ee8aa7b7f8eccdae2a922b568a45c2d7ff52f7","impliedFormat":1},{"version":"429c9cdfa7d126255779efd7e6d9057ced2d69c81859bbab32073bad52e9ba76","impliedFormat":1},{"version":"e236b5eba291f51bdf32c231673e6cab81b5410850e61f51a7a524dddadc0f95","impliedFormat":1},{"version":"ce8653341224f8b45ff46d2a06f2cacb96f841f768a886c9d8dd8ec0878b11bd","affectsGlobalScope":true,"impliedFormat":1},{"version":"7f2c62938251b45715fd2a9887060ec4fbc8724727029d1cbce373747252bdd7","impliedFormat":1},{"version":"e3ace08b6bbd84655d41e244677b474fd995923ffef7149ddb68af8848b60b05","impliedFormat":1},{"version":"132580b0e86c48fab152bab850fc57a4b74fe915c8958d2ccb052b809a44b61c","impliedFormat":1},{"version":"90a278f5fab7557e69e97056c0841adf269c42697194f0bd5c5e69152637d4b3","impliedFormat":1},{"version":"69c9a5a9392e8564bd81116e1ed93b13205201fb44cb35a7fde8c9f9e21c4b23","impliedFormat":1},{"version":"5f8fc37f8434691ffac1bfd8fc2634647da2c0e84253ab5d2dd19a7718915b35","impliedFormat":1},{"version":"5981c2340fd8b076cae8efbae818d42c11ffc615994cb060b1cd390795f1be2b","impliedFormat":1},{"version":"f263485c9ca90df9fe7bb3a906db9701997dc6cae86ace1f8106ac8d2f7f677b","impliedFormat":1},{"version":"1edcf2f36fc332615846bde6dcc71a8fe526065505bc5e3dcfd65a14becdf698","affectsGlobalScope":true,"impliedFormat":1},{"version":"0250da3eb85c99624f974e77ef355cdf86f43980251bc371475c2b397ba55bcd","impliedFormat":1},{"version":"f1c93e046fb3d9b7f8249629f4b63dc068dd839b824dd0aa39a5e68476dc9420","impliedFormat":1},{"version":"3d3a5f27ffbc06c885dd4d5f9ee20de61faf877fe2c3a7051c4825903d9a7fdc","impliedFormat":1},{"version":"12806f9f085598ef930edaf2467a5fa1789a878fba077cd27e85dc5851e11834","impliedFormat":1},{"version":"1dbca38aa4b0db1f4f9e6edacc2780af7e028b733d2a98dd3598cd235ca0c97d","impliedFormat":1},{"version":"a43fe41c33d0a192a0ecaf9b92e87bef3709c9972e6d53c42c49251ccb962d69","impliedFormat":1},{"version":"a177959203c017fad3ecc4f3d96c8757a840957a4959a3ae00dab9d35961ca6c","affectsGlobalScope":true,"impliedFormat":1},{"version":"6fc727ccf9b36e257ff982ea0badeffbfc2c151802f741bddff00c6af3b784cf","impliedFormat":1},{"version":"19143c930aef7ccf248549f3e78992f2f1049118ec5d4622e95025057d8e392b","impliedFormat":1},{"version":"4844a4c9b4b1e812b257676ed8a80b3f3be0e29bf05e742cc2ea9c3c6865e6c6","impliedFormat":1},{"version":"064878a60367e0407c42fb7ba02a2ea4d83257357dc20088e549bd4d89433e9c","impliedFormat":1},{"version":"cca8917838a876e2d7016c9b6af57cbf11fdf903c5fdd8e613fa31840b2957bf","impliedFormat":1},{"version":"d91ae55e4282c22b9c21bc26bd3ef637d3fe132507b10529ae68bf76f5de785b","impliedFormat":1},{"version":"b484ec11ba00e3a2235562a41898d55372ccabe607986c6fa4f4aba72093749f","impliedFormat":1},{"version":"7e8a671604329e178bb479c8f387715ebd40a091fc4a7552a0a75c2f3a21c65c","impliedFormat":1},{"version":"41ef7992c555671a8fe54db302788adefa191ded810a50329b79d20a6772d14c","impliedFormat":1},{"version":"041a7781b9127ab568d2cdcce62c58fdea7c7407f40b8c50045d7866a2727130","impliedFormat":1},{"version":"4c5e90ddbcd177ad3f2ffc909ae217c87820f1e968f6959e4b6ba38a8cec935e","impliedFormat":1},{"version":"b70dd9a44e1ac42f030bb12e7d79117eac7cb74170d72d381a1e7913320af23a","impliedFormat":1},{"version":"55cdbeebe76a1fa18bbd7e7bf73350a2173926bd3085bb050cf5a5397025ee4e","impliedFormat":1}],"root":[[51,53],58,105,117],"options":{"composite":true,"declaration":true,"declarationDir":"../lib/types","emitDeclarationOnly":true,"esModuleInterop":true,"module":199,"noUnusedLocals":true,"noUnusedParameters":true,"outDir":"../lib","preserveConstEnums":true,"removeComments":false,"rootDir":"../src","skipLibCheck":true,"sourceMap":true,"strict":false,"target":7,"tsBuildInfoFile":"./.tsbuildinfo"},"referencedMap":[[65,1],[66,2],[67,3],[68,4],[81,5],[82,6],[83,7],[84,8],[105,9],[54,10],[103,11],[104,12],[99,13],[100,14],[101,15],[102,16],[87,17],[88,18],[93,19],[94,20],[69,21],[70,22],[55,22],[71,22],[72,23],[73,24],[74,25],[64,26],[58,27],[59,28],[60,7],[61,29],[89,30],[90,31],[91,3],[92,32],[56,33],[57,26],[62,34],[63,35],[109,36],[110,37],[111,3],[112,38],[107,39],[108,40],[113,41],[114,42],[117,43],[106,44],[115,45],[116,46],[79,47],[80,48],[85,49],[86,50],[96,51],[77,52],[78,53],[95,54],[98,55],[75,56],[76,57],[97,58],[180,59],[181,59],[182,60],[120,61],[183,62],[184,63],[185,64],[118,22],[186,65],[187,66],[188,67],[189,68],[190,69],[191,70],[192,70],[193,71],[194,72],[195,73],[196,74],[121,22],[119,22],[197,75],[198,76],[199,77],[240,78],[200,79],[201,80],[202,79],[203,81],[204,82],[206,83],[207,84],[208,84],[209,84],[210,85],[211,86],[212,87],[213,88],[214,89],[215,90],[216,90],[217,91],[218,22],[219,22],[220,92],[221,93],[222,92],[223,94],[224,95],[225,96],[226,97],[227,98],[228,99],[229,100],[230,101],[231,102],[232,103],[233,104],[234,105],[235,106],[236,107],[237,108],[122,79],[123,22],[124,22],[125,109],[126,22],[127,65],[128,22],[171,110],[172,111],[173,112],[174,112],[175,113],[176,22],[177,62],[178,114],[179,111],[238,115],[239,116],[205,22],[47,22],[48,22],[8,22],[10,22],[9,22],[2,22],[11,22],[12,22],[13,22],[14,22],[15,22],[16,22],[17,22],[18,22],[3,22],[19,22],[20,22],[4,22],[21,22],[25,22],[22,22],[23,22],[24,22],[26,22],[27,22],[28,22],[5,22],[29,22],[30,22],[31,22],[32,22],[6,22],[36,22],[33,22],[34,22],[35,22],[37,22],[7,22],[38,22],[43,22],[44,22],[39,22],[40,22],[41,22],[42,22],[45,22],[1,22],[46,22],[147,117],[159,118],[144,119],[160,120],[169,121],[135,122],[136,123],[134,124],[168,125],[163,126],[167,127],[138,128],[156,129],[137,130],[166,131],[132,132],[133,126],[139,133],[140,22],[146,134],[143,133],[130,135],[170,136],[161,137],[150,138],[149,133],[151,139],[154,140],[148,141],[152,142],[164,125],[141,143],[142,144],[155,145],[131,120],[158,146],[157,133],[145,144],[153,147],[162,22],[129,22],[165,148],[52,149],[53,150],[51,151],[50,152],[49,22]],"latestChangedDtsFile":"../lib/types/index.d.ts","version":"6.0.2"}
package/tsconfig.json ADDED
@@ -0,0 +1,33 @@
1
+ {
2
+ "compilerOptions": {
3
+ "outDir": "lib",
4
+ "declarationDir": "lib/types",
5
+ "rootDir": "src",
6
+ "tsBuildInfoFile": "tmp/.tsbuildinfo",
7
+ "target": "es2020",
8
+ "declaration": true,
9
+ "emitDeclarationOnly": true,
10
+ "module": "NodeNext",
11
+ "moduleResolution": "NodeNext",
12
+ "esModuleInterop": true,
13
+ "resolveJsonModule": true,
14
+ "noUnusedLocals": true,
15
+ "noUnusedParameters": true,
16
+ "removeComments": false,
17
+ "preserveConstEnums": true,
18
+ "sourceMap": true,
19
+ "skipLibCheck": true,
20
+ "composite": true,
21
+ "incremental": true,
22
+ "types": ["node"],
23
+ "lib": ["es2015", "es2016", "es2017", "DOM"],
24
+ "strict": false
25
+ },
26
+ "include": [
27
+ "src",
28
+ "../../../node_modules/@girs/gdk-4.0/gdk-4.0-ambient.d.ts",
29
+ "../../../node_modules/@girs/glib-2.0/glib-2.0-ambient.d.ts",
30
+ "../../../node_modules/@girs/gtk-4.0/gtk-4.0-ambient.d.ts"
31
+ ],
32
+ "exclude": ["src/test.mts", "src/**/*.spec.ts"]
33
+ }