@flyingrobots/bijou 4.1.0 → 4.4.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 (85) hide show
  1. package/README.md +6 -1
  2. package/dist/core/components/alert-v3.js +4 -4
  3. package/dist/core/components/alert-v3.js.map +1 -1
  4. package/dist/core/components/alert.d.ts.map +1 -1
  5. package/dist/core/components/alert.js +12 -5
  6. package/dist/core/components/alert.js.map +1 -1
  7. package/dist/core/components/badge.d.ts.map +1 -1
  8. package/dist/core/components/badge.js +38 -7
  9. package/dist/core/components/badge.js.map +1 -1
  10. package/dist/core/components/box-v3.d.ts.map +1 -1
  11. package/dist/core/components/box-v3.js +101 -26
  12. package/dist/core/components/box-v3.js.map +1 -1
  13. package/dist/core/components/braille-chart.d.ts +45 -0
  14. package/dist/core/components/braille-chart.d.ts.map +1 -0
  15. package/dist/core/components/braille-chart.js +94 -0
  16. package/dist/core/components/braille-chart.js.map +1 -0
  17. package/dist/core/components/data-viz-utils.d.ts +25 -0
  18. package/dist/core/components/data-viz-utils.d.ts.map +1 -0
  19. package/dist/core/components/data-viz-utils.js +72 -0
  20. package/dist/core/components/data-viz-utils.js.map +1 -0
  21. package/dist/core/components/index.d.ts +8 -0
  22. package/dist/core/components/index.d.ts.map +1 -1
  23. package/dist/core/components/index.js +4 -0
  24. package/dist/core/components/index.js.map +1 -1
  25. package/dist/core/components/inspector.d.ts.map +1 -1
  26. package/dist/core/components/inspector.js +2 -1
  27. package/dist/core/components/inspector.js.map +1 -1
  28. package/dist/core/components/perf-overlay.d.ts +63 -0
  29. package/dist/core/components/perf-overlay.d.ts.map +1 -0
  30. package/dist/core/components/perf-overlay.js +84 -0
  31. package/dist/core/components/perf-overlay.js.map +1 -0
  32. package/dist/core/components/preference-list.d.ts.map +1 -1
  33. package/dist/core/components/preference-list.js +63 -11
  34. package/dist/core/components/preference-list.js.map +1 -1
  35. package/dist/core/components/separator-v3.d.ts.map +1 -1
  36. package/dist/core/components/separator-v3.js +55 -15
  37. package/dist/core/components/separator-v3.js.map +1 -1
  38. package/dist/core/components/sparkline.d.ts +33 -0
  39. package/dist/core/components/sparkline.d.ts.map +1 -0
  40. package/dist/core/components/sparkline.js +45 -0
  41. package/dist/core/components/sparkline.js.map +1 -0
  42. package/dist/core/components/stats-panel.d.ts +50 -0
  43. package/dist/core/components/stats-panel.d.ts.map +1 -0
  44. package/dist/core/components/stats-panel.js +83 -0
  45. package/dist/core/components/stats-panel.js.map +1 -0
  46. package/dist/core/components/surface-text.d.ts +1 -1
  47. package/dist/core/components/surface-text.d.ts.map +1 -1
  48. package/dist/core/components/surface-text.js +80 -9
  49. package/dist/core/components/surface-text.js.map +1 -1
  50. package/dist/core/components/table-v3.d.ts.map +1 -1
  51. package/dist/core/components/table-v3.js +34 -2
  52. package/dist/core/components/table-v3.js.map +1 -1
  53. package/dist/core/components/types.d.ts +4 -4
  54. package/dist/core/components/types.d.ts.map +1 -1
  55. package/dist/core/render/differ.d.ts +12 -1
  56. package/dist/core/render/differ.d.ts.map +1 -1
  57. package/dist/core/render/differ.js +502 -11
  58. package/dist/core/render/differ.js.map +1 -1
  59. package/dist/core/render/packed-cell.d.ts +110 -0
  60. package/dist/core/render/packed-cell.d.ts.map +1 -0
  61. package/dist/core/render/packed-cell.js +301 -0
  62. package/dist/core/render/packed-cell.js.map +1 -0
  63. package/dist/core/text/grapheme.d.ts.map +1 -1
  64. package/dist/core/text/grapheme.js +17 -5
  65. package/dist/core/text/grapheme.js.map +1 -1
  66. package/dist/core/theme/presets.d.ts +9 -1
  67. package/dist/core/theme/presets.d.ts.map +1 -1
  68. package/dist/core/theme/presets.js +44 -2
  69. package/dist/core/theme/presets.js.map +1 -1
  70. package/dist/core/theme/resolve.d.ts.map +1 -1
  71. package/dist/core/theme/resolve.js +21 -1
  72. package/dist/core/theme/resolve.js.map +1 -1
  73. package/dist/core/theme/tokens.d.ts +12 -0
  74. package/dist/core/theme/tokens.d.ts.map +1 -1
  75. package/dist/index.d.ts +3 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/ports/io.d.ts +17 -0
  80. package/dist/ports/io.d.ts.map +1 -1
  81. package/dist/ports/surface.d.ts +83 -2
  82. package/dist/ports/surface.d.ts.map +1 -1
  83. package/dist/ports/surface.js +319 -37
  84. package/dist/ports/surface.js.map +1 -1
  85. package/package.json +5 -1
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Sparkline — compact inline trend graph using Unicode block characters.
3
+ *
4
+ * Renders a sequence of numeric values as a string of block chars (▁▂▃▄▅▆▇█).
5
+ * Values are normalized between min and max (auto-detected or caller-supplied).
6
+ * Non-finite values (NaN, Infinity) are treated as 0.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * sparkline([1, 5, 3, 8, 2, 7])
11
+ * // → '▁▅▃█▂▆'
12
+ *
13
+ * sparkline([10, 20, 30, 40], { width: 8 })
14
+ * // → '▁▁▃▃▅▅▇▇' (values interpolated to fit width)
15
+ * ```
16
+ */
17
+ import { safeMax, safeMin, sampleToWidth, sanitizeValues } from './data-viz-utils.js';
18
+ const BLOCKS = ['▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'];
19
+ /**
20
+ * Render an array of numbers as a compact sparkline string.
21
+ *
22
+ * Uses Unicode block elements ▁▂▃▄▅▆▇█ with auto-scaled
23
+ * min/max normalization. Empty input returns an empty string.
24
+ */
25
+ export function sparkline(values, options = {}) {
26
+ if (values.length === 0)
27
+ return '';
28
+ const rawWidth = options.width ?? values.length;
29
+ const width = Math.max(0, Math.floor(rawWidth));
30
+ if (width <= 0 || !Number.isFinite(rawWidth))
31
+ return '';
32
+ const sampled = sampleToWidth(sanitizeValues(values), width);
33
+ const min = Number.isFinite(options.min) ? options.min : safeMin(sampled);
34
+ const max = Number.isFinite(options.max) ? options.max : safeMax(sampled);
35
+ const range = max - min;
36
+ let result = '';
37
+ for (let i = 0; i < sampled.length; i++) {
38
+ const v = sampled[i];
39
+ const normalized = range === 0 ? 0.5 : (v - min) / range;
40
+ const index = Math.round(normalized * (BLOCKS.length - 1));
41
+ result += BLOCKS[Math.max(0, Math.min(BLOCKS.length - 1, index))];
42
+ }
43
+ return result;
44
+ }
45
+ //# sourceMappingURL=sparkline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sparkline.js","sourceRoot":"","sources":["../../../src/core/components/sparkline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEtF,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAWxD;;;;;GAKG;AACH,MAAM,UAAU,SAAS,CAAC,MAAyB,EAAE,UAA4B,EAAE;IACjF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEnC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC;IAChD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IAExD,MAAM,OAAO,GAAG,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,CAAC;IAExB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACtB,MAAM,UAAU,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;QACzD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Stats panel — labeled box with aligned key-value rows.
3
+ *
4
+ * Renders a titled bordered panel with left-aligned labels and
5
+ * right-aligned values. Each row can optionally include an inline
6
+ * sparkline after the value.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const panel = statsPanelSurface([
11
+ * { label: 'FPS', value: '30' },
12
+ * { label: 'frame', value: '148', sparkline: fpsHistory },
13
+ * { label: 'heap', value: '42.1 MB' },
14
+ * ], { title: 'Perf', width: 30, ctx });
15
+ * ```
16
+ */
17
+ import { type Surface } from '../../ports/surface.js';
18
+ import type { BijouNodeOptions } from './types.js';
19
+ import type { TokenValue } from '../theme/tokens.js';
20
+ export interface StatsPanelEntry {
21
+ /** Left-aligned label. */
22
+ readonly label: string;
23
+ /** Right-aligned value. */
24
+ readonly value: string;
25
+ /** Optional time-series data rendered as an inline sparkline after the value. */
26
+ readonly sparkline?: readonly number[];
27
+ /** Optional label color override. */
28
+ readonly labelToken?: TokenValue;
29
+ /** Optional value color override. */
30
+ readonly valueToken?: TokenValue;
31
+ }
32
+ export interface StatsPanelOptions extends BijouNodeOptions {
33
+ /** Panel title shown in the top border. */
34
+ readonly title?: string;
35
+ /** Total width of the panel including borders. Required. */
36
+ readonly width: number;
37
+ /** Border color token. */
38
+ readonly borderToken?: TokenValue;
39
+ /** Background color token. */
40
+ readonly bgToken?: TokenValue;
41
+ /** Token applied to labels by default. */
42
+ readonly labelToken?: TokenValue;
43
+ /** Token applied to values by default. */
44
+ readonly valueToken?: TokenValue;
45
+ }
46
+ /**
47
+ * Render a stats panel as a bordered box with aligned key-value rows.
48
+ */
49
+ export declare function statsPanelSurface(entries: readonly StatsPanelEntry[], options: StatsPanelOptions): Surface;
50
+ //# sourceMappingURL=stats-panel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats-panel.d.ts","sourceRoot":"","sources":["../../../src/core/components/stats-panel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,eAAe;IAC9B,0BAA0B;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,2BAA2B;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,qCAAqC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,0BAA0B;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,8BAA8B;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC;IAC9B,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;IACjC,0CAA0C;IAC1C,QAAQ,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC;CAClC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,OAAO,EAAE,iBAAiB,GACzB,OAAO,CA6DT"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Stats panel — labeled box with aligned key-value rows.
3
+ *
4
+ * Renders a titled bordered panel with left-aligned labels and
5
+ * right-aligned values. Each row can optionally include an inline
6
+ * sparkline after the value.
7
+ *
8
+ * @example
9
+ * ```ts
10
+ * const panel = statsPanelSurface([
11
+ * { label: 'FPS', value: '30' },
12
+ * { label: 'frame', value: '148', sparkline: fpsHistory },
13
+ * { label: 'heap', value: '42.1 MB' },
14
+ * ], { title: 'Perf', width: 30, ctx });
15
+ * ```
16
+ */
17
+ import { boxSurface } from './box-v3.js';
18
+ import { sparkline } from './sparkline.js';
19
+ import { tokenToCellStyle, createSegmentSurface } from './surface-text.js';
20
+ import { createSurface } from '../../ports/surface.js';
21
+ import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
22
+ /**
23
+ * Render a stats panel as a bordered box with aligned key-value rows.
24
+ */
25
+ export function statsPanelSurface(entries, options) {
26
+ const ctx = resolveCtx(options.ctx);
27
+ const width = Math.max(4, options.width);
28
+ // Inner width = total - 2 borders - 2 padding chars.
29
+ const innerWidth = width - 4;
30
+ if (entries.length === 0 || innerWidth <= 0) {
31
+ return boxSurface('', { width, title: options.title, borderToken: options.borderToken, bgToken: options.bgToken, ctx });
32
+ }
33
+ // Compute column widths.
34
+ let maxLabelLen = 0;
35
+ for (const e of entries) {
36
+ if (e.label.length > maxLabelLen)
37
+ maxLabelLen = e.label.length;
38
+ }
39
+ const gap = 1;
40
+ // Build each row as a surface with styled segments.
41
+ const rowSurfaces = [];
42
+ for (const entry of entries) {
43
+ const labelTok = entry.labelToken ?? options.labelToken;
44
+ const valueTok = entry.valueToken ?? options.valueToken;
45
+ const labelStyle = tokenToCellStyle(labelTok);
46
+ const valueStyle = tokenToCellStyle(valueTok);
47
+ const paddedLabel = entry.label.padEnd(maxLabelLen);
48
+ const segments = [
49
+ { text: paddedLabel, style: labelStyle },
50
+ { text: ' '.repeat(gap), style: {} },
51
+ ];
52
+ // Value + optional sparkline (only if it fits within the inner width).
53
+ const sparkData = entry.sparkline;
54
+ const sparkFits = sparkData && sparkData.length > 0
55
+ && innerWidth - maxLabelLen - gap - entry.value.length - 1 > 0;
56
+ if (sparkFits) {
57
+ const sparkWidth = innerWidth - maxLabelLen - gap - entry.value.length - 1;
58
+ const sparkStr = sparkline(sparkData, { width: sparkWidth });
59
+ segments.push({ text: entry.value, style: valueStyle });
60
+ segments.push({ text: ' ', style: {} });
61
+ segments.push({ text: sparkStr, style: valueStyle });
62
+ }
63
+ else {
64
+ segments.push({ text: entry.value, style: valueStyle });
65
+ }
66
+ rowSurfaces.push(createSegmentSurface(segments));
67
+ }
68
+ // Compose rows into a single content surface.
69
+ const contentHeight = rowSurfaces.length;
70
+ const contentWidth = innerWidth;
71
+ const content = createSurface(contentWidth, contentHeight);
72
+ for (let i = 0; i < rowSurfaces.length; i++) {
73
+ content.blit(rowSurfaces[i], 0, i);
74
+ }
75
+ return boxSurface(content, {
76
+ width,
77
+ title: options.title,
78
+ borderToken: options.borderToken,
79
+ bgToken: options.bgToken,
80
+ ctx,
81
+ });
82
+ }
83
+ //# sourceMappingURL=stats-panel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stats-panel.js","sourceRoot":"","sources":["../../../src/core/components/stats-panel.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { type Cell, type Surface } from '../../ports/surface.js';
2
2
  import type { TokenValue } from '../theme/tokens.js';
3
- export type CellTextStyle = Pick<Cell, 'fg' | 'bg' | 'modifiers'>;
3
+ export type CellTextStyle = Pick<Cell, 'fg' | 'bg' | 'fgRGB' | 'bgRGB' | 'modifiers'>;
4
4
  export interface SurfaceTextSegment {
5
5
  readonly text: string;
6
6
  readonly style?: CellTextStyle;
@@ -1 +1 @@
1
- {"version":3,"file":"surface-text.d.ts","sourceRoot":"","sources":["../../../src/core/components/surface-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,IAAI,EAAE,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,WAAW,CAAC,CAAC;AAElE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC;AAID,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAuB,GAAG,MAAM,EAAE,CAS3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAO7E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,aAAkB,GAAG,OAAO,CAgBlF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CAmBrF;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAMT;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAqC3E"}
1
+ {"version":3,"file":"surface-text.d.ts","sourceRoot":"","sources":["../../../src/core/components/surface-text.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,IAAI,EAAE,KAAK,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AACpG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAIrD,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC,CAAC;AAiCtF,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;CAChC;AAOD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAuB,GAAG,MAAM,EAAE,CAS3F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,SAAS,GAAG,aAAa,CAa7E;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,aAAkB,GAAG,OAAO,CA+BlF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,SAAS,kBAAkB,EAAE,GAAG,OAAO,CA+BrF;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,aAAa,GACnB,OAAO,CAMT;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAqC3E"}
@@ -1,6 +1,40 @@
1
1
  import { createSurface } from '../../ports/surface.js';
2
2
  import { graphemeClusterWidth, segmentGraphemes } from '../text/grapheme.js';
3
- const SURFACE_NARROW_OVERRIDES = new Set(['✓', '']);
3
+ import { encodeModifiers, parseHex } from '../render/packed-cell.js';
4
+ function parseNumericStyle(style) {
5
+ let fgR = 0, fgG = 0, fgB = 0, fgSet = false;
6
+ let bgR = 0, bgG = 0, bgB = 0, bgSet = false;
7
+ if (style.fg) {
8
+ const rgb = parseHex(style.fg);
9
+ if (!rgb)
10
+ return undefined;
11
+ fgR = rgb[0];
12
+ fgG = rgb[1];
13
+ fgB = rgb[2];
14
+ fgSet = true;
15
+ }
16
+ if (style.bg) {
17
+ const rgb = parseHex(style.bg);
18
+ if (!rgb)
19
+ return undefined;
20
+ bgR = rgb[0];
21
+ bgG = rgb[1];
22
+ bgB = rgb[2];
23
+ bgSet = true;
24
+ }
25
+ return {
26
+ fgR, fgG, fgB, fgSet,
27
+ bgR, bgG, bgB, bgSet,
28
+ flags: encodeModifiers(style.modifiers),
29
+ };
30
+ }
31
+ function isPackedSurface(s) {
32
+ return 'buffer' in s && s.buffer instanceof Uint8Array;
33
+ }
34
+ // Previously overrode ✓/✗ as narrow when the Dingbats range was
35
+ // blanket-classified as wide. Now isWideChar correctly excludes
36
+ // Dingbats (they're Narrow per Unicode East Asian Width).
37
+ const SURFACE_NARROW_OVERRIDES = new Set();
4
38
  export function segmentSurfaceText(text, purpose = 'Surface text') {
5
39
  const graphemes = segmentGraphemes(text ?? '');
6
40
  const wide = graphemes.find((grapheme) => graphemeClusterWidth(grapheme) !== 1 && !SURFACE_NARROW_OVERRIDES.has(grapheme));
@@ -12,11 +46,19 @@ export function segmentSurfaceText(text, purpose = 'Surface text') {
12
46
  export function tokenToCellStyle(token) {
13
47
  if (token == null)
14
48
  return {};
15
- return {
49
+ // Pass both hex string and pre-parsed RGB bytes. encodeCellIntoBuf
50
+ // in the packed surface path will prefer fgRGB/bgRGB when present,
51
+ // skipping inlineHexRGB entirely. See docs/perf/RE-017-byte-pipeline.md.
52
+ const style = {
16
53
  fg: token.hex,
17
54
  bg: token.bg,
18
55
  modifiers: token.modifiers,
19
56
  };
57
+ if (token.fgRGB)
58
+ style.fgRGB = token.fgRGB;
59
+ if (token.bgRGB)
60
+ style.bgRGB = token.bgRGB;
61
+ return style;
20
62
  }
21
63
  export function createTextSurface(text, style = {}) {
22
64
  const safeText = text ?? '';
@@ -25,10 +67,26 @@ export function createTextSurface(text, style = {}) {
25
67
  const width = lineGraphemes.reduce((max, graphemes) => Math.max(max, graphemes.length), 0);
26
68
  const height = Math.max(1, lines.length);
27
69
  const surface = createSurface(width, height);
28
- for (let y = 0; y < lines.length; y++) {
29
- const graphemes = lineGraphemes[y];
30
- for (let x = 0; x < graphemes.length; x++) {
31
- surface.set(x, y, { char: graphemes[x], ...style, empty: false });
70
+ // Fast path: use setRGB when surface is packed and style has valid hex colors
71
+ const numStyle = isPackedSurface(surface) ? parseNumericStyle(style) : undefined;
72
+ if (numStyle && isPackedSurface(surface)) {
73
+ const { fgR, fgG, fgB, bgR, bgG, bgB, flags } = numStyle;
74
+ // -1 signals "terminal default" to setRGB; fgG/fgB and bgG/bgB are ignored when fR/bR === -1
75
+ const fR = numStyle.fgSet ? fgR : -1;
76
+ const bR = numStyle.bgSet ? bgR : -1;
77
+ for (let y = 0; y < lines.length; y++) {
78
+ const graphemes = lineGraphemes[y];
79
+ for (let x = 0; x < graphemes.length; x++) {
80
+ surface.setRGB(x, y, graphemes[x], fR, fgG, fgB, bR, bgG, bgB, flags);
81
+ }
82
+ }
83
+ }
84
+ else {
85
+ for (let y = 0; y < lines.length; y++) {
86
+ const graphemes = lineGraphemes[y];
87
+ for (let x = 0; x < graphemes.length; x++) {
88
+ surface.set(x, y, { char: graphemes[x], ...style, empty: false });
89
+ }
32
90
  }
33
91
  }
34
92
  return surface;
@@ -38,15 +96,28 @@ export function createSegmentSurface(segments) {
38
96
  return createTextSurface('');
39
97
  const segmented = segments.map((segment) => ({
40
98
  style: segment.style,
99
+ numStyle: segment.style ? parseNumericStyle(segment.style) : undefined,
41
100
  graphemes: segmentSurfaceText(segment.text ?? '', 'createSegmentSurface'),
42
101
  }));
43
102
  const width = segmented.reduce((sum, segment) => sum + segment.graphemes.length, 0);
44
103
  const surface = createSurface(width, 1);
104
+ const packed = isPackedSurface(surface);
45
105
  let x = 0;
46
106
  for (const segment of segmented) {
47
- for (const char of segment.graphemes) {
48
- surface.set(x, 0, { char, ...segment.style, empty: false });
49
- x++;
107
+ const ns = packed ? segment.numStyle : undefined;
108
+ if (ns && isPackedSurface(surface)) {
109
+ const fR = ns.fgSet ? ns.fgR : -1;
110
+ const bR = ns.bgSet ? ns.bgR : -1;
111
+ for (const char of segment.graphemes) {
112
+ surface.setRGB(x, 0, char, fR, ns.fgG, ns.fgB, bR, ns.bgG, ns.bgB, ns.flags);
113
+ x++;
114
+ }
115
+ }
116
+ else {
117
+ for (const char of segment.graphemes) {
118
+ surface.set(x, 0, { char, ...segment.style, empty: false });
119
+ x++;
120
+ }
50
121
  }
51
122
  }
52
123
  return surface;
@@ -1 +1 @@
1
- {"version":3,"file":"surface-text.js","sourceRoot":"","sources":["../../../src/core/components/surface-text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface-text.js","sourceRoot":"","sources":["../../../src/core/components/surface-text.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"table-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/table-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAI/C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC;CACrC;AAkBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAoIlE"}
1
+ {"version":3,"file":"table-v3.d.ts","sourceRoot":"","sources":["../../../src/core/components/table-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAsB,MAAM,wBAAwB,CAAC;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhD,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,YAAY,EAAE,MAAM,CAAC;IACrE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC;CACrC;AAkBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAuJlE"}
@@ -2,6 +2,7 @@ import { createSurface } from '../../ports/surface.js';
2
2
  import { resolveSafeCtx as resolveCtx } from '../resolve-ctx.js';
3
3
  import { createTextSurface, tokenToCellStyle, wrapSurfaceToWidth } from './surface-text.js';
4
4
  import { resolveOverflowBehavior } from './overflow.js';
5
+ import { parseHex, encodeModifiers } from '../render/packed-cell.js';
5
6
  function normalizeColumnWidth(width) {
6
7
  if (width == null)
7
8
  return undefined;
@@ -67,8 +68,36 @@ export function tableSurface(options) {
67
68
  : colWidths.reduce((sum, width) => sum + width + 2, 0) + columns.length + 1;
68
69
  const totalHeight = 1 + headerHeight + 1 + rowHeights.reduce((sum, height) => sum + height, 0) + 1;
69
70
  const surface = createSurface(totalWidth, totalHeight, { char: ' ', empty: false });
71
+ const packed = 'buffer' in surface;
72
+ // Pre-parse border style for setRGB fast path
73
+ let bfR = -1, bfG = 0, bfB = 0, bbR = -1, bbG = 0, bbB = 0, bflags = 0;
74
+ if (packed && borderStyle.fg) {
75
+ const rgb = parseHex(borderStyle.fg);
76
+ if (rgb) {
77
+ const [r, g, b] = rgb;
78
+ bfR = r;
79
+ bfG = g;
80
+ bfB = b;
81
+ }
82
+ }
83
+ if (packed && borderStyle.bg) {
84
+ const rgb = parseHex(borderStyle.bg);
85
+ if (rgb) {
86
+ const [r, g, b] = rgb;
87
+ bbR = r;
88
+ bbG = g;
89
+ bbB = b;
90
+ }
91
+ }
92
+ if (packed)
93
+ bflags = encodeModifiers(borderStyle.modifiers);
70
94
  const setBorder = (x, y, char, bg) => {
71
- surface.set(x, y, { char, ...borderStyle, bg: bg ?? borderStyle.bg, empty: false });
95
+ if (packed && !bg) {
96
+ surface.setRGB(x, y, char, bfR, bfG, bfB, bbR, bbG, bbB, bflags);
97
+ }
98
+ else {
99
+ surface.set(x, y, { char, ...borderStyle, bg: bg ?? borderStyle.bg, empty: false });
100
+ }
72
101
  };
73
102
  const setSpace = (x, y, bg, fg) => {
74
103
  surface.set(x, y, {
@@ -127,7 +156,10 @@ export function tableSurface(options) {
127
156
  const cellWidth = colWidths[colIndex];
128
157
  setBorder(x - 1, y + line, '\u2502');
129
158
  for (let fillX = x; fillX < x + cellWidth + 2; fillX++) {
130
- surface.set(fillX, y + line, { char: ' ', empty: false });
159
+ if (packed)
160
+ surface.setRGB(fillX, y + line, 0x20, -1, 0, 0, -1, 0, 0);
161
+ else
162
+ surface.set(fillX, y + line, { char: ' ', empty: false });
131
163
  }
132
164
  x += cellWidth + 3;
133
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"table-v3.js","sourceRoot":"","sources":["../../../src/core/components/table-v3.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAgB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,cAAc,IAAI,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEjE,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAQxD,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAC;IACtC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,cAAc,CACrB,OAA6C,EAC7C,IAAmC;IAEnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AACvE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,OAA4B;IACvD,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,QAAQ,GAAG,uBAAuB,CACtC,OAAO,CAAC,QAAQ,EAChB,GAAG,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAC9F,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,OAAO,CAAC;IACrB,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC;IAClE,MAAM,WAAW,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,CAAC,WAAW,IAAI,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACrG,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE;QACpF,GAAG,WAAW;QACd,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,WAAW,CAAC,EAAE;KACnC,CAAC,CAAC,CAAC;IACJ,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACrH,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC9C,MAAM,eAAe,GAAG,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,eAAe,KAAK,SAAS;YAAE,OAAO,eAAe,CAAC;QAC1D,IAAI,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;QACjD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,MAAM,oBAAoB,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC9D,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QAChF,OAAO,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/F,MAAM,kBAAkB,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QAC3E,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,SAAS,IAAI,QAAQ,KAAK,UAAU;YAAE,OAAO,IAAI,CAAC;QAChF,OAAO,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC,CAAC;IACJ,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QACjF,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;QAC/B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACP,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,CAAC,GAAG,YAAY,GAAG,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,GAAG,GAAG,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACnG,MAAM,OAAO,GAAG,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,IAAY,EAAE,EAAW,EAAQ,EAAE;QAC1E,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,WAAW,EAAE,EAAE,EAAE,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAW,EAAE,EAAW,EAAQ,EAAE;QACxE,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE;YAChB,IAAI,EAAE,GAAG;YACT,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE;YACtB,EAAE,EAAE,EAAE,IAAI,QAAQ,EAAE,EAAE;YACtB,SAAS,EAAE,QAAQ,EAAE,SAAS;YAC9B,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,CAAS,EAAE,IAAY,EAAE,GAAW,EAAE,KAAa,EAAQ,EAAE;QAClF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACtB,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAE,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;YACxE,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC,CAAC;IAEF,aAAa,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC;YACxD,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAClD,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;QACD,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9D,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,YAAY,EAAE,UAAU,EAAE,EAAE,CAAC;QACjE,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAE,CAAC;YAChC,MAAM,aAAa,GAAG,oBAAoB,CAAC,CAAC,CAAE,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC;YACpF,SAAS,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;YACtF,OAAO,IAAI,SAAS,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,aAAa,CAAC,CAAC,GAAG,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAE9D,IAAI,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;IACzB,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,kBAAkB,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;QACxE,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAE,CAAC;QACxC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,CAAC;YACV,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;gBAC7D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAE,CAAC;gBACvC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;gBACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,GAAG,SAAS,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5D,CAAC;gBACD,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;YACrB,CAAC;YACD,SAAS,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC7D,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAE,CAAC;YACvC,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;YAChE,CAAC,IAAI,SAAS,GAAG,CAAC,CAAC;QACrB,CAAC;QACD,CAAC,IAAI,SAAS,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,WAAW,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC7D,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"table-v3.js","sourceRoot":"","sources":["../../../src/core/components/table-v3.ts"],"names":[],"mappings":"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"}
@@ -8,12 +8,12 @@ export type OverflowBehavior = 'wrap' | 'truncate';
8
8
  */
9
9
  export interface BijouNodeOptions {
10
10
  /** Unique identifier for the component. Used for CSS styling (#id) and layout tracking. */
11
- id?: string;
11
+ readonly id?: string;
12
12
  /** CSS class name(s) for the component. Space-separated. */
13
- class?: string;
13
+ readonly class?: string;
14
14
  /** Optional Bijou context. If omitted, the global default context is used. */
15
- ctx?: BijouContext;
15
+ readonly ctx?: BijouContext;
16
16
  /** Horizontal overflow behavior for constrained text content. Defaults to `'wrap'`. */
17
- overflow?: OverflowBehavior;
17
+ readonly overflow?: OverflowBehavior;
18
18
  }
19
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CAC7B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/components/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAE3D,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,UAAU,CAAC;AAEnD;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2FAA2F;IAC3F,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,8EAA8E;IAC9E,QAAQ,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC;IAC5B,uFAAuF;IACvF,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;CACtC"}
@@ -40,10 +40,21 @@ export declare function isSameCell(a: Cell, b: Cell): boolean;
40
40
  * 2. Minimizes CUP (move cursor) commands by detecting contiguous changes.
41
41
  * 3. Batches cells with identical styles to minimize SGR codes and keep strings contiguous.
42
42
  *
43
+ * When both surfaces are {@link PackedSurface}, the caller owns a pooled
44
+ * `outBuf`, and the IO port implements {@link WritePort.writeBytes}, the
45
+ * composed frame is UTF-8 encoded into the supplied buffer once and
46
+ * handed off via `writeBytes` instead of `write(string)`. This lets the
47
+ * TUI runtime own the output allocation and bypass the implicit
48
+ * string→UTF-8 conversion inside the underlying stream.
49
+ *
50
+ * Callers without an `outBuf` (tests, bench scenarios, simple drivers)
51
+ * fall through to the legacy `io.write(string)` path with no overhead.
52
+ *
43
53
  * @param current - The surface currently on the terminal.
44
54
  * @param target - The desired surface state.
45
55
  * @param io - The port to write ANSI codes to.
46
56
  * @param style - The port to resolve cell styling.
57
+ * @param outBuf - Optional pooled byte buffer for the packed byte path.
47
58
  */
48
- export declare function renderDiff(current: Surface, target: Surface, io: WritePort, style: StylePort): void;
59
+ export declare function renderDiff(current: Surface, target: Surface, io: WritePort, style: StylePort, outBuf?: Uint8Array): void;
49
60
  //# sourceMappingURL=differ.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAE,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAYjE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAgBpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAqFvF;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAgB1E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAQvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAgBpD;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,SAAS,GACf,IAAI,CAkIN"}
1
+ {"version":3,"file":"differ.d.ts","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,OAAO,EAAsB,KAAK,IAAI,EAAE,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACrH,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA0BjE;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAgBpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAqFvF;AAkCD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,MAAM,CAgB1E;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI,CAQvE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,GAAG,OAAO,CAkBpD;AAUD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,OAAO,EACf,EAAE,EAAE,SAAS,EACb,KAAK,EAAE,SAAS,EAChB,MAAM,CAAC,EAAE,UAAU,GAClB,IAAI,CAON"}