@simon_he/vue-tui 1.0.1 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +99 -46
- package/dist/TMermaidText-CXm_L969.js +885 -0
- package/dist/{TSelect-HzILuti9.js → TSelect-CiyMvwl-.js} +60 -81
- package/dist/{TTree-ChOot2Bh.js → TTree-DKGiuIcM.js} +140 -103
- package/dist/agent/mermaid.cjs +2 -0
- package/dist/agent/mermaid.d.cts +2 -0
- package/dist/agent/mermaid.d.ts +2 -0
- package/dist/agent/mermaid.js +1 -0
- package/dist/agent.cjs +31184 -24907
- package/dist/agent.d.cts +11 -1
- package/dist/agent.d.ts +11 -1
- package/dist/agent.js +1700 -13
- package/dist/block-source-5CQp4tF8.js +3230 -0
- package/dist/cli/stdin-buffer.d.ts +1 -1
- package/dist/cli.cjs +5363 -6178
- package/dist/cli.d.cts +5 -1
- package/dist/cli.d.ts +5 -1
- package/dist/cli.js +3569 -302
- package/dist/core/buffer/buffer.d.ts +2 -2
- package/dist/core/buffer/eaw-ranges-unicode-17.d.ts +14 -0
- package/dist/core/perf/instrumentation-noop.d.ts +48 -0
- package/dist/core/perf/instrumentation.d.ts +136 -0
- package/dist/core/terminal/create-terminal.d.ts +1 -0
- package/dist/core/types.d.ts +0 -4
- package/dist/core.cjs +851 -1462
- package/dist/core.js +6 -6
- package/dist/{create-terminal-C2oiWFJU.js → create-terminal-DXuZ2fci.js} +54 -19
- package/dist/debug-logger-ChY_PXVk.js +74 -0
- package/dist/{dom-renderer-BqGijQID.js → dom-renderer-DNzmg2As.js} +2 -2
- package/dist/experimental.cjs +4115 -5928
- package/dist/experimental.d.cts +2 -0
- package/dist/experimental.d.ts +2 -0
- package/dist/experimental.js +1490 -9
- package/dist/frame-perf-BBhE-iuS.js +111 -0
- package/dist/{sgr-BmzxEjAO.js → hyperlink-B35-O-cW.js} +100 -1
- package/dist/index.cjs +5025 -10332
- package/dist/index.js +16 -14
- package/dist/{linkify-D_gzn9Xq.js → linkify-CuuquMQT.js} +32 -3
- package/dist/markdown.cjs +21295 -12691
- package/dist/markdown.d.cts +1 -1
- package/dist/markdown.d.ts +1 -1
- package/dist/markdown.js +211 -51
- package/dist/mermaid-CWto52Wk.js +123 -0
- package/dist/mermaid.cjs +1707 -0
- package/dist/mermaid.d.cts +3 -0
- package/dist/mermaid.d.ts +3 -0
- package/dist/mermaid.js +6 -0
- package/dist/observability/frame-perf-store.d.ts +2 -1
- package/dist/observability/frame-perf.d.ts +33 -0
- package/dist/observability.cjs +106 -107
- package/dist/observability.d.cts +2 -2
- package/dist/observability.d.ts +2 -2
- package/dist/observability.js +3 -3
- package/dist/{path-suggest-BNqcuE3-.js → path-suggest-fPzRsgPv.js} +1 -1
- package/dist/{wheel-scroll-vBRaQ7p-.js → rect-Ng-3eKzF.js} +253 -117
- package/dist/renderer/cli/index.d.ts +1 -1
- package/dist/renderer/cli/stdout-metrics.d.ts +10 -0
- package/dist/renderer/cli/stdout-renderer.d.ts +53 -7
- package/dist/renderer/terminal-graphic-render-queue.d.ts +50 -0
- package/dist/renderer/terminal-graphics-trace.d.ts +53 -0
- package/dist/renderer/terminal-graphics.d.ts +146 -0
- package/dist/renderer-dom.cjs +364 -903
- package/dist/renderer-dom.js +4 -4
- package/dist/runtime/index.d.ts +2 -0
- package/dist/{runtime-rfcZCyJq.js → runtime-D77C03RM.js} +28 -15
- package/dist/runtime.cjs +427 -889
- package/dist/runtime.js +2 -2
- package/dist/{terminal-selection-DBinO6p5.js → terminal-selection-CQYr--26.js} +4 -1
- package/dist/{tlog-theme-CvLFNMwk.js → tlog-theme-CopRt9SC.js} +37 -6
- package/dist/{trace-CjzYeIxN.js → trace-CYHDKM1m.js} +5 -0
- package/dist/vue/agent/create-png-terminal-graphic-renderer.d.ts +19 -0
- package/dist/vue/components/TAgentTerminalGraphic.d.ts +481 -0
- package/dist/vue/components/TCharts.d.ts +1121 -0
- package/dist/vue/components/TFeedback.d.ts +1 -1
- package/dist/vue/components/TFlex.d.ts +389 -0
- package/dist/vue/components/TForm.d.ts +4 -4
- package/dist/vue/components/TLogSearchBar.d.ts +3 -3
- package/dist/vue/components/TLogSearchPager.d.ts +2 -2
- package/dist/vue/components/TMarkdownText.d.ts +162 -4
- package/dist/vue/components/TMermaidText.d.ts +900 -0
- package/dist/vue/components/TVirtualList.d.ts +9 -0
- package/dist/vue/components/TVirtualMarkdown.d.ts +170 -9
- package/dist/vue/components/TVirtualRows.d.ts +9 -0
- package/dist/vue/components/TerminalProvider.d.ts +2 -0
- package/dist/vue/context.d.ts +24 -0
- package/dist/vue/index.d.ts +5 -0
- package/dist/vue/layout/flex.d.ts +67 -0
- package/dist/vue/markdown/ast.d.ts +5 -2
- package/dist/vue/markdown/document.d.ts +5 -0
- package/dist/vue/markdown/image-actions.d.ts +14 -0
- package/dist/vue/markdown/image.d.ts +11 -0
- package/dist/vue/markdown/link-actions.d.ts +14 -0
- package/dist/vue/markdown/math-actions.d.ts +14 -0
- package/dist/vue/markdown/math.d.ts +6 -0
- package/dist/vue/markdown/render.d.ts +28 -0
- package/dist/vue/markdown/types.d.ts +78 -0
- package/dist/vue/mermaid/beautiful-mermaid.d.ts +1436 -0
- package/dist/vue/render/render-manager.d.ts +7 -0
- package/dist/vue.cjs +7215 -12430
- package/dist/vue.js +706 -39
- package/dist/wheel-scroll-CQ22Hcyj.js +106 -0
- package/dist/{hyperlink-Bn02UXJb.js → width-GqllnV8C.js} +166 -111
- package/package.json +107 -18
- package/dist/block-source-CKUOnkgT.js +0 -1663
- package/dist/frame-perf-C6Xfg85O.js +0 -24
- /package/dist/{env-Cl8qmNFN.js → env-DNCzvX8b.js} +0 -0
- /package/dist/{path-mnSgEpCm.js → path-BI9W15Zt.js} +0 -0
package/dist/core.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { TERMINAL_RENDER_PLANES, createTerminal } from "./create-terminal-
|
|
2
|
-
import { charCellWidth
|
|
3
|
-
import { parseAnsiSgr } from "./
|
|
1
|
+
import { TERMINAL_RENDER_PLANES, createTerminal } from "./create-terminal-DXuZ2fci.js";
|
|
2
|
+
import { charCellWidth } from "./width-GqllnV8C.js";
|
|
3
|
+
import { isSafeRelativeHref, parseAnsiSgr, sanitizeDomHref, sanitizeTerminalHref } from "./hyperlink-B35-O-cW.js";
|
|
4
4
|
import { ansiColorRgb } from "./ansi-palette-CNXqFciC.js";
|
|
5
|
-
import { firstNonEmptyEnv } from "./env-
|
|
6
|
-
import { normalizeNewlines } from "./path-
|
|
7
|
-
import { parsePathQuery, resolveUserPath, suggestParentHint, suggestPaths } from "./path-suggest-
|
|
5
|
+
import { firstNonEmptyEnv } from "./env-DNCzvX8b.js";
|
|
6
|
+
import { normalizeNewlines } from "./path-BI9W15Zt.js";
|
|
7
|
+
import { parsePathQuery, resolveUserPath, suggestParentHint, suggestPaths } from "./path-suggest-fPzRsgPv.js";
|
|
8
8
|
|
|
9
9
|
//#region src/core/ansi/colors.ts
|
|
10
10
|
const ANSI8_COLOR_NAMES = Object.freeze([
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { charCellWidth, segmentedGraphemes } from "./
|
|
2
|
-
import { parseAnsiSgr } from "./
|
|
1
|
+
import { charCellWidth, segmentedGraphemes } from "./width-GqllnV8C.js";
|
|
2
|
+
import { parseAnsiSgr } from "./hyperlink-B35-O-cW.js";
|
|
3
3
|
|
|
4
4
|
//#region src/core/render-plane.ts
|
|
5
5
|
const TERMINAL_RENDER_PLANES = [
|
|
@@ -106,14 +106,14 @@ function clamp(n, min, max) {
|
|
|
106
106
|
return Math.max(min, Math.min(max, n));
|
|
107
107
|
}
|
|
108
108
|
/**
|
|
109
|
-
* Register a fingerprint function on the buffer. This enables SoA fingerprint
|
|
109
|
+
* Register or clear a fingerprint function on the buffer. This enables SoA fingerprint
|
|
110
110
|
* pre-computation: cell writes will update fingerprints inline, and the renderer
|
|
111
111
|
* can read them via getRowFingerprints() instead of per-cell hash computation.
|
|
112
112
|
*/
|
|
113
113
|
function setFingerprintFn(buffer, fn) {
|
|
114
114
|
buffer.fingerprintFn = fn;
|
|
115
115
|
const len = buffer.rows * buffer.cols;
|
|
116
|
-
if (!len) {
|
|
116
|
+
if (!fn || !len) {
|
|
117
117
|
buffer.soaFingerprints = null;
|
|
118
118
|
return;
|
|
119
119
|
}
|
|
@@ -134,7 +134,10 @@ function setFingerprintFn(buffer, fn) {
|
|
|
134
134
|
*/
|
|
135
135
|
function getRowFingerprints(buffer, y) {
|
|
136
136
|
if (!buffer.soaFingerprints) return null;
|
|
137
|
-
|
|
137
|
+
if (buffer.rows <= 0 || buffer.cols <= 0) return null;
|
|
138
|
+
const yy = Math.floor(y);
|
|
139
|
+
if (!Number.isFinite(yy) || yy < 0 || yy >= buffer.rows) return null;
|
|
140
|
+
const physY = physicalRowIndex(buffer, yy);
|
|
138
141
|
const base = physY * buffer.cols;
|
|
139
142
|
return buffer.soaFingerprints.subarray(base, base + buffer.cols);
|
|
140
143
|
}
|
|
@@ -424,9 +427,12 @@ function resizeBuffer(buffer, cols, rows) {
|
|
|
424
427
|
const nextCols = Math.max(0, Math.floor(cols));
|
|
425
428
|
const nextRows = Math.max(0, Math.floor(rows));
|
|
426
429
|
if (nextCols === buffer.cols && nextRows === buffer.rows) return;
|
|
430
|
+
const prevRows = buffer.rows;
|
|
431
|
+
const prevDirtyAll = buffer.dirtyAll;
|
|
432
|
+
const prevDirtyBits = buffer.dirtyBits;
|
|
427
433
|
const blank = createBlankCell();
|
|
428
434
|
const nextGrid = Array.from({ length: nextRows }, () => Array.from({ length: nextCols }, () => blank));
|
|
429
|
-
const copyRows = Math.min(
|
|
435
|
+
const copyRows = Math.min(prevRows, nextRows);
|
|
430
436
|
const copyCols = Math.min(buffer.cols, nextCols);
|
|
431
437
|
for (let y = 0; y < copyRows; y++) {
|
|
432
438
|
const src = getBufferRow(buffer, y);
|
|
@@ -450,10 +456,21 @@ function resizeBuffer(buffer, cols, rows) {
|
|
|
450
456
|
buffer.cols = nextCols;
|
|
451
457
|
buffer.rows = nextRows;
|
|
452
458
|
buffer.dirtyBits = new Uint8Array(nextRows);
|
|
453
|
-
buffer.dirtyCount =
|
|
454
|
-
buffer.dirtyMin =
|
|
455
|
-
buffer.dirtyMax =
|
|
456
|
-
buffer.dirtyAll = nextRows > 0;
|
|
459
|
+
buffer.dirtyCount = 0;
|
|
460
|
+
buffer.dirtyMin = Number.POSITIVE_INFINITY;
|
|
461
|
+
buffer.dirtyMax = -1;
|
|
462
|
+
buffer.dirtyAll = prevDirtyAll && nextRows > 0;
|
|
463
|
+
if (buffer.dirtyAll) {
|
|
464
|
+
buffer.dirtyCount = nextRows;
|
|
465
|
+
buffer.dirtyMin = 0;
|
|
466
|
+
buffer.dirtyMax = nextRows - 1;
|
|
467
|
+
} else for (let y = 0; y < copyRows; y++) {
|
|
468
|
+
if (prevDirtyBits[y] !== 1) continue;
|
|
469
|
+
buffer.dirtyBits[y] = 1;
|
|
470
|
+
buffer.dirtyCount++;
|
|
471
|
+
if (y < buffer.dirtyMin) buffer.dirtyMin = y;
|
|
472
|
+
if (y > buffer.dirtyMax) buffer.dirtyMax = y;
|
|
473
|
+
}
|
|
457
474
|
buffer.cursorX = clamp(buffer.cursorX, 0, Math.max(0, nextCols));
|
|
458
475
|
buffer.cursorY = clamp(buffer.cursorY, 0, Math.max(0, nextRows - 1));
|
|
459
476
|
if (buffer.fingerprintFn) {
|
|
@@ -526,6 +543,10 @@ function mergePlanes(prev, next) {
|
|
|
526
543
|
return Array.from(merged);
|
|
527
544
|
}
|
|
528
545
|
const TERMINAL_PLANE_INTERNALS = Symbol.for("@simon_he/vue-tui:v1:terminal-plane-internals");
|
|
546
|
+
const TERMINAL_ROOT = Symbol.for("@simon_he/vue-tui:v1:terminal-root");
|
|
547
|
+
function getRootTerminal(terminal) {
|
|
548
|
+
return terminal[TERMINAL_ROOT] ?? terminal;
|
|
549
|
+
}
|
|
529
550
|
function createCoverage(cols, rows) {
|
|
530
551
|
return Array.from({ length: rows }, () => new Uint8Array(cols));
|
|
531
552
|
}
|
|
@@ -609,6 +630,8 @@ function markPlaneCoverageRange(state, x0, y0, x1, y1, value) {
|
|
|
609
630
|
}
|
|
610
631
|
}
|
|
611
632
|
function markPlaneCoverageForPut(state, x, y, ch, prevCell) {
|
|
633
|
+
if (!Number.isSafeInteger(x) || !Number.isSafeInteger(y)) return;
|
|
634
|
+
if (x < 0 || x >= state.buffer.cols || y < 0 || y >= state.buffer.rows) return;
|
|
612
635
|
const row = state.coverage[y];
|
|
613
636
|
if (!row) return;
|
|
614
637
|
if (prevCell?.continuation && x > 0) row[x - 1] = 1;
|
|
@@ -724,10 +747,14 @@ function createTerminal(opts) {
|
|
|
724
747
|
}
|
|
725
748
|
function putForPlane(plane, x, y, ch, style) {
|
|
726
749
|
const state = getPlaneState(plane);
|
|
727
|
-
if (
|
|
728
|
-
const
|
|
729
|
-
|
|
730
|
-
|
|
750
|
+
if (typeof x !== "number" || typeof y !== "number") return;
|
|
751
|
+
const cellX = Math.floor(x);
|
|
752
|
+
const cellY = Math.floor(y);
|
|
753
|
+
if (!Number.isFinite(cellX) || !Number.isFinite(cellY)) return;
|
|
754
|
+
if (cellY < 0 || cellY >= state.buffer.rows || cellX < 0 || cellX >= state.buffer.cols) return;
|
|
755
|
+
const prevCell = getBufferCell(state.buffer, cellX, cellY);
|
|
756
|
+
putCell(state.buffer, cellX, cellY, ch, style);
|
|
757
|
+
markPlaneCoverageForPut(state, cellX, cellY, ch, prevCell);
|
|
731
758
|
}
|
|
732
759
|
function writeAtForPlane(plane, text, x, y, style) {
|
|
733
760
|
const state = getPlaneState(plane);
|
|
@@ -1219,13 +1246,18 @@ function createTerminal(opts) {
|
|
|
1219
1246
|
},
|
|
1220
1247
|
setFingerprintFn(fn) {
|
|
1221
1248
|
assertNotDisposed();
|
|
1222
|
-
|
|
1249
|
+
const state = getPlaneState(plane);
|
|
1250
|
+
setFingerprintFn(state.buffer, fn);
|
|
1223
1251
|
},
|
|
1224
1252
|
getRowFingerprints(y) {
|
|
1225
1253
|
assertNotDisposed();
|
|
1226
|
-
|
|
1254
|
+
const yy = Math.floor(y);
|
|
1255
|
+
const state = getPlaneState(plane);
|
|
1256
|
+
if (!Number.isFinite(yy) || yy < 0 || yy >= state.buffer.rows) throw new RangeError("Row out of bounds");
|
|
1257
|
+
return getRowFingerprints(state.buffer, yy);
|
|
1227
1258
|
}
|
|
1228
1259
|
};
|
|
1260
|
+
api[TERMINAL_ROOT] = base;
|
|
1229
1261
|
planeTerminals.set(plane, api);
|
|
1230
1262
|
return api;
|
|
1231
1263
|
}
|
|
@@ -1307,7 +1339,7 @@ function createTerminal(opts) {
|
|
|
1307
1339
|
const rows = collectAndClearDirtyRows(state.buffer);
|
|
1308
1340
|
if (rows === null) {
|
|
1309
1341
|
composeAllRows = true;
|
|
1310
|
-
|
|
1342
|
+
continue;
|
|
1311
1343
|
}
|
|
1312
1344
|
for (const y of rows) dirtyRows.add(y);
|
|
1313
1345
|
}
|
|
@@ -1397,7 +1429,9 @@ function createTerminal(opts) {
|
|
|
1397
1429
|
},
|
|
1398
1430
|
getRowFingerprints(y) {
|
|
1399
1431
|
assertNotDisposed();
|
|
1400
|
-
|
|
1432
|
+
const yy = Math.floor(y);
|
|
1433
|
+
if (!Number.isFinite(yy) || yy < 0 || yy >= compositeBuffer.rows) throw new RangeError("Row out of bounds");
|
|
1434
|
+
return getRowFingerprints(compositeBuffer, yy);
|
|
1401
1435
|
}
|
|
1402
1436
|
};
|
|
1403
1437
|
base[TERMINAL_PLANE_INTERNALS] = {
|
|
@@ -1427,8 +1461,9 @@ function createTerminal(opts) {
|
|
|
1427
1461
|
scrollRowsForPlane(plane, startY, endY, lines);
|
|
1428
1462
|
}
|
|
1429
1463
|
};
|
|
1464
|
+
base[TERMINAL_ROOT] = base;
|
|
1430
1465
|
return base;
|
|
1431
1466
|
}
|
|
1432
1467
|
|
|
1433
1468
|
//#endregion
|
|
1434
|
-
export { TERMINAL_RENDER_PLANES, createTerminal, getPlaneTerminal, resetPlaneRowsForRender, scrollPlaneRows };
|
|
1469
|
+
export { TERMINAL_RENDER_PLANES, createTerminal, getPlaneTerminal, getRootTerminal, resetPlaneRowsForRender, scrollPlaneRows };
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { envFlag, envString } from "./env-DNCzvX8b.js";
|
|
2
|
+
|
|
3
|
+
//#region src/core/debug-logger.ts
|
|
4
|
+
const DEFAULT_LOG_FILE = "vue-tui-debug.log";
|
|
5
|
+
let debugFileWriter = null;
|
|
6
|
+
let debugLogDefaultPath = DEFAULT_LOG_FILE;
|
|
7
|
+
const initializedDebugLogPaths = new Set();
|
|
8
|
+
function getFileWriter() {
|
|
9
|
+
const writer = globalThis.__VT_DEBUG_FILE_WRITER__;
|
|
10
|
+
if (writer && typeof writer === "object") return writer;
|
|
11
|
+
return debugFileWriter;
|
|
12
|
+
}
|
|
13
|
+
function resolveDebugLogPath(env, fallback = DEFAULT_LOG_FILE) {
|
|
14
|
+
return envString(env, "VUE_TUI_DEBUG_LOG_PATH", "DIMCODE_DEBUG_LOG_PATH", fallback);
|
|
15
|
+
}
|
|
16
|
+
function debugLogPath() {
|
|
17
|
+
const env = globalThis.process?.env;
|
|
18
|
+
return resolveDebugLogPath(env, debugLogDefaultPath);
|
|
19
|
+
}
|
|
20
|
+
function safeJson(value) {
|
|
21
|
+
try {
|
|
22
|
+
return JSON.stringify(value);
|
|
23
|
+
} catch {
|
|
24
|
+
return "[unserializable]";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function createDebugLogger(enable = false) {
|
|
28
|
+
const enabled = enable;
|
|
29
|
+
const ensureHeader = () => {
|
|
30
|
+
if (!enabled) return;
|
|
31
|
+
const writer = getFileWriter();
|
|
32
|
+
if (!writer?.writeFileSync) return;
|
|
33
|
+
const path = debugLogPath();
|
|
34
|
+
if (initializedDebugLogPaths.has(path)) return;
|
|
35
|
+
try {
|
|
36
|
+
const data = `=== Vue TUI Debug Log Started at ${new Date().toISOString()} ===\n\n`;
|
|
37
|
+
writer.writeFileSync(path, data);
|
|
38
|
+
initializedDebugLogPaths.add(path);
|
|
39
|
+
} catch {}
|
|
40
|
+
};
|
|
41
|
+
const write = (data) => {
|
|
42
|
+
if (!enabled) return;
|
|
43
|
+
ensureHeader();
|
|
44
|
+
try {
|
|
45
|
+
getFileWriter()?.appendFileSync?.(debugLogPath(), data);
|
|
46
|
+
} catch {}
|
|
47
|
+
};
|
|
48
|
+
const log = (category, message) => {
|
|
49
|
+
if (!enabled) return;
|
|
50
|
+
const timestamp = new Date().toISOString().split("T")[1].slice(0, -1);
|
|
51
|
+
write(`[${timestamp}] ${category} ${message}\n`);
|
|
52
|
+
};
|
|
53
|
+
ensureHeader();
|
|
54
|
+
return {
|
|
55
|
+
render: (message) => log("[RENDER]", message),
|
|
56
|
+
stream: (message) => log("[STREAM]", message),
|
|
57
|
+
error: (message, ...args) => {
|
|
58
|
+
if (!enabled) return;
|
|
59
|
+
const timestamp = new Date().toISOString().split("T")[1].slice(0, -1);
|
|
60
|
+
const fullMessage = `[${timestamp}] [ERROR] ${message}${args.length ? ` ${safeJson(args)}` : ""}`;
|
|
61
|
+
write(`${fullMessage}\n`);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if debug logging is enabled via environment variable
|
|
67
|
+
*/
|
|
68
|
+
function isDebugEnabled() {
|
|
69
|
+
const env = globalThis.process?.env;
|
|
70
|
+
return envFlag(env, "VUE_TUI_DEBUG", "DIMCODE_DEBUG") || env?.DEBUG === "1";
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
//#endregion
|
|
74
|
+
export { createDebugLogger, isDebugEnabled };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { TERMINAL_RENDER_PLANES, getPlaneTerminal } from "./create-terminal-
|
|
2
|
-
import { sanitizeDomHref } from "./hyperlink-
|
|
1
|
+
import { TERMINAL_RENDER_PLANES, getPlaneTerminal } from "./create-terminal-DXuZ2fci.js";
|
|
2
|
+
import { sanitizeDomHref } from "./hyperlink-B35-O-cW.js";
|
|
3
3
|
import { ansiColorHex, ansiCssVar, installAnsiPaletteCssVars, isAnsiColorName } from "./ansi-palette-CNXqFciC.js";
|
|
4
4
|
|
|
5
5
|
//#region src/renderer/capabilities.ts
|