@opentui/core 0.5.1 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{chunk-bun-83ry0rzt.js → chunk-bun-26r5c5w5.js} +833 -3
- package/{chunk-bun-83ry0rzt.js.map → chunk-bun-26r5c5w5.js.map} +8 -6
- package/{chunk-bun-8fkgaxc6.js → chunk-bun-t68f2fmr.js} +98 -26
- package/{chunk-bun-8fkgaxc6.js.map → chunk-bun-t68f2fmr.js.map} +4 -4
- package/{chunk-node-m23dbcww.js → chunk-node-aj3n20gq.js} +833 -3
- package/{chunk-node-m23dbcww.js.map → chunk-node-aj3n20gq.js.map} +8 -6
- package/{chunk-node-0yw3x5m7.js → chunk-node-kq7as74d.js} +98 -26
- package/{chunk-node-0yw3x5m7.js.map → chunk-node-kq7as74d.js.map} +4 -4
- package/image.d.ts +2 -0
- package/index.bun.js +49 -6
- package/index.bun.js.map +4 -4
- package/index.node.js +49 -6
- package/index.node.js.map +4 -4
- package/lib/clipboard.d.ts +119 -0
- package/lib/host-clipboard.internal.d.ts +22 -0
- package/lib/host-clipboard.native.d.ts +2 -0
- package/lib/tree-sitter/types.d.ts +1 -0
- package/package.json +9 -9
- package/parser.worker.js +6 -4
- package/parser.worker.js.map +3 -3
- package/renderables/Code.d.ts +7 -0
- package/renderables/Image.d.ts +5 -3
- package/renderer.d.ts +5 -2
- package/testing.bun.js +2 -2
- package/testing.js +2 -2
- package/yoga.bun.js +1 -1
- package/yoga.js +1 -1
- package/zig.d.ts +93 -0
|
@@ -8883,6 +8883,13 @@ class TreeSitterClient extends EventEmitter2 {
|
|
|
8883
8883
|
return;
|
|
8884
8884
|
}
|
|
8885
8885
|
case "ERROR": {
|
|
8886
|
+
if (message.messageId) {
|
|
8887
|
+
const callback = this.messageCallbacks.get(message.messageId);
|
|
8888
|
+
if (callback) {
|
|
8889
|
+
this.messageCallbacks.delete(message.messageId);
|
|
8890
|
+
callback.reject(new Error(message.error));
|
|
8891
|
+
}
|
|
8892
|
+
}
|
|
8886
8893
|
this.emitError(message.error, message.bufferId);
|
|
8887
8894
|
return;
|
|
8888
8895
|
}
|
|
@@ -10548,7 +10555,575 @@ function decodePasteBytes(bytes) {
|
|
|
10548
10555
|
function stripAnsiSequences(text) {
|
|
10549
10556
|
return stripANSI(text);
|
|
10550
10557
|
}
|
|
10558
|
+
// src/lib/host-clipboard.internal.ts
|
|
10559
|
+
var DEFAULT_CLIPBOARD_TIMEOUT_MS = 1000;
|
|
10560
|
+
var DEFAULT_CLIPBOARD_MAX_BYTES = 8 * 1024 * 1024;
|
|
10561
|
+
var DEFAULT_CLIPBOARD_MAX_IMAGE_PIXELS = 64 * 1024 * 1024;
|
|
10562
|
+
var DEFAULT_CLIPBOARD_MAX_CONVERSION_BYTES = 512 * 1024 * 1024;
|
|
10563
|
+
var DEFAULT_CLIPBOARD_MAX_CONCURRENT_OPERATIONS = 16;
|
|
10564
|
+
var DEFAULT_CLIPBOARD_MAX_PROVIDER_TRANSFERS = 16;
|
|
10565
|
+
var MAX_U32 = 4294967295;
|
|
10566
|
+
var MIME_ESSENCE_PATTERN = /^[a-z0-9!#$%&'*+.^_`|~-]+\/[a-z0-9!#$%&'*+.^_`|~-]+$/i;
|
|
10567
|
+
var HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX = 64;
|
|
10568
|
+
var HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX = 255;
|
|
10569
|
+
var validateU32 = (name, value) => {
|
|
10570
|
+
if (!Number.isInteger(value) || value < 0 || value > MAX_U32) {
|
|
10571
|
+
throw new RangeError(`${name} must be an integer from 0 through ${MAX_U32}`);
|
|
10572
|
+
}
|
|
10573
|
+
return value;
|
|
10574
|
+
};
|
|
10575
|
+
var validatePositiveU32 = (name, value) => {
|
|
10576
|
+
const validated = validateU32(name, value);
|
|
10577
|
+
if (validated === 0)
|
|
10578
|
+
throw new RangeError(`${name} must be greater than zero`);
|
|
10579
|
+
return validated;
|
|
10580
|
+
};
|
|
10581
|
+
var normalizeOptions = (options) => {
|
|
10582
|
+
const waylandSeat = options.waylandSeat;
|
|
10583
|
+
if (waylandSeat !== undefined && (typeof waylandSeat !== "string" || waylandSeat.length === 0 || waylandSeat.includes("\x00"))) {
|
|
10584
|
+
throw new TypeError("waylandSeat must be a non-empty string without NUL characters");
|
|
10585
|
+
}
|
|
10586
|
+
return {
|
|
10587
|
+
timeoutMs: validateU32("timeoutMs", options.timeoutMs ?? DEFAULT_CLIPBOARD_TIMEOUT_MS),
|
|
10588
|
+
maxReadBytes: validateU32("maxReadBytes", options.maxReadBytes ?? DEFAULT_CLIPBOARD_MAX_BYTES),
|
|
10589
|
+
maxWriteBytes: validateU32("maxWriteBytes", options.maxWriteBytes ?? DEFAULT_CLIPBOARD_MAX_BYTES),
|
|
10590
|
+
maxImagePixels: validateU32("maxImagePixels", options.maxImagePixels ?? DEFAULT_CLIPBOARD_MAX_IMAGE_PIXELS),
|
|
10591
|
+
maxConversionBytes: validateU32("maxConversionBytes", options.maxConversionBytes ?? DEFAULT_CLIPBOARD_MAX_CONVERSION_BYTES),
|
|
10592
|
+
maxConcurrentOperations: validatePositiveU32("maxConcurrentOperations", options.maxConcurrentOperations ?? DEFAULT_CLIPBOARD_MAX_CONCURRENT_OPERATIONS),
|
|
10593
|
+
maxProviderTransfers: validatePositiveU32("maxProviderTransfers", options.maxProviderTransfers ?? DEFAULT_CLIPBOARD_MAX_PROVIDER_TRANSFERS),
|
|
10594
|
+
waylandSeat
|
|
10595
|
+
};
|
|
10596
|
+
};
|
|
10597
|
+
var normalizePreferredTypes = (preferredTypes) => {
|
|
10598
|
+
if (!Array.isArray(preferredTypes) || preferredTypes.length === 0) {
|
|
10599
|
+
throw new TypeError("preferredTypes must contain at least one MIME essence type");
|
|
10600
|
+
}
|
|
10601
|
+
if (preferredTypes.length > HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX) {
|
|
10602
|
+
throw new RangeError(`preferredTypes must contain at most ${HOST_CLIPBOARD_MIME_PREFERENCE_COUNT_MAX} MIME essence types`);
|
|
10603
|
+
}
|
|
10604
|
+
const normalized = preferredTypes.map((mimeType) => {
|
|
10605
|
+
if (typeof mimeType !== "string") {
|
|
10606
|
+
throw new TypeError("preferredTypes must contain valid MIME essence types without parameters");
|
|
10607
|
+
}
|
|
10608
|
+
if (mimeType.length > HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX) {
|
|
10609
|
+
throw new RangeError(`preferredTypes MIME essences must be at most ${HOST_CLIPBOARD_MIME_ESSENCE_BYTES_MAX} ASCII bytes`);
|
|
10610
|
+
}
|
|
10611
|
+
if (!MIME_ESSENCE_PATTERN.test(mimeType)) {
|
|
10612
|
+
throw new TypeError("preferredTypes must contain valid MIME essence types without parameters");
|
|
10613
|
+
}
|
|
10614
|
+
return mimeType.toLowerCase();
|
|
10615
|
+
});
|
|
10616
|
+
return normalized;
|
|
10617
|
+
};
|
|
10618
|
+
var normalizeSelection = (selection) => {
|
|
10619
|
+
const normalized = selection ?? "clipboard";
|
|
10620
|
+
if (normalized !== "clipboard" && normalized !== "primary") {
|
|
10621
|
+
throw new TypeError("selection must be clipboard or primary");
|
|
10622
|
+
}
|
|
10623
|
+
return normalized;
|
|
10624
|
+
};
|
|
10625
|
+
var validateClipboardText = (text, maxWriteBytes) => {
|
|
10626
|
+
if (typeof text !== "string" || text.length === 0)
|
|
10627
|
+
throw new TypeError("writeText requires non-empty text");
|
|
10628
|
+
if (text.includes("\x00"))
|
|
10629
|
+
throw new TypeError("writeText does not support NUL characters");
|
|
10630
|
+
const byteLimit = Math.min(maxWriteBytes, MAX_U32);
|
|
10631
|
+
let byteLength = 0;
|
|
10632
|
+
for (const character of text) {
|
|
10633
|
+
const codePoint = character.codePointAt(0);
|
|
10634
|
+
if (codePoint >= 55296 && codePoint <= 57343) {
|
|
10635
|
+
throw new TypeError("writeText does not support unpaired UTF-16 surrogates");
|
|
10636
|
+
}
|
|
10637
|
+
if (codePoint <= 127) {
|
|
10638
|
+
byteLength += 1;
|
|
10639
|
+
} else if (codePoint <= 2047) {
|
|
10640
|
+
byteLength += 2;
|
|
10641
|
+
} else if (codePoint <= 65535) {
|
|
10642
|
+
byteLength += 3;
|
|
10643
|
+
} else {
|
|
10644
|
+
byteLength += 4;
|
|
10645
|
+
}
|
|
10646
|
+
if (byteLength > byteLimit) {
|
|
10647
|
+
throw new RangeError(`writeText exceeds the configured ${maxWriteBytes} byte limit`);
|
|
10648
|
+
}
|
|
10649
|
+
}
|
|
10650
|
+
};
|
|
10651
|
+
var createActiveOperation = (callerSignal) => {
|
|
10652
|
+
const controller = new AbortController;
|
|
10653
|
+
let settle = () => {};
|
|
10654
|
+
const settled = new Promise((resolve3) => {
|
|
10655
|
+
settle = resolve3;
|
|
10656
|
+
});
|
|
10657
|
+
if (callerSignal) {
|
|
10658
|
+
callerSignal.addEventListener("abort", () => controller.abort(callerSignal.reason), {
|
|
10659
|
+
once: true,
|
|
10660
|
+
signal: controller.signal
|
|
10661
|
+
});
|
|
10662
|
+
}
|
|
10663
|
+
return { controller, settled, settle };
|
|
10664
|
+
};
|
|
10665
|
+
var runTrackedOperation = (active, callerSignal, operation) => {
|
|
10666
|
+
const state = createActiveOperation(callerSignal);
|
|
10667
|
+
active.add(state);
|
|
10668
|
+
let result;
|
|
10669
|
+
try {
|
|
10670
|
+
result = operation(state.controller.signal);
|
|
10671
|
+
} catch (error) {
|
|
10672
|
+
result = Promise.reject(error);
|
|
10673
|
+
}
|
|
10674
|
+
return result.finally(() => {
|
|
10675
|
+
active.delete(state);
|
|
10676
|
+
state.controller.abort();
|
|
10677
|
+
state.settle();
|
|
10678
|
+
});
|
|
10679
|
+
};
|
|
10680
|
+
var createHostClipboardWithBackend = (options, createBackend) => {
|
|
10681
|
+
const config = normalizeOptions(options);
|
|
10682
|
+
const backend2 = createBackend(config);
|
|
10683
|
+
const active = new Set;
|
|
10684
|
+
let disposed = false;
|
|
10685
|
+
let disposePromise;
|
|
10686
|
+
const assertUsable = () => {
|
|
10687
|
+
if (disposed)
|
|
10688
|
+
throw new Error("Host clipboard service is disposed");
|
|
10689
|
+
};
|
|
10690
|
+
return {
|
|
10691
|
+
maxWriteBytes: config.maxWriteBytes,
|
|
10692
|
+
read(readOptions) {
|
|
10693
|
+
try {
|
|
10694
|
+
assertUsable();
|
|
10695
|
+
const preferredTypes = normalizePreferredTypes(readOptions.preferredTypes);
|
|
10696
|
+
const selection = normalizeSelection(readOptions.selection);
|
|
10697
|
+
if (readOptions.signal?.aborted)
|
|
10698
|
+
return Promise.resolve({ status: "cancelled" });
|
|
10699
|
+
if (config.timeoutMs === 0)
|
|
10700
|
+
return Promise.resolve({ status: "timed-out" });
|
|
10701
|
+
return runTrackedOperation(active, readOptions.signal, async (signal) => {
|
|
10702
|
+
const result = await backend2.read({
|
|
10703
|
+
preferredTypes,
|
|
10704
|
+
selection,
|
|
10705
|
+
maxBytes: config.maxReadBytes,
|
|
10706
|
+
timeoutMs: config.timeoutMs,
|
|
10707
|
+
signal
|
|
10708
|
+
});
|
|
10709
|
+
if (result.status !== "read")
|
|
10710
|
+
return result;
|
|
10711
|
+
if (result.representation.bytes.byteLength > config.maxReadBytes)
|
|
10712
|
+
return { status: "limit-exceeded" };
|
|
10713
|
+
return { status: "read", representation: result.representation };
|
|
10714
|
+
});
|
|
10715
|
+
} catch (error) {
|
|
10716
|
+
return Promise.reject(error);
|
|
10717
|
+
}
|
|
10718
|
+
},
|
|
10719
|
+
writeText(text, operationOptions = {}) {
|
|
10720
|
+
try {
|
|
10721
|
+
assertUsable();
|
|
10722
|
+
validateClipboardText(text, config.maxWriteBytes);
|
|
10723
|
+
const selection = normalizeSelection(operationOptions.selection);
|
|
10724
|
+
if (operationOptions.signal?.aborted)
|
|
10725
|
+
return Promise.resolve({ status: "cancelled" });
|
|
10726
|
+
if (config.timeoutMs === 0)
|
|
10727
|
+
return Promise.resolve({ status: "timed-out" });
|
|
10728
|
+
return runTrackedOperation(active, operationOptions.signal, (signal) => backend2.writeText(text, { selection, timeoutMs: config.timeoutMs, signal }));
|
|
10729
|
+
} catch (error) {
|
|
10730
|
+
return Promise.reject(error);
|
|
10731
|
+
}
|
|
10732
|
+
},
|
|
10733
|
+
clear(operationOptions = {}) {
|
|
10734
|
+
try {
|
|
10735
|
+
assertUsable();
|
|
10736
|
+
const selection = normalizeSelection(operationOptions.selection);
|
|
10737
|
+
if (operationOptions.signal?.aborted)
|
|
10738
|
+
return Promise.resolve({ status: "cancelled" });
|
|
10739
|
+
if (config.timeoutMs === 0)
|
|
10740
|
+
return Promise.resolve({ status: "timed-out" });
|
|
10741
|
+
return runTrackedOperation(active, operationOptions.signal, (signal) => backend2.clear({ selection, timeoutMs: config.timeoutMs, signal }));
|
|
10742
|
+
} catch (error) {
|
|
10743
|
+
return Promise.reject(error);
|
|
10744
|
+
}
|
|
10745
|
+
},
|
|
10746
|
+
dispose() {
|
|
10747
|
+
if (disposePromise)
|
|
10748
|
+
return disposePromise;
|
|
10749
|
+
disposed = true;
|
|
10750
|
+
for (const operation of active)
|
|
10751
|
+
operation.controller.abort();
|
|
10752
|
+
disposePromise = (async () => {
|
|
10753
|
+
await Promise.all([...active].map((operation) => operation.settled));
|
|
10754
|
+
await backend2.dispose();
|
|
10755
|
+
})();
|
|
10756
|
+
return disposePromise;
|
|
10757
|
+
}
|
|
10758
|
+
};
|
|
10759
|
+
};
|
|
10760
|
+
|
|
10761
|
+
// src/lib/host-clipboard.native.ts
|
|
10762
|
+
var SHUTDOWN_POLL_INTERVAL_MS = 1;
|
|
10763
|
+
var OPERATION_POLL_INTERVAL_MS = 1;
|
|
10764
|
+
var PROVIDER_POLL_INTERVAL_MS = 8;
|
|
10765
|
+
var MAX_WORK_UNITS_PER_DRAIN = 64;
|
|
10766
|
+
var selectionValue = (selection) => selection === "clipboard" ? 0 : 1;
|
|
10767
|
+
var encodeReadRequest = (preferredTypes) => {
|
|
10768
|
+
const encoder = new TextEncoder;
|
|
10769
|
+
const encoded = preferredTypes.map((mimeType) => encoder.encode(mimeType));
|
|
10770
|
+
const size = encoded.reduce((total, mimeType) => total + 4 + mimeType.byteLength, 4);
|
|
10771
|
+
const request = new Uint8Array(size);
|
|
10772
|
+
const view = new DataView(request.buffer);
|
|
10773
|
+
view.setUint32(0, encoded.length, true);
|
|
10774
|
+
let offset = 4;
|
|
10775
|
+
for (const mimeType of encoded) {
|
|
10776
|
+
view.setUint32(offset, mimeType.byteLength, true);
|
|
10777
|
+
offset += 4;
|
|
10778
|
+
request.set(mimeType, offset);
|
|
10779
|
+
offset += mimeType.byteLength;
|
|
10780
|
+
}
|
|
10781
|
+
return request;
|
|
10782
|
+
};
|
|
10783
|
+
var startFailure = (status) => ({
|
|
10784
|
+
status: "failed",
|
|
10785
|
+
error: new Error(`Native clipboard operation failed to start (${NativeClipboardStartStatus[status]})`)
|
|
10786
|
+
});
|
|
10787
|
+
|
|
10788
|
+
class NativeClipboardBackend {
|
|
10789
|
+
maxImagePixels;
|
|
10790
|
+
maxConversionBytes;
|
|
10791
|
+
library;
|
|
10792
|
+
service;
|
|
10793
|
+
pending = new Map;
|
|
10794
|
+
pollTimer;
|
|
10795
|
+
pollTimerForOperation = false;
|
|
10796
|
+
providerActive = false;
|
|
10797
|
+
disposed = false;
|
|
10798
|
+
disposePromise;
|
|
10799
|
+
constructor(maxImagePixels, maxConversionBytes, maxConcurrentOperations, maxProviderTransfers, waylandSeat) {
|
|
10800
|
+
this.maxImagePixels = maxImagePixels;
|
|
10801
|
+
this.maxConversionBytes = maxConversionBytes;
|
|
10802
|
+
this.library = resolveRenderLib();
|
|
10803
|
+
const service = this.library.clipboardServiceCreate(maxConcurrentOperations, maxProviderTransfers, waylandSeat);
|
|
10804
|
+
if (!service)
|
|
10805
|
+
throw new Error("Failed to create native clipboard service");
|
|
10806
|
+
this.service = service;
|
|
10807
|
+
}
|
|
10808
|
+
read(options) {
|
|
10809
|
+
const request = encodeReadRequest(options.preferredTypes);
|
|
10810
|
+
const started = this.library.clipboardReadOperationStart(this.service, request, selectionValue(options.selection), options.maxBytes, this.maxImagePixels, this.maxConversionBytes, options.timeoutMs);
|
|
10811
|
+
return this.track(started, options.signal, "read");
|
|
10812
|
+
}
|
|
10813
|
+
writeText(text, options) {
|
|
10814
|
+
const started = this.library.clipboardWriteOperationStart(this.service, new TextEncoder().encode(text), selectionValue(options.selection), options.timeoutMs);
|
|
10815
|
+
return this.track(started, options.signal, "write");
|
|
10816
|
+
}
|
|
10817
|
+
clear(options) {
|
|
10818
|
+
const started = this.library.clipboardClearOperationStart(this.service, selectionValue(options.selection), options.timeoutMs);
|
|
10819
|
+
return this.track(started, options.signal, "clear");
|
|
10820
|
+
}
|
|
10821
|
+
dispose() {
|
|
10822
|
+
if (this.disposePromise)
|
|
10823
|
+
return this.disposePromise;
|
|
10824
|
+
this.disposed = true;
|
|
10825
|
+
this.disposePromise = this.shutdown();
|
|
10826
|
+
return this.disposePromise;
|
|
10827
|
+
}
|
|
10828
|
+
track(started, signal, kind) {
|
|
10829
|
+
if (this.disposed)
|
|
10830
|
+
return Promise.reject(new Error("Native clipboard backend is disposed"));
|
|
10831
|
+
if (started.status !== 0 /* Ok */ || !started.operation) {
|
|
10832
|
+
return Promise.resolve(startFailure(started.status));
|
|
10833
|
+
}
|
|
10834
|
+
return new Promise((resolve3, reject) => {
|
|
10835
|
+
const operation = { handle: started.operation, kind, signal, resolve: resolve3, reject };
|
|
10836
|
+
this.pending.set(operation.handle, operation);
|
|
10837
|
+
signal.addEventListener("abort", () => this.requestCancel(operation), { once: true });
|
|
10838
|
+
this.ensureScheduled();
|
|
10839
|
+
this.drain();
|
|
10840
|
+
});
|
|
10841
|
+
}
|
|
10842
|
+
requestCancel(operation) {
|
|
10843
|
+
if (!this.pending.has(operation.handle))
|
|
10844
|
+
return;
|
|
10845
|
+
try {
|
|
10846
|
+
this.library.clipboardOperationCancel(operation.handle);
|
|
10847
|
+
} catch (error) {
|
|
10848
|
+
operation.cleanupError ??= error;
|
|
10849
|
+
}
|
|
10850
|
+
this.ensureScheduled();
|
|
10851
|
+
}
|
|
10852
|
+
ensureScheduled() {
|
|
10853
|
+
const hasPendingOperation = this.pending.size > 0;
|
|
10854
|
+
if (!hasPendingOperation && !this.providerActive) {
|
|
10855
|
+
this.clearPollTimer();
|
|
10856
|
+
return;
|
|
10857
|
+
}
|
|
10858
|
+
if (this.pollTimer !== undefined) {
|
|
10859
|
+
if (hasPendingOperation && !this.pollTimerForOperation)
|
|
10860
|
+
this.clearPollTimer();
|
|
10861
|
+
else {
|
|
10862
|
+
if (hasPendingOperation)
|
|
10863
|
+
this.pollTimer.ref();
|
|
10864
|
+
else
|
|
10865
|
+
this.pollTimer.unref();
|
|
10866
|
+
return;
|
|
10867
|
+
}
|
|
10868
|
+
}
|
|
10869
|
+
this.pollTimerForOperation = hasPendingOperation;
|
|
10870
|
+
this.pollTimer = setTimeout(() => {
|
|
10871
|
+
this.pollTimer = undefined;
|
|
10872
|
+
this.pollTimerForOperation = false;
|
|
10873
|
+
this.drain();
|
|
10874
|
+
}, hasPendingOperation ? OPERATION_POLL_INTERVAL_MS : PROVIDER_POLL_INTERVAL_MS);
|
|
10875
|
+
if (!hasPendingOperation)
|
|
10876
|
+
this.pollTimer.unref();
|
|
10877
|
+
}
|
|
10878
|
+
clearPollTimer() {
|
|
10879
|
+
if (this.pollTimer === undefined)
|
|
10880
|
+
return;
|
|
10881
|
+
clearTimeout(this.pollTimer);
|
|
10882
|
+
this.pollTimer = undefined;
|
|
10883
|
+
this.pollTimerForOperation = false;
|
|
10884
|
+
}
|
|
10885
|
+
drain() {
|
|
10886
|
+
this.providerActive = false;
|
|
10887
|
+
try {
|
|
10888
|
+
this.providerActive = this.library.clipboardServiceDrain(this.service) === 1;
|
|
10889
|
+
} catch (error) {
|
|
10890
|
+
for (const operation of this.pending.values()) {
|
|
10891
|
+
operation.cleanupError ??= error;
|
|
10892
|
+
try {
|
|
10893
|
+
this.library.clipboardOperationCancel(operation.handle);
|
|
10894
|
+
} catch {}
|
|
10895
|
+
}
|
|
10896
|
+
}
|
|
10897
|
+
let workUnits = 0;
|
|
10898
|
+
while (workUnits < MAX_WORK_UNITS_PER_DRAIN && this.pending.size > 0) {
|
|
10899
|
+
const operation = this.pending.values().next().value;
|
|
10900
|
+
if (!operation)
|
|
10901
|
+
break;
|
|
10902
|
+
workUnits += 1;
|
|
10903
|
+
try {
|
|
10904
|
+
if (operation.cleanupError !== undefined) {
|
|
10905
|
+
try {
|
|
10906
|
+
this.library.clipboardOperationCancel(operation.handle);
|
|
10907
|
+
} catch {}
|
|
10908
|
+
const status2 = this.library.clipboardOperationPoll(operation.handle);
|
|
10909
|
+
if (status2 === 0 /* Pending */) {
|
|
10910
|
+
this.rotate(operation);
|
|
10911
|
+
continue;
|
|
10912
|
+
}
|
|
10913
|
+
this.providerActive = true;
|
|
10914
|
+
const destroyed2 = this.library.clipboardOperationDestroy(operation.handle);
|
|
10915
|
+
if (destroyed2 === 1 /* NotReady */) {
|
|
10916
|
+
this.rotate(operation);
|
|
10917
|
+
continue;
|
|
10918
|
+
}
|
|
10919
|
+
this.pending.delete(operation.handle);
|
|
10920
|
+
operation.reject(operation.cleanupError);
|
|
10921
|
+
continue;
|
|
10922
|
+
}
|
|
10923
|
+
if (operation.signal.aborted)
|
|
10924
|
+
this.library.clipboardOperationCancel(operation.handle);
|
|
10925
|
+
const status = this.library.clipboardOperationPoll(operation.handle);
|
|
10926
|
+
if (status === 0 /* Pending */) {
|
|
10927
|
+
this.rotate(operation);
|
|
10928
|
+
continue;
|
|
10929
|
+
}
|
|
10930
|
+
this.providerActive = true;
|
|
10931
|
+
const result = this.readResult(operation.handle, operation.kind, status);
|
|
10932
|
+
const destroyed = this.library.clipboardOperationDestroy(operation.handle);
|
|
10933
|
+
if (destroyed === 1 /* NotReady */) {
|
|
10934
|
+
this.rotate(operation);
|
|
10935
|
+
continue;
|
|
10936
|
+
}
|
|
10937
|
+
this.pending.delete(operation.handle);
|
|
10938
|
+
operation.resolve(destroyed === 0 /* Destroyed */ ? result : { status: "failed", error: new Error("Native clipboard operation became invalid before destruction") });
|
|
10939
|
+
} catch (error) {
|
|
10940
|
+
operation.cleanupError ??= error;
|
|
10941
|
+
try {
|
|
10942
|
+
this.library.clipboardOperationCancel(operation.handle);
|
|
10943
|
+
} catch {}
|
|
10944
|
+
this.rotate(operation);
|
|
10945
|
+
}
|
|
10946
|
+
}
|
|
10947
|
+
this.ensureScheduled();
|
|
10948
|
+
}
|
|
10949
|
+
rotate(operation) {
|
|
10950
|
+
this.pending.delete(operation.handle);
|
|
10951
|
+
this.pending.set(operation.handle, operation);
|
|
10952
|
+
}
|
|
10953
|
+
readResult(handle, kind, status) {
|
|
10954
|
+
switch (status) {
|
|
10955
|
+
case 1 /* Read */:
|
|
10956
|
+
return kind === "read" ? this.readRepresentation(handle) : this.invalidResult(kind, status);
|
|
10957
|
+
case 2 /* Empty */:
|
|
10958
|
+
return kind === "read" ? { status: "empty" } : this.invalidResult(kind, status);
|
|
10959
|
+
case 3 /* Written */:
|
|
10960
|
+
return kind === "write" ? { status: "written" } : this.invalidResult(kind, status);
|
|
10961
|
+
case 4 /* Cleared */:
|
|
10962
|
+
return kind === "clear" ? { status: "cleared" } : this.invalidResult(kind, status);
|
|
10963
|
+
case 5 /* Unsupported */:
|
|
10964
|
+
return { status: "unsupported" };
|
|
10965
|
+
case 6 /* Cancelled */:
|
|
10966
|
+
return { status: "cancelled" };
|
|
10967
|
+
case 7 /* TimedOut */:
|
|
10968
|
+
return { status: "timed-out" };
|
|
10969
|
+
case 8 /* LimitExceeded */:
|
|
10970
|
+
return kind === "read" ? { status: "limit-exceeded" } : this.invalidResult(kind, status);
|
|
10971
|
+
case 9 /* Failed */:
|
|
10972
|
+
return { status: "failed", error: this.readError(handle) };
|
|
10973
|
+
default:
|
|
10974
|
+
return { status: "failed", error: new Error("Native clipboard operation returned an invalid status") };
|
|
10975
|
+
}
|
|
10976
|
+
}
|
|
10977
|
+
invalidResult(kind, status) {
|
|
10978
|
+
return {
|
|
10979
|
+
status: "failed",
|
|
10980
|
+
error: new Error(`Native clipboard ${kind} returned inapplicable status ${NativeClipboardOperationStatus[status]}`)
|
|
10981
|
+
};
|
|
10982
|
+
}
|
|
10983
|
+
readRepresentation(handle) {
|
|
10984
|
+
const mimeLength = this.library.clipboardOperationResultMimeLength(handle);
|
|
10985
|
+
const dataLength = this.library.clipboardOperationResultDataLength(handle);
|
|
10986
|
+
if (mimeLength.status !== 0 /* Ok */ || dataLength.status !== 0 /* Ok */) {
|
|
10987
|
+
return { status: "failed", error: new Error("Failed to read native clipboard result lengths") };
|
|
10988
|
+
}
|
|
10989
|
+
const mime = new Uint8Array(mimeLength.length);
|
|
10990
|
+
const bytes = new Uint8Array(dataLength.length);
|
|
10991
|
+
if (this.library.clipboardOperationResultMimeCopy(handle, mime) !== 0 /* Ok */ || this.library.clipboardOperationResultDataCopy(handle, bytes) !== 0 /* Ok */) {
|
|
10992
|
+
return { status: "failed", error: new Error("Failed to copy native clipboard result") };
|
|
10993
|
+
}
|
|
10994
|
+
return { status: "read", representation: { mimeType: new TextDecoder().decode(mime), bytes } };
|
|
10995
|
+
}
|
|
10996
|
+
readError(handle) {
|
|
10997
|
+
const code = this.library.clipboardOperationResultErrorCode(handle);
|
|
10998
|
+
const length = this.library.clipboardOperationResultDiagnosticLength(handle);
|
|
10999
|
+
if (code.status !== 0 /* Ok */ || length.status !== 0 /* Ok */) {
|
|
11000
|
+
return new Error("Native clipboard operation failed without a readable diagnostic");
|
|
11001
|
+
}
|
|
11002
|
+
const diagnostic = new Uint8Array(length.length);
|
|
11003
|
+
if (this.library.clipboardOperationResultDiagnosticCopy(handle, diagnostic) !== 0 /* Ok */) {
|
|
11004
|
+
return new Error("Native clipboard operation failed without a readable diagnostic");
|
|
11005
|
+
}
|
|
11006
|
+
return Object.assign(new Error(new TextDecoder().decode(diagnostic)), { code: code.errorCode });
|
|
11007
|
+
}
|
|
11008
|
+
async shutdown() {
|
|
11009
|
+
this.clearPollTimer();
|
|
11010
|
+
let status = this.library.clipboardServiceBeginShutdown(this.service);
|
|
11011
|
+
while (status === 0 /* Pending */) {
|
|
11012
|
+
await new Promise((resolve3) => setTimeout(resolve3, SHUTDOWN_POLL_INTERVAL_MS));
|
|
11013
|
+
status = this.library.clipboardServicePollShutdown(this.service);
|
|
11014
|
+
}
|
|
11015
|
+
if (status !== 1 /* Ready */)
|
|
11016
|
+
throw new Error("Native clipboard service became invalid");
|
|
11017
|
+
if (this.library.clipboardServiceDestroy(this.service) !== 0 /* Destroyed */) {
|
|
11018
|
+
throw new Error("Failed to destroy native clipboard service");
|
|
11019
|
+
}
|
|
11020
|
+
}
|
|
11021
|
+
}
|
|
11022
|
+
var createNativeHostClipboardBackend = (options) => new NativeClipboardBackend(options.maxImagePixels, options.maxConversionBytes, options.maxConcurrentOperations, options.maxProviderTransfers, options.waylandSeat);
|
|
11023
|
+
|
|
10551
11024
|
// src/lib/clipboard.ts
|
|
11025
|
+
var NOT_ATTEMPTED_TERMINAL = {
|
|
11026
|
+
status: "not-attempted",
|
|
11027
|
+
capability: "unknown"
|
|
11028
|
+
};
|
|
11029
|
+
var validateSelection = (selection) => {
|
|
11030
|
+
const normalized = selection ?? "clipboard";
|
|
11031
|
+
if (normalized !== "clipboard" && normalized !== "primary") {
|
|
11032
|
+
throw new TypeError("selection must be clipboard or primary");
|
|
11033
|
+
}
|
|
11034
|
+
return normalized;
|
|
11035
|
+
};
|
|
11036
|
+
var createHostClipboard = (options = {}) => createHostClipboardWithBackend(options, createNativeHostClipboardBackend);
|
|
11037
|
+
var validateDestination = (destination) => {
|
|
11038
|
+
if (destination !== "terminal-only" && destination !== "host-only" && destination !== "best-available" && destination !== "all-available") {
|
|
11039
|
+
throw new TypeError("destination is not a supported clipboard policy");
|
|
11040
|
+
}
|
|
11041
|
+
};
|
|
11042
|
+
var createClipboard = ({ host, terminal }) => {
|
|
11043
|
+
const active = new Set;
|
|
11044
|
+
let disposed = false;
|
|
11045
|
+
let disposePromise;
|
|
11046
|
+
const assertUsable = () => {
|
|
11047
|
+
if (disposed)
|
|
11048
|
+
throw new Error("Clipboard service is disposed");
|
|
11049
|
+
};
|
|
11050
|
+
const canUseRemoteHost = (options) => !terminal.remote || options.allowRemoteHost === true;
|
|
11051
|
+
const composeMutation = async (options, signal, hostOperation, terminalOperation) => {
|
|
11052
|
+
if (options.destination === "terminal-only") {
|
|
11053
|
+
return { host: { status: "not-attempted" }, terminal: terminalOperation() };
|
|
11054
|
+
}
|
|
11055
|
+
if (options.destination === "host-only") {
|
|
11056
|
+
const hostResult = canUseRemoteHost(options) ? await hostOperation() : { status: "not-attempted" };
|
|
11057
|
+
return { host: hostResult, terminal: NOT_ATTEMPTED_TERMINAL };
|
|
11058
|
+
}
|
|
11059
|
+
if (options.destination === "best-available") {
|
|
11060
|
+
if (terminal.remote) {
|
|
11061
|
+
return { host: { status: "not-attempted" }, terminal: terminalOperation() };
|
|
11062
|
+
}
|
|
11063
|
+
const hostResult = await hostOperation();
|
|
11064
|
+
const terminalResult2 = !signal.aborted && (hostResult.status === "unsupported" || hostResult.status === "failed") ? terminalOperation() : NOT_ATTEMPTED_TERMINAL;
|
|
11065
|
+
return { host: hostResult, terminal: terminalResult2 };
|
|
11066
|
+
}
|
|
11067
|
+
const hostPromise = canUseRemoteHost(options) ? hostOperation() : Promise.resolve({ status: "not-attempted" });
|
|
11068
|
+
const terminalResult = terminalOperation();
|
|
11069
|
+
return { host: await hostPromise, terminal: terminalResult };
|
|
11070
|
+
};
|
|
11071
|
+
return {
|
|
11072
|
+
read(options) {
|
|
11073
|
+
try {
|
|
11074
|
+
assertUsable();
|
|
11075
|
+
return host.read(options);
|
|
11076
|
+
} catch (error) {
|
|
11077
|
+
return Promise.reject(error);
|
|
11078
|
+
}
|
|
11079
|
+
},
|
|
11080
|
+
writeText(text, options) {
|
|
11081
|
+
try {
|
|
11082
|
+
assertUsable();
|
|
11083
|
+
validateDestination(options.destination);
|
|
11084
|
+
validateClipboardText(text, host.maxWriteBytes);
|
|
11085
|
+
const selection = validateSelection(options.selection);
|
|
11086
|
+
if (options.signal?.aborted) {
|
|
11087
|
+
return Promise.resolve({ host: { status: "not-attempted" }, terminal: NOT_ATTEMPTED_TERMINAL });
|
|
11088
|
+
}
|
|
11089
|
+
return runTrackedOperation(active, options.signal, (signal) => {
|
|
11090
|
+
const operationOptions = { selection, signal };
|
|
11091
|
+
return composeMutation(options, signal, () => host.writeText(text, operationOptions), () => terminal.writeText(text, selection));
|
|
11092
|
+
});
|
|
11093
|
+
} catch (error) {
|
|
11094
|
+
return Promise.reject(error);
|
|
11095
|
+
}
|
|
11096
|
+
},
|
|
11097
|
+
clear(options) {
|
|
11098
|
+
try {
|
|
11099
|
+
assertUsable();
|
|
11100
|
+
validateDestination(options.destination);
|
|
11101
|
+
const selection = validateSelection(options.selection);
|
|
11102
|
+
if (options.signal?.aborted) {
|
|
11103
|
+
return Promise.resolve({ host: { status: "not-attempted" }, terminal: NOT_ATTEMPTED_TERMINAL });
|
|
11104
|
+
}
|
|
11105
|
+
return runTrackedOperation(active, options.signal, (signal) => {
|
|
11106
|
+
const operationOptions = { selection, signal };
|
|
11107
|
+
return composeMutation(options, signal, () => host.clear(operationOptions), () => terminal.clear(selection));
|
|
11108
|
+
});
|
|
11109
|
+
} catch (error) {
|
|
11110
|
+
return Promise.reject(error);
|
|
11111
|
+
}
|
|
11112
|
+
},
|
|
11113
|
+
dispose() {
|
|
11114
|
+
if (disposePromise)
|
|
11115
|
+
return disposePromise;
|
|
11116
|
+
disposed = true;
|
|
11117
|
+
for (const operation of active)
|
|
11118
|
+
operation.controller.abort();
|
|
11119
|
+
disposePromise = (async () => {
|
|
11120
|
+
await Promise.all([...active].map((operation) => operation.settled));
|
|
11121
|
+
await host.dispose();
|
|
11122
|
+
})();
|
|
11123
|
+
return disposePromise;
|
|
11124
|
+
}
|
|
11125
|
+
};
|
|
11126
|
+
};
|
|
10552
11127
|
var ClipboardTarget;
|
|
10553
11128
|
((ClipboardTarget2) => {
|
|
10554
11129
|
ClipboardTarget2[ClipboardTarget2["Clipboard"] = 0] = "Clipboard";
|
|
@@ -10556,6 +11131,33 @@ var ClipboardTarget;
|
|
|
10556
11131
|
ClipboardTarget2[ClipboardTarget2["Select"] = 2] = "Select";
|
|
10557
11132
|
ClipboardTarget2[ClipboardTarget2["Secondary"] = 3] = "Secondary";
|
|
10558
11133
|
})(ClipboardTarget ||= {});
|
|
11134
|
+
var createRendererClipboardAdapter = (renderer) => {
|
|
11135
|
+
const targetFor = (selection) => selection === "primary" ? 1 /* Primary */ : 0 /* Clipboard */;
|
|
11136
|
+
const capability = () => renderer.capabilities?.osc52_support ?? "unknown";
|
|
11137
|
+
return {
|
|
11138
|
+
get remote() {
|
|
11139
|
+
return renderer.capabilities?.remote ?? true;
|
|
11140
|
+
},
|
|
11141
|
+
writeText(text, selection) {
|
|
11142
|
+
const currentCapability = capability();
|
|
11143
|
+
if (currentCapability === "unsupported")
|
|
11144
|
+
return { status: "not-attempted", capability: currentCapability };
|
|
11145
|
+
return {
|
|
11146
|
+
status: renderer.copyToClipboardOSC52(text, targetFor(selection)) ? "attempted" : "local-failure",
|
|
11147
|
+
capability: currentCapability
|
|
11148
|
+
};
|
|
11149
|
+
},
|
|
11150
|
+
clear(selection) {
|
|
11151
|
+
const currentCapability = capability();
|
|
11152
|
+
if (currentCapability === "unsupported")
|
|
11153
|
+
return { status: "not-attempted", capability: currentCapability };
|
|
11154
|
+
return {
|
|
11155
|
+
status: renderer.clearClipboardOSC52(targetFor(selection)) ? "attempted" : "local-failure",
|
|
11156
|
+
capability: currentCapability
|
|
11157
|
+
};
|
|
11158
|
+
}
|
|
11159
|
+
};
|
|
11160
|
+
};
|
|
10559
11161
|
|
|
10560
11162
|
class Clipboard {
|
|
10561
11163
|
lib;
|
|
@@ -12782,6 +13384,55 @@ registerEnvVar({
|
|
|
12782
13384
|
type: "string",
|
|
12783
13385
|
default: ""
|
|
12784
13386
|
});
|
|
13387
|
+
var NativeClipboardOperationStatus;
|
|
13388
|
+
((NativeClipboardOperationStatus2) => {
|
|
13389
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Pending"] = 0] = "Pending";
|
|
13390
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Read"] = 1] = "Read";
|
|
13391
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Empty"] = 2] = "Empty";
|
|
13392
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Written"] = 3] = "Written";
|
|
13393
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Cleared"] = 4] = "Cleared";
|
|
13394
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Unsupported"] = 5] = "Unsupported";
|
|
13395
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Cancelled"] = 6] = "Cancelled";
|
|
13396
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["TimedOut"] = 7] = "TimedOut";
|
|
13397
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["LimitExceeded"] = 8] = "LimitExceeded";
|
|
13398
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["Failed"] = 9] = "Failed";
|
|
13399
|
+
NativeClipboardOperationStatus2[NativeClipboardOperationStatus2["InvalidHandle"] = 10] = "InvalidHandle";
|
|
13400
|
+
})(NativeClipboardOperationStatus ||= {});
|
|
13401
|
+
var NativeClipboardStartStatus;
|
|
13402
|
+
((NativeClipboardStartStatus2) => {
|
|
13403
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["Ok"] = 0] = "Ok";
|
|
13404
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["InvalidService"] = 1] = "InvalidService";
|
|
13405
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["ShuttingDown"] = 2] = "ShuttingDown";
|
|
13406
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["LimitExceeded"] = 3] = "LimitExceeded";
|
|
13407
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["InvalidArgument"] = 4] = "InvalidArgument";
|
|
13408
|
+
NativeClipboardStartStatus2[NativeClipboardStartStatus2["OutOfMemory"] = 5] = "OutOfMemory";
|
|
13409
|
+
})(NativeClipboardStartStatus ||= {});
|
|
13410
|
+
var NativeClipboardCancelStatus;
|
|
13411
|
+
((NativeClipboardCancelStatus2) => {
|
|
13412
|
+
NativeClipboardCancelStatus2[NativeClipboardCancelStatus2["Requested"] = 0] = "Requested";
|
|
13413
|
+
NativeClipboardCancelStatus2[NativeClipboardCancelStatus2["AlreadyTerminal"] = 1] = "AlreadyTerminal";
|
|
13414
|
+
NativeClipboardCancelStatus2[NativeClipboardCancelStatus2["InvalidHandle"] = 2] = "InvalidHandle";
|
|
13415
|
+
})(NativeClipboardCancelStatus ||= {});
|
|
13416
|
+
var NativeClipboardCopyStatus;
|
|
13417
|
+
((NativeClipboardCopyStatus2) => {
|
|
13418
|
+
NativeClipboardCopyStatus2[NativeClipboardCopyStatus2["Ok"] = 0] = "Ok";
|
|
13419
|
+
NativeClipboardCopyStatus2[NativeClipboardCopyStatus2["BufferTooSmall"] = 1] = "BufferTooSmall";
|
|
13420
|
+
NativeClipboardCopyStatus2[NativeClipboardCopyStatus2["InvalidHandle"] = 2] = "InvalidHandle";
|
|
13421
|
+
NativeClipboardCopyStatus2[NativeClipboardCopyStatus2["InvalidState"] = 3] = "InvalidState";
|
|
13422
|
+
NativeClipboardCopyStatus2[NativeClipboardCopyStatus2["InvalidArgument"] = 4] = "InvalidArgument";
|
|
13423
|
+
})(NativeClipboardCopyStatus ||= {});
|
|
13424
|
+
var NativeClipboardDestroyStatus;
|
|
13425
|
+
((NativeClipboardDestroyStatus2) => {
|
|
13426
|
+
NativeClipboardDestroyStatus2[NativeClipboardDestroyStatus2["Destroyed"] = 0] = "Destroyed";
|
|
13427
|
+
NativeClipboardDestroyStatus2[NativeClipboardDestroyStatus2["NotReady"] = 1] = "NotReady";
|
|
13428
|
+
NativeClipboardDestroyStatus2[NativeClipboardDestroyStatus2["InvalidHandle"] = 2] = "InvalidHandle";
|
|
13429
|
+
})(NativeClipboardDestroyStatus ||= {});
|
|
13430
|
+
var NativeClipboardShutdownStatus;
|
|
13431
|
+
((NativeClipboardShutdownStatus2) => {
|
|
13432
|
+
NativeClipboardShutdownStatus2[NativeClipboardShutdownStatus2["Pending"] = 0] = "Pending";
|
|
13433
|
+
NativeClipboardShutdownStatus2[NativeClipboardShutdownStatus2["Ready"] = 1] = "Ready";
|
|
13434
|
+
NativeClipboardShutdownStatus2[NativeClipboardShutdownStatus2["InvalidHandle"] = 2] = "InvalidHandle";
|
|
13435
|
+
})(NativeClipboardShutdownStatus ||= {});
|
|
12785
13436
|
var targetLibPath;
|
|
12786
13437
|
var targetLibError;
|
|
12787
13438
|
try {
|
|
@@ -13144,6 +13795,78 @@ function getOpenTUILib(libPath) {
|
|
|
13144
13795
|
args: ["u32", "u8"],
|
|
13145
13796
|
returns: "bool"
|
|
13146
13797
|
},
|
|
13798
|
+
clipboardServiceCreate: {
|
|
13799
|
+
args: ["u32", "u32", "ptr", "u32"],
|
|
13800
|
+
returns: "u32"
|
|
13801
|
+
},
|
|
13802
|
+
clipboardServiceBeginShutdown: {
|
|
13803
|
+
args: ["u32"],
|
|
13804
|
+
returns: "u8"
|
|
13805
|
+
},
|
|
13806
|
+
clipboardServicePollShutdown: {
|
|
13807
|
+
args: ["u32"],
|
|
13808
|
+
returns: "u8"
|
|
13809
|
+
},
|
|
13810
|
+
clipboardServiceDestroy: {
|
|
13811
|
+
args: ["u32"],
|
|
13812
|
+
returns: "u8"
|
|
13813
|
+
},
|
|
13814
|
+
clipboardServiceDrain: {
|
|
13815
|
+
args: ["u32"],
|
|
13816
|
+
returns: "u8"
|
|
13817
|
+
},
|
|
13818
|
+
clipboardReadOperationStart: {
|
|
13819
|
+
args: ["u32", "ptr", "u32", "u8", "u32", "u32", "u32", "u32", "ptr"],
|
|
13820
|
+
returns: "u8"
|
|
13821
|
+
},
|
|
13822
|
+
clipboardWriteOperationStart: {
|
|
13823
|
+
args: ["u32", "ptr", "u32", "u8", "u32", "ptr"],
|
|
13824
|
+
returns: "u8"
|
|
13825
|
+
},
|
|
13826
|
+
clipboardClearOperationStart: {
|
|
13827
|
+
args: ["u32", "u8", "u32", "ptr"],
|
|
13828
|
+
returns: "u8"
|
|
13829
|
+
},
|
|
13830
|
+
clipboardOperationPoll: {
|
|
13831
|
+
args: ["u32"],
|
|
13832
|
+
returns: "u8"
|
|
13833
|
+
},
|
|
13834
|
+
clipboardOperationCancel: {
|
|
13835
|
+
args: ["u32"],
|
|
13836
|
+
returns: "u8"
|
|
13837
|
+
},
|
|
13838
|
+
clipboardOperationResultMimeLength: {
|
|
13839
|
+
args: ["u32", "ptr"],
|
|
13840
|
+
returns: "u8"
|
|
13841
|
+
},
|
|
13842
|
+
clipboardOperationResultMimeCopy: {
|
|
13843
|
+
args: ["u32", "ptr", "u32"],
|
|
13844
|
+
returns: "u8"
|
|
13845
|
+
},
|
|
13846
|
+
clipboardOperationResultDataLength: {
|
|
13847
|
+
args: ["u32", "ptr"],
|
|
13848
|
+
returns: "u8"
|
|
13849
|
+
},
|
|
13850
|
+
clipboardOperationResultDataCopy: {
|
|
13851
|
+
args: ["u32", "ptr", "u32"],
|
|
13852
|
+
returns: "u8"
|
|
13853
|
+
},
|
|
13854
|
+
clipboardOperationResultErrorCode: {
|
|
13855
|
+
args: ["u32", "ptr"],
|
|
13856
|
+
returns: "u8"
|
|
13857
|
+
},
|
|
13858
|
+
clipboardOperationResultDiagnosticLength: {
|
|
13859
|
+
args: ["u32", "ptr"],
|
|
13860
|
+
returns: "u8"
|
|
13861
|
+
},
|
|
13862
|
+
clipboardOperationResultDiagnosticCopy: {
|
|
13863
|
+
args: ["u32", "ptr", "u32"],
|
|
13864
|
+
returns: "u8"
|
|
13865
|
+
},
|
|
13866
|
+
clipboardOperationDestroy: {
|
|
13867
|
+
args: ["u32"],
|
|
13868
|
+
returns: "u8"
|
|
13869
|
+
},
|
|
13147
13870
|
triggerNotification: {
|
|
13148
13871
|
args: ["u32", "ptr", "u32", "ptr", "u32"],
|
|
13149
13872
|
returns: "bool"
|
|
@@ -13863,8 +14586,10 @@ function getOpenTUILib(libPath) {
|
|
|
13863
14586
|
imageDecode: { args: ["ptr", "u32", "ptr"], returns: "u32" },
|
|
13864
14587
|
imageCreateFromRgba: { args: ["ptr", "u64", "u32", "u32", "u32", "ptr"], returns: "u32" },
|
|
13865
14588
|
imageDestroy: { args: ["u32"], returns: "void" },
|
|
14589
|
+
imageRetain: { args: ["u32", "ptr"], returns: "u32" },
|
|
13866
14590
|
imageGetInfo: { args: ["u32", "ptr"], returns: "u32" },
|
|
13867
14591
|
imageMaterialize: { args: ["u32"], returns: "u32" },
|
|
14592
|
+
imageEnsureEncodedPng: { args: ["u32"], returns: "u32" },
|
|
13868
14593
|
imageGetPixelsPtr: { args: ["u32"], returns: "ptr" },
|
|
13869
14594
|
imageClone: { args: ["u32", "ptr"], returns: "u32" },
|
|
13870
14595
|
imageCopyPixels: { args: ["u32", "ptr", "u64", "u32", "u8"], returns: "u32" },
|
|
@@ -14512,6 +15237,8 @@ class FFIRenderLib {
|
|
|
14512
15237
|
imageDrawOptions: allocStruct(ImageDrawOptionsStruct),
|
|
14513
15238
|
gridDrawOptions: allocStruct(GridDrawOptionsStruct)
|
|
14514
15239
|
};
|
|
15240
|
+
disposed = false;
|
|
15241
|
+
clipboardServices = new Set;
|
|
14515
15242
|
encoder = new TextEncoder;
|
|
14516
15243
|
decoder = new TextDecoder;
|
|
14517
15244
|
logCallbackWrapper = null;
|
|
@@ -14593,6 +15320,12 @@ class FFIRenderLib {
|
|
|
14593
15320
|
this.opentui.symbols.setLogCallback(callbackPtr);
|
|
14594
15321
|
}
|
|
14595
15322
|
dispose() {
|
|
15323
|
+
if (this.disposed)
|
|
15324
|
+
return;
|
|
15325
|
+
if (this.clipboardServices.size > 0) {
|
|
15326
|
+
throw new Error("Cannot dispose OpenTUI native library while clipboard services are active");
|
|
15327
|
+
}
|
|
15328
|
+
this.disposed = true;
|
|
14596
15329
|
try {
|
|
14597
15330
|
if (this.eventSinkPtr) {
|
|
14598
15331
|
this.opentui.symbols.destroyEventSink(this.eventSinkPtr);
|
|
@@ -14991,6 +15724,96 @@ class FFIRenderLib {
|
|
|
14991
15724
|
clearClipboardOSC52(renderer, target) {
|
|
14992
15725
|
return Boolean(this.opentui.symbols.clearClipboardOSC52(renderer, target));
|
|
14993
15726
|
}
|
|
15727
|
+
clipboardServiceCreate(maxConcurrentOperations, maxProviderTransfers, waylandSeat) {
|
|
15728
|
+
const seat = waylandSeat === undefined ? null : this.encoder.encode(waylandSeat);
|
|
15729
|
+
const handle = this.opentui.symbols.clipboardServiceCreate(toSafeFFIU32Length(maxConcurrentOperations, "clipboard operation limit"), toSafeFFIU32Length(maxProviderTransfers, "clipboard provider transfer limit"), seat, seat?.byteLength ?? 0);
|
|
15730
|
+
if (handle === 0)
|
|
15731
|
+
return null;
|
|
15732
|
+
const service = handle;
|
|
15733
|
+
this.clipboardServices.add(service);
|
|
15734
|
+
return service;
|
|
15735
|
+
}
|
|
15736
|
+
clipboardServiceBeginShutdown(service) {
|
|
15737
|
+
if (!this.clipboardServices.has(service))
|
|
15738
|
+
return 2 /* InvalidHandle */;
|
|
15739
|
+
return this.opentui.symbols.clipboardServiceBeginShutdown(service);
|
|
15740
|
+
}
|
|
15741
|
+
clipboardServicePollShutdown(service) {
|
|
15742
|
+
if (!this.clipboardServices.has(service))
|
|
15743
|
+
return 2 /* InvalidHandle */;
|
|
15744
|
+
return this.opentui.symbols.clipboardServicePollShutdown(service);
|
|
15745
|
+
}
|
|
15746
|
+
clipboardServiceDestroy(service) {
|
|
15747
|
+
if (!this.clipboardServices.has(service))
|
|
15748
|
+
return 2 /* InvalidHandle */;
|
|
15749
|
+
const status = this.opentui.symbols.clipboardServiceDestroy(service);
|
|
15750
|
+
if (status === 0 /* Destroyed */)
|
|
15751
|
+
this.clipboardServices.delete(service);
|
|
15752
|
+
return status;
|
|
15753
|
+
}
|
|
15754
|
+
clipboardServiceDrain(service) {
|
|
15755
|
+
if (!this.clipboardServices.has(service))
|
|
15756
|
+
return 2;
|
|
15757
|
+
return this.opentui.symbols.clipboardServiceDrain(service);
|
|
15758
|
+
}
|
|
15759
|
+
clipboardStartResult(status, output) {
|
|
15760
|
+
return {
|
|
15761
|
+
status,
|
|
15762
|
+
operation: output[0] === 0 ? null : output[0]
|
|
15763
|
+
};
|
|
15764
|
+
}
|
|
15765
|
+
clipboardReadOperationStart(service, request, selection2, maxBytes, maxImagePixels, maxConversionBytes, timeoutMs) {
|
|
15766
|
+
const output = new Uint32Array(1);
|
|
15767
|
+
const status = this.opentui.symbols.clipboardReadOperationStart(service, request, toSafeFFIU32Length(request.byteLength, "clipboard read request"), selection2, toSafeFFIU32Length(maxBytes, "clipboard read byte limit"), toSafeFFIU32Length(maxImagePixels, "clipboard image pixel limit"), toSafeFFIU32Length(maxConversionBytes, "clipboard conversion byte limit"), toSafeFFIU32Length(timeoutMs, "clipboard read timeout"), output);
|
|
15768
|
+
return this.clipboardStartResult(status, output);
|
|
15769
|
+
}
|
|
15770
|
+
clipboardWriteOperationStart(service, textUtf8, selection2, timeoutMs) {
|
|
15771
|
+
const output = new Uint32Array(1);
|
|
15772
|
+
const status = this.opentui.symbols.clipboardWriteOperationStart(service, textUtf8, toSafeFFIU32Length(textUtf8.byteLength, "clipboard write text"), selection2, toSafeFFIU32Length(timeoutMs, "clipboard write timeout"), output);
|
|
15773
|
+
return this.clipboardStartResult(status, output);
|
|
15774
|
+
}
|
|
15775
|
+
clipboardClearOperationStart(service, selection2, timeoutMs) {
|
|
15776
|
+
const output = new Uint32Array(1);
|
|
15777
|
+
const status = this.opentui.symbols.clipboardClearOperationStart(service, selection2, toSafeFFIU32Length(timeoutMs, "clipboard clear timeout"), output);
|
|
15778
|
+
return this.clipboardStartResult(status, output);
|
|
15779
|
+
}
|
|
15780
|
+
clipboardOperationPoll(operation) {
|
|
15781
|
+
return this.opentui.symbols.clipboardOperationPoll(operation);
|
|
15782
|
+
}
|
|
15783
|
+
clipboardOperationCancel(operation) {
|
|
15784
|
+
return this.opentui.symbols.clipboardOperationCancel(operation);
|
|
15785
|
+
}
|
|
15786
|
+
clipboardResultLength(symbol, operation) {
|
|
15787
|
+
const output = new Uint32Array(1);
|
|
15788
|
+
const status = symbol(operation, output);
|
|
15789
|
+
return { status, length: output[0] };
|
|
15790
|
+
}
|
|
15791
|
+
clipboardOperationResultMimeLength(operation) {
|
|
15792
|
+
return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultMimeLength, operation);
|
|
15793
|
+
}
|
|
15794
|
+
clipboardOperationResultMimeCopy(operation, output) {
|
|
15795
|
+
return this.opentui.symbols.clipboardOperationResultMimeCopy(operation, output.byteLength === 0 ? null : output, toSafeFFIU32Length(output.byteLength, "clipboard MIME output"));
|
|
15796
|
+
}
|
|
15797
|
+
clipboardOperationResultDataLength(operation) {
|
|
15798
|
+
return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultDataLength, operation);
|
|
15799
|
+
}
|
|
15800
|
+
clipboardOperationResultDataCopy(operation, output) {
|
|
15801
|
+
return this.opentui.symbols.clipboardOperationResultDataCopy(operation, output.byteLength === 0 ? null : output, toSafeFFIU32Length(output.byteLength, "clipboard data output"));
|
|
15802
|
+
}
|
|
15803
|
+
clipboardOperationResultErrorCode(operation) {
|
|
15804
|
+
const output = new Uint32Array(1);
|
|
15805
|
+
const status = this.opentui.symbols.clipboardOperationResultErrorCode(operation, output);
|
|
15806
|
+
return { status, errorCode: output[0] };
|
|
15807
|
+
}
|
|
15808
|
+
clipboardOperationResultDiagnosticLength(operation) {
|
|
15809
|
+
return this.clipboardResultLength(this.opentui.symbols.clipboardOperationResultDiagnosticLength, operation);
|
|
15810
|
+
}
|
|
15811
|
+
clipboardOperationResultDiagnosticCopy(operation, output) {
|
|
15812
|
+
return this.opentui.symbols.clipboardOperationResultDiagnosticCopy(operation, output.byteLength === 0 ? null : output, toSafeFFIU32Length(output.byteLength, "clipboard diagnostic output"));
|
|
15813
|
+
}
|
|
15814
|
+
clipboardOperationDestroy(operation) {
|
|
15815
|
+
return this.opentui.symbols.clipboardOperationDestroy(operation);
|
|
15816
|
+
}
|
|
14994
15817
|
triggerNotification(renderer, message, title) {
|
|
14995
15818
|
const messageBytes = this.encoder.encode(message);
|
|
14996
15819
|
const titleBytes = title === undefined ? null : this.encoder.encode(title);
|
|
@@ -16372,6 +17195,10 @@ class FFIRenderLib {
|
|
|
16372
17195
|
imageDestroy(image) {
|
|
16373
17196
|
this.opentui.symbols.imageDestroy(image);
|
|
16374
17197
|
}
|
|
17198
|
+
imageRetain(image) {
|
|
17199
|
+
const output = new Uint32Array(1);
|
|
17200
|
+
return this.imageHandleResult(this.opentui.symbols.imageRetain(image, output), output);
|
|
17201
|
+
}
|
|
16375
17202
|
imageRetainIccCache() {
|
|
16376
17203
|
this.opentui.symbols.imageRetainIccCache();
|
|
16377
17204
|
}
|
|
@@ -16393,6 +17220,9 @@ class FFIRenderLib {
|
|
|
16393
17220
|
imageMaterialize(image) {
|
|
16394
17221
|
return this.opentui.symbols.imageMaterialize(image);
|
|
16395
17222
|
}
|
|
17223
|
+
imageEnsureEncodedPng(image) {
|
|
17224
|
+
return this.opentui.symbols.imageEnsureEncodedPng(image);
|
|
17225
|
+
}
|
|
16396
17226
|
imageClone(image) {
|
|
16397
17227
|
const output = new Uint32Array(1);
|
|
16398
17228
|
return this.imageHandleResult(this.opentui.symbols.imageClone(image, output), output);
|
|
@@ -17436,7 +18266,7 @@ var Yoga = {
|
|
|
17436
18266
|
};
|
|
17437
18267
|
var yoga_default = Yoga;
|
|
17438
18268
|
|
|
17439
|
-
export { toArrayBuffer, singleton, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, sleep, stringWidth2 as stringWidth, resolveBundledFilePath, DEFAULT_FOREGROUND_RGB, DEFAULT_BACKGROUND_RGB, normalizeIndexedColorIndex, ansi256IndexToRgb, RGBA, normalizeColorValue, hexToRgb, rgbToHex, hsvToRgb, parseColor, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, TargetChannel, createTextAttributes, attributesWithLink, getLinkId, 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, link, t, hastToStyledText, SystemClock, nonAlphanumericKeys, terminalNamedSingleStrokeKeys, parseKeypress, LinearScrollAccel, MacOSScrollAccel, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, StdinParser, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extensionToFiletype, basenameToFiletype, extToFiletype, pathToFiletype, infoStringToFiletype, getTreeSitterClient, destroyTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, normalizeTerminalPalette, buildTerminalPaletteSignature, decodePasteBytes, stripAnsiSequences, ClipboardTarget, Clipboard, detectLinks, OptimizedBuffer, TextBuffer, SpanInfoStruct, NativeAudioStreamFormat, NativeAudioStreamState, NativeAudioStreamStateNames, NativeAudioStreamCloseReason, NativeAudioStreamState2 as NativeAudioStreamState1, NativeAudioStreamCloseReason2 as NativeAudioStreamCloseReason1, NativeAudioStreamFormat2 as NativeAudioStreamFormat1, LogLevel2 as LogLevel, NativeMeasureTargetKind, setRenderLibPath, resolveRenderLib, Align, BoxSizing, Dimension, Direction, Display, Edge, Errata, ExperimentalFeature, FlexDirection, Gutter, Justify, LogLevel as LogLevel1, MeasureMode, NodeType, Overflow, PositionType, Unit, Wrap, ALIGN_AUTO, ALIGN_FLEX_START, ALIGN_CENTER, ALIGN_FLEX_END, ALIGN_STRETCH, ALIGN_BASELINE, ALIGN_SPACE_BETWEEN, ALIGN_SPACE_AROUND, ALIGN_SPACE_EVENLY, BOX_SIZING_BORDER_BOX, BOX_SIZING_CONTENT_BOX, DIMENSION_WIDTH, DIMENSION_HEIGHT, DIRECTION_INHERIT, DIRECTION_LTR, DIRECTION_RTL, DISPLAY_FLEX, DISPLAY_NONE, DISPLAY_CONTENTS, EDGE_LEFT, EDGE_TOP, EDGE_RIGHT, EDGE_BOTTOM, EDGE_START, EDGE_END, EDGE_HORIZONTAL, EDGE_VERTICAL, EDGE_ALL, ERRATA_NONE, ERRATA_STRETCH_FLEX_BASIS, ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING, ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE, ERRATA_ALL, ERRATA_CLASSIC, EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS, FLEX_DIRECTION_COLUMN, FLEX_DIRECTION_COLUMN_REVERSE, FLEX_DIRECTION_ROW, FLEX_DIRECTION_ROW_REVERSE, GUTTER_COLUMN, GUTTER_ROW, GUTTER_ALL, JUSTIFY_FLEX_START, JUSTIFY_CENTER, JUSTIFY_FLEX_END, JUSTIFY_SPACE_BETWEEN, JUSTIFY_SPACE_AROUND, JUSTIFY_SPACE_EVENLY, LOG_LEVEL_ERROR, LOG_LEVEL_WARN, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_VERBOSE, LOG_LEVEL_FATAL, MEASURE_MODE_UNDEFINED, MEASURE_MODE_EXACTLY, MEASURE_MODE_AT_MOST, NODE_TYPE_DEFAULT, NODE_TYPE_TEXT, OVERFLOW_VISIBLE, OVERFLOW_HIDDEN, OVERFLOW_SCROLL, POSITION_TYPE_STATIC, POSITION_TYPE_RELATIVE, POSITION_TYPE_ABSOLUTE, UNIT_UNDEFINED, UNIT_POINT, UNIT_PERCENT, UNIT_AUTO, WRAP_NO_WRAP, WRAP_WRAP, WRAP_WRAP_REVERSE, Config, Node, exports_yoga, yoga_default };
|
|
18269
|
+
export { toArrayBuffer, singleton, envRegistry, registerEnvVar, clearEnvCache, generateEnvMarkdown, generateEnvColored, env, sleep, stringWidth2 as stringWidth, resolveBundledFilePath, DEFAULT_FOREGROUND_RGB, DEFAULT_BACKGROUND_RGB, normalizeIndexedColorIndex, ansi256IndexToRgb, RGBA, normalizeColorValue, hexToRgb, rgbToHex, hsvToRgb, parseColor, isValidBorderStyle, parseBorderStyle, BorderChars, getBorderFromSides, getBorderSides, borderCharsToArray, BorderCharArrays, KeyEvent, PasteEvent, KeyHandler, InternalKeyHandler, fonts, measureText, getCharacterPositions, coordinateToCharacterIndex, renderFontToFrameBuffer, TextAttributes, ATTRIBUTE_BASE_BITS, ATTRIBUTE_BASE_MASK, getBaseAttributes, DebugOverlayCorner, TargetChannel, createTextAttributes, attributesWithLink, getLinkId, 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, link, t, hastToStyledText, SystemClock, nonAlphanumericKeys, terminalNamedSingleStrokeKeys, parseKeypress, LinearScrollAccel, MacOSScrollAccel, parseAlign, parseAlignItems, parseBoxSizing, parseDimension, parseDirection, parseDisplay, parseEdge, parseFlexDirection, parseGutter, parseJustify, parseLogLevel, parseMeasureMode, parseOverflow, parsePositionType, parseUnit, parseWrap, MouseParser, Selection, convertGlobalToLocalSelection, ASCIIFontSelectionHelper, StdinParser, treeSitterToTextChunks, treeSitterToStyledText, addDefaultParsers, TreeSitterClient, DataPathsManager, getDataPaths, extensionToFiletype, basenameToFiletype, extToFiletype, pathToFiletype, infoStringToFiletype, getTreeSitterClient, destroyTreeSitterClient, ExtmarksController, createExtmarksController, TerminalPalette, createTerminalPalette, normalizeTerminalPalette, buildTerminalPaletteSignature, decodePasteBytes, stripAnsiSequences, createHostClipboard, createClipboard, ClipboardTarget, createRendererClipboardAdapter, Clipboard, detectLinks, OptimizedBuffer, TextBuffer, SpanInfoStruct, NativeAudioStreamFormat, NativeAudioStreamState, NativeAudioStreamStateNames, NativeAudioStreamCloseReason, NativeAudioStreamState2 as NativeAudioStreamState1, NativeAudioStreamCloseReason2 as NativeAudioStreamCloseReason1, NativeAudioStreamFormat2 as NativeAudioStreamFormat1, NativeClipboardOperationStatus, NativeClipboardStartStatus, NativeClipboardCancelStatus, NativeClipboardCopyStatus, NativeClipboardDestroyStatus, NativeClipboardShutdownStatus, LogLevel2 as LogLevel, NativeMeasureTargetKind, setRenderLibPath, resolveRenderLib, Align, BoxSizing, Dimension, Direction, Display, Edge, Errata, ExperimentalFeature, FlexDirection, Gutter, Justify, LogLevel as LogLevel1, MeasureMode, NodeType, Overflow, PositionType, Unit, Wrap, ALIGN_AUTO, ALIGN_FLEX_START, ALIGN_CENTER, ALIGN_FLEX_END, ALIGN_STRETCH, ALIGN_BASELINE, ALIGN_SPACE_BETWEEN, ALIGN_SPACE_AROUND, ALIGN_SPACE_EVENLY, BOX_SIZING_BORDER_BOX, BOX_SIZING_CONTENT_BOX, DIMENSION_WIDTH, DIMENSION_HEIGHT, DIRECTION_INHERIT, DIRECTION_LTR, DIRECTION_RTL, DISPLAY_FLEX, DISPLAY_NONE, DISPLAY_CONTENTS, EDGE_LEFT, EDGE_TOP, EDGE_RIGHT, EDGE_BOTTOM, EDGE_START, EDGE_END, EDGE_HORIZONTAL, EDGE_VERTICAL, EDGE_ALL, ERRATA_NONE, ERRATA_STRETCH_FLEX_BASIS, ERRATA_ABSOLUTE_POSITION_WITHOUT_INSETS_EXCLUDES_PADDING, ERRATA_ABSOLUTE_PERCENT_AGAINST_INNER_SIZE, ERRATA_ALL, ERRATA_CLASSIC, EXPERIMENTAL_FEATURE_WEB_FLEX_BASIS, FLEX_DIRECTION_COLUMN, FLEX_DIRECTION_COLUMN_REVERSE, FLEX_DIRECTION_ROW, FLEX_DIRECTION_ROW_REVERSE, GUTTER_COLUMN, GUTTER_ROW, GUTTER_ALL, JUSTIFY_FLEX_START, JUSTIFY_CENTER, JUSTIFY_FLEX_END, JUSTIFY_SPACE_BETWEEN, JUSTIFY_SPACE_AROUND, JUSTIFY_SPACE_EVENLY, LOG_LEVEL_ERROR, LOG_LEVEL_WARN, LOG_LEVEL_INFO, LOG_LEVEL_DEBUG, LOG_LEVEL_VERBOSE, LOG_LEVEL_FATAL, MEASURE_MODE_UNDEFINED, MEASURE_MODE_EXACTLY, MEASURE_MODE_AT_MOST, NODE_TYPE_DEFAULT, NODE_TYPE_TEXT, OVERFLOW_VISIBLE, OVERFLOW_HIDDEN, OVERFLOW_SCROLL, POSITION_TYPE_STATIC, POSITION_TYPE_RELATIVE, POSITION_TYPE_ABSOLUTE, UNIT_UNDEFINED, UNIT_POINT, UNIT_PERCENT, UNIT_AUTO, WRAP_NO_WRAP, WRAP_WRAP, WRAP_WRAP_REVERSE, Config, Node, exports_yoga, yoga_default };
|
|
17440
18270
|
|
|
17441
|
-
//# debugId=
|
|
17442
|
-
//# sourceMappingURL=chunk-bun-
|
|
18271
|
+
//# debugId=B3125C50E879066564756E2164756E21
|
|
18272
|
+
//# sourceMappingURL=chunk-bun-26r5c5w5.js.map
|