@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.
Files changed (63) hide show
  1. package/README.md +35 -5
  2. package/dist/adapters/test/io.d.ts +2 -0
  3. package/dist/adapters/test/io.d.ts.map +1 -1
  4. package/dist/adapters/test/io.js +9 -0
  5. package/dist/adapters/test/io.js.map +1 -1
  6. package/dist/core/components/dag-edges.d.ts +78 -0
  7. package/dist/core/components/dag-edges.d.ts.map +1 -0
  8. package/dist/core/components/dag-edges.js +127 -0
  9. package/dist/core/components/dag-edges.js.map +1 -0
  10. package/dist/core/components/dag-layout.d.ts +37 -0
  11. package/dist/core/components/dag-layout.d.ts.map +1 -0
  12. package/dist/core/components/dag-layout.js +172 -0
  13. package/dist/core/components/dag-layout.js.map +1 -0
  14. package/dist/core/components/dag-render.d.ts +51 -0
  15. package/dist/core/components/dag-render.d.ts.map +1 -0
  16. package/dist/core/components/dag-render.js +440 -0
  17. package/dist/core/components/dag-render.js.map +1 -0
  18. package/dist/core/components/dag.d.ts +4 -4
  19. package/dist/core/components/dag.d.ts.map +1 -1
  20. package/dist/core/components/dag.js +6 -651
  21. package/dist/core/components/dag.js.map +1 -1
  22. package/dist/core/components/markdown-parse.d.ts +69 -0
  23. package/dist/core/components/markdown-parse.d.ts.map +1 -0
  24. package/dist/core/components/markdown-parse.js +272 -0
  25. package/dist/core/components/markdown-parse.js.map +1 -0
  26. package/dist/core/components/markdown-render.d.ts +20 -0
  27. package/dist/core/components/markdown-render.d.ts.map +1 -0
  28. package/dist/core/components/markdown-render.js +135 -0
  29. package/dist/core/components/markdown-render.js.map +1 -0
  30. package/dist/core/components/markdown.d.ts.map +1 -1
  31. package/dist/core/components/markdown.js +6 -371
  32. package/dist/core/components/markdown.js.map +1 -1
  33. package/dist/core/detect/tty.d.ts +2 -3
  34. package/dist/core/detect/tty.d.ts.map +1 -1
  35. package/dist/core/detect/tty.js +3 -4
  36. package/dist/core/detect/tty.js.map +1 -1
  37. package/dist/core/forms/filter-interactive.d.ts +66 -0
  38. package/dist/core/forms/filter-interactive.d.ts.map +1 -0
  39. package/dist/core/forms/filter-interactive.js +241 -0
  40. package/dist/core/forms/filter-interactive.js.map +1 -0
  41. package/dist/core/forms/filter.d.ts +2 -32
  42. package/dist/core/forms/filter.d.ts.map +1 -1
  43. package/dist/core/forms/filter.js +2 -167
  44. package/dist/core/forms/filter.js.map +1 -1
  45. package/dist/core/forms/select.js +29 -5
  46. package/dist/core/forms/select.js.map +1 -1
  47. package/dist/core/forms/textarea-editor.d.ts +39 -0
  48. package/dist/core/forms/textarea-editor.d.ts.map +1 -0
  49. package/dist/core/forms/textarea-editor.js +210 -0
  50. package/dist/core/forms/textarea-editor.js.map +1 -0
  51. package/dist/core/forms/textarea.d.ts +2 -19
  52. package/dist/core/forms/textarea.d.ts.map +1 -1
  53. package/dist/core/forms/textarea.js +2 -195
  54. package/dist/core/forms/textarea.js.map +1 -1
  55. package/dist/core/forms/types.d.ts +2 -0
  56. package/dist/core/forms/types.d.ts.map +1 -1
  57. package/dist/core/theme/resolve.d.ts +7 -0
  58. package/dist/core/theme/resolve.d.ts.map +1 -1
  59. package/dist/core/theme/resolve.js +6 -2
  60. package/dist/core/theme/resolve.js.map +1 -1
  61. package/dist/ports/io.d.ts +2 -0
  62. package/dist/ports/io.d.ts.map +1 -1
  63. 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":"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"}
1
+ {"version":3,"file":"dag.d.ts","sourceRoot":"","sources":["../../../src/core/components/dag.ts"],"names":[],"mappings":"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"}