@flyingrobots/bijou 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -5
- package/dist/adapters/test/io.d.ts +2 -0
- package/dist/adapters/test/io.d.ts.map +1 -1
- package/dist/adapters/test/io.js +9 -0
- package/dist/adapters/test/io.js.map +1 -1
- package/dist/core/components/dag-edges.d.ts +78 -0
- package/dist/core/components/dag-edges.d.ts.map +1 -0
- package/dist/core/components/dag-edges.js +127 -0
- package/dist/core/components/dag-edges.js.map +1 -0
- package/dist/core/components/dag-layout.d.ts +37 -0
- package/dist/core/components/dag-layout.d.ts.map +1 -0
- package/dist/core/components/dag-layout.js +172 -0
- package/dist/core/components/dag-layout.js.map +1 -0
- package/dist/core/components/dag-render.d.ts +51 -0
- package/dist/core/components/dag-render.d.ts.map +1 -0
- package/dist/core/components/dag-render.js +440 -0
- package/dist/core/components/dag-render.js.map +1 -0
- package/dist/core/components/dag.d.ts +4 -4
- package/dist/core/components/dag.d.ts.map +1 -1
- package/dist/core/components/dag.js +6 -651
- package/dist/core/components/dag.js.map +1 -1
- package/dist/core/components/markdown-parse.d.ts +69 -0
- package/dist/core/components/markdown-parse.d.ts.map +1 -0
- package/dist/core/components/markdown-parse.js +272 -0
- package/dist/core/components/markdown-parse.js.map +1 -0
- package/dist/core/components/markdown-render.d.ts +20 -0
- package/dist/core/components/markdown-render.d.ts.map +1 -0
- package/dist/core/components/markdown-render.js +135 -0
- package/dist/core/components/markdown-render.js.map +1 -0
- package/dist/core/components/markdown.d.ts.map +1 -1
- package/dist/core/components/markdown.js +6 -371
- package/dist/core/components/markdown.js.map +1 -1
- package/dist/core/detect/tty.d.ts +2 -3
- package/dist/core/detect/tty.d.ts.map +1 -1
- package/dist/core/detect/tty.js +3 -4
- package/dist/core/detect/tty.js.map +1 -1
- package/dist/core/forms/filter-interactive.d.ts +66 -0
- package/dist/core/forms/filter-interactive.d.ts.map +1 -0
- package/dist/core/forms/filter-interactive.js +241 -0
- package/dist/core/forms/filter-interactive.js.map +1 -0
- package/dist/core/forms/filter.d.ts +2 -32
- package/dist/core/forms/filter.d.ts.map +1 -1
- package/dist/core/forms/filter.js +2 -167
- package/dist/core/forms/filter.js.map +1 -1
- package/dist/core/forms/select.js +29 -5
- package/dist/core/forms/select.js.map +1 -1
- package/dist/core/forms/textarea-editor.d.ts +39 -0
- package/dist/core/forms/textarea-editor.d.ts.map +1 -0
- package/dist/core/forms/textarea-editor.js +210 -0
- package/dist/core/forms/textarea-editor.js.map +1 -0
- package/dist/core/forms/textarea.d.ts +2 -19
- package/dist/core/forms/textarea.d.ts.map +1 -1
- package/dist/core/forms/textarea.js +2 -195
- package/dist/core/forms/textarea.js.map +1 -1
- package/dist/core/forms/types.d.ts +2 -0
- package/dist/core/forms/types.d.ts.map +1 -1
- package/dist/core/theme/resolve.d.ts +7 -0
- package/dist/core/theme/resolve.d.ts.map +1 -1
- package/dist/core/theme/resolve.js +6 -2
- package/dist/core/theme/resolve.js.map +1 -1
- package/dist/ports/io.d.ts +2 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,440 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Rendering functions for the DAG component.
|
|
3
|
+
*
|
|
4
|
+
* Handles node box construction, interactive layout rendering with ANSI styling,
|
|
5
|
+
* pipe-mode plain text output, and accessible structured text output.
|
|
6
|
+
*
|
|
7
|
+
* Imports types from `dag.ts` (type-only, erased at runtime).
|
|
8
|
+
* Imports layout functions from `dag-layout.ts` and edge primitives from `dag-edges.ts`.
|
|
9
|
+
*/
|
|
10
|
+
import { assignLayers, buildLayerArrays, orderColumns } from './dag-layout.js';
|
|
11
|
+
import { createGrid, markEdge, junctionChar, encodeArrowPos } from './dag-edges.js';
|
|
12
|
+
import { graphemeWidth, segmentGraphemes } from '../text/grapheme.js';
|
|
13
|
+
// ── Helpers ────────────────────────────────────────────────────────
|
|
14
|
+
/**
|
|
15
|
+
* Compute the visible display width of a string in terminal columns.
|
|
16
|
+
* Delegates to `graphemeWidth` which handles ANSI escapes and wide characters.
|
|
17
|
+
*
|
|
18
|
+
* @param str - The string to measure.
|
|
19
|
+
* @returns The visible column width.
|
|
20
|
+
*/
|
|
21
|
+
function visibleLength(str) {
|
|
22
|
+
return graphemeWidth(str);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Truncate a label to fit within a maximum visible width.
|
|
26
|
+
* Strips ANSI escapes before measuring, truncates by grapheme cluster,
|
|
27
|
+
* and appends an ellipsis character when truncation occurs.
|
|
28
|
+
*
|
|
29
|
+
* @param text - The label text to truncate.
|
|
30
|
+
* @param maxLen - Maximum visible width in terminal columns.
|
|
31
|
+
* @returns The possibly truncated label string.
|
|
32
|
+
*/
|
|
33
|
+
function truncateLabel(text, maxLen) {
|
|
34
|
+
if (maxLen <= 0)
|
|
35
|
+
return '';
|
|
36
|
+
if (visibleLength(text) <= maxLen)
|
|
37
|
+
return text;
|
|
38
|
+
// Truncate by grapheme clusters, not code units
|
|
39
|
+
const clean = text.replace(/\x1b\[[0-9;]*m/g, '');
|
|
40
|
+
const graphemes = segmentGraphemes(clean);
|
|
41
|
+
let width = 0;
|
|
42
|
+
let result = '';
|
|
43
|
+
for (const g of graphemes) {
|
|
44
|
+
const gw = graphemeWidth(g);
|
|
45
|
+
if (width + gw > maxLen - 1)
|
|
46
|
+
break;
|
|
47
|
+
result += g;
|
|
48
|
+
width += gw;
|
|
49
|
+
}
|
|
50
|
+
return result + '\u2026';
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Render a single node as a three-line Unicode box.
|
|
54
|
+
*
|
|
55
|
+
* Ghost nodes use dashed borders. The label is truncated to fit and a
|
|
56
|
+
* badge (if present) is right-aligned within the box.
|
|
57
|
+
*
|
|
58
|
+
* @param label - The node label text.
|
|
59
|
+
* @param badgeText - Optional badge text displayed to the right of the label.
|
|
60
|
+
* @param width - Total character width of the box (including borders).
|
|
61
|
+
* @param ghost - Whether to render with dashed (ghost) border characters.
|
|
62
|
+
* @returns The rendered box lines and per-character type map.
|
|
63
|
+
*/
|
|
64
|
+
function renderNodeBox(label, badgeText, width, ghost) {
|
|
65
|
+
const h = ghost ? '\u254c' : '\u2500';
|
|
66
|
+
const v = ghost ? '\u254e' : '\u2502';
|
|
67
|
+
const innerW = width - 2;
|
|
68
|
+
const contentW = innerW - 2;
|
|
69
|
+
let content;
|
|
70
|
+
let midTypes;
|
|
71
|
+
if (badgeText) {
|
|
72
|
+
const maxLabelW = contentW - visibleLength(badgeText) - 1;
|
|
73
|
+
const tLabel = truncateLabel(label, maxLabelW);
|
|
74
|
+
const gap = Math.max(1, contentW - visibleLength(tLabel) - visibleLength(badgeText));
|
|
75
|
+
content = tLabel + ' '.repeat(gap) + badgeText;
|
|
76
|
+
// Build char-type map for mid line: border + pad + label + gap + badge + pad + border
|
|
77
|
+
// Use segmentGraphemes for correct grapheme cluster counting.
|
|
78
|
+
midTypes = ['border']; // v
|
|
79
|
+
midTypes.push('pad'); // space
|
|
80
|
+
for (let i = 0; i < segmentGraphemes(tLabel).length; i++)
|
|
81
|
+
midTypes.push('label');
|
|
82
|
+
for (let i = 0; i < gap; i++)
|
|
83
|
+
midTypes.push('pad');
|
|
84
|
+
for (let i = 0; i < segmentGraphemes(badgeText).length; i++)
|
|
85
|
+
midTypes.push('badge');
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
content = truncateLabel(label, contentW);
|
|
89
|
+
// Build char-type map for mid line: border + pad + label + pad + border
|
|
90
|
+
midTypes = ['border']; // v
|
|
91
|
+
midTypes.push('pad'); // space
|
|
92
|
+
for (let i = 0; i < segmentGraphemes(content).length; i++)
|
|
93
|
+
midTypes.push('label');
|
|
94
|
+
}
|
|
95
|
+
const padRight = Math.max(0, contentW - visibleLength(content));
|
|
96
|
+
for (let i = 0; i < padRight; i++)
|
|
97
|
+
midTypes.push('pad');
|
|
98
|
+
midTypes.push('pad'); // trailing space
|
|
99
|
+
midTypes.push('border'); // v
|
|
100
|
+
const top = '\u256d' + h.repeat(innerW) + '\u256e';
|
|
101
|
+
const mid = v + ' ' + content + ' '.repeat(padRight) + ' ' + v;
|
|
102
|
+
const bot = '\u2570' + h.repeat(innerW) + '\u256f';
|
|
103
|
+
const borderLine = Array.from({ length: width }, () => 'border');
|
|
104
|
+
return {
|
|
105
|
+
lines: [top, mid, bot],
|
|
106
|
+
charTypes: [borderLine, midTypes, borderLine],
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Expand grapheme arrays so array index equals column offset.
|
|
111
|
+
*
|
|
112
|
+
* For each wide grapheme (width 2), insert a `''` placeholder in chars
|
|
113
|
+
* and duplicate the type in types. After expansion, `chars[col]` and
|
|
114
|
+
* `types[col]` are column-aligned.
|
|
115
|
+
*/
|
|
116
|
+
function expandToColumns(graphemes, types) {
|
|
117
|
+
const outChars = [];
|
|
118
|
+
const outTypes = [];
|
|
119
|
+
for (let i = 0; i < graphemes.length; i++) {
|
|
120
|
+
const g = graphemes[i];
|
|
121
|
+
const t = types[i] ?? 'pad';
|
|
122
|
+
const w = graphemeWidth(g);
|
|
123
|
+
outChars.push(g);
|
|
124
|
+
outTypes.push(t);
|
|
125
|
+
if (w === 2) {
|
|
126
|
+
outChars.push('');
|
|
127
|
+
outTypes.push(t);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return { chars: outChars, types: outTypes };
|
|
131
|
+
}
|
|
132
|
+
// ── Interactive Renderer ───────────────────────────────────────────
|
|
133
|
+
/**
|
|
134
|
+
* Render the full interactive (styled) DAG layout.
|
|
135
|
+
*
|
|
136
|
+
* Performs the complete layout pipeline: layer assignment, column ordering,
|
|
137
|
+
* edge routing, node box rendering, highlight/selection styling, and ANSI
|
|
138
|
+
* serialization into a final string.
|
|
139
|
+
*
|
|
140
|
+
* @param nodes - The graph nodes to render.
|
|
141
|
+
* @param options - Rendering options (tokens, selection, sizing).
|
|
142
|
+
* @param ctx - The resolved bijou context.
|
|
143
|
+
* @returns The rendered output string, node position map, and grid dimensions.
|
|
144
|
+
*/
|
|
145
|
+
export function renderInteractiveLayout(nodes, options, ctx) {
|
|
146
|
+
if (nodes.length === 0)
|
|
147
|
+
return { output: '', nodes: new Map(), width: 0, height: 0 };
|
|
148
|
+
const nodeMap = new Map();
|
|
149
|
+
for (const n of nodes)
|
|
150
|
+
nodeMap.set(n.id, n);
|
|
151
|
+
const layerMap = assignLayers(nodes);
|
|
152
|
+
const layers = buildLayerArrays(nodes, layerMap);
|
|
153
|
+
orderColumns(layers, nodes);
|
|
154
|
+
const colIndex = new Map();
|
|
155
|
+
for (const layer of layers) {
|
|
156
|
+
for (let i = 0; i < layer.length; i++) {
|
|
157
|
+
colIndex.set(layer[i], i);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
let maxNodesPerLayer = 1;
|
|
161
|
+
for (const layer of layers) {
|
|
162
|
+
if (layer.length > maxNodesPerLayer)
|
|
163
|
+
maxNodesPerLayer = layer.length;
|
|
164
|
+
}
|
|
165
|
+
const maxWidth = options.maxWidth ?? ctx.runtime.columns;
|
|
166
|
+
let nodeWidth = options.nodeWidth ?? nodes.reduce((max, n) => Math.max(max, visibleLength(n.label) + (n.badge ? visibleLength(n.badge) + 2 : 0) + 4), 16);
|
|
167
|
+
let gap = 4;
|
|
168
|
+
let colStride = nodeWidth + gap;
|
|
169
|
+
let totalWidth = maxNodesPerLayer * colStride;
|
|
170
|
+
if (totalWidth > maxWidth && !options.nodeWidth) {
|
|
171
|
+
gap = 2;
|
|
172
|
+
colStride = nodeWidth + gap;
|
|
173
|
+
totalWidth = maxNodesPerLayer * colStride;
|
|
174
|
+
}
|
|
175
|
+
if (totalWidth > maxWidth && !options.nodeWidth) {
|
|
176
|
+
nodeWidth = Math.max(16, Math.floor((maxWidth - gap) / maxNodesPerLayer) - gap);
|
|
177
|
+
colStride = nodeWidth + gap;
|
|
178
|
+
totalWidth = maxNodesPerLayer * colStride;
|
|
179
|
+
}
|
|
180
|
+
const RS = 6;
|
|
181
|
+
const gridRows = layers.length * RS;
|
|
182
|
+
const gridCols = totalWidth;
|
|
183
|
+
const colCenter = (c) => c * colStride + Math.floor(nodeWidth / 2);
|
|
184
|
+
const g = createGrid(gridRows, gridCols);
|
|
185
|
+
// Mark edges
|
|
186
|
+
for (const n of nodes) {
|
|
187
|
+
const fLayer = layerMap.get(n.id);
|
|
188
|
+
const fCol = colIndex.get(n.id);
|
|
189
|
+
if (fLayer === undefined || fCol === undefined)
|
|
190
|
+
continue;
|
|
191
|
+
for (const childId of n.edges ?? []) {
|
|
192
|
+
const tLayer = layerMap.get(childId);
|
|
193
|
+
const tCol = colIndex.get(childId);
|
|
194
|
+
if (tLayer === undefined || tCol === undefined)
|
|
195
|
+
continue;
|
|
196
|
+
markEdge(g, fCol, fLayer, tCol, tLayer, RS, colCenter);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
const highlightSet = new Set(options.highlightPath ?? []);
|
|
200
|
+
const edgeToken = options.edgeToken ?? ctx.theme.theme.border.muted;
|
|
201
|
+
const hlToken = options.highlightToken;
|
|
202
|
+
const positions = new Map();
|
|
203
|
+
const nodesByRow = new Map();
|
|
204
|
+
for (const n of nodes) {
|
|
205
|
+
const layer = layerMap.get(n.id);
|
|
206
|
+
const col = colIndex.get(n.id);
|
|
207
|
+
if (layer === undefined || col === undefined)
|
|
208
|
+
continue;
|
|
209
|
+
const startCol = col * colStride;
|
|
210
|
+
const startRow = layer * RS;
|
|
211
|
+
positions.set(n.id, { row: startRow, col: startCol, width: nodeWidth, height: 3 });
|
|
212
|
+
const box = renderNodeBox(n.label, n.badge, nodeWidth, n._ghost === true);
|
|
213
|
+
let nToken;
|
|
214
|
+
if (options.selectedId === n.id) {
|
|
215
|
+
nToken = options.selectedToken ?? ctx.theme.theme.ui.cursor;
|
|
216
|
+
}
|
|
217
|
+
else if (highlightSet.has(n.id) && hlToken) {
|
|
218
|
+
nToken = hlToken;
|
|
219
|
+
}
|
|
220
|
+
else if (n.token) {
|
|
221
|
+
nToken = n.token;
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
nToken = options.nodeToken ?? ctx.theme.theme.border.primary;
|
|
225
|
+
}
|
|
226
|
+
// Expand grapheme arrays to column-aligned arrays so cellAt can
|
|
227
|
+
// index by column offset directly (handles CJK/wide characters).
|
|
228
|
+
const expandedChars = [];
|
|
229
|
+
const expandedTypes = [];
|
|
230
|
+
for (let lineIdx = 0; lineIdx < box.lines.length; lineIdx++) {
|
|
231
|
+
const graphemes = segmentGraphemes(box.lines[lineIdx]);
|
|
232
|
+
const types = box.charTypes[lineIdx];
|
|
233
|
+
const { chars: ec, types: et } = expandToColumns(graphemes, types);
|
|
234
|
+
expandedChars.push(ec);
|
|
235
|
+
expandedTypes.push(et);
|
|
236
|
+
}
|
|
237
|
+
const placed = {
|
|
238
|
+
startRow, startCol, width: nodeWidth, box,
|
|
239
|
+
chars: expandedChars,
|
|
240
|
+
charTypes: expandedTypes,
|
|
241
|
+
token: nToken, node: n,
|
|
242
|
+
};
|
|
243
|
+
for (let lineIdx = 0; lineIdx < 3; lineIdx++) {
|
|
244
|
+
const row = startRow + lineIdx;
|
|
245
|
+
if (row >= gridRows)
|
|
246
|
+
continue;
|
|
247
|
+
let list = nodesByRow.get(row);
|
|
248
|
+
if (!list) {
|
|
249
|
+
list = [];
|
|
250
|
+
nodesByRow.set(row, list);
|
|
251
|
+
}
|
|
252
|
+
list.push(placed);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// ── Build highlight edge cell set ───────────────────────────────
|
|
256
|
+
const hlCells = new Set();
|
|
257
|
+
if (options.highlightPath && hlToken) {
|
|
258
|
+
const path = options.highlightPath;
|
|
259
|
+
for (let i = 0; i < path.length - 1; i++) {
|
|
260
|
+
const fromId = path[i];
|
|
261
|
+
const toId = path[i + 1];
|
|
262
|
+
const fLayer = layerMap.get(fromId);
|
|
263
|
+
const tLayer = layerMap.get(toId);
|
|
264
|
+
const fCol = colIndex.get(fromId);
|
|
265
|
+
const tCol = colIndex.get(toId);
|
|
266
|
+
if (fLayer === undefined || tLayer === undefined || fCol === undefined || tCol === undefined)
|
|
267
|
+
continue;
|
|
268
|
+
const srcC = colCenter(fCol);
|
|
269
|
+
const dstC = colCenter(tCol);
|
|
270
|
+
const sRow = fLayer * RS + 3;
|
|
271
|
+
const dRow = tLayer * RS - 1;
|
|
272
|
+
const midRow = sRow + 1;
|
|
273
|
+
if (srcC === dstC) {
|
|
274
|
+
for (let r = sRow; r <= dRow && r < gridRows; r++) {
|
|
275
|
+
if (srcC < gridCols)
|
|
276
|
+
hlCells.add(encodeArrowPos(r, srcC));
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
if (sRow < gridRows && srcC < gridCols)
|
|
281
|
+
hlCells.add(encodeArrowPos(sRow, srcC));
|
|
282
|
+
const minC = Math.min(srcC, dstC);
|
|
283
|
+
const maxC2 = Math.max(srcC, dstC);
|
|
284
|
+
if (midRow < gridRows) {
|
|
285
|
+
for (let c = minC; c <= maxC2 && c < gridCols; c++) {
|
|
286
|
+
hlCells.add(encodeArrowPos(midRow, c));
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
for (let r = midRow; r <= dRow && r < gridRows; r++) {
|
|
290
|
+
if (dstC < gridCols)
|
|
291
|
+
hlCells.add(encodeArrowPos(r, dstC));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
// ── cellAt: on-demand per-cell computation ──────────────────────
|
|
297
|
+
function cellAt(row, col) {
|
|
298
|
+
// 1. Node box (highest priority)
|
|
299
|
+
const nodesOnRow = nodesByRow.get(row);
|
|
300
|
+
if (nodesOnRow) {
|
|
301
|
+
for (const p of nodesOnRow) {
|
|
302
|
+
if (col >= p.startCol && col < p.startCol + p.width) {
|
|
303
|
+
const lineIdx = row - p.startRow;
|
|
304
|
+
const ci = col - p.startCol;
|
|
305
|
+
const ch = p.chars[lineIdx][ci] ?? ' ';
|
|
306
|
+
const charType = p.charTypes[lineIdx][ci];
|
|
307
|
+
let token;
|
|
308
|
+
if (charType === 'label' && p.node.labelToken) {
|
|
309
|
+
token = p.node.labelToken;
|
|
310
|
+
}
|
|
311
|
+
else if (charType === 'badge' && p.node.badgeToken) {
|
|
312
|
+
token = p.node.badgeToken;
|
|
313
|
+
}
|
|
314
|
+
else {
|
|
315
|
+
token = p.token;
|
|
316
|
+
}
|
|
317
|
+
return { ch, token };
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
// 2. Arrowhead
|
|
322
|
+
const encoded = encodeArrowPos(row, col);
|
|
323
|
+
if (g.arrows.has(encoded)) {
|
|
324
|
+
const token = hlCells.has(encoded) ? (hlToken ?? edgeToken) : edgeToken;
|
|
325
|
+
return { ch: '\u25bc', token };
|
|
326
|
+
}
|
|
327
|
+
// 3. Edge
|
|
328
|
+
const dirs = g.dirs[row]?.[col];
|
|
329
|
+
if (dirs && dirs.size > 0) {
|
|
330
|
+
const token = hlCells.has(encoded) ? (hlToken ?? edgeToken) : edgeToken;
|
|
331
|
+
return { ch: junctionChar(dirs), token };
|
|
332
|
+
}
|
|
333
|
+
// 4. Empty
|
|
334
|
+
return { ch: ' ', token: null };
|
|
335
|
+
}
|
|
336
|
+
// ── Serialize: run-length grouping with cellAt queries ──────────
|
|
337
|
+
const lines = [];
|
|
338
|
+
for (let r = 0; r < gridRows; r++) {
|
|
339
|
+
let line = '';
|
|
340
|
+
let prevToken = null;
|
|
341
|
+
let run = '';
|
|
342
|
+
for (let c = 0; c < gridCols; c++) {
|
|
343
|
+
const { ch, token: tk } = cellAt(r, c);
|
|
344
|
+
// TokenValue is a plain object — reference equality works here because
|
|
345
|
+
// the same token instance is reused for all cells of the same type.
|
|
346
|
+
if (tk === prevToken) {
|
|
347
|
+
run += ch;
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
if (run) {
|
|
351
|
+
line += prevToken ? ctx.style.styled(prevToken, run) : run;
|
|
352
|
+
}
|
|
353
|
+
run = ch;
|
|
354
|
+
prevToken = tk;
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
if (run) {
|
|
358
|
+
line += prevToken ? ctx.style.styled(prevToken, run) : run;
|
|
359
|
+
}
|
|
360
|
+
lines.push(line.replace(/\s+$/, ''));
|
|
361
|
+
}
|
|
362
|
+
while (lines.length > 0 && lines[lines.length - 1].trim() === '') {
|
|
363
|
+
lines.pop();
|
|
364
|
+
}
|
|
365
|
+
return { output: lines.join('\n'), nodes: positions, width: gridCols, height: gridRows };
|
|
366
|
+
}
|
|
367
|
+
// ── Pipe Renderer ──────────────────────────────────────────────────
|
|
368
|
+
/**
|
|
369
|
+
* Render the graph as plain text for piped (non-TTY) output.
|
|
370
|
+
*
|
|
371
|
+
* Produces one line per node in the format `Label -> Target1, Target2`
|
|
372
|
+
* with no ANSI styling or box-drawing characters.
|
|
373
|
+
*
|
|
374
|
+
* @param nodes - The graph nodes to render.
|
|
375
|
+
* @returns Plain text representation of the graph.
|
|
376
|
+
*/
|
|
377
|
+
export function renderPipe(nodes) {
|
|
378
|
+
if (nodes.length === 0)
|
|
379
|
+
return '';
|
|
380
|
+
const labelById = new Map(nodes.map(n => [n.id, n.label]));
|
|
381
|
+
const lines = [];
|
|
382
|
+
for (const n of nodes) {
|
|
383
|
+
const edges = n.edges ?? [];
|
|
384
|
+
const badgePart = n.badge ? ` (${n.badge})` : '';
|
|
385
|
+
if (edges.length > 0) {
|
|
386
|
+
const targets = edges
|
|
387
|
+
.map(id => labelById.get(id) ?? id)
|
|
388
|
+
.join(', ');
|
|
389
|
+
lines.push(`${n.label}${badgePart} -> ${targets}`);
|
|
390
|
+
}
|
|
391
|
+
else {
|
|
392
|
+
lines.push(`${n.label}${badgePart}`);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
return lines.join('\n');
|
|
396
|
+
}
|
|
397
|
+
// ── Accessible Renderer ────────────────────────────────────────────
|
|
398
|
+
/**
|
|
399
|
+
* Render the graph as structured accessible text.
|
|
400
|
+
*
|
|
401
|
+
* Produces a summary header ("Graph: N nodes, M edges") followed by
|
|
402
|
+
* layer-grouped node listings with edge descriptions.
|
|
403
|
+
*
|
|
404
|
+
* @param nodes - The graph nodes to render.
|
|
405
|
+
* @param layerMap - Map from node ID to layer index.
|
|
406
|
+
* @returns Accessible text representation of the graph.
|
|
407
|
+
*/
|
|
408
|
+
export function renderAccessible(nodes, layerMap) {
|
|
409
|
+
if (nodes.length === 0)
|
|
410
|
+
return 'Graph: 0 nodes, 0 edges';
|
|
411
|
+
const layers = buildLayerArrays(nodes, layerMap);
|
|
412
|
+
const nodeMap = new Map();
|
|
413
|
+
for (const n of nodes)
|
|
414
|
+
nodeMap.set(n.id, n);
|
|
415
|
+
// Count only edges whose target exists in the graph (matching rendered output)
|
|
416
|
+
const totalEdges = nodes.reduce((s, n) => s + (n.edges ?? []).filter(e => nodeMap.has(e)).length, 0);
|
|
417
|
+
const lines = [`Graph: ${nodes.length} nodes, ${totalEdges} edges`, ''];
|
|
418
|
+
for (let l = 0; l < layers.length; l++) {
|
|
419
|
+
lines.push(`Layer ${l + 1}:`);
|
|
420
|
+
for (const id of layers[l]) {
|
|
421
|
+
const n = nodeMap.get(id);
|
|
422
|
+
if (!n)
|
|
423
|
+
continue;
|
|
424
|
+
const badgePart = n.badge ? ` (${n.badge})` : '';
|
|
425
|
+
const edges = (n.edges ?? []).filter(e => nodeMap.has(e));
|
|
426
|
+
if (edges.length > 0) {
|
|
427
|
+
const targets = edges.map(e => nodeMap.get(e)?.label ?? e).join(', ');
|
|
428
|
+
lines.push(` ${n.label}${badgePart} -> ${targets}`);
|
|
429
|
+
}
|
|
430
|
+
else {
|
|
431
|
+
lines.push(` ${n.label}${badgePart} (end)`);
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
lines.push('');
|
|
435
|
+
}
|
|
436
|
+
while (lines.length > 0 && lines[lines.length - 1] === '')
|
|
437
|
+
lines.pop();
|
|
438
|
+
return lines.join('\n');
|
|
439
|
+
}
|
|
440
|
+
//# sourceMappingURL=dag-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dag-render.js","sourceRoot":"","sources":["../../../src/core/components/dag-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export interface DagNode {
|
|
|
14
14
|
/** Human-readable display text rendered inside the node box. */
|
|
15
15
|
label: string;
|
|
16
16
|
/** IDs of child nodes this node has outgoing edges to. */
|
|
17
|
-
edges?: string[];
|
|
17
|
+
edges?: readonly string[];
|
|
18
18
|
/** Short annotation text displayed alongside the label (e.g., a status or count). */
|
|
19
19
|
badge?: string;
|
|
20
20
|
/** Color/style token applied to the node box border. */
|
|
@@ -101,7 +101,7 @@ export interface DagLayout {
|
|
|
101
101
|
* @returns A bounded subgraph of the appropriate type.
|
|
102
102
|
*/
|
|
103
103
|
export declare function dagSlice(source: DagSource, focus: string, opts?: DagSliceOptions): SlicedDagSource;
|
|
104
|
-
export declare function dagSlice(nodes: DagNode[], focus: string, opts?: DagSliceOptions): DagNode[];
|
|
104
|
+
export declare function dagSlice(nodes: readonly DagNode[], focus: string, opts?: DagSliceOptions): DagNode[];
|
|
105
105
|
/**
|
|
106
106
|
* Compute the full DAG layout including node positions and rendered output.
|
|
107
107
|
*
|
|
@@ -114,7 +114,7 @@ export declare function dagSlice(nodes: DagNode[], focus: string, opts?: DagSlic
|
|
|
114
114
|
* @throws If given an unbounded `DagSource` (must call `dagSlice()` first).
|
|
115
115
|
*/
|
|
116
116
|
export declare function dagLayout(source: SlicedDagSource, options?: DagOptions): DagLayout;
|
|
117
|
-
export declare function dagLayout(nodes: DagNode[], options?: DagOptions): DagLayout;
|
|
117
|
+
export declare function dagLayout(nodes: readonly DagNode[], options?: DagOptions): DagLayout;
|
|
118
118
|
/**
|
|
119
119
|
* Render a directed acyclic graph as a styled string.
|
|
120
120
|
*
|
|
@@ -129,5 +129,5 @@ export declare function dagLayout(nodes: DagNode[], options?: DagOptions): DagLa
|
|
|
129
129
|
* @throws If given an unbounded `DagSource` (must call `dagSlice()` first).
|
|
130
130
|
*/
|
|
131
131
|
export declare function dag(source: SlicedDagSource, options?: DagOptions): string;
|
|
132
|
-
export declare function dag(nodes: DagNode[], options?: DagOptions): string;
|
|
132
|
+
export declare function dag(nodes: readonly DagNode[], options?: DagOptions): string;
|
|
133
133
|
//# sourceMappingURL=dag.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag.ts"],"names":[],"mappings":"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"}
|