@opentui/core 0.0.0-20251205-41c885f6 → 0.0.0-20251208-bec95e7d

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.
@@ -1,4 +1,1670 @@
1
1
  // @bun
2
+ var __create = Object.create;
3
+ var __getProtoOf = Object.getPrototypeOf;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
7
+ var __toESM = (mod, isNodeMode, target) => {
8
+ target = mod != null ? __create(__getProtoOf(mod)) : {};
9
+ const to = isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target;
10
+ for (let key of __getOwnPropNames(mod))
11
+ if (!__hasOwnProp.call(to, key))
12
+ __defProp(to, key, {
13
+ get: () => mod[key],
14
+ enumerable: true
15
+ });
16
+ return to;
17
+ };
18
+ var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
19
+ var __export = (target, all) => {
20
+ for (var name in all)
21
+ __defProp(target, name, {
22
+ get: all[name],
23
+ enumerable: true,
24
+ configurable: true,
25
+ set: (newValue) => all[name] = () => newValue
26
+ });
27
+ };
28
+ var __require = import.meta.require;
29
+
30
+ // ../../node_modules/yoga-layout/dist/src/index.js
31
+ var exports_src = {};
32
+ __export(exports_src, {
33
+ default: () => src_default,
34
+ Wrap: () => Wrap,
35
+ Unit: () => Unit,
36
+ PositionType: () => PositionType,
37
+ Overflow: () => Overflow,
38
+ NodeType: () => NodeType,
39
+ MeasureMode: () => MeasureMode,
40
+ LogLevel: () => LogLevel,
41
+ Justify: () => Justify,
42
+ Gutter: () => Gutter,
43
+ FlexDirection: () => FlexDirection,
44
+ ExperimentalFeature: () => ExperimentalFeature,
45
+ Errata: () => Errata,
46
+ Edge: () => Edge,
47
+ Display: () => Display,
48
+ Direction: () => Direction,
49
+ Dimension: () => Dimension,
50
+ BoxSizing: () => BoxSizing,
51
+ Align: () => Align
52
+ });
53
+
54
+ // ../../node_modules/yoga-layout/dist/binaries/yoga-wasm-base64-esm.js
55
+ var loadYoga = (() => {
56
+ var _scriptDir = import.meta.url;
57
+ return function(loadYoga2) {
58
+ loadYoga2 = loadYoga2 || {};
59
+ var h;
60
+ h || (h = typeof loadYoga2 !== "undefined" ? loadYoga2 : {});
61
+ var aa, ca;
62
+ h.ready = new Promise(function(a, b) {
63
+ aa = a;
64
+ ca = b;
65
+ });
66
+ var da = Object.assign({}, h), q = "";
67
+ typeof document != "undefined" && document.currentScript && (q = document.currentScript.src);
68
+ _scriptDir && (q = _scriptDir);
69
+ q.indexOf("blob:") !== 0 ? q = q.substr(0, q.replace(/[?#].*/, "").lastIndexOf("/") + 1) : q = "";
70
+ var ea = h.print || console.log.bind(console), v = h.printErr || console.warn.bind(console);
71
+ Object.assign(h, da);
72
+ da = null;
73
+ var w;
74
+ h.wasmBinary && (w = h.wasmBinary);
75
+ var noExitRuntime = h.noExitRuntime || true;
76
+ typeof WebAssembly != "object" && x("no native wasm support detected");
77
+ var fa, ha = false;
78
+ function z(a, b, c) {
79
+ c = b + c;
80
+ for (var d = "";!(b >= c); ) {
81
+ var e = a[b++];
82
+ if (!e)
83
+ break;
84
+ if (e & 128) {
85
+ var f = a[b++] & 63;
86
+ if ((e & 224) == 192)
87
+ d += String.fromCharCode((e & 31) << 6 | f);
88
+ else {
89
+ var g = a[b++] & 63;
90
+ e = (e & 240) == 224 ? (e & 15) << 12 | f << 6 | g : (e & 7) << 18 | f << 12 | g << 6 | a[b++] & 63;
91
+ 65536 > e ? d += String.fromCharCode(e) : (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023));
92
+ }
93
+ } else
94
+ d += String.fromCharCode(e);
95
+ }
96
+ return d;
97
+ }
98
+ var ia, ja, A, C, ka, D, E, la, ma;
99
+ function na() {
100
+ var a = fa.buffer;
101
+ ia = a;
102
+ h.HEAP8 = ja = new Int8Array(a);
103
+ h.HEAP16 = C = new Int16Array(a);
104
+ h.HEAP32 = D = new Int32Array(a);
105
+ h.HEAPU8 = A = new Uint8Array(a);
106
+ h.HEAPU16 = ka = new Uint16Array(a);
107
+ h.HEAPU32 = E = new Uint32Array(a);
108
+ h.HEAPF32 = la = new Float32Array(a);
109
+ h.HEAPF64 = ma = new Float64Array(a);
110
+ }
111
+ var oa, pa = [], qa = [], ra = [];
112
+ function sa() {
113
+ var a = h.preRun.shift();
114
+ pa.unshift(a);
115
+ }
116
+ var F = 0, ta = null, G = null;
117
+ function x(a) {
118
+ if (h.onAbort)
119
+ h.onAbort(a);
120
+ a = "Aborted(" + a + ")";
121
+ v(a);
122
+ ha = true;
123
+ a = new WebAssembly.RuntimeError(a + ". Build with -sASSERTIONS for more info.");
124
+ ca(a);
125
+ throw a;
126
+ }
127
+ function ua(a) {
128
+ return a.startsWith("data:application/octet-stream;base64,");
129
+ }
130
+ var H;
131
+ H = "data:application/octet-stream;base64,AGFzbQEAAAABugM3YAF/AGACf38AYAF/AX9gA39/fwBgAn98AGACf38Bf2ADf39/AX9gBH9/f30BfWADf398AGAAAGAEf39/fwBgAX8BfGACf38BfGAFf39/f38Bf2AAAX9gA39/fwF9YAZ/f31/fX8AYAV/f39/fwBgAn9/AX1gBX9/f319AX1gAX8BfWADf35/AX5gB39/f39/f38AYAZ/f39/f38AYAR/f39/AX9gBn9/f319fQF9YAR/f31/AGADf399AX1gBn98f39/fwF/YAR/fHx/AGACf30AYAh/f39/f39/fwBgDX9/f39/f39/f39/f38AYAp/f39/f39/f39/AGAFf39/f38BfGAEfHx/fwF9YA1/fX1/f399fX9/f39/AX9gB39/f319f38AYAJ+fwF/YAN/fX0BfWABfAF8YAN/fHwAYAR/f319AGAHf39/fX19fQF9YA1/fX99f31/fX19fX1/AX9gC39/f39/f399fX19AX9gCH9/f39/f319AGAEf39+fgBgB39/f39/f38Bf2ACfH8BfGAFf398fH8AYAN/f38BfGAEf39/fABgA39/fQBgBn9/fX99fwF/ArUBHgFhAWEAHwFhAWIAAwFhAWMACQFhAWQAFgFhAWUAEQFhAWYAIAFhAWcAAAFhAWgAIQFhAWkAAwFhAWoAAAFhAWsAFwFhAWwACgFhAW0ABQFhAW4AAwFhAW8AAQFhAXAAFwFhAXEABgFhAXIAAAFhAXMAIgFhAXQACgFhAXUADQFhAXYAFgFhAXcAAgFhAXgAAwFhAXkAGAFhAXoAAgFhAUEAAQFhAUIAEQFhAUMAAQFhAUQAAAOiAqACAgMSBwcACRkDAAoRBgYKEwAPDxMBBiMTCgcHGgMUASQFJRQHAwMKCgMmAQYYDxobFAAKBw8KBwMDAgkCAAAFGwACBwIHBgIDAQMIDAABKAkHBQURACkZASoAAAIrLAIALQcHBy4HLwkFCgMCMA0xAgMJAgACAQYKAQIBBQEACQIFAQEABQAODQ0GFQIBHBUGAgkCEAAAAAUyDzMMBQYINAUCAwUODg41AgMCAgIDBgICNgIBDAwMAQsLCwsLCx0CAAIAAAABABABBQICAQMCEgMMCwEBAQEBAQsLAQICAwICAgICAgIDAgIICAEICAgEBAQEBAQEBAQABAQABAQEBAAE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GiABQQA2AvADIAFCADcC6AMgAigC7AMiAyACKALoAyIERwRAIAMgBGsiBEEASA0FIAEgBBAeIgM2AuwDIAEgAzYC6AMgASADIARqNgLwAyACKALoAyIEIAIoAuwDIghHBEADQCADIAQoAgA2AgAgA0EEaiEDIARBBGoiBCAIRw0ACwsgASADNgLsAwsgASACKQL0AzcC9AMgASACKAKEBDYChAQgASACKQL8AzcC/AMgAUEANgLkAwsgBSABNgIAIAEgADYC5AMLIAZBAWohBiAFQQRqIgUgB0cNAAsLDwsQAgALUAACQAJAAkACQAJAIAIOBAQAAQIDCyAAIAEgAUEwahBDDwsgACABIAFBMGogAxBEDwsgACABIAFBMGoQQg8LECQACyAAIAEgAUEwaiADEEULcAIBfwF9IwBBEGsiBCQAIARBCGogACABQQJ0QdwlaigCACACEDZDAADAfyEFAkACQAJAIAQtAAxBAWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwt5AgF/AX0jAEEQayIDJAAgA0EIaiAAIAFBAnRB7CVqKAIAIAIQU0MAAMB/IQQCQAJAAkAgAy0ADEEBaw4CAAECCyADKgIIIQQMAQsgAyoCCEMAAAAAlEMK1yM8lCEECyADQRBqJAAgBEMAAAAAl0MAAAAAIAQgBFsbC1QAAkACQAJAAkACQCACDgQEAAECAwsgACABIAFBwgBqEEMPCyAAIAEgAUHCAGogAxBEDwsgACABIAFBwgBqEEIPCxAkAAsgACABIAFBwgBqIAMQRQsvACAAIAJFQQF0IgIgASADEGAgACACIAEQS5IgACACIAEgAxB/IAAgAiABEFKSkgvOAQIDfwJ9IwBBEGsiAyQAQQEhBCADQQhqIABB/ABqIgUgACABQQF0akH2AGoiAS8BABAfAkACQCADKgIIIgcgAioCACIGXARAIAcgB1sEQCACLQAEIQIMAgsgBiAGXCEECyACLQAEIQIgBEUNACADLQAMIAJB/wFxRg0BCyAFIAEgBiACEDkDQCAALQAAIgFBBHENASAAIAFBBHI6AAAgACgCECIBBEAgACABEQAACyAAQYCAgP4HNgKcASAAKALkAyIADQALCyADQRBqJAALzgECA38CfSMAQRBrIgMk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AWsOAgABAgsgBCoCCCEFDAELIAQqAgggA5RDCtcjPJQhBQsgBEEQaiQAIAVDAAAAACAFIAVbGwscACAAIAFBCCACpyACQiCIpyADpyADQiCIpxAVCwUAEFgACzkAIABFBEBBAA8LAn8gAUGAf3FBgL8DRiABQf8ATXJFBEBB/DtBGTYCAEF/DAELIAAgAToAAEEBCwvEAgACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCABQQlrDhIACgsMCgsCAwQFDAsMDAoLBwgJCyACIAIoAgAiAUEEajYCACAAIAEoAgA2AgAPCwALIAIgAigCACIBQQRqNgIAIAAgATIBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATMBADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATAAADcDAA8LIAIgAigCACIBQQRqNgIAIAAgATEAADcDAA8LAAsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKwMAOQMADwsgACACIAMRAQALDwsgAiACKAIAIgFBBGo2AgAgACABNAIANwMADwsgAiACKAIAIgFBBGo2AgAgACABNQIANwMADwsgAiACKAIAQQdqQXhxIgFBCGo2AgAgACABKQMANwMAC84BAgN/An0jAEEQayIDJABBASEEIANBCGogAEH8AGoiBSAAIAFBAXRqQegAaiIBLwEAEB8CQAJAIAMqAggiByACKgIAIgZcBEAgByAHWwRAIAItAAQhAgwCCyAGIAZcIQQLIAItAAQhAiAERQ0AIAMtAAwgAkH/AXFGDQELIAUgASAGIAIQOQNAIAAtAAAiAUEEcQ0BIAAgAUEEcjoAACAAKAIQIgEEQCAAIAERAAALIABBgICA/gc2ApwBIAAoAuQDIgANAAsLIANBEGokAAtdAQR/IAAoAgAhAgNAIAIsAAAiAxBXBEBBfyEEIAAgAkEBaiICNgIAIAFBzJmz5gBNBH9BfyADQTBrIgMgAUEKbCIEaiADIARB/////wdzShsFIAQLIQEMAQsLIAELrhQCEn8BfiMAQdAAayIIJAAgCCABNgJMIAhBN2ohFyAIQThqIRQCQAJAAkACQANAIAEhDSAHIA5B/////wdzSg0BIAcgDmohDgJAAkACQCANIgctAAAiCQRAA0ACQAJAIAlB/wFxIgFFBEAgByEBDAELIAFBJUcNASAH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IQEgAEIANwIEIAAgATYCACABIAA2AgQgAkEQaiQAIAALGwEBfyAABEAgACgCACIBBEAgARAjCyAAECMLC0kBAn9BBBAeIQFBIBAeIgBBADYCHCAAQoCAgICAgIDAPzcCFCAAQgA3AgwgAEEAOgAIIABBAzYCBCAAQQA2AgAgASAANgIAIAELIAAgAkEFR0EAIAIbRQRAQbgwIAMgBBBJDwsgAyAEEHALIgEBfiABIAKtIAOtQiCGhCAEIAARFQAiBUIgiKckASAFpwuoAQEFfyAAKAJUIgMoAgAhBSADKAIEIgQgACgCFCAAKAIcIgdrIgYgBCAGSRsiBgRAIAUgByAGECsaIAMgAygCACAGaiIFNgIAIAMgAygCBCAGayIENgIECyAEIAIgAiAESxsiBARAIAUgASAEECsaIAMgAygCACAEaiIFNgIAIAMgAygCBCAEazYCBAsgBUEAOgAAIAAgACgCLCIBNgIcIAAgATYCFCACCwQAQgALBABBAAuKBQIGfgJ/IAEgASgCAEEHakF4cSIBQRBqNgIAIAAhCSABKQMAIQMgASkDCCEGIwBBIGsiCCQAAkAgBkL///////////8AgyIEQoCAgICAgMCAPH0gBEKAgICAgIDA/8MAfVQEQCAGQgSGIANCPIiEIQQgA0L//////////w+DIgNCgYCAgICAgIAIWgRAIARCgYCAgICAgIDAAHwhAgwCCyAEQoCAgICAgICAQH0hAiADQoCAgICAgICACFINASACIARCAYN8IQIMAQsgA1AgBEKAgICAgIDA//8AVCAEQoCAgICAgMD//wBRG0UEQCAGQgSGIANCPIiEQv////////8Dg0KAgICAgICA/P8AhCECDAELQoCAgICAgID4/wAhAiAEQv///////7//wwBWDQBCACECIARCMIinIgBBkfcASQ0AIAMhAiAGQv///////z+DQoCAgICAgMAAhCIFIQcCQCAAQYH3AGsiAUHAAHEEQCACIAFBQGqthiEHQgAhAgwBCyABRQ0AIAcgAa0iBIYgAkHAACABa62IhCEHIAIgBIYhAgsgCCACNwMQIAggBzcDGAJAQYH4ACAAayIAQcAAcQRAIAUgAEFAaq2IIQNCACEFDAELIABFDQAgBUHAACAAa62GIAMgAK0iAoiEIQMgBSACiCEFCyAIIAM3AwAgCCAF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ASAAKAIAIQAgASACQQFxBH8gASgCACAAaigCAAUgAAsRCwALYQECfyMAQRBrIgIkACABIAAoAgQiA0EBdWohASAAKAIAIQAgAiABIANBAXEEfyABKAIAIABqKAIABSAACxEBAEEQEB4iACACKQMINwMIIAAgAikDADcDACACQRBqJAAgAAtjAQJ/IwBBEGsiAyQAIAEgACgCBCIEQQF1aiEBIAAoAgAhACADIAEgAiAEQQFxBH8gASgCACAAaigCAAUgAAsRAwBBEBAeIgAgAykDCDcDCCAAIAMpAwA3AwAgA0EQaiQAIAALNwEBfyABIAAoAgQiA0EBdWohASAAKAIAIQAgASACIANBAXEEfyABKAIAIABqKAIABSAACxEEAAs5AQF/IAEgACgCBCIEQQF1aiEBIAAoAgAhACABIAIgAyAEQQFxBH8gASgCACAAaigCAAUgAAsRCAALCQAgASAAEQIACwUAQcM7Cw8AIAEgACgCAGogAjYCAAsNACABIAAoAgBqKAIACxgBAX9BEBAeIgBCADcDCCAAQQA2AgAgAAsYAQF/QRAQHiIAQgA3AwAgAEIANwMIIAALDABBMBAeQQBBMBAqCzcBAX8gASAAKAIEIgNBAXVqIQEgACgCACEAIAEgAiADQQFxBH8gASgCACAAaigCAAUgAAsRHgALBQBBvjsLIQAgACABKAIAIAEgASwAC0EASBtBuzsgAigCABAQNgIACyoBAX9BDBAeIgFBADoABCABIAAoAgA2AgggAEEANgIAIAFB2Cc2AgAgAQsFAEG7OwsFAEG4OwshACAAIAEoAgAgASABLAALQQBIG0GkOyACKAIAEBA2AgAL2AEBBH8jAEEgayIDJAAgASgCACIEQfD///8HSQRAAkACQCAEQQtPBEAgBEEPckEBaiIFEB4hBiADIAVBgICAgHhyNgIQIAMgBjYCCCADIAQ2AgwgBCAGaiEFDAELIAMgBDoAEyADQQhqIgYgBGohBSAERQ0BCyAGIAFBBGogBBArGgsgBUEAOgAAIAMgAjYCACADQRhqIANBCGogAyAAEQMAIAMoAhgQHSADKAIYIgAQBiADKAIAEAYgAywAE0EASARAIAMoAggQIwsgA0EgaiQAIAAPCxACAAsqAQF/QQwQHiIBQQA6AAQgASAAKAIANgIIIABBADYCACABQeAmNgIA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AkEIaiAIIAYQHyACIAcgAC8AABAfQQEhAyACKgIIIgogAioCACILXAR/IAogClsNAyALIAtcBSADC0UNAiACLQAMIAItAARHDQILIABBAmohAEEBIQMgBCEGQQEhBCAGRQ0ACyABLwB6IgBBB3FFBEAgBS0AekEHcUUNAgsgCCAAECAiCiAHIAUvAHoQICILWw0BIAogClsNACALIAtcDQELIAFBFGogBUEUakHoABArGiABQfwAaiAFQfwAahCgAQNAIAEtAAAiAEEEcQ0BIAEgAEEEcjoAACABKAIQIgAEQCABIAARAAALIAFBgICA/gc2ApwBIAEoAuQDIgENAAsLIAJBEGokAAvGAwEEfyMAQaAEayICJAAgACgCBCEBIABBADYCBCABBEAgASABKAIAKAIEEQAACyAAKAIIIQEgAEEANgIIIAEEQCABIAEoAgAoAgQRAAALAkAgACgCACIAKALoAyAAKALsA0YEQCAAKALkAw0BIAAgAkEYaiAAKAL0AxBcIgEpAgA3AgAgACABKAIQNgIQIAAgASkCCDcCCCAAQRRqIAFBFGpB6AAQKxogACABKQKMATcCjAEgACABKQKEATcChAEgACABKQJ8NwJ8IAEoApQBIQQgAUEANgKUASAAKAKUASEDIAAgBDYClAEgAwRAIAMQWwsgAEGYAWogAUGYAWpB0AIQKxogACgC6AMiAwRAIAAgAzYC7AMgAxAjCyAAIAEoAugDNgLoAyAAIAEoAuwDNgLsAyAAIAEoAvADNgLwAyABQQA2AvADIAFCADcC6AMgACABKQL8AzcC/AMgACABKQL0AzcC9AMgACABKAKEBDYChAQgASgClAEhACABQQA2ApQBIAAEQCAAEFsLIAJBoARqJAAPCyACQfAcNgIQIABBBUHYJSACQRBqECwQJAALIAJB5hE2AgAgAEEFQdglIAIQLBAkAAsLAEEMEB4gABCiAQsLAEEMEB5BABCiAQsNACAAKAIALQAIQQFxCwoAIAAoAgAoAhQLGQAgAUH/AXEEQBACAAsgACgCACgCEEEBcQsYACAAKAIAIgAgAC0ACEH+AXEgAXI6AAgLJgAgASAAKAIAIgAoAhRHBEAgACABNgIUIAAgACgCDEEBajYCDAsLkgEBAn8jAEEQayICJAAgACgCACEAIAFDAAAAAGAEQCABIAAqAhhcBEAgACABOAIYIAAgACgCDEEBajYCDAsgAkEQaiQADwsgAkGIFDYCACMAQRBrIgMkACADIAI2AgwCQCAARQRAQbgwQdglIAIQSRoMAQsgAEEAQQVB2CUgAiAAKAIEEQ0AGgsgA0EQaiQAECQACz8AIAFB/wFxRQRAIAIgACgCACIAKAIQIgFBAXFHBEAgACABQX5xIAJyNgIQIAAgACgCDEEBajYCDAsPCxACAAsL4CYjAEGACAuBHk9ubHkgbGVhZiBub2RlcyB3aXRoIGN1c3RvbSBtZWFzdXJlIGZ1bmN0aW9ucyBzaG91bGQgbWFudWFsbHkgbWFyayB0aGVtc2VsdmVzIGFzIGRpcnR5AGlzRGlydHkAbWFya0RpcnR5AGRlc3Ryb3kAc2V0RGlzcGxheQBnZXREaXNwbGF5AHNldEZsZXgALSsgICAwWDB4AC0wWCswWCAwWC0weCsweCAweABzZXRGbGV4R3JvdwBnZXRGbGV4R3JvdwBzZXRPdmVyZmxvdwBnZXRPdmVyZmxvdwBoYXNOZXdMYXlvdXQAY2FsY3VsYXRlTGF5b3V0AGdldENvbXB1dGVkTGF5b3V0AHVuc2lnbmVkIHNob3J0AGdldENoaWxkQ291bnQAdW5zaWduZWQgaW50AHNldEp1c3RpZnlDb250ZW50AGdldEp1c3RpZnlDb250ZW50AGF2YWlsYWJsZUhlaWdodCBpcyBpbmRlZmluaXRlIHNvIGhlaWdodFNpemluZ01vZGUgbXVzdCBiZSBTaXppbmdNb2RlOjpNYXhDb250ZW50AGF2YWlsYWJsZVdpZHRoIGlzIGluZGVmaW5pdGUgc28gd2lkdGhTaXppbmdNb2RlIG11c3QgYmUgU2l6aW5nTW9kZTo6TWF4Q29udGVudABzZXRBbGlnbkNvbnRlbnQAZ2V0QWxpZ25Db250ZW50AGdldFBhcmVudABpbXBsZW1lbnQAc2V0TWF4SGVpZ2h0UGVyY2VudABzZXRIZWlnaHRQZXJjZW50AHNldE1pbkhlaWdodFBlcmNlbnQAc2V0RmxleEJhc2lzUGVyY2VudABzZXRHYXBQZXJjZW50AHNldFBvc2l0aW9uUGVyY2VudABzZXRNYXJnaW5QZXJjZW50AHNldE1heFdpZHRoUGVyY2VudABzZXRXaWR0aFBlcmNlbnQAc2V0TWluV2lkdGhQZXJjZW50AHNldFBhZGRpbmdQZXJjZW50AGhhbmRsZS50eXBlKCkgPT0gU3R5bGVWYWx1ZUhhbmRsZTo6VHlwZTo6UG9pbnQgfHwgaGFuZGxlLnR5cGUoKSA9PSBTdHlsZVZhbHVlSGFuZGxlOjpUeXBlOjpQZXJjZW50AGNyZWF0ZURlZmF1bHQAdW5pdAByaWdodABoZWlnaHQAc2V0TWF4SGVpZ2h0AGdldE1heEhlaWdodABzZXRIZWlnaHQAZ2V0SGVpZ2h0AHNldE1pbkhlaWdodABnZXRNaW5IZWlnaHQAZ2V0Q29tcHV0ZWRIZWlnaHQAZ2V0Q29tcHV0ZWRSaWdodABsZWZ0AGdldENvbXB1dGVkTGVmdAByZXNldABfX2Rlc3RydWN0AGZsb2F0AHVpbnQ2NF90AHVzZVdlYkRlZmF1bHRzAHNldFVzZVdlYkRlZmF1bHRzAHNldEFsaWduSXRlbXMAZ2V0QWxpZ25JdGVtcwBzZXRGbGV4QmFzaXMAZ2V0RmxleEJhc2lzAENhbm5vdCBnZXQgbGF5b3V0IHByb3BlcnRpZXMgb2YgbXVsdGktZWRnZSBzaG9ydGhhbmRzAHNldFBvaW50U2NhbGVGYWN0b3IATWVhc3VyZUNhbGxiYWNrV3JhcHBlcgBEaXJ0aWVkQ2FsbGJhY2tXcmFwcGVyAENhbm5vdCByZXNldCBhIG5vZGUgc3RpbGwgYXR0YWNoZWQgdG8gYSBvd25lcgBzZXRCb3JkZXIAZ2V0Qm9yZGVyAGdldENvbXB1dGVkQm9yZGVyAGdldE51bWJlcgBoYW5kbGUudHlwZSgpID09IFN0eWxlVmFsdWVIYW5kbGU6OlR5cGU6Ok51bWJlcgB1bnNpZ25lZCBjaGFyAHRvcABnZXRDb21wdXRlZFRvcABzZXRGbGV4V3JhcABnZXRGbGV4V3JhcABzZXRHYXAAZ2V0R2FwACVwAHNldEhlaWdodEF1dG8Ac2V0RmxleEJhc2lzQXV0bwBzZXRQb3NpdGlvbkF1dG8Ac2V0TWFyZ2luQXV0bwBzZXRXaWR0aEF1dG8AU2NhbGUgZmFjdG9yIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIHplcm8Ac2V0QXNwZWN0UmF0aW8AZ2V0QXNwZWN0UmF0aW8Ac2V0UG9zaXRpb24AZ2V0UG9zaXRpb24Abm90aWZ5T25EZXN0cnVjdGlvbgBzZXRGbGV4RGlyZWN0aW9uAGdldEZsZXhEaXJlY3Rpb24Ac2V0RGlyZWN0aW9uAGdldERpcmVjdGlvbgBzZXRNYXJnaW4AZ2V0TWFyZ2luAGdldENvbXB1dGVkTWFyZ2luAG1hcmtMYXlvdXRTZWVuAG5hbgBib3R0b20AZ2V0Q29tcHV0ZWRCb3R0b20AYm9vbABlbXNjcmlwdGVuOjp2YWwAc2V0RmxleFNocmluawBnZXRGbGV4U2hyaW5rAHNldEFsd2F5c0Zvcm1zQ29udGFpbmluZ0Jsb2NrAE1lYXN1cmVDYWxsYmFjawBEaXJ0aWVkQ2FsbGJhY2sAZ2V0TGVuZ3RoAHdpZHRoAHNldE1heFdpZHRoAGdldE1heFdpZHRoAHNldFdpZHRoAGdldFdpZHRoAHNldE1pbldpZHRoAGdldE1pbldpZHRoAGdldENvbXB1dGVkV2lkdGgAcHVzaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1NtYWxsVmFsdWVCdWZmZXIuaAAvaG9tZS9ydW5uZXIvd29yay95b2dhL3lvZ2EvamF2YXNjcmlwdC8uLi95b2dhL3N0eWxlL1N0eWxlVmFsdWVQb29sLmgAdW5zaWduZWQgbG9uZwBzZXRCb3hTaXppbmcAZ2V0Qm94U2l6aW5nAHN0ZDo6d3N0cmluZwBzdGQ6OnN0cmluZwBzdGQ6OnUxNnN0cmluZwBzdGQ6OnUzMnN0cmluZwBzZXRQYWRkaW5nAGdldFBhZGRpbmcAZ2V0Q29tcHV0ZWRQYWRkaW5nAFRyaWVkIHRvIGNvbnN0cnVjdCBZR05vZGUgd2l0aCBudWxsIGNvbmZpZwBBdHRlbXB0aW5nIHRvIGNvbnN0cnVjdCBOb2RlIHdpdGggbnVsbCBjb25maWcAY3JlYXRlV2l0aENvbmZpZwBpbmYAc2V0QWxpZ25TZWxmAGdldEFsaWduU2VsZgBTaXplAHZhbHVlAFZhbHVlAGNyZWF0ZQBtZWFzdXJlAHNldFBvc2l0aW9uVHlwZQBnZXRQb3NpdGlvblR5cGUAaXNSZWZlcmVuY2VCYXNlbGluZQBzZXRJc1JlZmVyZW5jZUJhc2VsaW5lAGNvcHlTdHlsZQBkb3VibGUATm9kZQBleHRlbmQAaW5zZXJ0Q2hpbGQAZ2V0Q2hpbGQAcmVtb3ZlQ2hpbGQAdm9pZABzZXRFeHBlcmltZW50YWxGZWF0dXJlRW5hYmxlZABpc0V4cGVyaW1lbnRhbEZlYXR1cmVFbmFibGVkAGRpcnRpZWQAQ2Fubm90IHJlc2V0IGEgbm9kZSB3aGljaCBzdGlsbCBoYXMgY2hpbGRyZW4gYXR0YWNoZWQAdW5zZXRNZWFzdXJlRnVuYwB1bnNldERpcnRpZWRGdW5jAHNldEVycmF0YQBnZXRFcnJhdGEATWVhc3VyZSBmdW5jdGlvbiByZXR1cm5lZCBhbiBpbnZhbGlkIGRpbWVuc2lvbiB0byBZb2dhOiBbd2lkdGg9JWYsIGhlaWdodD0lZl0ARXhwZWN0IGN1c3RvbSBiYXNlbGluZSBmdW5jdGlvbiB0byBub3QgcmV0dXJuIE5hTgBOQU4ASU5GAGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHNob3J0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBzaG9ydD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1bnNpZ25lZCBpbnQ+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PGZsb2F0PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50OF90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQ4X3Q+AGVtc2NyaXB0ZW46Om1lbW9yeV92aWV3PHVpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzxpbnQxNl90PgBlbXNjcmlwdGVuOjptZW1vcnlfdmlldzx1aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8aW50MzJfdD4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8Y2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8dW5zaWduZWQgY2hhcj4Ac3RkOjpiYXNpY19zdHJpbmc8dW5zaWduZWQgY2hhcj4AZW1zY3JpcHRlbjo6bWVtb3J5X3ZpZXc8c2lnbmVk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";
132
+ if (!ua(H)) {
133
+ var va = H;
134
+ H = h.locateFile ? h.locateFile(va, q) : q + va;
135
+ }
136
+ function wa() {
137
+ var a = H;
138
+ try {
139
+ if (a == H && w)
140
+ return new Uint8Array(w);
141
+ if (ua(a))
142
+ try {
143
+ var b = xa(a.slice(37)), c = new Uint8Array(b.length);
144
+ for (a = 0;a < b.length; ++a)
145
+ c[a] = b.charCodeAt(a);
146
+ var d = c;
147
+ } catch (f) {
148
+ throw Error("Converting base64 string to bytes failed.");
149
+ }
150
+ else
151
+ d = undefined;
152
+ var e = d;
153
+ if (e)
154
+ return e;
155
+ throw "both async and sync fetching of the wasm failed";
156
+ } catch (f) {
157
+ x(f);
158
+ }
159
+ }
160
+ function ya() {
161
+ return w || typeof fetch != "function" ? Promise.resolve().then(function() {
162
+ return wa();
163
+ }) : fetch(H, { credentials: "same-origin" }).then(function(a) {
164
+ if (!a.ok)
165
+ throw "failed to load wasm binary file at '" + H + "'";
166
+ return a.arrayBuffer();
167
+ }).catch(function() {
168
+ return wa();
169
+ });
170
+ }
171
+ function za(a) {
172
+ for (;0 < a.length; )
173
+ a.shift()(h);
174
+ }
175
+ function Aa(a) {
176
+ if (a === undefined)
177
+ return "_unknown";
178
+ a = a.replace(/[^a-zA-Z0-9_]/g, "$");
179
+ var b = a.charCodeAt(0);
180
+ return 48 <= b && 57 >= b ? "_" + a : a;
181
+ }
182
+ function Ba(a, b) {
183
+ a = Aa(a);
184
+ return function() {
185
+ return b.apply(this, arguments);
186
+ };
187
+ }
188
+ var J = [{}, { value: undefined }, { value: null }, { value: true }, { value: false }], Ca = [];
189
+ function Da(a) {
190
+ var b = Error, c = Ba(a, function(d) {
191
+ this.name = a;
192
+ this.message = d;
193
+ d = Error(d).stack;
194
+ d !== undefined && (this.stack = this.toString() + `
195
+ ` + d.replace(/^Error(:[^\n]*)?\n/, ""));
196
+ });
197
+ c.prototype = Object.create(b.prototype);
198
+ c.prototype.constructor = c;
199
+ c.prototype.toString = function() {
200
+ return this.message === undefined ? this.name : this.name + ": " + this.message;
201
+ };
202
+ return c;
203
+ }
204
+ var K = undefined;
205
+ function L(a) {
206
+ throw new K(a);
207
+ }
208
+ var M = (a) => {
209
+ a || L("Cannot use deleted val. handle = " + a);
210
+ return J[a].value;
211
+ }, Ea = (a) => {
212
+ switch (a) {
213
+ case undefined:
214
+ return 1;
215
+ case null:
216
+ return 2;
217
+ case true:
218
+ return 3;
219
+ case false:
220
+ return 4;
221
+ default:
222
+ var b = Ca.length ? Ca.pop() : J.length;
223
+ J[b] = { ga: 1, value: a };
224
+ return b;
225
+ }
226
+ }, Fa = undefined, Ga = undefined;
227
+ function N(a) {
228
+ for (var b = "";A[a]; )
229
+ b += Ga[A[a++]];
230
+ return b;
231
+ }
232
+ var O = [];
233
+ function Ha() {
234
+ for (;O.length; ) {
235
+ var a = O.pop();
236
+ a.M.$ = false;
237
+ a["delete"]();
238
+ }
239
+ }
240
+ var P = undefined, Q = {};
241
+ function Ia(a, b) {
242
+ for (b === undefined && L("ptr should not be undefined");a.R; )
243
+ b = a.ba(b), a = a.R;
244
+ return b;
245
+ }
246
+ var R = {};
247
+ function Ja(a) {
248
+ a = Ka(a);
249
+ var b = N(a);
250
+ S(a);
251
+ return b;
252
+ }
253
+ function La(a, b) {
254
+ var c = R[a];
255
+ c === undefined && L(b + " has unknown type " + Ja(a));
256
+ return c;
257
+ }
258
+ function Ma() {}
259
+ var Na = false;
260
+ function Oa(a) {
261
+ --a.count.value;
262
+ a.count.value === 0 && (a.T ? a.U.W(a.T) : a.P.N.W(a.O));
263
+ }
264
+ function Pa(a, b, c) {
265
+ if (b === c)
266
+ return a;
267
+ if (c.R === undefined)
268
+ return null;
269
+ a = Pa(a, b, c.R);
270
+ return a === null ? null : c.na(a);
271
+ }
272
+ var Qa = {};
273
+ function Ra(a, b) {
274
+ b = Ia(a, b);
275
+ return Q[b];
276
+ }
277
+ var Sa = undefined;
278
+ function Ta(a) {
279
+ throw new Sa(a);
280
+ }
281
+ function Ua(a, b) {
282
+ b.P && b.O || Ta("makeClassHandle requires ptr and ptrType");
283
+ !!b.U !== !!b.T && Ta("Both smartPtrType and smartPtr must be specified");
284
+ b.count = { value: 1 };
285
+ return T(Object.create(a, { M: { value: b } }));
286
+ }
287
+ function T(a) {
288
+ if (typeof FinalizationRegistry === "undefined")
289
+ return T = (b) => b, a;
290
+ Na = new FinalizationRegistry((b) => {
291
+ Oa(b.M);
292
+ });
293
+ T = (b) => {
294
+ var c = b.M;
295
+ c.T && Na.register(b, { M: c }, b);
296
+ return b;
297
+ };
298
+ Ma = (b) => {
299
+ Na.unregister(b);
300
+ };
301
+ return T(a);
302
+ }
303
+ var Va = {};
304
+ function Wa(a) {
305
+ for (;a.length; ) {
306
+ var b = a.pop();
307
+ a.pop()(b);
308
+ }
309
+ }
310
+ function Xa(a) {
311
+ return this.fromWireType(D[a >> 2]);
312
+ }
313
+ var U = {}, Ya = {};
314
+ function V(a, b, c) {
315
+ function d(k) {
316
+ k = c(k);
317
+ k.length !== a.length && Ta("Mismatched type converter count");
318
+ for (var m = 0;m < a.length; ++m)
319
+ W(a[m], k[m]);
320
+ }
321
+ a.forEach(function(k) {
322
+ Ya[k] = b;
323
+ });
324
+ var e = Array(b.length), f = [], g = 0;
325
+ b.forEach((k, m) => {
326
+ R.hasOwnProperty(k) ? e[m] = R[k] : (f.push(k), U.hasOwnProperty(k) || (U[k] = []), U[k].push(() => {
327
+ e[m] = R[k];
328
+ ++g;
329
+ g === f.length && d(e);
330
+ }));
331
+ });
332
+ f.length === 0 && d(e);
333
+ }
334
+ function Za(a) {
335
+ switch (a) {
336
+ case 1:
337
+ return 0;
338
+ case 2:
339
+ return 1;
340
+ case 4:
341
+ return 2;
342
+ case 8:
343
+ return 3;
344
+ default:
345
+ throw new TypeError("Unknown type size: " + a);
346
+ }
347
+ }
348
+ function W(a, b, c = {}) {
349
+ if (!("argPackAdvance" in b))
350
+ throw new TypeError("registerType registeredInstance requires argPackAdvance");
351
+ var d = b.name;
352
+ a || L('type "' + d + '" must have a positive integer typeid pointer');
353
+ if (R.hasOwnProperty(a)) {
354
+ if (c.ua)
355
+ return;
356
+ L("Cannot register type '" + d + "' twice");
357
+ }
358
+ R[a] = b;
359
+ delete Ya[a];
360
+ U.hasOwnProperty(a) && (b = U[a], delete U[a], b.forEach((e) => e()));
361
+ }
362
+ function $a(a) {
363
+ L(a.M.P.N.name + " instance already deleted");
364
+ }
365
+ function X() {}
366
+ function ab(a, b, c) {
367
+ if (a[b].S === undefined) {
368
+ var d = a[b];
369
+ a[b] = function() {
370
+ a[b].S.hasOwnProperty(arguments.length) || L("Function '" + c + "' called with an invalid number of arguments (" + arguments.length + ") - expects one of (" + a[b].S + ")!");
371
+ return a[b].S[arguments.length].apply(this, arguments);
372
+ };
373
+ a[b].S = [];
374
+ a[b].S[d.Z] = d;
375
+ }
376
+ }
377
+ function bb(a, b) {
378
+ h.hasOwnProperty(a) ? (L("Cannot register public name '" + a + "' twice"), ab(h, a, a), h.hasOwnProperty(undefined) && L("Cannot register multiple overloads of a function with the same number of arguments (undefined)!"), h[a].S[undefined] = b) : h[a] = b;
379
+ }
380
+ function cb(a, b, c, d, e, f, g, k) {
381
+ this.name = a;
382
+ this.constructor = b;
383
+ this.X = c;
384
+ this.W = d;
385
+ this.R = e;
386
+ this.pa = f;
387
+ this.ba = g;
388
+ this.na = k;
389
+ this.ja = [];
390
+ }
391
+ function db(a, b, c) {
392
+ for (;b !== c; )
393
+ b.ba || L("Expected null or instance of " + c.name + ", got an instance of " + b.name), a = b.ba(a), b = b.R;
394
+ return a;
395
+ }
396
+ function eb(a, b) {
397
+ if (b === null)
398
+ return this.ea && L("null is not a valid " + this.name), 0;
399
+ b.M || L('Cannot pass "' + fb(b) + '" as a ' + this.name);
400
+ b.M.O || L("Cannot pass deleted object as a pointer of type " + this.name);
401
+ return db(b.M.O, b.M.P.N, this.N);
402
+ }
403
+ function gb(a, b) {
404
+ if (b === null) {
405
+ this.ea && L("null is not a valid " + this.name);
406
+ if (this.da) {
407
+ var c = this.fa();
408
+ a !== null && a.push(this.W, c);
409
+ return c;
410
+ }
411
+ return 0;
412
+ }
413
+ b.M || L('Cannot pass "' + fb(b) + '" as a ' + this.name);
414
+ b.M.O || L("Cannot pass deleted object as a pointer of type " + this.name);
415
+ !this.ca && b.M.P.ca && L("Cannot convert argument of type " + (b.M.U ? b.M.U.name : b.M.P.name) + " to parameter type " + this.name);
416
+ c = db(b.M.O, b.M.P.N, this.N);
417
+ if (this.da)
418
+ switch (b.M.T === undefined && L("Passing raw pointer to smart pointer is illegal"), this.Ba) {
419
+ case 0:
420
+ b.M.U === this ? c = b.M.T : L("Cannot convert argument of type " + (b.M.U ? b.M.U.name : b.M.P.name) + " to parameter type " + this.name);
421
+ break;
422
+ case 1:
423
+ c = b.M.T;
424
+ break;
425
+ case 2:
426
+ if (b.M.U === this)
427
+ c = b.M.T;
428
+ else {
429
+ var d = b.clone();
430
+ c = this.xa(c, Ea(function() {
431
+ d["delete"]();
432
+ }));
433
+ a !== null && a.push(this.W, c);
434
+ }
435
+ break;
436
+ default:
437
+ L("Unsupporting sharing policy");
438
+ }
439
+ return c;
440
+ }
441
+ function hb(a, b) {
442
+ if (b === null)
443
+ return this.ea && L("null is not a valid " + this.name), 0;
444
+ b.M || L('Cannot pass "' + fb(b) + '" as a ' + this.name);
445
+ b.M.O || L("Cannot pass deleted object as a pointer of type " + this.name);
446
+ b.M.P.ca && L("Cannot convert argument of type " + b.M.P.name + " to parameter type " + this.name);
447
+ return db(b.M.O, b.M.P.N, this.N);
448
+ }
449
+ function Y(a, b, c, d) {
450
+ this.name = a;
451
+ this.N = b;
452
+ this.ea = c;
453
+ this.ca = d;
454
+ this.da = false;
455
+ this.W = this.xa = this.fa = this.ka = this.Ba = this.wa = undefined;
456
+ b.R !== undefined ? this.toWireType = gb : (this.toWireType = d ? eb : hb, this.V = null);
457
+ }
458
+ function ib(a, b) {
459
+ h.hasOwnProperty(a) || Ta("Replacing nonexistant public symbol");
460
+ h[a] = b;
461
+ h[a].Z = undefined;
462
+ }
463
+ function jb(a, b) {
464
+ var c = [];
465
+ return function() {
466
+ c.length = 0;
467
+ Object.assign(c, arguments);
468
+ if (a.includes("j")) {
469
+ var d = h["dynCall_" + a];
470
+ d = c && c.length ? d.apply(null, [b].concat(c)) : d.call(null, b);
471
+ } else
472
+ d = oa.get(b).apply(null, c);
473
+ return d;
474
+ };
475
+ }
476
+ function Z(a, b) {
477
+ a = N(a);
478
+ var c = a.includes("j") ? jb(a, b) : oa.get(b);
479
+ typeof c != "function" && L("unknown function pointer with signature " + a + ": " + b);
480
+ return c;
481
+ }
482
+ var mb = undefined;
483
+ function nb(a, b) {
484
+ function c(f) {
485
+ e[f] || R[f] || (Ya[f] ? Ya[f].forEach(c) : (d.push(f), e[f] = true));
486
+ }
487
+ var d = [], e = {};
488
+ b.forEach(c);
489
+ throw new mb(a + ": " + d.map(Ja).join([", "]));
490
+ }
491
+ function ob(a, b, c, d, e) {
492
+ var f = b.length;
493
+ 2 > f && L("argTypes array size mismatch! Must at least get return value and 'this' types!");
494
+ var g = b[1] !== null && c !== null, k = false;
495
+ for (c = 1;c < b.length; ++c)
496
+ if (b[c] !== null && b[c].V === undefined) {
497
+ k = true;
498
+ break;
499
+ }
500
+ var m = b[0].name !== "void", l = f - 2, n = Array(l), p = [], r = [];
501
+ return function() {
502
+ arguments.length !== l && L("function " + a + " called with " + arguments.length + " arguments, expected " + l + " args!");
503
+ r.length = 0;
504
+ p.length = g ? 2 : 1;
505
+ p[0] = e;
506
+ if (g) {
507
+ var u = b[1].toWireType(r, this);
508
+ p[1] = u;
509
+ }
510
+ for (var t = 0;t < l; ++t)
511
+ n[t] = b[t + 2].toWireType(r, arguments[t]), p.push(n[t]);
512
+ t = d.apply(null, p);
513
+ if (k)
514
+ Wa(r);
515
+ else
516
+ for (var y = g ? 1 : 2;y < b.length; y++) {
517
+ var B = y === 1 ? u : n[y - 2];
518
+ b[y].V !== null && b[y].V(B);
519
+ }
520
+ u = m ? b[0].fromWireType(t) : undefined;
521
+ return u;
522
+ };
523
+ }
524
+ function pb(a, b) {
525
+ for (var c = [], d = 0;d < a; d++)
526
+ c.push(E[b + 4 * d >> 2]);
527
+ return c;
528
+ }
529
+ function qb(a) {
530
+ 4 < a && --J[a].ga === 0 && (J[a] = undefined, Ca.push(a));
531
+ }
532
+ function fb(a) {
533
+ if (a === null)
534
+ return "null";
535
+ var b = typeof a;
536
+ return b === "object" || b === "array" || b === "function" ? a.toString() : "" + a;
537
+ }
538
+ function rb(a, b) {
539
+ switch (b) {
540
+ case 2:
541
+ return function(c) {
542
+ return this.fromWireType(la[c >> 2]);
543
+ };
544
+ case 3:
545
+ return function(c) {
546
+ return this.fromWireType(ma[c >> 3]);
547
+ };
548
+ default:
549
+ throw new TypeError("Unknown float type: " + a);
550
+ }
551
+ }
552
+ function sb(a, b, c) {
553
+ switch (b) {
554
+ case 0:
555
+ return c ? function(d) {
556
+ return ja[d];
557
+ } : function(d) {
558
+ return A[d];
559
+ };
560
+ case 1:
561
+ return c ? function(d) {
562
+ return C[d >> 1];
563
+ } : function(d) {
564
+ return ka[d >> 1];
565
+ };
566
+ case 2:
567
+ return c ? function(d) {
568
+ return D[d >> 2];
569
+ } : function(d) {
570
+ return E[d >> 2];
571
+ };
572
+ default:
573
+ throw new TypeError("Unknown integer type: " + a);
574
+ }
575
+ }
576
+ function tb(a, b) {
577
+ for (var c = "", d = 0;!(d >= b / 2); ++d) {
578
+ var e = C[a + 2 * d >> 1];
579
+ if (e == 0)
580
+ break;
581
+ c += String.fromCharCode(e);
582
+ }
583
+ return c;
584
+ }
585
+ function ub(a, b, c) {
586
+ c === undefined && (c = 2147483647);
587
+ if (2 > c)
588
+ return 0;
589
+ c -= 2;
590
+ var d = b;
591
+ c = c < 2 * a.length ? c / 2 : a.length;
592
+ for (var e = 0;e < c; ++e)
593
+ C[b >> 1] = a.charCodeAt(e), b += 2;
594
+ C[b >> 1] = 0;
595
+ return b - d;
596
+ }
597
+ function vb(a) {
598
+ return 2 * a.length;
599
+ }
600
+ function wb(a, b) {
601
+ for (var c = 0, d = "";!(c >= b / 4); ) {
602
+ var e = D[a + 4 * c >> 2];
603
+ if (e == 0)
604
+ break;
605
+ ++c;
606
+ 65536 <= e ? (e -= 65536, d += String.fromCharCode(55296 | e >> 10, 56320 | e & 1023)) : d += String.fromCharCode(e);
607
+ }
608
+ return d;
609
+ }
610
+ function xb(a, b, c) {
611
+ c === undefined && (c = 2147483647);
612
+ if (4 > c)
613
+ return 0;
614
+ var d = b;
615
+ c = d + c - 4;
616
+ for (var e = 0;e < a.length; ++e) {
617
+ var f = a.charCodeAt(e);
618
+ if (55296 <= f && 57343 >= f) {
619
+ var g = a.charCodeAt(++e);
620
+ f = 65536 + ((f & 1023) << 10) | g & 1023;
621
+ }
622
+ D[b >> 2] = f;
623
+ b += 4;
624
+ if (b + 4 > c)
625
+ break;
626
+ }
627
+ D[b >> 2] = 0;
628
+ return b - d;
629
+ }
630
+ function yb(a) {
631
+ for (var b = 0, c = 0;c < a.length; ++c) {
632
+ var d = a.charCodeAt(c);
633
+ 55296 <= d && 57343 >= d && ++c;
634
+ b += 4;
635
+ }
636
+ return b;
637
+ }
638
+ var zb = {};
639
+ function Ab(a) {
640
+ var b = zb[a];
641
+ return b === undefined ? N(a) : b;
642
+ }
643
+ var Bb = [];
644
+ function Cb(a) {
645
+ var b = Bb.length;
646
+ Bb.push(a);
647
+ return b;
648
+ }
649
+ function Db(a, b) {
650
+ for (var c = Array(a), d = 0;d < a; ++d)
651
+ c[d] = La(E[b + 4 * d >> 2], "parameter " + d);
652
+ return c;
653
+ }
654
+ var Eb = [], Fb = [null, [], []];
655
+ K = h.BindingError = Da("BindingError");
656
+ h.count_emval_handles = function() {
657
+ for (var a = 0, b = 5;b < J.length; ++b)
658
+ J[b] !== undefined && ++a;
659
+ return a;
660
+ };
661
+ h.get_first_emval = function() {
662
+ for (var a = 5;a < J.length; ++a)
663
+ if (J[a] !== undefined)
664
+ return J[a];
665
+ return null;
666
+ };
667
+ Fa = h.PureVirtualError = Da("PureVirtualError");
668
+ for (var Gb = Array(256), Hb = 0;256 > Hb; ++Hb)
669
+ Gb[Hb] = String.fromCharCode(Hb);
670
+ Ga = Gb;
671
+ h.getInheritedInstanceCount = function() {
672
+ return Object.keys(Q).length;
673
+ };
674
+ h.getLiveInheritedInstances = function() {
675
+ var a = [], b;
676
+ for (b in Q)
677
+ Q.hasOwnProperty(b) && a.push(Q[b]);
678
+ return a;
679
+ };
680
+ h.flushPendingDeletes = Ha;
681
+ h.setDelayFunction = function(a) {
682
+ P = a;
683
+ O.length && P && P(Ha);
684
+ };
685
+ Sa = h.InternalError = Da("InternalError");
686
+ X.prototype.isAliasOf = function(a) {
687
+ if (!(this instanceof X && a instanceof X))
688
+ return false;
689
+ var b = this.M.P.N, c = this.M.O, d = a.M.P.N;
690
+ for (a = a.M.O;b.R; )
691
+ c = b.ba(c), b = b.R;
692
+ for (;d.R; )
693
+ a = d.ba(a), d = d.R;
694
+ return b === d && c === a;
695
+ };
696
+ X.prototype.clone = function() {
697
+ this.M.O || $a(this);
698
+ if (this.M.aa)
699
+ return this.M.count.value += 1, this;
700
+ var a = T, b = Object, c = b.create, d = Object.getPrototypeOf(this), e = this.M;
701
+ a = a(c.call(b, d, { M: { value: { count: e.count, $: e.$, aa: e.aa, O: e.O, P: e.P, T: e.T, U: e.U } } }));
702
+ a.M.count.value += 1;
703
+ a.M.$ = false;
704
+ return a;
705
+ };
706
+ X.prototype["delete"] = function() {
707
+ this.M.O || $a(this);
708
+ this.M.$ && !this.M.aa && L("Object already scheduled for deletion");
709
+ Ma(this);
710
+ Oa(this.M);
711
+ this.M.aa || (this.M.T = undefined, this.M.O = undefined);
712
+ };
713
+ X.prototype.isDeleted = function() {
714
+ return !this.M.O;
715
+ };
716
+ X.prototype.deleteLater = function() {
717
+ this.M.O || $a(this);
718
+ this.M.$ && !this.M.aa && L("Object already scheduled for deletion");
719
+ O.push(this);
720
+ O.length === 1 && P && P(Ha);
721
+ this.M.$ = true;
722
+ return this;
723
+ };
724
+ Y.prototype.qa = function(a) {
725
+ this.ka && (a = this.ka(a));
726
+ return a;
727
+ };
728
+ Y.prototype.ha = function(a) {
729
+ this.W && this.W(a);
730
+ };
731
+ Y.prototype.argPackAdvance = 8;
732
+ Y.prototype.readValueFromPointer = Xa;
733
+ Y.prototype.deleteObject = function(a) {
734
+ if (a !== null)
735
+ a["delete"]();
736
+ };
737
+ Y.prototype.fromWireType = function(a) {
738
+ function b() {
739
+ return this.da ? Ua(this.N.X, { P: this.wa, O: c, U: this, T: a }) : Ua(this.N.X, { P: this, O: a });
740
+ }
741
+ var c = this.qa(a);
742
+ if (!c)
743
+ return this.ha(a), null;
744
+ var d = Ra(this.N, c);
745
+ if (d !== undefined) {
746
+ if (d.M.count.value === 0)
747
+ return d.M.O = c, d.M.T = a, d.clone();
748
+ d = d.clone();
749
+ this.ha(a);
750
+ return d;
751
+ }
752
+ d = this.N.pa(c);
753
+ d = Qa[d];
754
+ if (!d)
755
+ return b.call(this);
756
+ d = this.ca ? d.la : d.pointerType;
757
+ var e = Pa(c, this.N, d.N);
758
+ return e === null ? b.call(this) : this.da ? Ua(d.N.X, { P: d, O: e, U: this, T: a }) : Ua(d.N.X, { P: d, O: e });
759
+ };
760
+ mb = h.UnboundTypeError = Da("UnboundTypeError");
761
+ var xa = typeof atob == "function" ? atob : function(a) {
762
+ var b = "", c = 0;
763
+ a = a.replace(/[^A-Za-z0-9\+\/=]/g, "");
764
+ do {
765
+ var d = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
766
+ var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
767
+ var f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
768
+ var g = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(a.charAt(c++));
769
+ d = d << 2 | e >> 4;
770
+ e = (e & 15) << 4 | f >> 2;
771
+ var k = (f & 3) << 6 | g;
772
+ b += String.fromCharCode(d);
773
+ f !== 64 && (b += String.fromCharCode(e));
774
+ g !== 64 && (b += String.fromCharCode(k));
775
+ } while (c < a.length);
776
+ return b;
777
+ }, Jb = {
778
+ l: function(a, b, c, d) {
779
+ x("Assertion failed: " + (a ? z(A, a) : "") + ", at: " + [b ? b ? z(A, b) : "" : "unknown filename", c, d ? d ? z(A, d) : "" : "unknown function"]);
780
+ },
781
+ q: function(a, b, c) {
782
+ a = N(a);
783
+ b = La(b, "wrapper");
784
+ c = M(c);
785
+ var d = [].slice, e = b.N, f = e.X, g = e.R.X, k = e.R.constructor;
786
+ a = Ba(a, function() {
787
+ e.R.ja.forEach(function(l) {
788
+ if (this[l] === g[l])
789
+ throw new Fa("Pure virtual function " + l + " must be implemented in JavaScript");
790
+ }.bind(this));
791
+ Object.defineProperty(this, "__parent", { value: f });
792
+ this.__construct.apply(this, d.call(arguments));
793
+ });
794
+ f.__construct = function() {
795
+ this === f && L("Pass correct 'this' to __construct");
796
+ var l = k.implement.apply(undefined, [this].concat(d.call(arguments)));
797
+ Ma(l);
798
+ var n = l.M;
799
+ l.notifyOnDestruction();
800
+ n.aa = true;
801
+ Object.defineProperties(this, { M: { value: n } });
802
+ T(this);
803
+ l = n.O;
804
+ l = Ia(e, l);
805
+ Q.hasOwnProperty(l) ? L("Tried to register registered instance: " + l) : Q[l] = this;
806
+ };
807
+ f.__destruct = function() {
808
+ this === f && L("Pass correct 'this' to __destruct");
809
+ Ma(this);
810
+ var l = this.M.O;
811
+ l = Ia(e, l);
812
+ Q.hasOwnProperty(l) ? delete Q[l] : L("Tried to unregister unregistered instance: " + l);
813
+ };
814
+ a.prototype = Object.create(f);
815
+ for (var m in c)
816
+ a.prototype[m] = c[m];
817
+ return Ea(a);
818
+ },
819
+ j: function(a) {
820
+ var b = Va[a];
821
+ delete Va[a];
822
+ var { fa: c, W: d, ia: e } = b, f = e.map((g) => g.ta).concat(e.map((g) => g.za));
823
+ V([a], f, (g) => {
824
+ var k = {};
825
+ e.forEach((m, l) => {
826
+ var n = g[l], p = m.ra, r = m.sa, u = g[l + e.length], t = m.ya, y = m.Aa;
827
+ k[m.oa] = { read: (B) => n.fromWireType(p(r, B)), write: (B, ba) => {
828
+ var I = [];
829
+ t(y, B, u.toWireType(I, ba));
830
+ Wa(I);
831
+ } };
832
+ });
833
+ return [{ name: b.name, fromWireType: function(m) {
834
+ var l = {}, n;
835
+ for (n in k)
836
+ l[n] = k[n].read(m);
837
+ d(m);
838
+ return l;
839
+ }, toWireType: function(m, l) {
840
+ for (var n in k)
841
+ if (!(n in l))
842
+ throw new TypeError('Missing field: "' + n + '"');
843
+ var p = c();
844
+ for (n in k)
845
+ k[n].write(p, l[n]);
846
+ m !== null && m.push(d, p);
847
+ return p;
848
+ }, argPackAdvance: 8, readValueFromPointer: Xa, V: d }];
849
+ });
850
+ },
851
+ v: function() {},
852
+ B: function(a, b, c, d, e) {
853
+ var f = Za(c);
854
+ b = N(b);
855
+ W(a, {
856
+ name: b,
857
+ fromWireType: function(g) {
858
+ return !!g;
859
+ },
860
+ toWireType: function(g, k) {
861
+ return k ? d : e;
862
+ },
863
+ argPackAdvance: 8,
864
+ readValueFromPointer: function(g) {
865
+ if (c === 1)
866
+ var k = ja;
867
+ else if (c === 2)
868
+ k = C;
869
+ else if (c === 4)
870
+ k = D;
871
+ else
872
+ throw new TypeError("Unknown boolean type size: " + b);
873
+ return this.fromWireType(k[g >> f]);
874
+ },
875
+ V: null
876
+ });
877
+ },
878
+ f: function(a, b, c, d, e, f, g, k, m, l, n, p, r) {
879
+ n = N(n);
880
+ f = Z(e, f);
881
+ k && (k = Z(g, k));
882
+ l && (l = Z(m, l));
883
+ r = Z(p, r);
884
+ var u = Aa(n);
885
+ bb(u, function() {
886
+ nb("Cannot construct " + n + " due to unbound types", [d]);
887
+ });
888
+ V([a, b, c], d ? [d] : [], function(t) {
889
+ t = t[0];
890
+ if (d) {
891
+ var y = t.N;
892
+ var B = y.X;
893
+ } else
894
+ B = X.prototype;
895
+ t = Ba(u, function() {
896
+ if (Object.getPrototypeOf(this) !== ba)
897
+ throw new K("Use 'new' to construct " + n);
898
+ if (I.Y === undefined)
899
+ throw new K(n + " has no accessible constructor");
900
+ var kb = I.Y[arguments.length];
901
+ if (kb === undefined)
902
+ throw new K("Tried to invoke ctor of " + n + " with invalid number of parameters (" + arguments.length + ") - expected (" + Object.keys(I.Y).toString() + ") parameters instead!");
903
+ return kb.apply(this, arguments);
904
+ });
905
+ var ba = Object.create(B, { constructor: { value: t } });
906
+ t.prototype = ba;
907
+ var I = new cb(n, t, ba, r, y, f, k, l);
908
+ y = new Y(n, I, true, false);
909
+ B = new Y(n + "*", I, false, false);
910
+ var lb = new Y(n + " const*", I, false, true);
911
+ Qa[a] = {
912
+ pointerType: B,
913
+ la: lb
914
+ };
915
+ ib(u, t);
916
+ return [y, B, lb];
917
+ });
918
+ },
919
+ d: function(a, b, c, d, e, f, g) {
920
+ var k = pb(c, d);
921
+ b = N(b);
922
+ f = Z(e, f);
923
+ V([], [a], function(m) {
924
+ function l() {
925
+ nb("Cannot call " + n + " due to unbound types", k);
926
+ }
927
+ m = m[0];
928
+ var n = m.name + "." + b;
929
+ b.startsWith("@@") && (b = Symbol[b.substring(2)]);
930
+ var p = m.N.constructor;
931
+ p[b] === undefined ? (l.Z = c - 1, p[b] = l) : (ab(p, b, n), p[b].S[c - 1] = l);
932
+ V([], k, function(r) {
933
+ r = ob(n, [r[0], null].concat(r.slice(1)), null, f, g);
934
+ p[b].S === undefined ? (r.Z = c - 1, p[b] = r) : p[b].S[c - 1] = r;
935
+ return [];
936
+ });
937
+ return [];
938
+ });
939
+ },
940
+ p: function(a, b, c, d, e, f) {
941
+ 0 < b || x();
942
+ var g = pb(b, c);
943
+ e = Z(d, e);
944
+ V([], [a], function(k) {
945
+ k = k[0];
946
+ var m = "constructor " + k.name;
947
+ k.N.Y === undefined && (k.N.Y = []);
948
+ if (k.N.Y[b - 1] !== undefined)
949
+ throw new K("Cannot register multiple constructors with identical number of parameters (" + (b - 1) + ") for class '" + k.name + "'! Overload resolution is currently only performed using the parameter count, not actual type info!");
950
+ k.N.Y[b - 1] = () => {
951
+ nb("Cannot construct " + k.name + " due to unbound types", g);
952
+ };
953
+ V([], g, function(l) {
954
+ l.splice(1, 0, null);
955
+ k.N.Y[b - 1] = ob(m, l, null, e, f);
956
+ return [];
957
+ });
958
+ return [];
959
+ });
960
+ },
961
+ a: function(a, b, c, d, e, f, g, k) {
962
+ var m = pb(c, d);
963
+ b = N(b);
964
+ f = Z(e, f);
965
+ V([], [a], function(l) {
966
+ function n() {
967
+ nb("Cannot call " + p + " due to unbound types", m);
968
+ }
969
+ l = l[0];
970
+ var p = l.name + "." + b;
971
+ b.startsWith("@@") && (b = Symbol[b.substring(2)]);
972
+ k && l.N.ja.push(b);
973
+ var r = l.N.X, u = r[b];
974
+ u === undefined || u.S === undefined && u.className !== l.name && u.Z === c - 2 ? (n.Z = c - 2, n.className = l.name, r[b] = n) : (ab(r, b, p), r[b].S[c - 2] = n);
975
+ V([], m, function(t) {
976
+ t = ob(p, t, l, f, g);
977
+ r[b].S === undefined ? (t.Z = c - 2, r[b] = t) : r[b].S[c - 2] = t;
978
+ return [];
979
+ });
980
+ return [];
981
+ });
982
+ },
983
+ A: function(a, b) {
984
+ b = N(b);
985
+ W(a, { name: b, fromWireType: function(c) {
986
+ var d = M(c);
987
+ qb(c);
988
+ return d;
989
+ }, toWireType: function(c, d) {
990
+ return Ea(d);
991
+ }, argPackAdvance: 8, readValueFromPointer: Xa, V: null });
992
+ },
993
+ n: function(a, b, c) {
994
+ c = Za(c);
995
+ b = N(b);
996
+ W(a, { name: b, fromWireType: function(d) {
997
+ return d;
998
+ }, toWireType: function(d, e) {
999
+ return e;
1000
+ }, argPackAdvance: 8, readValueFromPointer: rb(b, c), V: null });
1001
+ },
1002
+ e: function(a, b, c, d, e) {
1003
+ b = N(b);
1004
+ e === -1 && (e = 4294967295);
1005
+ e = Za(c);
1006
+ var f = (k) => k;
1007
+ if (d === 0) {
1008
+ var g = 32 - 8 * c;
1009
+ f = (k) => k << g >>> g;
1010
+ }
1011
+ c = b.includes("unsigned") ? function(k, m) {
1012
+ return m >>> 0;
1013
+ } : function(k, m) {
1014
+ return m;
1015
+ };
1016
+ W(a, { name: b, fromWireType: f, toWireType: c, argPackAdvance: 8, readValueFromPointer: sb(b, e, d !== 0), V: null });
1017
+ },
1018
+ b: function(a, b, c) {
1019
+ function d(f) {
1020
+ f >>= 2;
1021
+ var g = E;
1022
+ return new e(ia, g[f + 1], g[f]);
1023
+ }
1024
+ var e = [Int8Array, Uint8Array, Int16Array, Uint16Array, Int32Array, Uint32Array, Float32Array, Float64Array][b];
1025
+ c = N(c);
1026
+ W(a, { name: c, fromWireType: d, argPackAdvance: 8, readValueFromPointer: d }, { ua: true });
1027
+ },
1028
+ o: function(a, b) {
1029
+ b = N(b);
1030
+ var c = b === "std::string";
1031
+ W(a, { name: b, fromWireType: function(d) {
1032
+ var e = E[d >> 2], f = d + 4;
1033
+ if (c)
1034
+ for (var g = f, k = 0;k <= e; ++k) {
1035
+ var m = f + k;
1036
+ if (k == e || A[m] == 0) {
1037
+ g = g ? z(A, g, m - g) : "";
1038
+ if (l === undefined)
1039
+ var l = g;
1040
+ else
1041
+ l += String.fromCharCode(0), l += g;
1042
+ g = m + 1;
1043
+ }
1044
+ }
1045
+ else {
1046
+ l = Array(e);
1047
+ for (k = 0;k < e; ++k)
1048
+ l[k] = String.fromCharCode(A[f + k]);
1049
+ l = l.join("");
1050
+ }
1051
+ S(d);
1052
+ return l;
1053
+ }, toWireType: function(d, e) {
1054
+ e instanceof ArrayBuffer && (e = new Uint8Array(e));
1055
+ var f, g = typeof e == "string";
1056
+ g || e instanceof Uint8Array || e instanceof Uint8ClampedArray || e instanceof Int8Array || L("Cannot pass non-string to std::string");
1057
+ if (c && g) {
1058
+ var k = 0;
1059
+ for (f = 0;f < e.length; ++f) {
1060
+ var m = e.charCodeAt(f);
1061
+ 127 >= m ? k++ : 2047 >= m ? k += 2 : 55296 <= m && 57343 >= m ? (k += 4, ++f) : k += 3;
1062
+ }
1063
+ f = k;
1064
+ } else
1065
+ f = e.length;
1066
+ k = Ib(4 + f + 1);
1067
+ m = k + 4;
1068
+ E[k >> 2] = f;
1069
+ if (c && g) {
1070
+ if (g = m, m = f + 1, f = A, 0 < m) {
1071
+ m = g + m - 1;
1072
+ for (var l = 0;l < e.length; ++l) {
1073
+ var n = e.charCodeAt(l);
1074
+ if (55296 <= n && 57343 >= n) {
1075
+ var p = e.charCodeAt(++l);
1076
+ n = 65536 + ((n & 1023) << 10) | p & 1023;
1077
+ }
1078
+ if (127 >= n) {
1079
+ if (g >= m)
1080
+ break;
1081
+ f[g++] = n;
1082
+ } else {
1083
+ if (2047 >= n) {
1084
+ if (g + 1 >= m)
1085
+ break;
1086
+ f[g++] = 192 | n >> 6;
1087
+ } else {
1088
+ if (65535 >= n) {
1089
+ if (g + 2 >= m)
1090
+ break;
1091
+ f[g++] = 224 | n >> 12;
1092
+ } else {
1093
+ if (g + 3 >= m)
1094
+ break;
1095
+ f[g++] = 240 | n >> 18;
1096
+ f[g++] = 128 | n >> 12 & 63;
1097
+ }
1098
+ f[g++] = 128 | n >> 6 & 63;
1099
+ }
1100
+ f[g++] = 128 | n & 63;
1101
+ }
1102
+ }
1103
+ f[g] = 0;
1104
+ }
1105
+ } else if (g)
1106
+ for (g = 0;g < f; ++g)
1107
+ l = e.charCodeAt(g), 255 < l && (S(m), L("String has UTF-16 code units that do not fit in 8 bits")), A[m + g] = l;
1108
+ else
1109
+ for (g = 0;g < f; ++g)
1110
+ A[m + g] = e[g];
1111
+ d !== null && d.push(S, k);
1112
+ return k;
1113
+ }, argPackAdvance: 8, readValueFromPointer: Xa, V: function(d) {
1114
+ S(d);
1115
+ } });
1116
+ },
1117
+ i: function(a, b, c) {
1118
+ c = N(c);
1119
+ if (b === 2) {
1120
+ var d = tb;
1121
+ var e = ub;
1122
+ var f = vb;
1123
+ var g = () => ka;
1124
+ var k = 1;
1125
+ } else
1126
+ b === 4 && (d = wb, e = xb, f = yb, g = () => E, k = 2);
1127
+ W(a, { name: c, fromWireType: function(m) {
1128
+ for (var l = E[m >> 2], n = g(), p, r = m + 4, u = 0;u <= l; ++u) {
1129
+ var t = m + 4 + u * b;
1130
+ if (u == l || n[t >> k] == 0)
1131
+ r = d(r, t - r), p === undefined ? p = r : (p += String.fromCharCode(0), p += r), r = t + b;
1132
+ }
1133
+ S(m);
1134
+ return p;
1135
+ }, toWireType: function(m, l) {
1136
+ typeof l != "string" && L("Cannot pass non-string to C++ string type " + c);
1137
+ var n = f(l), p = Ib(4 + n + b);
1138
+ E[p >> 2] = n >> k;
1139
+ e(l, p + 4, n + b);
1140
+ m !== null && m.push(S, p);
1141
+ return p;
1142
+ }, argPackAdvance: 8, readValueFromPointer: Xa, V: function(m) {
1143
+ S(m);
1144
+ } });
1145
+ },
1146
+ k: function(a, b, c, d, e, f) {
1147
+ Va[a] = { name: N(b), fa: Z(c, d), W: Z(e, f), ia: [] };
1148
+ },
1149
+ h: function(a, b, c, d, e, f, g, k, m, l) {
1150
+ Va[a].ia.push({ oa: N(b), ta: c, ra: Z(d, e), sa: f, za: g, ya: Z(k, m), Aa: l });
1151
+ },
1152
+ C: function(a, b) {
1153
+ b = N(b);
1154
+ W(a, {
1155
+ va: true,
1156
+ name: b,
1157
+ argPackAdvance: 0,
1158
+ fromWireType: function() {},
1159
+ toWireType: function() {}
1160
+ });
1161
+ },
1162
+ s: function(a, b, c, d, e) {
1163
+ a = Bb[a];
1164
+ b = M(b);
1165
+ c = Ab(c);
1166
+ var f = [];
1167
+ E[d >> 2] = Ea(f);
1168
+ return a(b, c, f, e);
1169
+ },
1170
+ t: function(a, b, c, d) {
1171
+ a = Bb[a];
1172
+ b = M(b);
1173
+ c = Ab(c);
1174
+ a(b, c, null, d);
1175
+ },
1176
+ g: qb,
1177
+ m: function(a, b) {
1178
+ var c = Db(a, b), d = c[0];
1179
+ b = d.name + "_$" + c.slice(1).map(function(g) {
1180
+ return g.name;
1181
+ }).join("_") + "$";
1182
+ var e = Eb[b];
1183
+ if (e !== undefined)
1184
+ return e;
1185
+ var f = Array(a - 1);
1186
+ e = Cb((g, k, m, l) => {
1187
+ for (var n = 0, p = 0;p < a - 1; ++p)
1188
+ f[p] = c[p + 1].readValueFromPointer(l + n), n += c[p + 1].argPackAdvance;
1189
+ g = g[k].apply(g, f);
1190
+ for (p = 0;p < a - 1; ++p)
1191
+ c[p + 1].ma && c[p + 1].ma(f[p]);
1192
+ if (!d.va)
1193
+ return d.toWireType(m, g);
1194
+ });
1195
+ return Eb[b] = e;
1196
+ },
1197
+ D: function(a) {
1198
+ 4 < a && (J[a].ga += 1);
1199
+ },
1200
+ r: function(a) {
1201
+ var b = M(a);
1202
+ Wa(b);
1203
+ qb(a);
1204
+ },
1205
+ c: function() {
1206
+ x("");
1207
+ },
1208
+ x: function(a, b, c) {
1209
+ A.copyWithin(a, b, b + c);
1210
+ },
1211
+ w: function(a) {
1212
+ var b = A.length;
1213
+ a >>>= 0;
1214
+ if (2147483648 < a)
1215
+ return false;
1216
+ for (var c = 1;4 >= c; c *= 2) {
1217
+ var d = b * (1 + 0.2 / c);
1218
+ d = Math.min(d, a + 100663296);
1219
+ var e = Math;
1220
+ d = Math.max(a, d);
1221
+ e = e.min.call(e, 2147483648, d + (65536 - d % 65536) % 65536);
1222
+ a: {
1223
+ try {
1224
+ fa.grow(e - ia.byteLength + 65535 >>> 16);
1225
+ na();
1226
+ var f = 1;
1227
+ break a;
1228
+ } catch (g) {}
1229
+ f = undefined;
1230
+ }
1231
+ if (f)
1232
+ return true;
1233
+ }
1234
+ return false;
1235
+ },
1236
+ z: function() {
1237
+ return 52;
1238
+ },
1239
+ u: function() {
1240
+ return 70;
1241
+ },
1242
+ y: function(a, b, c, d) {
1243
+ for (var e = 0, f = 0;f < c; f++) {
1244
+ var g = E[b >> 2], k = E[b + 4 >> 2];
1245
+ b += 8;
1246
+ for (var m = 0;m < k; m++) {
1247
+ var l = A[g + m], n = Fb[a];
1248
+ l === 0 || l === 10 ? ((a === 1 ? ea : v)(z(n, 0)), n.length = 0) : n.push(l);
1249
+ }
1250
+ e += k;
1251
+ }
1252
+ E[d >> 2] = e;
1253
+ return 0;
1254
+ }
1255
+ };
1256
+ (function() {
1257
+ function a(e) {
1258
+ h.asm = e.exports;
1259
+ fa = h.asm.E;
1260
+ na();
1261
+ oa = h.asm.J;
1262
+ qa.unshift(h.asm.F);
1263
+ F--;
1264
+ h.monitorRunDependencies && h.monitorRunDependencies(F);
1265
+ F == 0 && (ta !== null && (clearInterval(ta), ta = null), G && (e = G, G = null, e()));
1266
+ }
1267
+ function b(e) {
1268
+ a(e.instance);
1269
+ }
1270
+ function c(e) {
1271
+ return ya().then(function(f) {
1272
+ return WebAssembly.instantiate(f, d);
1273
+ }).then(function(f) {
1274
+ return f;
1275
+ }).then(e, function(f) {
1276
+ v("failed to asynchronously prepare wasm: " + f);
1277
+ x(f);
1278
+ });
1279
+ }
1280
+ var d = { a: Jb };
1281
+ F++;
1282
+ h.monitorRunDependencies && h.monitorRunDependencies(F);
1283
+ if (h.instantiateWasm)
1284
+ try {
1285
+ return h.instantiateWasm(d, a);
1286
+ } catch (e) {
1287
+ v("Module.instantiateWasm callback failed with error: " + e), ca(e);
1288
+ }
1289
+ (function() {
1290
+ return w || typeof WebAssembly.instantiateStreaming != "function" || ua(H) || typeof fetch != "function" ? c(b) : fetch(H, { credentials: "same-origin" }).then(function(e) {
1291
+ return WebAssembly.instantiateStreaming(e, d).then(b, function(f) {
1292
+ v("wasm streaming compile failed: " + f);
1293
+ v("falling back to ArrayBuffer instantiation");
1294
+ return c(b);
1295
+ });
1296
+ });
1297
+ })().catch(ca);
1298
+ return {};
1299
+ })();
1300
+ h.___wasm_call_ctors = function() {
1301
+ return (h.___wasm_call_ctors = h.asm.F).apply(null, arguments);
1302
+ };
1303
+ var Ka = h.___getTypeName = function() {
1304
+ return (Ka = h.___getTypeName = h.asm.G).apply(null, arguments);
1305
+ };
1306
+ h.__embind_initialize_bindings = function() {
1307
+ return (h.__embind_initialize_bindings = h.asm.H).apply(null, arguments);
1308
+ };
1309
+ var Ib = h._malloc = function() {
1310
+ return (Ib = h._malloc = h.asm.I).apply(null, arguments);
1311
+ }, S = h._free = function() {
1312
+ return (S = h._free = h.asm.K).apply(null, arguments);
1313
+ };
1314
+ h.dynCall_jiji = function() {
1315
+ return (h.dynCall_jiji = h.asm.L).apply(null, arguments);
1316
+ };
1317
+ var Kb;
1318
+ G = function Lb() {
1319
+ Kb || Mb();
1320
+ Kb || (G = Lb);
1321
+ };
1322
+ function Mb() {
1323
+ function a() {
1324
+ if (!Kb && (Kb = true, h.calledRun = true, !ha)) {
1325
+ za(qa);
1326
+ aa(h);
1327
+ if (h.onRuntimeInitialized)
1328
+ h.onRuntimeInitialized();
1329
+ if (h.postRun)
1330
+ for (typeof h.postRun == "function" && (h.postRun = [h.postRun]);h.postRun.length; ) {
1331
+ var b = h.postRun.shift();
1332
+ ra.unshift(b);
1333
+ }
1334
+ za(ra);
1335
+ }
1336
+ }
1337
+ if (!(0 < F)) {
1338
+ if (h.preRun)
1339
+ for (typeof h.preRun == "function" && (h.preRun = [h.preRun]);h.preRun.length; )
1340
+ sa();
1341
+ za(pa);
1342
+ 0 < F || (h.setStatus ? (h.setStatus("Running..."), setTimeout(function() {
1343
+ setTimeout(function() {
1344
+ h.setStatus("");
1345
+ }, 1);
1346
+ a();
1347
+ }, 1)) : a());
1348
+ }
1349
+ }
1350
+ if (h.preInit)
1351
+ for (typeof h.preInit == "function" && (h.preInit = [h.preInit]);0 < h.preInit.length; )
1352
+ h.preInit.pop()();
1353
+ Mb();
1354
+ return loadYoga2.ready;
1355
+ };
1356
+ })();
1357
+ var yoga_wasm_base64_esm_default = loadYoga;
1358
+
1359
+ // ../../node_modules/yoga-layout/dist/src/generated/YGEnums.js
1360
+ var Align = /* @__PURE__ */ function(Align2) {
1361
+ Align2[Align2["Auto"] = 0] = "Auto";
1362
+ Align2[Align2["FlexStart"] = 1] = "FlexStart";
1363
+ Align2[Align2["Center"] = 2] = "Center";
1364
+ Align2[Align2["FlexEnd"] = 3] = "FlexEnd";
1365
+ Align2[Align2["Stretch"] = 4] = "Stretch";
1366
+ Align2[Align2["Baseline"] = 5] = "Baseline";
1367
+ Align2[Align2["SpaceBetween"] = 6] = "SpaceBetween";
1368
+ Align2[Align2["SpaceAround"] = 7] = "SpaceAround";
1369
+ Align2[Align2["SpaceEvenly"] = 8] = "SpaceEvenly";
1370
+ return Align2;
1371
+ }({});
1372
+ var BoxSizing = /* @__PURE__ */ function(BoxSizing2) {
1373
+ BoxSizing2[BoxSizing2["BorderBox"] = 0] = "BorderBox";
1374
+ BoxSizing2[BoxSizing2["ContentBox"] = 1] = "ContentBox";
1375
+ return BoxSizing2;
1376
+ }({});
1377
+ var Dimension = /* @__PURE__ */ function(Dimension2) {
1378
+ Dimension2[Dimension2["Width"] = 0] = "Width";
1379
+ Dimension2[Dimension2["Height"] = 1] = "Height";
1380
+ return Dimension2;
1381
+ }({});
1382
+ var Direction = /* @__PURE__ */ function(Direction2) {
1383
+ Direction2[Direction2["Inherit"] = 0] = "Inherit";
1384
+ Direction2[Direction2["LTR"] = 1] = "LTR";
1385
+ Direction2[Direction2["RTL"] = 2] = "RTL";
1386
+ return Direction2;
1387
+ }({});
1388
+ var Display = /* @__PURE__ */ function(Display2) {
1389
+ Display2[Display2["Flex"] = 0] = "Flex";
1390
+ Display2[Display2["None"] = 1] = "None";
1391
+ Display2[Display2["Contents"] = 2] = "Contents";
1392
+ return Display2;
1393
+ }({});
1394
+ var Edge = /* @__PURE__ */ function(Edge2) {
1395
+ Edge2[Edge2["Left"] = 0] = "Left";
1396
+ Edge2[Edge2["Top"] = 1] = "Top";
1397
+ Edge2[Edge2["Right"] = 2] = "Right";
1398
+ Edge2[Edge2["Bottom"] = 3] = "Bottom";
1399
+ Edge2[Edge2["Start"] = 4] = "Start";
1400
+ Edge2[Edge2["End"] = 5] = "End";
1401
+ Edge2[Edge2["Horizontal"] = 6] = "Horizontal";
1402
+ Edge2[Edge2["Vertical"] = 7] = "Vertical";
1403
+ Edge2[Edge2["All"] = 8] = "All";
1404
+ return Edge2;
1405
+ }({});
1406
+ var Errata = /* @__PURE__ */ function(Errata2) {
1407
+ Errata2[Errata2["None"] = 0] = "None";
1408
+ Errata2[Errata2["StretchFlexBasis"] = 1] = "StretchFlexBasis";
1409
+ Errata2[Errata2["AbsolutePositionWithoutInsetsExcludesPadding"] = 2] = "AbsolutePositionWithoutInsetsExcludesPadding";
1410
+ Errata2[Errata2["AbsolutePercentAgainstInnerSize"] = 4] = "AbsolutePercentAgainstInnerSize";
1411
+ Errata2[Errata2["All"] = 2147483647] = "All";
1412
+ Errata2[Errata2["Classic"] = 2147483646] = "Classic";
1413
+ return Errata2;
1414
+ }({});
1415
+ var ExperimentalFeature = /* @__PURE__ */ function(ExperimentalFeature2) {
1416
+ ExperimentalFeature2[ExperimentalFeature2["WebFlexBasis"] = 0] = "WebFlexBasis";
1417
+ return ExperimentalFeature2;
1418
+ }({});
1419
+ var FlexDirection = /* @__PURE__ */ function(FlexDirection2) {
1420
+ FlexDirection2[FlexDirection2["Column"] = 0] = "Column";
1421
+ FlexDirection2[FlexDirection2["ColumnReverse"] = 1] = "ColumnReverse";
1422
+ FlexDirection2[FlexDirection2["Row"] = 2] = "Row";
1423
+ FlexDirection2[FlexDirection2["RowReverse"] = 3] = "RowReverse";
1424
+ return FlexDirection2;
1425
+ }({});
1426
+ var Gutter = /* @__PURE__ */ function(Gutter2) {
1427
+ Gutter2[Gutter2["Column"] = 0] = "Column";
1428
+ Gutter2[Gutter2["Row"] = 1] = "Row";
1429
+ Gutter2[Gutter2["All"] = 2] = "All";
1430
+ return Gutter2;
1431
+ }({});
1432
+ var Justify = /* @__PURE__ */ function(Justify2) {
1433
+ Justify2[Justify2["FlexStart"] = 0] = "FlexStart";
1434
+ Justify2[Justify2["Center"] = 1] = "Center";
1435
+ Justify2[Justify2["FlexEnd"] = 2] = "FlexEnd";
1436
+ Justify2[Justify2["SpaceBetween"] = 3] = "SpaceBetween";
1437
+ Justify2[Justify2["SpaceAround"] = 4] = "SpaceAround";
1438
+ Justify2[Justify2["SpaceEvenly"] = 5] = "SpaceEvenly";
1439
+ return Justify2;
1440
+ }({});
1441
+ var LogLevel = /* @__PURE__ */ function(LogLevel2) {
1442
+ LogLevel2[LogLevel2["Error"] = 0] = "Error";
1443
+ LogLevel2[LogLevel2["Warn"] = 1] = "Warn";
1444
+ LogLevel2[LogLevel2["Info"] = 2] = "Info";
1445
+ LogLevel2[LogLevel2["Debug"] = 3] = "Debug";
1446
+ LogLevel2[LogLevel2["Verbose"] = 4] = "Verbose";
1447
+ LogLevel2[LogLevel2["Fatal"] = 5] = "Fatal";
1448
+ return LogLevel2;
1449
+ }({});
1450
+ var MeasureMode = /* @__PURE__ */ function(MeasureMode2) {
1451
+ MeasureMode2[MeasureMode2["Undefined"] = 0] = "Undefined";
1452
+ MeasureMode2[MeasureMode2["Exactly"] = 1] = "Exactly";
1453
+ MeasureMode2[MeasureMode2["AtMost"] = 2] = "AtMost";
1454
+ return MeasureMode2;
1455
+ }({});
1456
+ var NodeType = /* @__PURE__ */ function(NodeType2) {
1457
+ NodeType2[NodeType2["Default"] = 0] = "Default";
1458
+ NodeType2[NodeType2["Text"] = 1] = "Text";
1459
+ return NodeType2;
1460
+ }({});
1461
+ var Overflow = /* @__PURE__ */ function(Overflow2) {
1462
+ Overflow2[Overflow2["Visible"] = 0] = "Visible";
1463
+ Overflow2[Overflow2["Hidden"] = 1] = "Hidden";
1464
+ Overflow2[Overflow2["Scroll"] = 2] = "Scroll";
1465
+ return Overflow2;
1466
+ }({});
1467
+ var PositionType = /* @__PURE__ */ function(PositionType2) {
1468
+ PositionType2[PositionType2["Static"] = 0] = "Static";
1469
+ PositionType2[PositionType2["Relative"] = 1] = "Relative";
1470
+ PositionType2[PositionType2["Absolute"] = 2] = "Absolute";
1471
+ return PositionType2;
1472
+ }({});
1473
+ var Unit = /* @__PURE__ */ function(Unit2) {
1474
+ Unit2[Unit2["Undefined"] = 0] = "Undefined";
1475
+ Unit2[Unit2["Point"] = 1] = "Point";
1476
+ Unit2[Unit2["Percent"] = 2] = "Percent";
1477
+ Unit2[Unit2["Auto"] = 3] = "Auto";
1478
+ return Unit2;
1479
+ }({});
1480
+ var Wrap = /* @__PURE__ */ function(Wrap2) {
1481
+ Wrap2[Wrap2["NoWrap"] = 0] = "NoWrap";
1482
+ Wrap2[Wrap2["Wrap"] = 1] = "Wrap";
1483
+ Wrap2[Wrap2["WrapReverse"] = 2] = "WrapReverse";
1484
+ return Wrap2;
1485
+ }({});
1486
+ var constants = {
1487
+ ALIGN_AUTO: Align.Auto,
1488
+ ALIGN_FLEX_START: Align.FlexStart,
1489
+ ALIGN_CENTER: Align.Center,
1490
+ ALIGN_FLEX_END: Align.FlexEnd,
1491
+ ALIGN_STRETCH: Align.Stretch,
1492
+ ALIGN_BASELINE: Align.Baseline,
1493
+ ALIGN_SPACE_BETWEEN: Align.SpaceBetween,
1494
+ ALIGN_SPACE_AROUND: Align.SpaceAround,
1495
+ ALIGN_SPACE_EVENLY: Align.SpaceEvenly,
1496
+ BOX_SIZING_BORDER_BOX: BoxSizing.BorderBox,
1497
+ BOX_SIZING_CONTENT_BOX: BoxSizing.ContentBox,
1498
+ DIMENSION_WIDTH: Dimension.Width,
1499
+ DIMENSION_HEIGHT: Dimension.Height,
1500
+ DIRECTION_INHERIT: Direction.Inherit,
1501
+ DIRECTION_LTR: Direction.LTR,
1502
+ DIRECTION_RTL: Direction.RTL,
1503
+ DISPLAY_FLEX: Display.Flex,
1504
+ DISPLAY_NONE: Display.None,
1505
+ DISPLAY_CONTENTS: Display.Contents,
1506
+ EDGE_LEFT: Edge.Left,
1507
+ EDGE_TOP: Edge.Top,
1508
+ EDGE_RIGHT: Edge.Right,
1509
+ EDGE_BOTTOM: Edge.Bottom,
1510
+ EDGE_START: Edge.Start,
1511
+ EDGE_END: Edge.End,
1512
+ EDGE_HORIZONTAL: Edge.Horizontal,
1513
+ EDGE_VERTICAL: Edge.Vertical,
1514
+ EDGE_ALL: Edge.All,
1515
+ ERRATA_NONE: Errata.None,
1516
+ ERRATA_STRETCH_FLEX_BASIS: Errata.StretchFlexBasis,
1517
+ ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING: Errata.AbsolutePositionWithoutInsetsExcludesPadding,
1518
+ ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE: Errata.AbsolutePercentAgainstInnerSize,
1519
+ ERRATA_ALL: Errata.All,
1520
+ ERRATA_CLASSIC: Errata.Classic,
1521
+ EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS: ExperimentalFeature.WebFlexBasis,
1522
+ FLEX_DIRECTION_COLUMN: FlexDirection.Column,
1523
+ FLEX_DIRECTION_COLUMN_REVERSE: FlexDirection.ColumnReverse,
1524
+ FLEX_DIRECTION_ROW: FlexDirection.Row,
1525
+ FLEX_DIRECTION_ROW_REVERSE: FlexDirection.RowReverse,
1526
+ GUTTER_COLUMN: Gutter.Column,
1527
+ GUTTER_ROW: Gutter.Row,
1528
+ GUTTER_ALL: Gutter.All,
1529
+ JUSTIFY_FLEX_START: Justify.FlexStart,
1530
+ JUSTIFY_CENTER: Justify.Center,
1531
+ JUSTIFY_FLEX_END: Justify.FlexEnd,
1532
+ JUSTIFY_SPACE_BETWEEN: Justify.SpaceBetween,
1533
+ JUSTIFY_SPACE_AROUND: Justify.SpaceAround,
1534
+ JUSTIFY_SPACE_EVENLY: Justify.SpaceEvenly,
1535
+ LOG_LEVEL_ERROR: LogLevel.Error,
1536
+ LOG_LEVEL_WARN: LogLevel.Warn,
1537
+ LOG_LEVEL_INFO: LogLevel.Info,
1538
+ LOG_LEVEL_DEBUG: LogLevel.Debug,
1539
+ LOG_LEVEL_VERBOSE: LogLevel.Verbose,
1540
+ LOG_LEVEL_FATAL: LogLevel.Fatal,
1541
+ MEASURE_MODE_UNDEFINED: MeasureMode.Undefined,
1542
+ MEASURE_MODE_EXACTLY: MeasureMode.Exactly,
1543
+ MEASURE_MODE_AT_MOST: MeasureMode.AtMost,
1544
+ NODE_TYPE_DEFAULT: NodeType.Default,
1545
+ NODE_TYPE_TEXT: NodeType.Text,
1546
+ OVERFLOW_VISIBLE: Overflow.Visible,
1547
+ OVERFLOW_HIDDEN: Overflow.Hidden,
1548
+ OVERFLOW_SCROLL: Overflow.Scroll,
1549
+ POSITION_TYPE_STATIC: PositionType.Static,
1550
+ POSITION_TYPE_RELATIVE: PositionType.Relative,
1551
+ POSITION_TYPE_ABSOLUTE: PositionType.Absolute,
1552
+ UNIT_UNDEFINED: Unit.Undefined,
1553
+ UNIT_POINT: Unit.Point,
1554
+ UNIT_PERCENT: Unit.Percent,
1555
+ UNIT_AUTO: Unit.Auto,
1556
+ WRAP_NO_WRAP: Wrap.NoWrap,
1557
+ WRAP_WRAP: Wrap.Wrap,
1558
+ WRAP_WRAP_REVERSE: Wrap.WrapReverse
1559
+ };
1560
+ var YGEnums_default = constants;
1561
+
1562
+ // ../../node_modules/yoga-layout/dist/src/wrapAssembly.js
1563
+ function wrapAssembly(lib) {
1564
+ function patch(prototype, name, fn) {
1565
+ const original = prototype[name];
1566
+ prototype[name] = function() {
1567
+ for (var _len = arguments.length, args = new Array(_len), _key = 0;_key < _len; _key++) {
1568
+ args[_key] = arguments[_key];
1569
+ }
1570
+ return fn.call(this, original, ...args);
1571
+ };
1572
+ }
1573
+ for (const fnName of ["setPosition", "setMargin", "setFlexBasis", "setWidth", "setHeight", "setMinWidth", "setMinHeight", "setMaxWidth", "setMaxHeight", "setPadding", "setGap"]) {
1574
+ const methods = {
1575
+ [Unit.Point]: lib.Node.prototype[fnName],
1576
+ [Unit.Percent]: lib.Node.prototype[`${fnName}Percent`],
1577
+ [Unit.Auto]: lib.Node.prototype[`${fnName}Auto`]
1578
+ };
1579
+ patch(lib.Node.prototype, fnName, function(original) {
1580
+ for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1;_key2 < _len2; _key2++) {
1581
+ args[_key2 - 1] = arguments[_key2];
1582
+ }
1583
+ const value = args.pop();
1584
+ let unit, asNumber;
1585
+ if (value === "auto") {
1586
+ unit = Unit.Auto;
1587
+ asNumber = undefined;
1588
+ } else if (typeof value === "object") {
1589
+ unit = value.unit;
1590
+ asNumber = value.valueOf();
1591
+ } else {
1592
+ unit = typeof value === "string" && value.endsWith("%") ? Unit.Percent : Unit.Point;
1593
+ asNumber = parseFloat(value);
1594
+ if (value !== undefined && !Number.isNaN(value) && Number.isNaN(asNumber)) {
1595
+ throw new Error(`Invalid value ${value} for ${fnName}`);
1596
+ }
1597
+ }
1598
+ if (!methods[unit])
1599
+ throw new Error(`Failed to execute "${fnName}": Unsupported unit '${value}'`);
1600
+ if (asNumber !== undefined) {
1601
+ return methods[unit].call(this, ...args, asNumber);
1602
+ } else {
1603
+ return methods[unit].call(this, ...args);
1604
+ }
1605
+ });
1606
+ }
1607
+ function wrapMeasureFunction(measureFunction) {
1608
+ return lib.MeasureCallback.implement({
1609
+ measure: function() {
1610
+ const {
1611
+ width,
1612
+ height
1613
+ } = measureFunction(...arguments);
1614
+ return {
1615
+ width: width ?? NaN,
1616
+ height: height ?? NaN
1617
+ };
1618
+ }
1619
+ });
1620
+ }
1621
+ patch(lib.Node.prototype, "setMeasureFunc", function(original, measureFunc) {
1622
+ if (measureFunc) {
1623
+ return original.call(this, wrapMeasureFunction(measureFunc));
1624
+ } else {
1625
+ return this.unsetMeasureFunc();
1626
+ }
1627
+ });
1628
+ function wrapDirtiedFunc(dirtiedFunction) {
1629
+ return lib.DirtiedCallback.implement({
1630
+ dirtied: dirtiedFunction
1631
+ });
1632
+ }
1633
+ patch(lib.Node.prototype, "setDirtiedFunc", function(original, dirtiedFunc) {
1634
+ original.call(this, wrapDirtiedFunc(dirtiedFunc));
1635
+ });
1636
+ patch(lib.Config.prototype, "free", function() {
1637
+ lib.Config.destroy(this);
1638
+ });
1639
+ patch(lib.Node, "create", (_, config) => {
1640
+ return config ? lib.Node.createWithConfig(config) : lib.Node.createDefault();
1641
+ });
1642
+ patch(lib.Node.prototype, "free", function() {
1643
+ lib.Node.destroy(this);
1644
+ });
1645
+ patch(lib.Node.prototype, "freeRecursive", function() {
1646
+ for (let t = 0, T = this.getChildCount();t < T; ++t) {
1647
+ this.getChild(0).freeRecursive();
1648
+ }
1649
+ this.free();
1650
+ });
1651
+ patch(lib.Node.prototype, "calculateLayout", function(original) {
1652
+ let width = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : NaN;
1653
+ let height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : NaN;
1654
+ let direction = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Direction.LTR;
1655
+ return original.call(this, width, height, direction);
1656
+ });
1657
+ return {
1658
+ Config: lib.Config,
1659
+ Node: lib.Node,
1660
+ ...YGEnums_default
1661
+ };
1662
+ }
1663
+
1664
+ // ../../node_modules/yoga-layout/dist/src/index.js
1665
+ var Yoga = wrapAssembly(await yoga_wasm_base64_esm_default());
1666
+ var src_default = Yoga;
1667
+
2
1668
  // src/lib/border.ts
3
1669
  var BorderChars = {
4
1670
  single: {
@@ -576,9 +2242,11 @@ var parseKeypress = (s = "", options = {}) => {
576
2242
  const modifier = parseInt(modifyOtherKeysMatch[1], 10) - 1;
577
2243
  const charCode = parseInt(modifyOtherKeysMatch[2], 10);
578
2244
  key.ctrl = !!(modifier & 4);
579
- key.meta = !!(modifier & 10);
2245
+ key.meta = !!(modifier & 2);
580
2246
  key.shift = !!(modifier & 1);
581
2247
  key.option = !!(modifier & 2);
2248
+ key.super = !!(modifier & 8);
2249
+ key.hyper = !!(modifier & 16);
582
2250
  if (charCode === 13) {
583
2251
  key.name = "return";
584
2252
  } else if (charCode === 27) {
@@ -655,9 +2323,11 @@ var parseKeypress = (s = "", options = {}) => {
655
2323
  const code = [parts[1], parts[2], parts[4], parts[6]].filter(Boolean).join("");
656
2324
  const modifier = parseInt(parts[3] || parts[5] || "1", 10) - 1;
657
2325
  key.ctrl = !!(modifier & 4);
658
- key.meta = !!(modifier & 10);
2326
+ key.meta = !!(modifier & 2);
659
2327
  key.shift = !!(modifier & 1);
660
2328
  key.option = !!(modifier & 2);
2329
+ key.super = !!(modifier & 8);
2330
+ key.hyper = !!(modifier & 16);
661
2331
  key.code = code;
662
2332
  const keyNameResult = keyName[code];
663
2333
  if (keyNameResult) {
@@ -4427,23 +6097,6 @@ class StdinBuffer extends EventEmitter2 {
4427
6097
  }
4428
6098
 
4429
6099
  // src/lib/yoga.options.ts
4430
- import {
4431
- BoxSizing,
4432
- Align,
4433
- Dimension,
4434
- Direction,
4435
- Display,
4436
- Edge,
4437
- FlexDirection,
4438
- Gutter,
4439
- Justify,
4440
- LogLevel,
4441
- MeasureMode,
4442
- Overflow,
4443
- PositionType,
4444
- Unit,
4445
- Wrap
4446
- } from "bun-yoga";
4447
6100
  function parseAlign(value) {
4448
6101
  if (value == null) {
4449
6102
  return Align.Auto;
@@ -5552,9 +7205,22 @@ function getParsers() {
5552
7205
  }
5553
7206
 
5554
7207
  // src/lib/tree-sitter/client.ts
5555
- import { resolve as resolve2, isAbsolute } from "path";
7208
+ import { resolve as resolve2, isAbsolute, parse } from "path";
5556
7209
  import { existsSync } from "fs";
5557
- import { parse } from "path";
7210
+
7211
+ // src/lib/bunfs.ts
7212
+ import { basename, join } from "path";
7213
+ function isBunfsPath(path) {
7214
+ return path.includes("$bunfs") || /^B:[\\/]~BUN/i.test(path);
7215
+ }
7216
+ function getBunfsRootPath() {
7217
+ return process.platform === "win32" ? "B:\\~BUN\\root" : "/$bunfs/root";
7218
+ }
7219
+ function normalizeBunfsPath(fileName) {
7220
+ return join(getBunfsRootPath(), basename(fileName));
7221
+ }
7222
+
7223
+ // src/lib/tree-sitter/client.ts
5558
7224
  registerEnvVar({
5559
7225
  name: "OTUI_TREE_SITTER_WORKER_PATH",
5560
7226
  description: "Path to the TreeSitter worker",
@@ -5676,8 +7342,8 @@ class TreeSitterClient extends EventEmitter3 {
5676
7342
  if (isUrl(path)) {
5677
7343
  return path;
5678
7344
  }
5679
- if (/\$bunfs/.test(path)) {
5680
- return "/$bunfs/root/" + parse(path).base;
7345
+ if (isBunfsPath(path)) {
7346
+ return normalizeBunfsPath(parse(path).base);
5681
7347
  }
5682
7348
  if (!isAbsolute(path)) {
5683
7349
  return resolve2(path);
@@ -7507,7 +9173,7 @@ function createTerminalPalette(stdin, stdout, writeFn, isLegacyTmux) {
7507
9173
  return new TerminalPalette(stdin, stdout, writeFn, isLegacyTmux);
7508
9174
  }
7509
9175
  // src/zig.ts
7510
- import { dlopen, toArrayBuffer as toArrayBuffer3, JSCallback, ptr as ptr2 } from "bun:ffi";
9176
+ import { dlopen, toArrayBuffer as toArrayBuffer4, JSCallback, ptr as ptr3 } from "bun:ffi";
7511
9177
  import { existsSync as existsSync2 } from "fs";
7512
9178
  import { EventEmitter as EventEmitter5 } from "events";
7513
9179
 
@@ -7729,11 +9395,618 @@ class OptimizedBuffer {
7729
9395
  }
7730
9396
  }
7731
9397
 
7732
- // src/zig-structs.ts
7733
- import { defineStruct, defineEnum } from "bun-ffi-structs";
9398
+ // ../../node_modules/bun-ffi-structs/index.js
7734
9399
  import { ptr, toArrayBuffer as toArrayBuffer2 } from "bun:ffi";
7735
- var rgbaPackTransform = (rgba) => rgba ? ptr(rgba.buffer) : null;
7736
- var rgbaUnpackTransform = (ptr2) => ptr2 ? RGBA.fromArray(new Float32Array(toArrayBuffer2(ptr2))) : undefined;
9400
+ function fatalError(...args) {
9401
+ const message = args.join(" ");
9402
+ console.error("FATAL ERROR:", message);
9403
+ throw new Error(message);
9404
+ }
9405
+ var pointerSize = process.arch === "x64" || process.arch === "arm64" ? 8 : 4;
9406
+ var typeSizes = {
9407
+ u8: 1,
9408
+ bool_u8: 1,
9409
+ bool_u32: 4,
9410
+ u16: 2,
9411
+ i16: 2,
9412
+ u32: 4,
9413
+ u64: 8,
9414
+ f32: 4,
9415
+ f64: 8,
9416
+ pointer: pointerSize,
9417
+ i32: 4
9418
+ };
9419
+ var primitiveKeys = Object.keys(typeSizes);
9420
+ function isPrimitiveType(type) {
9421
+ return typeof type === "string" && primitiveKeys.includes(type);
9422
+ }
9423
+ var typeAlignments = { ...typeSizes };
9424
+ var typeGetters = {
9425
+ u8: (view, offset) => view.getUint8(offset),
9426
+ bool_u8: (view, offset) => Boolean(view.getUint8(offset)),
9427
+ bool_u32: (view, offset) => Boolean(view.getUint32(offset, true)),
9428
+ u16: (view, offset) => view.getUint16(offset, true),
9429
+ i16: (view, offset) => view.getInt16(offset, true),
9430
+ u32: (view, offset) => view.getUint32(offset, true),
9431
+ u64: (view, offset) => view.getBigUint64(offset, true),
9432
+ f32: (view, offset) => view.getFloat32(offset, true),
9433
+ f64: (view, offset) => view.getFloat64(offset, true),
9434
+ i32: (view, offset) => view.getInt32(offset, true),
9435
+ pointer: (view, offset) => pointerSize === 8 ? view.getBigUint64(offset, true) : BigInt(view.getUint32(offset, true))
9436
+ };
9437
+ function isObjectPointerDef(type) {
9438
+ return typeof type === "object" && type !== null && type.__type === "objectPointer";
9439
+ }
9440
+ function alignOffset(offset, align) {
9441
+ return offset + (align - 1) & ~(align - 1);
9442
+ }
9443
+ function enumTypeError(value) {
9444
+ throw new TypeError(`Invalid enum value: ${value}`);
9445
+ }
9446
+ function defineEnum(mapping, base = "u32") {
9447
+ const reverse2 = Object.fromEntries(Object.entries(mapping).map(([k, v]) => [v, k]));
9448
+ return {
9449
+ __type: "enum",
9450
+ type: base,
9451
+ to(value) {
9452
+ return typeof value === "number" ? value : mapping[value] ?? enumTypeError(String(value));
9453
+ },
9454
+ from(value) {
9455
+ return reverse2[value] ?? enumTypeError(String(value));
9456
+ },
9457
+ enum: mapping
9458
+ };
9459
+ }
9460
+ function isEnum(type) {
9461
+ return typeof type === "object" && type.__type === "enum";
9462
+ }
9463
+ function isStruct(type) {
9464
+ return typeof type === "object" && type.__type === "struct";
9465
+ }
9466
+ function primitivePackers(type) {
9467
+ let pack;
9468
+ let unpack;
9469
+ switch (type) {
9470
+ case "u8":
9471
+ pack = (view, off, val) => view.setUint8(off, val);
9472
+ unpack = (view, off) => view.getUint8(off);
9473
+ break;
9474
+ case "bool_u8":
9475
+ pack = (view, off, val) => view.setUint8(off, val ? 1 : 0);
9476
+ unpack = (view, off) => Boolean(view.getUint8(off));
9477
+ break;
9478
+ case "bool_u32":
9479
+ pack = (view, off, val) => view.setUint32(off, val ? 1 : 0, true);
9480
+ unpack = (view, off) => Boolean(view.getUint32(off, true));
9481
+ break;
9482
+ case "u16":
9483
+ pack = (view, off, val) => view.setUint16(off, val, true);
9484
+ unpack = (view, off) => view.getUint16(off, true);
9485
+ break;
9486
+ case "i16":
9487
+ pack = (view, off, val) => view.setInt16(off, val, true);
9488
+ unpack = (view, off) => view.getInt16(off, true);
9489
+ break;
9490
+ case "u32":
9491
+ pack = (view, off, val) => view.setUint32(off, val, true);
9492
+ unpack = (view, off) => view.getUint32(off, true);
9493
+ break;
9494
+ case "i32":
9495
+ pack = (view, off, val) => view.setInt32(off, val, true);
9496
+ unpack = (view, off) => view.getInt32(off, true);
9497
+ break;
9498
+ case "u64":
9499
+ pack = (view, off, val) => view.setBigUint64(off, BigInt(val), true);
9500
+ unpack = (view, off) => view.getBigUint64(off, true);
9501
+ break;
9502
+ case "f32":
9503
+ pack = (view, off, val) => view.setFloat32(off, val, true);
9504
+ unpack = (view, off) => view.getFloat32(off, true);
9505
+ break;
9506
+ case "f64":
9507
+ pack = (view, off, val) => view.setFloat64(off, val, true);
9508
+ unpack = (view, off) => view.getFloat64(off, true);
9509
+ break;
9510
+ case "pointer":
9511
+ pack = (view, off, val) => {
9512
+ pointerSize === 8 ? view.setBigUint64(off, val ? BigInt(val) : 0n, true) : view.setUint32(off, val ? Number(val) : 0, true);
9513
+ };
9514
+ unpack = (view, off) => {
9515
+ const bint = pointerSize === 8 ? view.getBigUint64(off, true) : BigInt(view.getUint32(off, true));
9516
+ return Number(bint);
9517
+ };
9518
+ break;
9519
+ default:
9520
+ fatalError(`Unsupported primitive type: ${type}`);
9521
+ }
9522
+ return { pack, unpack };
9523
+ }
9524
+ var { pack: pointerPacker, unpack: pointerUnpacker } = primitivePackers("pointer");
9525
+ function packObjectArray(val) {
9526
+ const buffer = new ArrayBuffer(val.length * pointerSize);
9527
+ const bufferView = new DataView(buffer);
9528
+ for (let i = 0;i < val.length; i++) {
9529
+ const instance = val[i];
9530
+ const ptrValue = instance?.ptr ?? null;
9531
+ pointerPacker(bufferView, i * pointerSize, ptrValue);
9532
+ }
9533
+ return bufferView;
9534
+ }
9535
+ var encoder = new TextEncoder;
9536
+ var decoder = new TextDecoder;
9537
+ function defineStruct(fields, structDefOptions) {
9538
+ let offset = 0;
9539
+ let maxAlign = 1;
9540
+ const layout = [];
9541
+ const lengthOfFields = {};
9542
+ const lengthOfRequested = [];
9543
+ const arrayFieldsMetadata = {};
9544
+ for (const [name, typeOrStruct, options = {}] of fields) {
9545
+ if (options.condition && !options.condition()) {
9546
+ continue;
9547
+ }
9548
+ let size = 0, align = 0;
9549
+ let pack;
9550
+ let unpack;
9551
+ let needsLengthOf = false;
9552
+ let lengthOfDef = null;
9553
+ if (isPrimitiveType(typeOrStruct)) {
9554
+ size = typeSizes[typeOrStruct];
9555
+ align = typeAlignments[typeOrStruct];
9556
+ ({ pack, unpack } = primitivePackers(typeOrStruct));
9557
+ } else if (typeof typeOrStruct === "string" && typeOrStruct === "cstring") {
9558
+ size = pointerSize;
9559
+ align = pointerSize;
9560
+ pack = (view, off, val) => {
9561
+ const bufPtr = val ? ptr(encoder.encode(val + "\x00")) : null;
9562
+ pointerPacker(view, off, bufPtr);
9563
+ };
9564
+ unpack = (view, off) => {
9565
+ const ptrVal = pointerUnpacker(view, off);
9566
+ return ptrVal;
9567
+ };
9568
+ } else if (typeof typeOrStruct === "string" && typeOrStruct === "char*") {
9569
+ size = pointerSize;
9570
+ align = pointerSize;
9571
+ pack = (view, off, val) => {
9572
+ const bufPtr = val ? ptr(encoder.encode(val)) : null;
9573
+ pointerPacker(view, off, bufPtr);
9574
+ };
9575
+ unpack = (view, off) => {
9576
+ const ptrVal = pointerUnpacker(view, off);
9577
+ return ptrVal;
9578
+ };
9579
+ needsLengthOf = true;
9580
+ } else if (isEnum(typeOrStruct)) {
9581
+ const base = typeOrStruct.type;
9582
+ size = typeSizes[base];
9583
+ align = typeAlignments[base];
9584
+ const { pack: packEnum } = primitivePackers(base);
9585
+ pack = (view, off, val) => {
9586
+ const num = typeOrStruct.to(val);
9587
+ packEnum(view, off, num);
9588
+ };
9589
+ unpack = (view, off) => {
9590
+ const raw = typeGetters[base](view, off);
9591
+ return typeOrStruct.from(raw);
9592
+ };
9593
+ } else if (isStruct(typeOrStruct)) {
9594
+ if (options.asPointer === true) {
9595
+ size = pointerSize;
9596
+ align = pointerSize;
9597
+ pack = (view, off, val, obj, options2) => {
9598
+ if (!val) {
9599
+ pointerPacker(view, off, null);
9600
+ return;
9601
+ }
9602
+ const nestedBuf = typeOrStruct.pack(val, options2);
9603
+ pointerPacker(view, off, ptr(nestedBuf));
9604
+ };
9605
+ unpack = (view, off) => {
9606
+ throw new Error("Not implemented yet");
9607
+ };
9608
+ } else {
9609
+ size = typeOrStruct.size;
9610
+ align = typeOrStruct.align;
9611
+ pack = (view, off, val, obj, options2) => {
9612
+ const nestedBuf = typeOrStruct.pack(val, options2);
9613
+ const nestedView = new Uint8Array(nestedBuf);
9614
+ const dView = new Uint8Array(view.buffer);
9615
+ dView.set(nestedView, off);
9616
+ };
9617
+ unpack = (view, off) => {
9618
+ const slice = view.buffer.slice(off, off + size);
9619
+ return typeOrStruct.unpack(slice);
9620
+ };
9621
+ }
9622
+ } else if (isObjectPointerDef(typeOrStruct)) {
9623
+ size = pointerSize;
9624
+ align = pointerSize;
9625
+ pack = (view, off, value) => {
9626
+ const ptrValue = value?.ptr ?? null;
9627
+ if (ptrValue === undefined) {
9628
+ console.warn(`Field '${name}' expected object with '.ptr' property, but got undefined pointer value from:`, value);
9629
+ pointerPacker(view, off, null);
9630
+ } else {
9631
+ pointerPacker(view, off, ptrValue);
9632
+ }
9633
+ };
9634
+ unpack = (view, off) => {
9635
+ return pointerUnpacker(view, off);
9636
+ };
9637
+ } else if (Array.isArray(typeOrStruct) && typeOrStruct.length === 1 && typeOrStruct[0] !== undefined) {
9638
+ const [def] = typeOrStruct;
9639
+ size = pointerSize;
9640
+ align = pointerSize;
9641
+ let arrayElementSize;
9642
+ if (isEnum(def)) {
9643
+ arrayElementSize = typeSizes[def.type];
9644
+ pack = (view, off, val, obj) => {
9645
+ if (!val || val.length === 0) {
9646
+ pointerPacker(view, off, null);
9647
+ return;
9648
+ }
9649
+ const buffer = new ArrayBuffer(val.length * arrayElementSize);
9650
+ const bufferView = new DataView(buffer);
9651
+ for (let i = 0;i < val.length; i++) {
9652
+ const num = def.to(val[i]);
9653
+ bufferView.setUint32(i * arrayElementSize, num, true);
9654
+ }
9655
+ pointerPacker(view, off, ptr(buffer));
9656
+ };
9657
+ unpack = null;
9658
+ needsLengthOf = true;
9659
+ lengthOfDef = def;
9660
+ } else if (isStruct(def)) {
9661
+ arrayElementSize = def.size;
9662
+ pack = (view, off, val, obj, options2) => {
9663
+ if (!val || val.length === 0) {
9664
+ pointerPacker(view, off, null);
9665
+ return;
9666
+ }
9667
+ const buffer = new ArrayBuffer(val.length * arrayElementSize);
9668
+ const bufferView = new DataView(buffer);
9669
+ for (let i = 0;i < val.length; i++) {
9670
+ def.packInto(val[i], bufferView, i * arrayElementSize, options2);
9671
+ }
9672
+ pointerPacker(view, off, ptr(buffer));
9673
+ };
9674
+ unpack = (view, off) => {
9675
+ throw new Error("Not implemented yet");
9676
+ };
9677
+ } else if (isPrimitiveType(def)) {
9678
+ arrayElementSize = typeSizes[def];
9679
+ const { pack: primitivePack } = primitivePackers(def);
9680
+ pack = (view, off, val) => {
9681
+ if (!val || val.length === 0) {
9682
+ pointerPacker(view, off, null);
9683
+ return;
9684
+ }
9685
+ const buffer = new ArrayBuffer(val.length * arrayElementSize);
9686
+ const bufferView = new DataView(buffer);
9687
+ for (let i = 0;i < val.length; i++) {
9688
+ primitivePack(bufferView, i * arrayElementSize, val[i]);
9689
+ }
9690
+ pointerPacker(view, off, ptr(buffer));
9691
+ };
9692
+ unpack = null;
9693
+ needsLengthOf = true;
9694
+ lengthOfDef = def;
9695
+ } else if (isObjectPointerDef(def)) {
9696
+ arrayElementSize = pointerSize;
9697
+ pack = (view, off, val) => {
9698
+ if (!val || val.length === 0) {
9699
+ pointerPacker(view, off, null);
9700
+ return;
9701
+ }
9702
+ const packedView = packObjectArray(val);
9703
+ pointerPacker(view, off, ptr(packedView.buffer));
9704
+ };
9705
+ unpack = () => {
9706
+ throw new Error("not implemented yet");
9707
+ };
9708
+ } else {
9709
+ throw new Error(`Unsupported array element type for ${name}: ${JSON.stringify(def)}`);
9710
+ }
9711
+ const lengthOfField = Object.values(lengthOfFields).find((f) => f.lengthOf === name);
9712
+ if (lengthOfField && isPrimitiveType(lengthOfField.type)) {
9713
+ const { pack: lengthPack } = primitivePackers(lengthOfField.type);
9714
+ arrayFieldsMetadata[name] = {
9715
+ elementSize: arrayElementSize,
9716
+ arrayOffset: offset,
9717
+ lengthOffset: lengthOfField.offset,
9718
+ lengthPack
9719
+ };
9720
+ }
9721
+ } else {
9722
+ throw new Error(`Unsupported field type for ${name}: ${JSON.stringify(typeOrStruct)}`);
9723
+ }
9724
+ offset = alignOffset(offset, align);
9725
+ if (options.unpackTransform) {
9726
+ const originalUnpack = unpack;
9727
+ unpack = (view, off) => options.unpackTransform(originalUnpack(view, off));
9728
+ }
9729
+ if (options.packTransform) {
9730
+ const originalPack = pack;
9731
+ pack = (view, off, val, obj, packOptions) => originalPack(view, off, options.packTransform(val), obj, packOptions);
9732
+ }
9733
+ if (options.optional) {
9734
+ const originalPack = pack;
9735
+ if (isStruct(typeOrStruct) && !options.asPointer) {
9736
+ pack = (view, off, val, obj, packOptions) => {
9737
+ if (val || options.mapOptionalInline) {
9738
+ originalPack(view, off, val, obj, packOptions);
9739
+ }
9740
+ };
9741
+ } else {
9742
+ pack = (view, off, val, obj, packOptions) => originalPack(view, off, val ?? 0, obj, packOptions);
9743
+ }
9744
+ }
9745
+ if (options.lengthOf) {
9746
+ const originalPack = pack;
9747
+ pack = (view, off, val, obj, packOptions) => {
9748
+ const targetValue = obj[options.lengthOf];
9749
+ let length = 0;
9750
+ if (targetValue) {
9751
+ if (typeof targetValue === "string") {
9752
+ length = Buffer.byteLength(targetValue);
9753
+ } else {
9754
+ length = targetValue.length;
9755
+ }
9756
+ }
9757
+ return originalPack(view, off, length, obj, packOptions);
9758
+ };
9759
+ }
9760
+ let validateFunctions;
9761
+ if (options.validate) {
9762
+ validateFunctions = Array.isArray(options.validate) ? options.validate : [options.validate];
9763
+ }
9764
+ const layoutField = {
9765
+ name,
9766
+ offset,
9767
+ size,
9768
+ align,
9769
+ validate: validateFunctions,
9770
+ optional: !!options.optional || !!options.lengthOf || options.default !== undefined,
9771
+ default: options.default,
9772
+ pack,
9773
+ unpack,
9774
+ type: typeOrStruct,
9775
+ lengthOf: options.lengthOf
9776
+ };
9777
+ layout.push(layoutField);
9778
+ if (options.lengthOf) {
9779
+ lengthOfFields[options.lengthOf] = layoutField;
9780
+ }
9781
+ if (needsLengthOf) {
9782
+ const def = typeof typeOrStruct === "string" && typeOrStruct === "char*" ? "char*" : lengthOfDef;
9783
+ if (!def)
9784
+ fatalError(`Internal error: needsLengthOf=true but def is null for ${name}`);
9785
+ lengthOfRequested.push({ requester: layoutField, def });
9786
+ }
9787
+ offset += size;
9788
+ maxAlign = Math.max(maxAlign, align);
9789
+ }
9790
+ for (const { requester, def } of lengthOfRequested) {
9791
+ const lengthOfField = lengthOfFields[requester.name];
9792
+ if (!lengthOfField) {
9793
+ if (def === "char*") {
9794
+ continue;
9795
+ }
9796
+ throw new Error(`lengthOf field not found for array field ${requester.name}`);
9797
+ }
9798
+ if (def === "char*") {
9799
+ requester.unpack = (view, off) => {
9800
+ const ptrAddress = pointerUnpacker(view, off);
9801
+ const length = lengthOfField.unpack(view, lengthOfField.offset);
9802
+ if (ptrAddress === 0) {
9803
+ return null;
9804
+ }
9805
+ const byteLength = typeof length === "bigint" ? Number(length) : length;
9806
+ if (byteLength === 0) {
9807
+ return "";
9808
+ }
9809
+ const buffer = toArrayBuffer2(ptrAddress, 0, byteLength);
9810
+ return decoder.decode(buffer);
9811
+ };
9812
+ } else if (isPrimitiveType(def)) {
9813
+ const elemSize = typeSizes[def];
9814
+ const { unpack: primitiveUnpack } = primitivePackers(def);
9815
+ requester.unpack = (view, off) => {
9816
+ const result = [];
9817
+ const length = lengthOfField.unpack(view, lengthOfField.offset);
9818
+ const ptrAddress = pointerUnpacker(view, off);
9819
+ if (ptrAddress === 0n && length > 0) {
9820
+ throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);
9821
+ }
9822
+ if (ptrAddress === 0n || length === 0) {
9823
+ return [];
9824
+ }
9825
+ const buffer = toArrayBuffer2(ptrAddress, 0, length * elemSize);
9826
+ const bufferView = new DataView(buffer);
9827
+ for (let i = 0;i < length; i++) {
9828
+ result.push(primitiveUnpack(bufferView, i * elemSize));
9829
+ }
9830
+ return result;
9831
+ };
9832
+ } else {
9833
+ const elemSize = def.type === "u32" ? 4 : 8;
9834
+ requester.unpack = (view, off) => {
9835
+ const result = [];
9836
+ const length = lengthOfField.unpack(view, lengthOfField.offset);
9837
+ const ptrAddress = pointerUnpacker(view, off);
9838
+ if (ptrAddress === 0n && length > 0) {
9839
+ throw new Error(`Array field ${requester.name} has null pointer but length ${length}.`);
9840
+ }
9841
+ if (ptrAddress === 0n || length === 0) {
9842
+ return [];
9843
+ }
9844
+ const buffer = toArrayBuffer2(ptrAddress, 0, length * elemSize);
9845
+ const bufferView = new DataView(buffer);
9846
+ for (let i = 0;i < length; i++) {
9847
+ result.push(def.from(bufferView.getUint32(i * elemSize, true)));
9848
+ }
9849
+ return result;
9850
+ };
9851
+ }
9852
+ }
9853
+ const totalSize = alignOffset(offset, maxAlign);
9854
+ const description = layout.map((f) => ({
9855
+ name: f.name,
9856
+ offset: f.offset,
9857
+ size: f.size,
9858
+ align: f.align,
9859
+ optional: f.optional,
9860
+ type: f.type,
9861
+ lengthOf: f.lengthOf
9862
+ }));
9863
+ const layoutByName = new Map(description.map((f) => [f.name, f]));
9864
+ const arrayFields = new Map(Object.entries(arrayFieldsMetadata));
9865
+ return {
9866
+ __type: "struct",
9867
+ size: totalSize,
9868
+ align: maxAlign,
9869
+ hasMapValue: !!structDefOptions?.mapValue,
9870
+ layoutByName,
9871
+ arrayFields,
9872
+ pack(obj, options) {
9873
+ const buf = new ArrayBuffer(totalSize);
9874
+ const view = new DataView(buf);
9875
+ let mappedObj = obj;
9876
+ if (structDefOptions?.mapValue) {
9877
+ mappedObj = structDefOptions.mapValue(obj);
9878
+ }
9879
+ for (const field of layout) {
9880
+ const value = mappedObj[field.name] ?? field.default;
9881
+ if (!field.optional && value === undefined) {
9882
+ fatalError(`Packing non-optional field '${field.name}' but value is undefined (and no default provided)`);
9883
+ }
9884
+ if (field.validate) {
9885
+ for (const validateFn of field.validate) {
9886
+ validateFn(value, field.name, {
9887
+ hints: options?.validationHints,
9888
+ input: mappedObj
9889
+ });
9890
+ }
9891
+ }
9892
+ field.pack(view, field.offset, value, mappedObj, options);
9893
+ }
9894
+ return view.buffer;
9895
+ },
9896
+ packInto(obj, view, offset2, options) {
9897
+ let mappedObj = obj;
9898
+ if (structDefOptions?.mapValue) {
9899
+ mappedObj = structDefOptions.mapValue(obj);
9900
+ }
9901
+ for (const field of layout) {
9902
+ const value = mappedObj[field.name] ?? field.default;
9903
+ if (!field.optional && value === undefined) {
9904
+ console.warn(`packInto missing value for non-optional field '${field.name}' at offset ${offset2 + field.offset}. Writing default or zero.`);
9905
+ }
9906
+ if (field.validate) {
9907
+ for (const validateFn of field.validate) {
9908
+ validateFn(value, field.name, {
9909
+ hints: options?.validationHints,
9910
+ input: mappedObj
9911
+ });
9912
+ }
9913
+ }
9914
+ field.pack(view, offset2 + field.offset, value, mappedObj, options);
9915
+ }
9916
+ },
9917
+ unpack(buf) {
9918
+ if (buf.byteLength < totalSize) {
9919
+ fatalError(`Buffer size (${buf.byteLength}) is smaller than struct size (${totalSize}) for unpacking.`);
9920
+ }
9921
+ const view = new DataView(buf);
9922
+ const result = structDefOptions?.default ? { ...structDefOptions.default } : {};
9923
+ for (const field of layout) {
9924
+ if (!field.unpack) {
9925
+ continue;
9926
+ }
9927
+ try {
9928
+ result[field.name] = field.unpack(view, field.offset);
9929
+ } catch (e) {
9930
+ console.error(`Error unpacking field '${field.name}' at offset ${field.offset}:`, e);
9931
+ throw e;
9932
+ }
9933
+ }
9934
+ if (structDefOptions?.reduceValue) {
9935
+ return structDefOptions.reduceValue(result);
9936
+ }
9937
+ return result;
9938
+ },
9939
+ packList(objects, options) {
9940
+ if (objects.length === 0) {
9941
+ return new ArrayBuffer(0);
9942
+ }
9943
+ const buffer = new ArrayBuffer(totalSize * objects.length);
9944
+ const view = new DataView(buffer);
9945
+ for (let i = 0;i < objects.length; i++) {
9946
+ let mappedObj = objects[i];
9947
+ if (structDefOptions?.mapValue) {
9948
+ mappedObj = structDefOptions.mapValue(objects[i]);
9949
+ }
9950
+ for (const field of layout) {
9951
+ const value = mappedObj[field.name] ?? field.default;
9952
+ if (!field.optional && value === undefined) {
9953
+ fatalError(`Packing non-optional field '${field.name}' at index ${i} but value is undefined (and no default provided)`);
9954
+ }
9955
+ if (field.validate) {
9956
+ for (const validateFn of field.validate) {
9957
+ validateFn(value, field.name, {
9958
+ hints: options?.validationHints,
9959
+ input: mappedObj
9960
+ });
9961
+ }
9962
+ }
9963
+ field.pack(view, i * totalSize + field.offset, value, mappedObj, options);
9964
+ }
9965
+ }
9966
+ return buffer;
9967
+ },
9968
+ unpackList(buf, count) {
9969
+ if (count === 0) {
9970
+ return [];
9971
+ }
9972
+ const expectedSize = totalSize * count;
9973
+ if (buf.byteLength < expectedSize) {
9974
+ fatalError(`Buffer size (${buf.byteLength}) is smaller than expected size (${expectedSize}) for unpacking ${count} structs.`);
9975
+ }
9976
+ const view = new DataView(buf);
9977
+ const results = [];
9978
+ for (let i = 0;i < count; i++) {
9979
+ const offset2 = i * totalSize;
9980
+ const result = structDefOptions?.default ? { ...structDefOptions.default } : {};
9981
+ for (const field of layout) {
9982
+ if (!field.unpack) {
9983
+ continue;
9984
+ }
9985
+ try {
9986
+ result[field.name] = field.unpack(view, offset2 + field.offset);
9987
+ } catch (e) {
9988
+ console.error(`Error unpacking field '${field.name}' at index ${i}, offset ${offset2 + field.offset}:`, e);
9989
+ throw e;
9990
+ }
9991
+ }
9992
+ if (structDefOptions?.reduceValue) {
9993
+ results.push(structDefOptions.reduceValue(result));
9994
+ } else {
9995
+ results.push(result);
9996
+ }
9997
+ }
9998
+ return results;
9999
+ },
10000
+ describe() {
10001
+ return description;
10002
+ }
10003
+ };
10004
+ }
10005
+
10006
+ // src/zig-structs.ts
10007
+ import { ptr as ptr2, toArrayBuffer as toArrayBuffer3 } from "bun:ffi";
10008
+ var rgbaPackTransform = (rgba) => rgba ? ptr2(rgba.buffer) : null;
10009
+ var rgbaUnpackTransform = (ptr3) => ptr3 ? RGBA.fromArray(new Float32Array(toArrayBuffer3(ptr3))) : undefined;
7737
10010
  var StyledChunkStruct = defineStruct([
7738
10011
  ["text", "char*"],
7739
10012
  ["text_len", "u64", { lengthOf: "text" }],
@@ -7820,7 +10093,7 @@ var MeasureResultStruct = defineStruct([
7820
10093
  // src/zig.ts
7821
10094
  var module = await import(`@opentui/core-${process.platform}-${process.arch}/index.ts`);
7822
10095
  var targetLibPath = module.default;
7823
- if (/\$bunfs/.test(targetLibPath)) {
10096
+ if (isBunfsPath(targetLibPath)) {
7824
10097
  targetLibPath = targetLibPath.replace("../", "");
7825
10098
  }
7826
10099
  if (!existsSync2(targetLibPath)) {
@@ -8786,7 +11059,7 @@ class FFIRenderLib {
8786
11059
  if (msgLen === 0 || !msgPtr) {
8787
11060
  return;
8788
11061
  }
8789
- const msgBuffer = toArrayBuffer3(msgPtr, 0, msgLen);
11062
+ const msgBuffer = toArrayBuffer4(msgPtr, 0, msgLen);
8790
11063
  const msgBytes = new Uint8Array(msgBuffer);
8791
11064
  const message = this.decoder.decode(msgBytes);
8792
11065
  switch (level) {
@@ -8832,12 +11105,12 @@ class FFIRenderLib {
8832
11105
  if (nameLen === 0 || !namePtr) {
8833
11106
  return;
8834
11107
  }
8835
- const nameBuffer = toArrayBuffer3(namePtr, 0, nameLen);
11108
+ const nameBuffer = toArrayBuffer4(namePtr, 0, nameLen);
8836
11109
  const nameBytes = new Uint8Array(nameBuffer);
8837
11110
  const eventName = this.decoder.decode(nameBytes);
8838
11111
  let eventData;
8839
11112
  if (dataLen > 0 && dataPtr) {
8840
- eventData = toArrayBuffer3(dataPtr, 0, dataLen).slice();
11113
+ eventData = toArrayBuffer4(dataPtr, 0, dataLen).slice();
8841
11114
  } else {
8842
11115
  eventData = new ArrayBuffer(0);
8843
11116
  }
@@ -8903,32 +11176,32 @@ class FFIRenderLib {
8903
11176
  return new OptimizedBuffer(this, bufferPtr, width, height, { id: "current buffer", widthMethod: "unicode" });
8904
11177
  }
8905
11178
  bufferGetCharPtr(buffer) {
8906
- const ptr3 = this.opentui.symbols.bufferGetCharPtr(buffer);
8907
- if (!ptr3) {
11179
+ const ptr4 = this.opentui.symbols.bufferGetCharPtr(buffer);
11180
+ if (!ptr4) {
8908
11181
  throw new Error("Failed to get char pointer");
8909
11182
  }
8910
- return ptr3;
11183
+ return ptr4;
8911
11184
  }
8912
11185
  bufferGetFgPtr(buffer) {
8913
- const ptr3 = this.opentui.symbols.bufferGetFgPtr(buffer);
8914
- if (!ptr3) {
11186
+ const ptr4 = this.opentui.symbols.bufferGetFgPtr(buffer);
11187
+ if (!ptr4) {
8915
11188
  throw new Error("Failed to get fg pointer");
8916
11189
  }
8917
- return ptr3;
11190
+ return ptr4;
8918
11191
  }
8919
11192
  bufferGetBgPtr(buffer) {
8920
- const ptr3 = this.opentui.symbols.bufferGetBgPtr(buffer);
8921
- if (!ptr3) {
11193
+ const ptr4 = this.opentui.symbols.bufferGetBgPtr(buffer);
11194
+ if (!ptr4) {
8922
11195
  throw new Error("Failed to get bg pointer");
8923
11196
  }
8924
- return ptr3;
11197
+ return ptr4;
8925
11198
  }
8926
11199
  bufferGetAttributesPtr(buffer) {
8927
- const ptr3 = this.opentui.symbols.bufferGetAttributesPtr(buffer);
8928
- if (!ptr3) {
11200
+ const ptr4 = this.opentui.symbols.bufferGetAttributesPtr(buffer);
11201
+ if (!ptr4) {
8929
11202
  throw new Error("Failed to get attributes pointer");
8930
11203
  }
8931
- return ptr3;
11204
+ return ptr4;
8932
11205
  }
8933
11206
  bufferGetRespectAlpha(buffer) {
8934
11207
  return this.opentui.symbols.bufferGetRespectAlpha(buffer);
@@ -9171,7 +11444,7 @@ class FFIRenderLib {
9171
11444
  return;
9172
11445
  }
9173
11446
  const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks);
9174
- this.opentui.symbols.textBufferSetStyledText(buffer, ptr2(chunksBuffer), nonEmptyChunks.length);
11447
+ this.opentui.symbols.textBufferSetStyledText(buffer, ptr3(chunksBuffer), nonEmptyChunks.length);
9175
11448
  }
9176
11449
  textBufferGetLineCount(buffer) {
9177
11450
  return this.opentui.symbols.textBufferGetLineCount(buffer);
@@ -9182,7 +11455,7 @@ class FFIRenderLib {
9182
11455
  }
9183
11456
  getPlainTextBytes(buffer, maxLength) {
9184
11457
  const outBuffer = new Uint8Array(maxLength);
9185
- const actualLen = this.textBufferGetPlainText(buffer, ptr2(outBuffer), maxLength);
11458
+ const actualLen = this.textBufferGetPlainText(buffer, ptr3(outBuffer), maxLength);
9186
11459
  if (actualLen === 0) {
9187
11460
  return null;
9188
11461
  }
@@ -9190,7 +11463,7 @@ class FFIRenderLib {
9190
11463
  }
9191
11464
  textBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {
9192
11465
  const outBuffer = new Uint8Array(maxLength);
9193
- const actualLen = this.opentui.symbols.textBufferGetTextRange(buffer, startOffset, endOffset, ptr2(outBuffer), maxLength);
11466
+ const actualLen = this.opentui.symbols.textBufferGetTextRange(buffer, startOffset, endOffset, ptr3(outBuffer), maxLength);
9194
11467
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9195
11468
  if (len === 0) {
9196
11469
  return null;
@@ -9199,7 +11472,7 @@ class FFIRenderLib {
9199
11472
  }
9200
11473
  textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {
9201
11474
  const outBuffer = new Uint8Array(maxLength);
9202
- const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr2(outBuffer), maxLength);
11475
+ const actualLen = this.opentui.symbols.textBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr3(outBuffer), maxLength);
9203
11476
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9204
11477
  if (len === 0) {
9205
11478
  return null;
@@ -9259,7 +11532,7 @@ class FFIRenderLib {
9259
11532
  }
9260
11533
  textBufferViewGetLineInfo(view) {
9261
11534
  const outBuffer = new ArrayBuffer(LineInfoStruct.size);
9262
- this.textBufferViewGetLineInfoDirect(view, ptr2(outBuffer));
11535
+ this.textBufferViewGetLineInfoDirect(view, ptr3(outBuffer));
9263
11536
  const struct = LineInfoStruct.unpack(outBuffer);
9264
11537
  return {
9265
11538
  maxLineWidth: struct.maxWidth,
@@ -9271,7 +11544,7 @@ class FFIRenderLib {
9271
11544
  }
9272
11545
  textBufferViewGetLogicalLineInfo(view) {
9273
11546
  const outBuffer = new ArrayBuffer(LineInfoStruct.size);
9274
- this.textBufferViewGetLogicalLineInfoDirect(view, ptr2(outBuffer));
11547
+ this.textBufferViewGetLogicalLineInfoDirect(view, ptr3(outBuffer));
9275
11548
  const struct = LineInfoStruct.unpack(outBuffer);
9276
11549
  return {
9277
11550
  maxLineWidth: struct.maxWidth,
@@ -9300,7 +11573,7 @@ class FFIRenderLib {
9300
11573
  }
9301
11574
  textBufferViewGetSelectedTextBytes(view, maxLength) {
9302
11575
  const outBuffer = new Uint8Array(maxLength);
9303
- const actualLen = this.textBufferViewGetSelectedText(view, ptr2(outBuffer), maxLength);
11576
+ const actualLen = this.textBufferViewGetSelectedText(view, ptr3(outBuffer), maxLength);
9304
11577
  if (actualLen === 0) {
9305
11578
  return null;
9306
11579
  }
@@ -9308,7 +11581,7 @@ class FFIRenderLib {
9308
11581
  }
9309
11582
  textBufferViewGetPlainTextBytes(view, maxLength) {
9310
11583
  const outBuffer = new Uint8Array(maxLength);
9311
- const actualLen = this.textBufferViewGetPlainText(view, ptr2(outBuffer), maxLength);
11584
+ const actualLen = this.textBufferViewGetPlainText(view, ptr3(outBuffer), maxLength);
9312
11585
  if (actualLen === 0) {
9313
11586
  return null;
9314
11587
  }
@@ -9322,7 +11595,7 @@ class FFIRenderLib {
9322
11595
  }
9323
11596
  textBufferViewMeasureForDimensions(view, width, height) {
9324
11597
  const resultBuffer = new ArrayBuffer(MeasureResultStruct.size);
9325
- const resultPtr = ptr2(new Uint8Array(resultBuffer));
11598
+ const resultPtr = ptr3(new Uint8Array(resultBuffer));
9326
11599
  const success = this.opentui.symbols.textBufferViewMeasureForDimensions(view, width, height, resultPtr);
9327
11600
  if (!success) {
9328
11601
  return null;
@@ -9332,11 +11605,11 @@ class FFIRenderLib {
9332
11605
  }
9333
11606
  textBufferAddHighlightByCharRange(buffer, highlight) {
9334
11607
  const packedHighlight = HighlightStruct.pack(highlight);
9335
- this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr2(packedHighlight));
11608
+ this.opentui.symbols.textBufferAddHighlightByCharRange(buffer, ptr3(packedHighlight));
9336
11609
  }
9337
11610
  textBufferAddHighlight(buffer, lineIdx, highlight) {
9338
11611
  const packedHighlight = HighlightStruct.pack(highlight);
9339
- this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr2(packedHighlight));
11612
+ this.opentui.symbols.textBufferAddHighlight(buffer, lineIdx, ptr3(packedHighlight));
9340
11613
  }
9341
11614
  textBufferRemoveHighlightsByRef(buffer, hlRef) {
9342
11615
  this.opentui.symbols.textBufferRemoveHighlightsByRef(buffer, hlRef);
@@ -9352,12 +11625,12 @@ class FFIRenderLib {
9352
11625
  }
9353
11626
  textBufferGetLineHighlights(buffer, lineIdx) {
9354
11627
  const outCountBuf = new BigUint64Array(1);
9355
- const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr2(outCountBuf));
11628
+ const nativePtr = this.opentui.symbols.textBufferGetLineHighlightsPtr(buffer, lineIdx, ptr3(outCountBuf));
9356
11629
  if (!nativePtr)
9357
11630
  return [];
9358
11631
  const count = Number(outCountBuf[0]);
9359
11632
  const byteLen = count * HighlightStruct.size;
9360
- const raw = toArrayBuffer3(nativePtr, 0, byteLen);
11633
+ const raw = toArrayBuffer4(nativePtr, 0, byteLen);
9361
11634
  const results = HighlightStruct.unpackList(raw, count);
9362
11635
  this.opentui.symbols.textBufferFreeLineHighlights(nativePtr, count);
9363
11636
  return results;
@@ -9393,7 +11666,7 @@ class FFIRenderLib {
9393
11666
  const y = new Uint32Array(1);
9394
11667
  const width = new Uint32Array(1);
9395
11668
  const height = new Uint32Array(1);
9396
- this.opentui.symbols.editorViewGetViewport(view, ptr2(x), ptr2(y), ptr2(width), ptr2(height));
11669
+ this.opentui.symbols.editorViewGetViewport(view, ptr3(x), ptr3(y), ptr3(width), ptr3(height));
9397
11670
  return {
9398
11671
  offsetX: x[0],
9399
11672
  offsetY: y[0],
@@ -9423,7 +11696,7 @@ class FFIRenderLib {
9423
11696
  }
9424
11697
  editorViewGetLineInfo(view) {
9425
11698
  const outBuffer = new ArrayBuffer(LineInfoStruct.size);
9426
- this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr2(outBuffer));
11699
+ this.opentui.symbols.editorViewGetLineInfoDirect(view, ptr3(outBuffer));
9427
11700
  const struct = LineInfoStruct.unpack(outBuffer);
9428
11701
  return {
9429
11702
  maxLineWidth: struct.maxWidth,
@@ -9435,7 +11708,7 @@ class FFIRenderLib {
9435
11708
  }
9436
11709
  editorViewGetLogicalLineInfo(view) {
9437
11710
  const outBuffer = new ArrayBuffer(LineInfoStruct.size);
9438
- this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr2(outBuffer));
11711
+ this.opentui.symbols.editorViewGetLogicalLineInfoDirect(view, ptr3(outBuffer));
9439
11712
  const struct = LineInfoStruct.unpack(outBuffer);
9440
11713
  return {
9441
11714
  maxLineWidth: struct.maxWidth,
@@ -9464,7 +11737,7 @@ class FFIRenderLib {
9464
11737
  }
9465
11738
  editBufferGetText(buffer, maxLength) {
9466
11739
  const outBuffer = new Uint8Array(maxLength);
9467
- const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptr2(outBuffer), maxLength);
11740
+ const actualLen = this.opentui.symbols.editBufferGetText(buffer, ptr3(outBuffer), maxLength);
9468
11741
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9469
11742
  if (len === 0)
9470
11743
  return null;
@@ -9519,7 +11792,7 @@ class FFIRenderLib {
9519
11792
  }
9520
11793
  editBufferGetCursorPosition(buffer) {
9521
11794
  const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);
9522
- this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr2(cursorBuffer));
11795
+ this.opentui.symbols.editBufferGetCursorPosition(buffer, ptr3(cursorBuffer));
9523
11796
  return LogicalCursorStruct.unpack(cursorBuffer);
9524
11797
  }
9525
11798
  editBufferGetId(buffer) {
@@ -9537,7 +11810,7 @@ class FFIRenderLib {
9537
11810
  }
9538
11811
  editBufferUndo(buffer, maxLength) {
9539
11812
  const outBuffer = new Uint8Array(maxLength);
9540
- const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptr2(outBuffer), maxLength);
11813
+ const actualLen = this.opentui.symbols.editBufferUndo(buffer, ptr3(outBuffer), maxLength);
9541
11814
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9542
11815
  if (len === 0)
9543
11816
  return null;
@@ -9545,7 +11818,7 @@ class FFIRenderLib {
9545
11818
  }
9546
11819
  editBufferRedo(buffer, maxLength) {
9547
11820
  const outBuffer = new Uint8Array(maxLength);
9548
- const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptr2(outBuffer), maxLength);
11821
+ const actualLen = this.opentui.symbols.editBufferRedo(buffer, ptr3(outBuffer), maxLength);
9549
11822
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9550
11823
  if (len === 0)
9551
11824
  return null;
@@ -9565,22 +11838,22 @@ class FFIRenderLib {
9565
11838
  }
9566
11839
  editBufferGetNextWordBoundary(buffer) {
9567
11840
  const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);
9568
- this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr2(cursorBuffer));
11841
+ this.opentui.symbols.editBufferGetNextWordBoundary(buffer, ptr3(cursorBuffer));
9569
11842
  return LogicalCursorStruct.unpack(cursorBuffer);
9570
11843
  }
9571
11844
  editBufferGetPrevWordBoundary(buffer) {
9572
11845
  const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);
9573
- this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr2(cursorBuffer));
11846
+ this.opentui.symbols.editBufferGetPrevWordBoundary(buffer, ptr3(cursorBuffer));
9574
11847
  return LogicalCursorStruct.unpack(cursorBuffer);
9575
11848
  }
9576
11849
  editBufferGetEOL(buffer) {
9577
11850
  const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);
9578
- this.opentui.symbols.editBufferGetEOL(buffer, ptr2(cursorBuffer));
11851
+ this.opentui.symbols.editBufferGetEOL(buffer, ptr3(cursorBuffer));
9579
11852
  return LogicalCursorStruct.unpack(cursorBuffer);
9580
11853
  }
9581
11854
  editBufferOffsetToPosition(buffer, offset) {
9582
11855
  const cursorBuffer = new ArrayBuffer(LogicalCursorStruct.size);
9583
- const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr2(cursorBuffer));
11856
+ const success = this.opentui.symbols.editBufferOffsetToPosition(buffer, offset, ptr3(cursorBuffer));
9584
11857
  if (!success)
9585
11858
  return null;
9586
11859
  return LogicalCursorStruct.unpack(cursorBuffer);
@@ -9593,7 +11866,7 @@ class FFIRenderLib {
9593
11866
  }
9594
11867
  editBufferGetTextRange(buffer, startOffset, endOffset, maxLength) {
9595
11868
  const outBuffer = new Uint8Array(maxLength);
9596
- const actualLen = this.opentui.symbols.editBufferGetTextRange(buffer, startOffset, endOffset, ptr2(outBuffer), maxLength);
11869
+ const actualLen = this.opentui.symbols.editBufferGetTextRange(buffer, startOffset, endOffset, ptr3(outBuffer), maxLength);
9597
11870
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9598
11871
  if (len === 0)
9599
11872
  return null;
@@ -9601,7 +11874,7 @@ class FFIRenderLib {
9601
11874
  }
9602
11875
  editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, maxLength) {
9603
11876
  const outBuffer = new Uint8Array(maxLength);
9604
- const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr2(outBuffer), maxLength);
11877
+ const actualLen = this.opentui.symbols.editBufferGetTextRangeByCoords(buffer, startRow, startCol, endRow, endCol, ptr3(outBuffer), maxLength);
9605
11878
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9606
11879
  if (len === 0)
9607
11880
  return null;
@@ -9634,7 +11907,7 @@ class FFIRenderLib {
9634
11907
  }
9635
11908
  editorViewGetSelectedTextBytes(view, maxLength) {
9636
11909
  const outBuffer = new Uint8Array(maxLength);
9637
- const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptr2(outBuffer), maxLength);
11910
+ const actualLen = this.opentui.symbols.editorViewGetSelectedTextBytes(view, ptr3(outBuffer), maxLength);
9638
11911
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9639
11912
  if (len === 0)
9640
11913
  return null;
@@ -9643,12 +11916,12 @@ class FFIRenderLib {
9643
11916
  editorViewGetCursor(view) {
9644
11917
  const row = new Uint32Array(1);
9645
11918
  const col = new Uint32Array(1);
9646
- this.opentui.symbols.editorViewGetCursor(view, ptr2(row), ptr2(col));
11919
+ this.opentui.symbols.editorViewGetCursor(view, ptr3(row), ptr3(col));
9647
11920
  return { row: row[0], col: col[0] };
9648
11921
  }
9649
11922
  editorViewGetText(view, maxLength) {
9650
11923
  const outBuffer = new Uint8Array(maxLength);
9651
- const actualLen = this.opentui.symbols.editorViewGetText(view, ptr2(outBuffer), maxLength);
11924
+ const actualLen = this.opentui.symbols.editorViewGetText(view, ptr3(outBuffer), maxLength);
9652
11925
  const len = typeof actualLen === "bigint" ? Number(actualLen) : actualLen;
9653
11926
  if (len === 0)
9654
11927
  return null;
@@ -9656,7 +11929,7 @@ class FFIRenderLib {
9656
11929
  }
9657
11930
  editorViewGetVisualCursor(view) {
9658
11931
  const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);
9659
- this.opentui.symbols.editorViewGetVisualCursor(view, ptr2(cursorBuffer));
11932
+ this.opentui.symbols.editorViewGetVisualCursor(view, ptr3(cursorBuffer));
9660
11933
  return VisualCursorStruct.unpack(cursorBuffer);
9661
11934
  }
9662
11935
  editorViewMoveUpVisual(view) {
@@ -9673,17 +11946,17 @@ class FFIRenderLib {
9673
11946
  }
9674
11947
  editorViewGetNextWordBoundary(view) {
9675
11948
  const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);
9676
- this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr2(cursorBuffer));
11949
+ this.opentui.symbols.editorViewGetNextWordBoundary(view, ptr3(cursorBuffer));
9677
11950
  return VisualCursorStruct.unpack(cursorBuffer);
9678
11951
  }
9679
11952
  editorViewGetPrevWordBoundary(view) {
9680
11953
  const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);
9681
- this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr2(cursorBuffer));
11954
+ this.opentui.symbols.editorViewGetPrevWordBoundary(view, ptr3(cursorBuffer));
9682
11955
  return VisualCursorStruct.unpack(cursorBuffer);
9683
11956
  }
9684
11957
  editorViewGetEOL(view) {
9685
11958
  const cursorBuffer = new ArrayBuffer(VisualCursorStruct.size);
9686
- this.opentui.symbols.editorViewGetEOL(view, ptr2(cursorBuffer));
11959
+ this.opentui.symbols.editorViewGetEOL(view, ptr3(cursorBuffer));
9687
11960
  return VisualCursorStruct.unpack(cursorBuffer);
9688
11961
  }
9689
11962
  bufferPushScissorRect(buffer, x, y, width, height) {
@@ -9697,7 +11970,7 @@ class FFIRenderLib {
9697
11970
  }
9698
11971
  getTerminalCapabilities(renderer) {
9699
11972
  const capsBuffer = new ArrayBuffer(TerminalCapabilitiesStruct.size);
9700
- this.opentui.symbols.getTerminalCapabilities(renderer, ptr2(capsBuffer));
11973
+ this.opentui.symbols.getTerminalCapabilities(renderer, ptr3(capsBuffer));
9701
11974
  const caps = TerminalCapabilitiesStruct.unpack(capsBuffer);
9702
11975
  return {
9703
11976
  kitty_keyboard: caps.kitty_keyboard,
@@ -9729,7 +12002,7 @@ class FFIRenderLib {
9729
12002
  const widthMethodCode = widthMethod === "wcwidth" ? 0 : 1;
9730
12003
  const outPtrBuffer = new ArrayBuffer(8);
9731
12004
  const outLenBuffer = new ArrayBuffer(8);
9732
- const success = this.opentui.symbols.encodeUnicode(textBytes, textBytes.length, ptr2(outPtrBuffer), ptr2(outLenBuffer), widthMethodCode);
12005
+ const success = this.opentui.symbols.encodeUnicode(textBytes, textBytes.length, ptr3(outPtrBuffer), ptr3(outLenBuffer), widthMethodCode);
9733
12006
  if (!success) {
9734
12007
  return null;
9735
12008
  }
@@ -9741,7 +12014,7 @@ class FFIRenderLib {
9741
12014
  return { ptr: resultPtr, data: [] };
9742
12015
  }
9743
12016
  const byteLen = resultLen * EncodedCharStruct.size;
9744
- const raw = toArrayBuffer3(resultPtr, 0, byteLen);
12017
+ const raw = toArrayBuffer4(resultPtr, 0, byteLen);
9745
12018
  const data = EncodedCharStruct.unpackList(raw, resultLen);
9746
12019
  return { ptr: resultPtr, data };
9747
12020
  }
@@ -9783,7 +12056,7 @@ class FFIRenderLib {
9783
12056
  return;
9784
12057
  }
9785
12058
  const chunksBuffer = StyledChunkStruct.packList(nonEmptyChunks);
9786
- this.opentui.symbols.editorViewSetPlaceholderStyledText(view, ptr2(chunksBuffer), nonEmptyChunks.length);
12059
+ this.opentui.symbols.editorViewSetPlaceholderStyledText(view, ptr3(chunksBuffer), nonEmptyChunks.length);
9787
12060
  }
9788
12061
  editorViewSetTabIndicator(view, indicator) {
9789
12062
  this.opentui.symbols.editorViewSetTabIndicator(view, indicator);
@@ -9838,9 +12111,9 @@ class TextBuffer {
9838
12111
  _textBytes;
9839
12112
  _memId;
9840
12113
  _appendedChunks = [];
9841
- constructor(lib, ptr3) {
12114
+ constructor(lib, ptr4) {
9842
12115
  this.lib = lib;
9843
- this.bufferPtr = ptr3;
12116
+ this.bufferPtr = ptr4;
9844
12117
  }
9845
12118
  static create(widthMethod) {
9846
12119
  const lib = resolveRenderLib();
@@ -10023,7 +12296,6 @@ class TextBuffer {
10023
12296
 
10024
12297
  // src/Renderable.ts
10025
12298
  import { EventEmitter as EventEmitter6 } from "events";
10026
- import Yoga, { Direction as Direction2, Display as Display2, Edge as Edge2, FlexDirection as FlexDirection2 } from "bun-yoga";
10027
12299
 
10028
12300
  // src/lib/renderable.validations.ts
10029
12301
  function validateOptions(id, options) {
@@ -10153,7 +12425,7 @@ class BaseRenderable extends EventEmitter6 {
10153
12425
  this._visible = value;
10154
12426
  }
10155
12427
  }
10156
- var yogaConfig = Yoga.Config.create();
12428
+ var yogaConfig = src_default.Config.create();
10157
12429
  yogaConfig.setUseWebDefaults(false);
10158
12430
  yogaConfig.setPointScaleFactor(1);
10159
12431
 
@@ -10196,6 +12468,7 @@ class Renderable extends BaseRenderable {
10196
12468
  parent = null;
10197
12469
  childrenPrimarySortDirty = true;
10198
12470
  childrenSortedByPrimaryAxis = [];
12471
+ _shouldUpdateBefore = new Set;
10199
12472
  onLifecyclePass = null;
10200
12473
  renderBefore;
10201
12474
  renderAfter;
@@ -10219,8 +12492,8 @@ class Renderable extends BaseRenderable {
10219
12492
  this.buffered = options.buffered ?? false;
10220
12493
  this._live = options.live ?? false;
10221
12494
  this._liveCount = this._live && this._visible ? 1 : 0;
10222
- this.yogaNode = Yoga.Node.create(yogaConfig);
10223
- this.yogaNode.setDisplay(this._visible ? Display2.Flex : Display2.None);
12495
+ this.yogaNode = src_default.Node.create(yogaConfig);
12496
+ this.yogaNode.setDisplay(this._visible ? Display.Flex : Display.None);
10224
12497
  this.setupYogaProperties(options);
10225
12498
  this.applyEventOptions(options);
10226
12499
  if (this.buffered) {
@@ -10255,7 +12528,7 @@ class Renderable extends BaseRenderable {
10255
12528
  return;
10256
12529
  const wasVisible = this._visible;
10257
12530
  this._visible = value;
10258
- this.yogaNode.setDisplay(value ? Display2.Flex : Display2.None);
12531
+ this.yogaNode.setDisplay(value ? Display.Flex : Display.None);
10259
12532
  if (this._live) {
10260
12533
  if (!wasVisible && value) {
10261
12534
  this.propagateLiveCount(1);
@@ -10574,40 +12847,40 @@ class Renderable extends BaseRenderable {
10574
12847
  setupMarginAndPadding(options) {
10575
12848
  const node = this.yogaNode;
10576
12849
  if (isMarginType(options.margin)) {
10577
- node.setMargin(Edge2.Top, options.margin);
10578
- node.setMargin(Edge2.Right, options.margin);
10579
- node.setMargin(Edge2.Bottom, options.margin);
10580
- node.setMargin(Edge2.Left, options.margin);
12850
+ node.setMargin(Edge.Top, options.margin);
12851
+ node.setMargin(Edge.Right, options.margin);
12852
+ node.setMargin(Edge.Bottom, options.margin);
12853
+ node.setMargin(Edge.Left, options.margin);
10581
12854
  }
10582
12855
  if (isMarginType(options.marginTop)) {
10583
- node.setMargin(Edge2.Top, options.marginTop);
12856
+ node.setMargin(Edge.Top, options.marginTop);
10584
12857
  }
10585
12858
  if (isMarginType(options.marginRight)) {
10586
- node.setMargin(Edge2.Right, options.marginRight);
12859
+ node.setMargin(Edge.Right, options.marginRight);
10587
12860
  }
10588
12861
  if (isMarginType(options.marginBottom)) {
10589
- node.setMargin(Edge2.Bottom, options.marginBottom);
12862
+ node.setMargin(Edge.Bottom, options.marginBottom);
10590
12863
  }
10591
12864
  if (isMarginType(options.marginLeft)) {
10592
- node.setMargin(Edge2.Left, options.marginLeft);
12865
+ node.setMargin(Edge.Left, options.marginLeft);
10593
12866
  }
10594
12867
  if (isPaddingType(options.padding)) {
10595
- node.setPadding(Edge2.Top, options.padding);
10596
- node.setPadding(Edge2.Right, options.padding);
10597
- node.setPadding(Edge2.Bottom, options.padding);
10598
- node.setPadding(Edge2.Left, options.padding);
12868
+ node.setPadding(Edge.Top, options.padding);
12869
+ node.setPadding(Edge.Right, options.padding);
12870
+ node.setPadding(Edge.Bottom, options.padding);
12871
+ node.setPadding(Edge.Left, options.padding);
10599
12872
  }
10600
12873
  if (isPaddingType(options.paddingTop)) {
10601
- node.setPadding(Edge2.Top, options.paddingTop);
12874
+ node.setPadding(Edge.Top, options.paddingTop);
10602
12875
  }
10603
12876
  if (isPaddingType(options.paddingRight)) {
10604
- node.setPadding(Edge2.Right, options.paddingRight);
12877
+ node.setPadding(Edge.Right, options.paddingRight);
10605
12878
  }
10606
12879
  if (isPaddingType(options.paddingBottom)) {
10607
- node.setPadding(Edge2.Bottom, options.paddingBottom);
12880
+ node.setPadding(Edge.Bottom, options.paddingBottom);
10608
12881
  }
10609
12882
  if (isPaddingType(options.paddingLeft)) {
10610
- node.setPadding(Edge2.Left, options.paddingLeft);
12883
+ node.setPadding(Edge.Left, options.paddingLeft);
10611
12884
  }
10612
12885
  }
10613
12886
  set position(positionType) {
@@ -10636,30 +12909,30 @@ class Renderable extends BaseRenderable {
10636
12909
  const { top, right, bottom, left } = position;
10637
12910
  if (isPositionType(top)) {
10638
12911
  if (top === "auto") {
10639
- node.setPositionAuto(Edge2.Top);
12912
+ node.setPositionAuto(Edge.Top);
10640
12913
  } else {
10641
- node.setPosition(Edge2.Top, top);
12914
+ node.setPosition(Edge.Top, top);
10642
12915
  }
10643
12916
  }
10644
12917
  if (isPositionType(right)) {
10645
12918
  if (right === "auto") {
10646
- node.setPositionAuto(Edge2.Right);
12919
+ node.setPositionAuto(Edge.Right);
10647
12920
  } else {
10648
- node.setPosition(Edge2.Right, right);
12921
+ node.setPosition(Edge.Right, right);
10649
12922
  }
10650
12923
  }
10651
12924
  if (isPositionType(bottom)) {
10652
12925
  if (bottom === "auto") {
10653
- node.setPositionAuto(Edge2.Bottom);
12926
+ node.setPositionAuto(Edge.Bottom);
10654
12927
  } else {
10655
- node.setPosition(Edge2.Bottom, bottom);
12928
+ node.setPosition(Edge.Bottom, bottom);
10656
12929
  }
10657
12930
  }
10658
12931
  if (isPositionType(left)) {
10659
12932
  if (left === "auto") {
10660
- node.setPositionAuto(Edge2.Left);
12933
+ node.setPositionAuto(Edge.Left);
10661
12934
  } else {
10662
- node.setPosition(Edge2.Left, left);
12935
+ node.setPosition(Edge.Left, left);
10663
12936
  }
10664
12937
  }
10665
12938
  this.requestRender();
@@ -10731,68 +13004,68 @@ class Renderable extends BaseRenderable {
10731
13004
  set margin(margin) {
10732
13005
  if (isMarginType(margin)) {
10733
13006
  const node = this.yogaNode;
10734
- node.setMargin(Edge2.Top, margin);
10735
- node.setMargin(Edge2.Right, margin);
10736
- node.setMargin(Edge2.Bottom, margin);
10737
- node.setMargin(Edge2.Left, margin);
13007
+ node.setMargin(Edge.Top, margin);
13008
+ node.setMargin(Edge.Right, margin);
13009
+ node.setMargin(Edge.Bottom, margin);
13010
+ node.setMargin(Edge.Left, margin);
10738
13011
  this.requestRender();
10739
13012
  }
10740
13013
  }
10741
13014
  set marginTop(margin) {
10742
13015
  if (isMarginType(margin)) {
10743
- this.yogaNode.setMargin(Edge2.Top, margin);
13016
+ this.yogaNode.setMargin(Edge.Top, margin);
10744
13017
  this.requestRender();
10745
13018
  }
10746
13019
  }
10747
13020
  set marginRight(margin) {
10748
13021
  if (isMarginType(margin)) {
10749
- this.yogaNode.setMargin(Edge2.Right, margin);
13022
+ this.yogaNode.setMargin(Edge.Right, margin);
10750
13023
  this.requestRender();
10751
13024
  }
10752
13025
  }
10753
13026
  set marginBottom(margin) {
10754
13027
  if (isMarginType(margin)) {
10755
- this.yogaNode.setMargin(Edge2.Bottom, margin);
13028
+ this.yogaNode.setMargin(Edge.Bottom, margin);
10756
13029
  this.requestRender();
10757
13030
  }
10758
13031
  }
10759
13032
  set marginLeft(margin) {
10760
13033
  if (isMarginType(margin)) {
10761
- this.yogaNode.setMargin(Edge2.Left, margin);
13034
+ this.yogaNode.setMargin(Edge.Left, margin);
10762
13035
  this.requestRender();
10763
13036
  }
10764
13037
  }
10765
13038
  set padding(padding) {
10766
13039
  if (isPaddingType(padding)) {
10767
13040
  const node = this.yogaNode;
10768
- node.setPadding(Edge2.Top, padding);
10769
- node.setPadding(Edge2.Right, padding);
10770
- node.setPadding(Edge2.Bottom, padding);
10771
- node.setPadding(Edge2.Left, padding);
13041
+ node.setPadding(Edge.Top, padding);
13042
+ node.setPadding(Edge.Right, padding);
13043
+ node.setPadding(Edge.Bottom, padding);
13044
+ node.setPadding(Edge.Left, padding);
10772
13045
  this.requestRender();
10773
13046
  }
10774
13047
  }
10775
13048
  set paddingTop(padding) {
10776
13049
  if (isPaddingType(padding)) {
10777
- this.yogaNode.setPadding(Edge2.Top, padding);
13050
+ this.yogaNode.setPadding(Edge.Top, padding);
10778
13051
  this.requestRender();
10779
13052
  }
10780
13053
  }
10781
13054
  set paddingRight(padding) {
10782
13055
  if (isPaddingType(padding)) {
10783
- this.yogaNode.setPadding(Edge2.Right, padding);
13056
+ this.yogaNode.setPadding(Edge.Right, padding);
10784
13057
  this.requestRender();
10785
13058
  }
10786
13059
  }
10787
13060
  set paddingBottom(padding) {
10788
13061
  if (isPaddingType(padding)) {
10789
- this.yogaNode.setPadding(Edge2.Bottom, padding);
13062
+ this.yogaNode.setPadding(Edge.Bottom, padding);
10790
13063
  this.requestRender();
10791
13064
  }
10792
13065
  }
10793
13066
  set paddingLeft(padding) {
10794
13067
  if (isPaddingType(padding)) {
10795
- this.yogaNode.setPadding(Edge2.Left, padding);
13068
+ this.yogaNode.setPadding(Edge.Left, padding);
10796
13069
  this.requestRender();
10797
13070
  }
10798
13071
  }
@@ -10899,6 +13172,7 @@ class Renderable extends BaseRenderable {
10899
13172
  this._childrenInLayoutOrder.push(renderable);
10900
13173
  this.yogaNode.insertChild(childLayoutNode, insertedIndex);
10901
13174
  this.childrenPrimarySortDirty = true;
13175
+ this._shouldUpdateBefore.add(renderable);
10902
13176
  this.requestRender();
10903
13177
  return insertedIndex;
10904
13178
  }
@@ -10951,6 +13225,7 @@ class Renderable extends BaseRenderable {
10951
13225
  const insertedIndex = Math.max(0, Math.min(anchorIndex, this._childrenInLayoutOrder.length));
10952
13226
  this._childrenInLayoutOrder.splice(insertedIndex, 0, renderable);
10953
13227
  this.yogaNode.insertChild(renderable.getLayoutNode(), insertedIndex);
13228
+ this._shouldUpdateBefore.add(renderable);
10954
13229
  this.requestRender();
10955
13230
  return insertedIndex;
10956
13231
  }
@@ -11000,6 +13275,14 @@ class Renderable extends BaseRenderable {
11000
13275
  if (this._isDestroyed)
11001
13276
  return;
11002
13277
  this.updateFromLayout();
13278
+ if (this._shouldUpdateBefore.size > 0) {
13279
+ for (const child of this._shouldUpdateBefore) {
13280
+ if (!child.isDestroyed) {
13281
+ child.updateFromLayout();
13282
+ }
13283
+ }
13284
+ this._shouldUpdateBefore.clear();
13285
+ }
11003
13286
  if (this._isDestroyed)
11004
13287
  return;
11005
13288
  renderList.push({ action: "render", renderable: this });
@@ -11208,10 +13491,10 @@ class RootRenderable extends Renderable {
11208
13491
  if (this.yogaNode) {
11209
13492
  this.yogaNode.free();
11210
13493
  }
11211
- this.yogaNode = Yoga.Node.create(yogaConfig);
13494
+ this.yogaNode = src_default.Node.create(yogaConfig);
11212
13495
  this.yogaNode.setWidth(ctx.width);
11213
13496
  this.yogaNode.setHeight(ctx.height);
11214
- this.yogaNode.setFlexDirection(FlexDirection2.Column);
13497
+ this.yogaNode.setFlexDirection(FlexDirection.Column);
11215
13498
  this.calculateLayout();
11216
13499
  }
11217
13500
  render(buffer, deltaTime) {
@@ -11252,7 +13535,7 @@ class RootRenderable extends Renderable {
11252
13535
  }
11253
13536
  }
11254
13537
  calculateLayout() {
11255
- this.yogaNode.calculateLayout(this.width, this.height, Direction2.LTR);
13538
+ this.yogaNode.calculateLayout(this.width, this.height, Direction.LTR);
11256
13539
  this.emit("layout-changed" /* LAYOUT_CHANGED */);
11257
13540
  }
11258
13541
  resize(width, height) {
@@ -12266,6 +14549,12 @@ registerEnvVar({
12266
14549
  type: "boolean",
12267
14550
  default: true
12268
14551
  });
14552
+ registerEnvVar({
14553
+ name: "OTUI_DEBUG",
14554
+ description: "Enable debug mode to capture all raw input for debugging purposes.",
14555
+ type: "boolean",
14556
+ default: false
14557
+ });
12269
14558
 
12270
14559
  class MouseEvent {
12271
14560
  type;
@@ -12311,13 +14600,6 @@ var MouseButton;
12311
14600
  MouseButton2[MouseButton2["WHEEL_UP"] = 4] = "WHEEL_UP";
12312
14601
  MouseButton2[MouseButton2["WHEEL_DOWN"] = 5] = "WHEEL_DOWN";
12313
14602
  })(MouseButton ||= {});
12314
- singleton("ProcessExitSignals", () => {
12315
- ["SIGINT", "SIGTERM", "SIGQUIT", "SIGABRT"].forEach((signal) => {
12316
- process.on(signal, () => {
12317
- process.exit();
12318
- });
12319
- });
12320
- });
12321
14603
  var rendererTracker = singleton("RendererTracker", () => {
12322
14604
  const renderers = new Set;
12323
14605
  return {
@@ -12385,11 +14667,14 @@ class CliRenderer extends EventEmitter9 {
12385
14667
  stdin;
12386
14668
  stdout;
12387
14669
  exitOnCtrlC;
14670
+ exitSignals;
14671
+ _exitListenersAdded = false;
12388
14672
  _isDestroyed = false;
12389
14673
  nextRenderBuffer;
12390
14674
  currentRenderBuffer;
12391
14675
  _isRunning = false;
12392
14676
  targetFps = 30;
14677
+ maxFps = 60;
12393
14678
  automaticMemorySnapshot = false;
12394
14679
  memorySnapshotInterval;
12395
14680
  memorySnapshotTimer = null;
@@ -12415,7 +14700,8 @@ class CliRenderer extends EventEmitter9 {
12415
14700
  frameCount = 0;
12416
14701
  lastFpsTime = 0;
12417
14702
  currentFps = 0;
12418
- targetFrameTime = 0;
14703
+ targetFrameTime = 1000 / this.targetFps;
14704
+ minTargetFrameTime = 1000 / this.maxFps;
12419
14705
  immediateRerenderRequested = false;
12420
14706
  updateScheduled = false;
12421
14707
  liveRequestCounter = 0;
@@ -12477,6 +14763,9 @@ class CliRenderer extends EventEmitter9 {
12477
14763
  _onDestroy;
12478
14764
  inputHandlers = [];
12479
14765
  prependedInputHandlers = [];
14766
+ idleResolvers = [];
14767
+ _debugInputs = [];
14768
+ _debugModeEnabled = env.OTUI_DEBUG;
12480
14769
  handleError = ((error) => {
12481
14770
  console.error(error);
12482
14771
  if (this._openConsoleOnError) {
@@ -12539,8 +14828,12 @@ Captured output:
12539
14828
  }
12540
14829
  this.rendererPtr = rendererPtr;
12541
14830
  this.exitOnCtrlC = config.exitOnCtrlC === undefined ? true : config.exitOnCtrlC;
14831
+ this.exitSignals = config.exitSignals || ["SIGINT", "SIGTERM", "SIGQUIT", "SIGABRT"];
12542
14832
  this.resizeDebounceDelay = config.debounceDelay || 100;
12543
14833
  this.targetFps = config.targetFps || 30;
14834
+ this.maxFps = config.maxFps || 60;
14835
+ this.targetFrameTime = 1000 / this.targetFps;
14836
+ this.minTargetFrameTime = 1000 / this.maxFps;
12544
14837
  this.memorySnapshotInterval = config.memorySnapshotInterval ?? 0;
12545
14838
  this.gatherStats = config.gatherStats || false;
12546
14839
  this.maxStatSamples = config.maxStatSamples || 300;
@@ -12562,7 +14855,7 @@ Captured output:
12562
14855
  process.on("warning", this.warningHandler);
12563
14856
  process.on("uncaughtException", this.handleError);
12564
14857
  process.on("unhandledRejection", this.handleError);
12565
- process.on("exit", this.exitHandler);
14858
+ process.on("beforeExit", this.exitHandler);
12566
14859
  this._keyHandler = new InternalKeyHandler(config.useKittyKeyboard ?? true);
12567
14860
  this._keyHandler.on("keypress", (event) => {
12568
14861
  if (this.exitOnCtrlC && event.name === "c" && event.ctrl) {
@@ -12572,6 +14865,7 @@ Captured output:
12572
14865
  return;
12573
14866
  }
12574
14867
  });
14868
+ this.addExitListeners();
12575
14869
  this._stdinBuffer = new StdinBuffer({ timeout: 5 });
12576
14870
  this._console = new TerminalConsole(this, config.consoleOptions);
12577
14871
  this.useConsole = config.useConsole ?? true;
@@ -12600,6 +14894,22 @@ Captured output:
12600
14894
  }
12601
14895
  this.setupInput();
12602
14896
  }
14897
+ addExitListeners() {
14898
+ if (this._exitListenersAdded || this.exitSignals.length === 0)
14899
+ return;
14900
+ this.exitSignals.forEach((signal) => {
14901
+ process.addListener(signal, this.exitHandler);
14902
+ });
14903
+ this._exitListenersAdded = true;
14904
+ }
14905
+ removeExitListeners() {
14906
+ if (!this._exitListenersAdded || this.exitSignals.length === 0)
14907
+ return;
14908
+ this.exitSignals.forEach((signal) => {
14909
+ process.removeListener(signal, this.exitHandler);
14910
+ });
14911
+ this._exitListenersAdded = false;
14912
+ }
12603
14913
  get isDestroyed() {
12604
14914
  return this._isDestroyed;
12605
14915
  }
@@ -12636,14 +14946,33 @@ Captured output:
12636
14946
  return this.realStdoutWrite.call(this.stdout, chunk, encoding, callback);
12637
14947
  }
12638
14948
  requestRender() {
12639
- if (!this.rendering && !this.updateScheduled && !this._isRunning && this._controlState !== "explicit_suspended" /* EXPLICIT_SUSPENDED */) {
14949
+ if (this._controlState === "explicit_suspended" /* EXPLICIT_SUSPENDED */) {
14950
+ return;
14951
+ }
14952
+ if (this._isRunning) {
14953
+ return;
14954
+ }
14955
+ if (this.rendering) {
14956
+ this.immediateRerenderRequested = true;
14957
+ return;
14958
+ }
14959
+ if (!this.updateScheduled && !this.renderTimeout) {
12640
14960
  this.updateScheduled = true;
12641
- process.nextTick(() => {
12642
- this.loop();
12643
- this.updateScheduled = false;
12644
- });
14961
+ const now = Date.now();
14962
+ const elapsed = now - this.lastTime;
14963
+ const delay = Math.max(this.minTargetFrameTime - elapsed, 0);
14964
+ if (delay === 0) {
14965
+ process.nextTick(() => this.activateFrame());
14966
+ return;
14967
+ }
14968
+ setTimeout(() => this.activateFrame(), delay);
12645
14969
  }
12646
14970
  }
14971
+ async activateFrame() {
14972
+ await this.loop();
14973
+ this.updateScheduled = false;
14974
+ this.resolveIdleIfNeeded();
14975
+ }
12647
14976
  get useConsole() {
12648
14977
  return this._useConsole;
12649
14978
  }
@@ -12658,6 +14987,26 @@ Captured output:
12658
14987
  get isRunning() {
12659
14988
  return this._isRunning;
12660
14989
  }
14990
+ isIdleNow() {
14991
+ return !this._isRunning && !this.rendering && !this.renderTimeout && !this.updateScheduled && !this.immediateRerenderRequested;
14992
+ }
14993
+ resolveIdleIfNeeded() {
14994
+ if (!this.isIdleNow())
14995
+ return;
14996
+ const resolvers = this.idleResolvers.splice(0);
14997
+ for (const resolve4 of resolvers) {
14998
+ resolve4();
14999
+ }
15000
+ }
15001
+ idle() {
15002
+ if (this._isDestroyed)
15003
+ return Promise.resolve();
15004
+ if (this.isIdleNow())
15005
+ return Promise.resolve();
15006
+ return new Promise((resolve4) => {
15007
+ this.idleResolvers.push(resolve4);
15008
+ });
15009
+ }
12661
15010
  get resolution() {
12662
15011
  return this._resolution;
12663
15012
  }
@@ -12704,6 +15053,9 @@ Captured output:
12704
15053
  get capabilities() {
12705
15054
  return this._capabilities;
12706
15055
  }
15056
+ getDebugInputs() {
15057
+ return [...this._debugInputs];
15058
+ }
12707
15059
  get useKittyKeyboard() {
12708
15060
  return this.lib.getUseKittyKeyboard(this.rendererPtr);
12709
15061
  }
@@ -12880,6 +15232,12 @@ Captured output:
12880
15232
  this.stdin.setEncoding("utf8");
12881
15233
  this.stdin.on("data", this.stdinListener);
12882
15234
  this._stdinBuffer.on("data", (sequence) => {
15235
+ if (this._debugModeEnabled) {
15236
+ this._debugInputs.push({
15237
+ timestamp: new Date().toISOString(),
15238
+ sequence
15239
+ });
15240
+ }
12883
15241
  for (const handler of this.inputHandlers) {
12884
15242
  if (handler(sequence)) {
12885
15243
  return;
@@ -13213,6 +15571,7 @@ Captured output:
13213
15571
  this.internalPause();
13214
15572
  this._suspendedMouseEnabled = this._useMouse;
13215
15573
  this.disableMouse();
15574
+ this.removeExitListeners();
13216
15575
  this._stdinBuffer.clear();
13217
15576
  this.stdin.removeListener("data", this.stdinListener);
13218
15577
  this.lib.suspendRenderer(this.rendererPtr);
@@ -13226,6 +15585,7 @@ Captured output:
13226
15585
  this.stdin.setRawMode(true);
13227
15586
  }
13228
15587
  this.stdin.resume();
15588
+ this.addExitListeners();
13229
15589
  setImmediate(() => {
13230
15590
  while (this.stdin.read() !== null) {}
13231
15591
  this.stdin.on("data", this.stdinListener);
@@ -13260,6 +15620,9 @@ Captured output:
13260
15620
  clearTimeout(this.renderTimeout);
13261
15621
  this.renderTimeout = null;
13262
15622
  }
15623
+ if (!this.rendering) {
15624
+ this.resolveIdleIfNeeded();
15625
+ }
13263
15626
  }
13264
15627
  }
13265
15628
  destroy() {
@@ -13312,6 +15675,7 @@ Captured output:
13312
15675
  console.error("Error in onDestroy callback:", e instanceof Error ? e.stack : String(e));
13313
15676
  }
13314
15677
  }
15678
+ this.resolveIdleIfNeeded();
13315
15679
  }
13316
15680
  startRenderLoop() {
13317
15681
  if (!this._isRunning)
@@ -13320,12 +15684,12 @@ Captured output:
13320
15684
  this.frameCount = 0;
13321
15685
  this.lastFpsTime = this.lastTime;
13322
15686
  this.currentFps = 0;
13323
- this.targetFrameTime = 1000 / this.targetFps;
13324
15687
  this.loop();
13325
15688
  }
13326
15689
  async loop() {
13327
15690
  if (this.rendering || this._isDestroyed)
13328
15691
  return;
15692
+ this.renderTimeout = null;
13329
15693
  this.rendering = true;
13330
15694
  if (this.renderTimeout) {
13331
15695
  clearTimeout(this.renderTimeout);
@@ -13360,10 +15724,6 @@ Captured output:
13360
15724
  } catch (error) {
13361
15725
  console.error("Error in frame callback:", error);
13362
15726
  }
13363
- if (this._isDestroyed) {
13364
- this.rendering = false;
13365
- return;
13366
- }
13367
15727
  }
13368
15728
  const end = performance.now();
13369
15729
  this.renderStats.frameCallbackTime = end - start;
@@ -13379,16 +15739,21 @@ Captured output:
13379
15739
  if (this.gatherStats) {
13380
15740
  this.collectStatSample(overallFrameTime);
13381
15741
  }
13382
- if (this._isRunning) {
13383
- const delay = Math.max(1, this.targetFrameTime - Math.floor(overallFrameTime));
13384
- this.renderTimeout = setTimeout(() => this.loop(), delay);
15742
+ if (this._isRunning || this.immediateRerenderRequested) {
15743
+ const targetFrameTime = this.immediateRerenderRequested ? this.minTargetFrameTime : this.targetFrameTime;
15744
+ const delay = Math.max(1, targetFrameTime - Math.floor(overallFrameTime));
15745
+ this.immediateRerenderRequested = false;
15746
+ this.renderTimeout = setTimeout(() => {
15747
+ this.renderTimeout = null;
15748
+ this.loop();
15749
+ }, delay);
15750
+ } else {
15751
+ clearTimeout(this.renderTimeout);
15752
+ this.renderTimeout = null;
13385
15753
  }
13386
15754
  }
13387
15755
  this.rendering = false;
13388
- if (this.immediateRerenderRequested) {
13389
- this.immediateRerenderRequested = false;
13390
- this.loop();
13391
- }
15756
+ this.resolveIdleIfNeeded();
13392
15757
  }
13393
15758
  intermediateRender() {
13394
15759
  this.immediateRerenderRequested = true;
@@ -13578,7 +15943,7 @@ Captured output:
13578
15943
  }
13579
15944
  }
13580
15945
 
13581
- export { BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
15946
+ export { __toESM, __commonJS, __export, __require, Edge, Gutter, MeasureMode, exports_src, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, nonAlphanumericKeys, parseKeypress, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, RGBA, hexToRgb, rgbToHex, hsvToRgb, parseColor, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, DebugOverlayCorner, createTextAttributes, visualizeRenderableTree, isStyledText, StyledText, stringToStyledText, black, red, green, yellow, blue, magenta, cyan, white, brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite, bgBlack, bgRed, bgGreen, bgYellow, bgBlue, bgMagenta, bgCyan, bgWhite, bold, italic, underline, strikethrough, dim, reverse, blink, fg, bg, t, hastToStyledText, LinearScrollAccel, MacOSScrollAccel, StdinBuffer, parseAlign, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extToFiletype, pathToFiletype, main, getTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, TextBuffer, LogLevel2 as LogLevel, setRenderLibPath, resolveRenderLib, OptimizedBuffer, h, isVNode, maybeMakeRenderable, wrapWithDelegates, instantiate, delegate, isValidPercentage, LayoutEvents, RenderableEvents, isRenderable, BaseRenderable, Renderable, RootRenderable, ANSI, capture, ConsolePosition, TerminalConsole, getObjectsInViewport, MouseEvent, MouseButton, createCliRenderer, CliRenderEvents, RendererControlState, CliRenderer };
13582
15947
 
13583
- //# debugId=D2D576D668A923C064756E2164756E21
13584
- //# sourceMappingURL=index-x5bb5xvn.js.map
15948
+ //# debugId=50CCF62F4F782D5964756E2164756E21
15949
+ //# sourceMappingURL=index-crebvcxc.js.map