@simon_he/vue-tui 1.0.2 → 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 +44 -26
- package/dist/TMermaidText-CXm_L969.js +885 -0
- package/dist/{TSelect-DR0FomSu.js → TSelect-CiyMvwl-.js} +60 -81
- package/dist/{TTree-kzhlB5P0.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 +5037 -6767
- package/dist/cli.d.cts +4 -0
- package/dist/cli.d.ts +4 -0
- package/dist/cli.js +2733 -148
- 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.cjs +843 -1469
- package/dist/core.js +6 -6
- package/dist/{create-terminal-DBFNYr8f.js → create-terminal-DXuZ2fci.js} +39 -13
- package/dist/debug-logger-ChY_PXVk.js +74 -0
- package/dist/{dom-renderer-BniJSQyX.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 +5017 -10339
- 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/stdout-metrics.d.ts +10 -0
- package/dist/renderer/cli/stdout-renderer.d.ts +3 -0
- 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 +7207 -12437
- 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 +85 -14
- 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 = [
|
|
@@ -427,9 +427,12 @@ function resizeBuffer(buffer, cols, rows) {
|
|
|
427
427
|
const nextCols = Math.max(0, Math.floor(cols));
|
|
428
428
|
const nextRows = Math.max(0, Math.floor(rows));
|
|
429
429
|
if (nextCols === buffer.cols && nextRows === buffer.rows) return;
|
|
430
|
+
const prevRows = buffer.rows;
|
|
431
|
+
const prevDirtyAll = buffer.dirtyAll;
|
|
432
|
+
const prevDirtyBits = buffer.dirtyBits;
|
|
430
433
|
const blank = createBlankCell();
|
|
431
434
|
const nextGrid = Array.from({ length: nextRows }, () => Array.from({ length: nextCols }, () => blank));
|
|
432
|
-
const copyRows = Math.min(
|
|
435
|
+
const copyRows = Math.min(prevRows, nextRows);
|
|
433
436
|
const copyCols = Math.min(buffer.cols, nextCols);
|
|
434
437
|
for (let y = 0; y < copyRows; y++) {
|
|
435
438
|
const src = getBufferRow(buffer, y);
|
|
@@ -453,10 +456,21 @@ function resizeBuffer(buffer, cols, rows) {
|
|
|
453
456
|
buffer.cols = nextCols;
|
|
454
457
|
buffer.rows = nextRows;
|
|
455
458
|
buffer.dirtyBits = new Uint8Array(nextRows);
|
|
456
|
-
buffer.dirtyCount =
|
|
457
|
-
buffer.dirtyMin =
|
|
458
|
-
buffer.dirtyMax =
|
|
459
|
-
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
|
+
}
|
|
460
474
|
buffer.cursorX = clamp(buffer.cursorX, 0, Math.max(0, nextCols));
|
|
461
475
|
buffer.cursorY = clamp(buffer.cursorY, 0, Math.max(0, nextRows - 1));
|
|
462
476
|
if (buffer.fingerprintFn) {
|
|
@@ -529,6 +543,10 @@ function mergePlanes(prev, next) {
|
|
|
529
543
|
return Array.from(merged);
|
|
530
544
|
}
|
|
531
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
|
+
}
|
|
532
550
|
function createCoverage(cols, rows) {
|
|
533
551
|
return Array.from({ length: rows }, () => new Uint8Array(cols));
|
|
534
552
|
}
|
|
@@ -612,6 +630,8 @@ function markPlaneCoverageRange(state, x0, y0, x1, y1, value) {
|
|
|
612
630
|
}
|
|
613
631
|
}
|
|
614
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;
|
|
615
635
|
const row = state.coverage[y];
|
|
616
636
|
if (!row) return;
|
|
617
637
|
if (prevCell?.continuation && x > 0) row[x - 1] = 1;
|
|
@@ -727,10 +747,14 @@ function createTerminal(opts) {
|
|
|
727
747
|
}
|
|
728
748
|
function putForPlane(plane, x, y, ch, style) {
|
|
729
749
|
const state = getPlaneState(plane);
|
|
730
|
-
if (
|
|
731
|
-
const
|
|
732
|
-
|
|
733
|
-
|
|
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);
|
|
734
758
|
}
|
|
735
759
|
function writeAtForPlane(plane, text, x, y, style) {
|
|
736
760
|
const state = getPlaneState(plane);
|
|
@@ -1233,6 +1257,7 @@ function createTerminal(opts) {
|
|
|
1233
1257
|
return getRowFingerprints(state.buffer, yy);
|
|
1234
1258
|
}
|
|
1235
1259
|
};
|
|
1260
|
+
api[TERMINAL_ROOT] = base;
|
|
1236
1261
|
planeTerminals.set(plane, api);
|
|
1237
1262
|
return api;
|
|
1238
1263
|
}
|
|
@@ -1314,7 +1339,7 @@ function createTerminal(opts) {
|
|
|
1314
1339
|
const rows = collectAndClearDirtyRows(state.buffer);
|
|
1315
1340
|
if (rows === null) {
|
|
1316
1341
|
composeAllRows = true;
|
|
1317
|
-
|
|
1342
|
+
continue;
|
|
1318
1343
|
}
|
|
1319
1344
|
for (const y of rows) dirtyRows.add(y);
|
|
1320
1345
|
}
|
|
@@ -1436,8 +1461,9 @@ function createTerminal(opts) {
|
|
|
1436
1461
|
scrollRowsForPlane(plane, startY, endY, lines);
|
|
1437
1462
|
}
|
|
1438
1463
|
};
|
|
1464
|
+
base[TERMINAL_ROOT] = base;
|
|
1439
1465
|
return base;
|
|
1440
1466
|
}
|
|
1441
1467
|
|
|
1442
1468
|
//#endregion
|
|
1443
|
-
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
|