@flyingrobots/bijou 4.2.0 → 4.4.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.
Files changed (86) hide show
  1. package/README.md +39 -179
  2. package/dist/context-theme.d.ts +15 -0
  3. package/dist/context-theme.d.ts.map +1 -0
  4. package/dist/context-theme.js +23 -0
  5. package/dist/context-theme.js.map +1 -0
  6. package/dist/core/components/alert-v3.js +4 -4
  7. package/dist/core/components/alert-v3.js.map +1 -1
  8. package/dist/core/components/alert.d.ts.map +1 -1
  9. package/dist/core/components/alert.js +12 -5
  10. package/dist/core/components/alert.js.map +1 -1
  11. package/dist/core/components/badge.d.ts.map +1 -1
  12. package/dist/core/components/badge.js +38 -7
  13. package/dist/core/components/badge.js.map +1 -1
  14. package/dist/core/components/box-v3.d.ts.map +1 -1
  15. package/dist/core/components/box-v3.js +101 -26
  16. package/dist/core/components/box-v3.js.map +1 -1
  17. package/dist/core/components/braille-chart.d.ts +45 -0
  18. package/dist/core/components/braille-chart.d.ts.map +1 -0
  19. package/dist/core/components/braille-chart.js +94 -0
  20. package/dist/core/components/braille-chart.js.map +1 -0
  21. package/dist/core/components/data-viz-utils.d.ts +25 -0
  22. package/dist/core/components/data-viz-utils.d.ts.map +1 -0
  23. package/dist/core/components/data-viz-utils.js +72 -0
  24. package/dist/core/components/data-viz-utils.js.map +1 -0
  25. package/dist/core/components/index.d.ts +8 -0
  26. package/dist/core/components/index.d.ts.map +1 -1
  27. package/dist/core/components/index.js +4 -0
  28. package/dist/core/components/index.js.map +1 -1
  29. package/dist/core/components/perf-overlay.d.ts +63 -0
  30. package/dist/core/components/perf-overlay.d.ts.map +1 -0
  31. package/dist/core/components/perf-overlay.js +84 -0
  32. package/dist/core/components/perf-overlay.js.map +1 -0
  33. package/dist/core/components/preference-list.d.ts.map +1 -1
  34. package/dist/core/components/preference-list.js +63 -11
  35. package/dist/core/components/preference-list.js.map +1 -1
  36. package/dist/core/components/separator-v3.d.ts.map +1 -1
  37. package/dist/core/components/separator-v3.js +55 -15
  38. package/dist/core/components/separator-v3.js.map +1 -1
  39. package/dist/core/components/sparkline.d.ts +33 -0
  40. package/dist/core/components/sparkline.d.ts.map +1 -0
  41. package/dist/core/components/sparkline.js +45 -0
  42. package/dist/core/components/sparkline.js.map +1 -0
  43. package/dist/core/components/stats-panel.d.ts +50 -0
  44. package/dist/core/components/stats-panel.d.ts.map +1 -0
  45. package/dist/core/components/stats-panel.js +83 -0
  46. package/dist/core/components/stats-panel.js.map +1 -0
  47. package/dist/core/components/surface-text.d.ts +1 -1
  48. package/dist/core/components/surface-text.d.ts.map +1 -1
  49. package/dist/core/components/surface-text.js +80 -9
  50. package/dist/core/components/surface-text.js.map +1 -1
  51. package/dist/core/components/table-v3.d.ts.map +1 -1
  52. package/dist/core/components/table-v3.js +34 -2
  53. package/dist/core/components/table-v3.js.map +1 -1
  54. package/dist/core/components/types.d.ts +4 -4
  55. package/dist/core/components/types.d.ts.map +1 -1
  56. package/dist/core/render/differ.d.ts +12 -1
  57. package/dist/core/render/differ.d.ts.map +1 -1
  58. package/dist/core/render/differ.js +502 -11
  59. package/dist/core/render/differ.js.map +1 -1
  60. package/dist/core/render/packed-cell.d.ts +110 -0
  61. package/dist/core/render/packed-cell.d.ts.map +1 -0
  62. package/dist/core/render/packed-cell.js +301 -0
  63. package/dist/core/render/packed-cell.js.map +1 -0
  64. package/dist/core/text/grapheme.d.ts.map +1 -1
  65. package/dist/core/text/grapheme.js +17 -5
  66. package/dist/core/text/grapheme.js.map +1 -1
  67. package/dist/core/theme/presets.d.ts +9 -1
  68. package/dist/core/theme/presets.d.ts.map +1 -1
  69. package/dist/core/theme/presets.js +44 -2
  70. package/dist/core/theme/presets.js.map +1 -1
  71. package/dist/core/theme/resolve.d.ts.map +1 -1
  72. package/dist/core/theme/resolve.js +21 -1
  73. package/dist/core/theme/resolve.js.map +1 -1
  74. package/dist/core/theme/tokens.d.ts +12 -0
  75. package/dist/core/theme/tokens.d.ts.map +1 -1
  76. package/dist/index.d.ts +4 -2
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +3 -1
  79. package/dist/index.js.map +1 -1
  80. package/dist/ports/io.d.ts +17 -0
  81. package/dist/ports/io.d.ts.map +1 -1
  82. package/dist/ports/surface.d.ts +83 -2
  83. package/dist/ports/surface.d.ts.map +1 -1
  84. package/dist/ports/surface.js +319 -37
  85. package/dist/ports/surface.js.map +1 -1
  86. package/package.json +5 -1
@@ -58,34 +58,159 @@ function copyCellInto(target, source) {
58
58
  target.empty = source.empty;
59
59
  target.opacity = source.opacity;
60
60
  }
61
+ function isPackedSurface(s) {
62
+ return 'buffer' in s && s.buffer instanceof Uint8Array;
63
+ }
64
+ // ── Packed buffer helpers ────────────────────────────────
65
+ import { CELL_STRIDE, OFF_CHAR, OFF_FG_R, OFF_FG_G, OFF_FG_B, OFF_BG_R, OFF_BG_G, OFF_BG_B, OFF_FLAGS, OFF_ALPHA, FLAG_EMPTY, FLAG_FG_SET, FLAG_BG_SET, OPACITY_MASK, SIDE_TABLE_THRESHOLD, encodeChar, decodeChar, encodeModifiers, decodeModifiers, encodeOpacity, decodeOpacity, toHex, packCell, } from '../core/render/packed-cell.js';
66
+ // --- Inline hex → RGB for maximum throughput ---
67
+ function hexD(c) {
68
+ if (c >= 97)
69
+ return c - 87;
70
+ if (c >= 65)
71
+ return c - 55;
72
+ return c - 48;
73
+ }
74
+ function inlineHexRGB(hex, out, off) {
75
+ if (hex.length !== 7)
76
+ return false;
77
+ const c1 = hex.charCodeAt(1), c2 = hex.charCodeAt(2);
78
+ const c3 = hex.charCodeAt(3), c4 = hex.charCodeAt(4);
79
+ const c5 = hex.charCodeAt(5), c6 = hex.charCodeAt(6);
80
+ out[off] = (hexD(c1) << 4) | hexD(c2);
81
+ out[off + 1] = (hexD(c3) << 4) | hexD(c4);
82
+ out[off + 2] = (hexD(c5) << 4) | hexD(c6);
83
+ return true;
84
+ }
85
+ /** Encode a Cell into the packed buffer. */
86
+ function encodeCellIntoBuf(buf, idx, cell, sideTable) {
87
+ const off = idx * CELL_STRIDE;
88
+ const charCode = encodeChar(cell.char, sideTable);
89
+ buf[off + OFF_CHAR] = charCode & 0xFF;
90
+ buf[off + OFF_CHAR + 1] = (charCode >> 8) & 0xFF;
91
+ // Foreground: pre-parsed `fgRGB` wins over `fg` hex string.
92
+ // Theme tokens populate fgRGB via resolve.ts populateThemeRGB(),
93
+ // so theme-driven paints skip inlineHexRGB entirely.
94
+ let alphaBits = 0;
95
+ const fgRGB = cell.fgRGB;
96
+ if (fgRGB !== undefined) {
97
+ buf[off + OFF_FG_R] = fgRGB[0];
98
+ buf[off + OFF_FG_G] = fgRGB[1];
99
+ buf[off + OFF_FG_B] = fgRGB[2];
100
+ alphaBits |= FLAG_FG_SET;
101
+ }
102
+ else if (cell.fg && inlineHexRGB(cell.fg, buf, off + OFF_FG_R)) {
103
+ alphaBits |= FLAG_FG_SET;
104
+ }
105
+ else {
106
+ buf[off + OFF_FG_R] = 0;
107
+ buf[off + OFF_FG_G] = 0;
108
+ buf[off + OFF_FG_B] = 0;
109
+ }
110
+ const bgRGB = cell.bgRGB;
111
+ if (bgRGB !== undefined) {
112
+ buf[off + OFF_BG_R] = bgRGB[0];
113
+ buf[off + OFF_BG_G] = bgRGB[1];
114
+ buf[off + OFF_BG_B] = bgRGB[2];
115
+ alphaBits |= FLAG_BG_SET;
116
+ }
117
+ else if (cell.bg && inlineHexRGB(cell.bg, buf, off + OFF_BG_R)) {
118
+ alphaBits |= FLAG_BG_SET;
119
+ }
120
+ else {
121
+ buf[off + OFF_BG_R] = 0;
122
+ buf[off + OFF_BG_G] = 0;
123
+ buf[off + OFF_BG_B] = 0;
124
+ }
125
+ buf[off + OFF_FLAGS] = encodeModifiers(cell.modifiers) | (cell.empty ? FLAG_EMPTY : 0);
126
+ buf[off + OFF_ALPHA] = (encodeOpacity(cell.opacity) & OPACITY_MASK) | alphaBits;
127
+ }
128
+ /** Decode a packed buffer cell into a Cell object. */
129
+ function decodeCellFromBuf(buf, idx, sideTable) {
130
+ const off = idx * CELL_STRIDE;
131
+ const charCode = buf[off + OFF_CHAR] | (buf[off + OFF_CHAR + 1] << 8);
132
+ const alphaByte = buf[off + OFF_ALPHA];
133
+ const flags = buf[off + OFF_FLAGS];
134
+ const fgSet = (alphaByte & FLAG_FG_SET) !== 0;
135
+ const bgSet = (alphaByte & FLAG_BG_SET) !== 0;
136
+ return {
137
+ char: decodeChar(charCode, sideTable),
138
+ fg: fgSet ? toHex(buf[off + OFF_FG_R], buf[off + OFF_FG_G], buf[off + OFF_FG_B]) : undefined,
139
+ bg: bgSet ? toHex(buf[off + OFF_BG_R], buf[off + OFF_BG_G], buf[off + OFF_BG_B]) : undefined,
140
+ modifiers: decodeModifiers(flags & ~FLAG_EMPTY),
141
+ empty: (flags & FLAG_EMPTY) !== 0,
142
+ opacity: decodeOpacity(alphaByte & OPACITY_MASK),
143
+ };
144
+ }
145
+ /** Sync a Cell object from the packed buffer (overwrite all fields). */
146
+ function syncCellFromBuf(cell, buf, idx, sideTable, exactOpacity) {
147
+ const decoded = decodeCellFromBuf(buf, idx, sideTable);
148
+ cell.char = decoded.char;
149
+ cell.fg = decoded.fg;
150
+ cell.bg = decoded.bg;
151
+ cell.modifiers = decoded.modifiers;
152
+ cell.empty = decoded.empty;
153
+ // Preserve exact float when available; use quantized only for buffer-decoded reads
154
+ cell.opacity = exactOpacity ?? decoded.opacity;
155
+ }
61
156
  /**
62
- * Apply a source cell to a target cell using a mask, respecting 'empty' transparency.
63
- *
64
- * @param target - The existing cell to be modified.
65
- * @param source - The cell containing the new values.
66
- * @param mask - Determines which fields of `source` are applied to `target`.
67
- * @returns A new Cell with the masked values applied.
157
+ * Apply a masked write of a source Cell into the packed buffer,
158
+ * respecting empty-cell brush transparency.
68
159
  */
69
- function applyMaskInPlace(target, source, mask) {
70
- // Brush/Stamp behavior: if source is empty, do not modify the target.
160
+ function applyMaskToBuf(buf, idx, source, mask, sideTable) {
71
161
  if (source.empty)
72
162
  return;
73
- if (mask.char)
74
- target.char = source.char;
75
- if (mask.fg)
76
- target.fg = source.fg;
77
- if (mask.bg)
78
- target.bg = source.bg;
79
- if (mask.modifiers)
80
- target.modifiers = source.modifiers;
163
+ const off = idx * CELL_STRIDE;
164
+ if (mask.char) {
165
+ const charCode = encodeChar(source.char, sideTable);
166
+ buf[off + OFF_CHAR] = charCode & 0xFF;
167
+ buf[off + OFF_CHAR + 1] = (charCode >> 8) & 0xFF;
168
+ }
169
+ if (mask.fg) {
170
+ if (source.fg && inlineHexRGB(source.fg, buf, off + OFF_FG_R)) {
171
+ buf[off + OFF_ALPHA] = buf[off + OFF_ALPHA] | FLAG_FG_SET;
172
+ }
173
+ else {
174
+ buf[off + OFF_FG_R] = 0;
175
+ buf[off + OFF_FG_G] = 0;
176
+ buf[off + OFF_FG_B] = 0;
177
+ buf[off + OFF_ALPHA] = buf[off + OFF_ALPHA] & ~FLAG_FG_SET;
178
+ }
179
+ }
180
+ if (mask.bg) {
181
+ if (source.bg && inlineHexRGB(source.bg, buf, off + OFF_BG_R)) {
182
+ buf[off + OFF_ALPHA] = buf[off + OFF_ALPHA] | FLAG_BG_SET;
183
+ }
184
+ else {
185
+ buf[off + OFF_BG_R] = 0;
186
+ buf[off + OFF_BG_G] = 0;
187
+ buf[off + OFF_BG_B] = 0;
188
+ buf[off + OFF_ALPHA] = buf[off + OFF_ALPHA] & ~FLAG_BG_SET;
189
+ }
190
+ }
191
+ if (mask.modifiers) {
192
+ const modFlags = encodeModifiers(source.modifiers);
193
+ const existing = buf[off + OFF_FLAGS];
194
+ // Preserve the empty bit, replace modifier bits
195
+ buf[off + OFF_FLAGS] = (existing & FLAG_EMPTY) | modFlags;
196
+ }
81
197
  if (mask.alpha) {
82
- target.empty = source.empty ?? false;
83
- target.opacity = source.opacity ?? 1;
198
+ const existing = buf[off + OFF_FLAGS];
199
+ buf[off + OFF_FLAGS] = source.empty
200
+ ? (existing | FLAG_EMPTY)
201
+ : (existing & ~FLAG_EMPTY);
202
+ const alphaByte = buf[off + OFF_ALPHA];
203
+ const opacityBits = encodeOpacity(source.opacity ?? 1);
204
+ buf[off + OFF_ALPHA] = (alphaByte & ~OPACITY_MASK) | opacityBits;
84
205
  }
85
206
  }
86
207
  /**
87
208
  * Factory for creating a blank surface.
88
209
  *
210
+ * Internally backed by a packed Uint8Array (10 bytes per cell).
211
+ * The Cell[] array is kept in sync for backward compatibility with
212
+ * consumers that access .cells directly.
213
+ *
89
214
  * @param width - Width in columns.
90
215
  * @param height - Height in rows.
91
216
  * @param fill - Optional cell to fill the surface with (defaults to space).
@@ -96,49 +221,158 @@ export function createSurface(width, height, fill) {
96
221
  const h = Math.max(0, Math.floor(height));
97
222
  const size = w * h;
98
223
  const defaultCell = fill ?? { char: ' ', empty: true };
99
- const cells = Array.from({ length: size }, () => cloneCell(defaultCell));
224
+ const sideTable = [];
225
+ const buf = new Uint8Array(size * CELL_STRIDE);
226
+ // Cell-decode dirty bitmap: 1 bit per cell. When set, the Cell
227
+ // object is stale and must be decoded from the buffer before reading.
228
+ const dirtyWords = new Uint32Array(Math.ceil(size / 32));
229
+ // Render-dirty bitmap: 1 bit per cell. When set, the cell was
230
+ // mutated since the last `clear()`. Used by `renderDiffPacked` to
231
+ // skip cells that haven't been painted this frame. NOT cleared by
232
+ // renderDiff — it's the next frame's `clear()` responsibility.
233
+ // See PackedSurface.renderDirtyWords docs for the full contract.
234
+ const renderDirtyWords = new Uint32Array(Math.ceil(size / 32));
235
+ // Cell array: lazily decoded from the buffer on read.
236
+ const cells = new Array(size);
237
+ // Initialize buffer and cell array from the default cell
238
+ for (let i = 0; i < size; i++) {
239
+ encodeCellIntoBuf(buf, i, defaultCell, sideTable);
240
+ cells[i] = cloneCell(defaultCell);
241
+ }
242
+ function markDirty(idx) {
243
+ const w = idx >> 5;
244
+ const bit = 1 << (idx & 31);
245
+ dirtyWords[w] |= bit;
246
+ renderDirtyWords[w] |= bit;
247
+ }
248
+ function ensureClean(idx) {
249
+ const word = dirtyWords[idx >> 5];
250
+ const bit = 1 << (idx & 31);
251
+ if (word & bit) {
252
+ // Preserve the exact float opacity stored by set() to avoid quantization
253
+ // drift. When set() marks dirty, it writes the caller's opacity to the
254
+ // cell first. When markAllDirty() marks dirty (clone), the cell retains
255
+ // whatever opacity it had, which is acceptable.
256
+ const exactOpacity = cells[idx].opacity;
257
+ syncCellFromBuf(cells[idx], buf, idx, sideTable, exactOpacity);
258
+ dirtyWords[idx >> 5] = word & ~bit;
259
+ }
260
+ }
261
+ function markAllClean() {
262
+ dirtyWords.fill(0);
263
+ renderDirtyWords.fill(0);
264
+ }
265
+ function markAllDirty() {
266
+ dirtyWords.fill(0xFFFFFFFF);
267
+ renderDirtyWords.fill(0xFFFFFFFF);
268
+ }
269
+ function markAllRenderClean() {
270
+ renderDirtyWords.fill(0);
271
+ }
100
272
  const surface = {
101
273
  width: w,
102
274
  height: h,
103
275
  cells,
276
+ buffer: buf,
277
+ sideTable,
278
+ renderDirtyWords,
279
+ markAllDirty,
280
+ markAllRenderClean,
104
281
  clear() {
105
- for (let i = 0; i < cells.length; i++) {
106
- copyCellInto(cells[i], defaultCell);
282
+ // Stamp the default cell template across the entire buffer
283
+ if (size > 0) {
284
+ encodeCellIntoBuf(buf, 0, defaultCell, sideTable);
285
+ for (let i = 1; i < size; i++) {
286
+ const off = i * CELL_STRIDE;
287
+ for (let b = 0; b < CELL_STRIDE; b++)
288
+ buf[off + b] = buf[b];
289
+ }
107
290
  }
291
+ for (let i = 0; i < size; i++)
292
+ copyCellInto(cells[i], defaultCell);
293
+ markAllClean();
108
294
  },
109
295
  get(x, y, mask = FULL_MASK) {
110
296
  if (x < 0 || x >= w || y < 0 || y >= h) {
111
297
  return { char: ' ', empty: true };
112
298
  }
113
- return maskCell(cells[y * w + x], mask);
299
+ const idx = y * w + x;
300
+ ensureClean(idx);
301
+ return maskCell(cells[idx], mask);
114
302
  },
115
303
  set(x, y, cell, mask = FULL_MASK) {
116
304
  if (x < 0 || x >= w || y < 0 || y >= h)
117
305
  return;
306
+ // Brush/stamp transparency: empty cells are no-ops for set().
307
+ // This matches the original applyMaskInPlace behavior and is relied
308
+ // on by blit, overlay composition, and component rendering.
309
+ // To clear a cell, use fill({ char: ' ', empty: true }, x, y, 1, 1).
310
+ if (cell.empty)
311
+ return;
118
312
  const idx = y * w + x;
119
- applyMaskInPlace(cells[idx], cell, mask);
313
+ if (mask === FULL_MASK) {
314
+ encodeCellIntoBuf(buf, idx, cell, sideTable);
315
+ }
316
+ else {
317
+ applyMaskToBuf(buf, idx, cell, mask, sideTable);
318
+ }
319
+ if (mask.alpha) {
320
+ cells[idx].opacity = cell.opacity ?? 1;
321
+ }
322
+ markDirty(idx);
323
+ },
324
+ setRGB(x, y, char, fgR, fgG, fgB, bgR, bgG, bgB, flags = 0) {
325
+ if (x < 0 || x >= w || y < 0 || y >= h)
326
+ return;
327
+ const idx = y * w + x;
328
+ const charCode = typeof char === 'string'
329
+ ? encodeChar(char, sideTable)
330
+ : char;
331
+ const fgSet = fgR >= 0;
332
+ const bgSet = bgR >= 0;
333
+ packCell(buf, idx, charCode, fgSet ? fgR : 0, fgSet ? fgG : 0, fgSet ? fgB : 0, fgSet, bgSet ? bgR : 0, bgSet ? bgG : 0, bgSet ? bgB : 0, bgSet, flags, 63);
334
+ // Sync cached opacity so ensureClean doesn't resurrect a stale value
335
+ cells[idx].opacity = 1;
336
+ markDirty(idx);
120
337
  },
121
338
  fill(cell, fx = 0, fy = 0, fw = w, fh = h, mask = FULL_MASK) {
122
339
  const xStart = Math.max(0, fx);
123
340
  const yStart = Math.max(0, fy);
124
341
  const xEnd = Math.min(w, xStart + fw);
125
342
  const yEnd = Math.min(h, yStart + fh);
126
- for (let y = yStart; y < yEnd; y++) {
127
- for (let x = xStart; x < xEnd; x++) {
128
- const idx = y * w + x;
129
- applyMaskInPlace(cells[idx], cell, mask);
343
+ if (xStart >= xEnd || yStart >= yEnd)
344
+ return;
345
+ if (mask === FULL_MASK && !cell.empty) {
346
+ // Encode template once, stamp it into every position
347
+ const template = new Uint8Array(CELL_STRIDE);
348
+ encodeCellIntoBuf(template, 0, cell, sideTable);
349
+ for (let y = yStart; y < yEnd; y++) {
350
+ for (let x = xStart; x < xEnd; x++) {
351
+ const idx = y * w + x;
352
+ const off = idx * CELL_STRIDE;
353
+ for (let b = 0; b < CELL_STRIDE; b++)
354
+ buf[off + b] = template[b];
355
+ markDirty(idx);
356
+ }
357
+ }
358
+ }
359
+ else {
360
+ for (let y = yStart; y < yEnd; y++) {
361
+ for (let x = xStart; x < xEnd; x++) {
362
+ const idx = y * w + x;
363
+ applyMaskToBuf(buf, idx, cell, mask, sideTable);
364
+ markDirty(idx);
365
+ }
130
366
  }
131
367
  }
132
368
  },
133
369
  blit(source, dx, dy, sx = 0, sy = 0, sw = source.width, sh = source.height, mask = FULL_MASK) {
134
- // 1. Clamp source rectangle to source surface bounds
135
370
  const sX = Math.max(0, sx);
136
371
  const sY = Math.max(0, sy);
137
372
  const sW = Math.min(sw - (sX - sx), source.width - sX);
138
373
  const sH = Math.min(sh - (sY - sy), source.height - sY);
139
374
  if (sW <= 0 || sH <= 0)
140
375
  return;
141
- // 2. Map to destination and clamp to target surface bounds
142
376
  const dX = dx + (sX - sx);
143
377
  const dY = dy + (sY - sy);
144
378
  const xStart = Math.max(0, dX);
@@ -149,17 +383,51 @@ export function createSurface(width, height, fill) {
149
383
  const blitH = Math.min(h - yStart, sH - (srcYStart - sY));
150
384
  if (blitW <= 0 || blitH <= 0)
151
385
  return;
386
+ // Fast path: packed-to-packed with FULL_MASK — byte copy per cell
387
+ const srcPacked = isPackedSurface(source);
388
+ if (srcPacked && mask === FULL_MASK) {
389
+ const sBuf = source.buffer;
390
+ const sSide = source.sideTable;
391
+ for (let i = 0; i < blitH; i++) {
392
+ const targetY = yStart + i;
393
+ const sourceY = srcYStart + i;
394
+ const tRowBase = targetY * w;
395
+ const sRowBase = sourceY * source.width;
396
+ for (let j = 0; j < blitW; j++) {
397
+ const sOff = (sRowBase + srcXStart + j) * CELL_STRIDE;
398
+ // Skip empty source cells (brush transparency)
399
+ if (sBuf[sOff + OFF_FLAGS] & FLAG_EMPTY)
400
+ continue;
401
+ const tOff = (tRowBase + xStart + j) * CELL_STRIDE;
402
+ // Copy 10 bytes directly
403
+ for (let b = 0; b < CELL_STRIDE; b++) {
404
+ buf[tOff + b] = sBuf[sOff + b];
405
+ }
406
+ // Re-encode side-table chars into target's side table
407
+ const charCode = sBuf[sOff] | (sBuf[sOff + 1] << 8);
408
+ if (charCode >= SIDE_TABLE_THRESHOLD) {
409
+ const srcChar = sSide[charCode - SIDE_TABLE_THRESHOLD] ?? ' ';
410
+ const tCharCode = encodeChar(srcChar, sideTable);
411
+ buf[tOff + OFF_CHAR] = tCharCode & 0xFF;
412
+ buf[tOff + OFF_CHAR + 1] = (tCharCode >> 8) & 0xFF;
413
+ }
414
+ markDirty(tRowBase + xStart + j);
415
+ }
416
+ }
417
+ return;
418
+ }
419
+ // Slow path: decode source cells and re-encode
152
420
  for (let i = 0; i < blitH; i++) {
153
421
  const targetY = yStart + i;
154
422
  const sourceY = srcYStart + i;
155
423
  const tRowOffset = targetY * w;
156
- const sRowOffset = sourceY * source.width;
157
424
  for (let j = 0; j < blitW; j++) {
158
425
  const targetX = xStart + j;
159
426
  const sourceX = srcXStart + j;
160
427
  const tIdx = tRowOffset + targetX;
161
- const sIdx = sRowOffset + sourceX;
162
- applyMaskInPlace(cells[tIdx], source.cells[sIdx], mask);
428
+ const srcCell = source.get(sourceX, sourceY);
429
+ applyMaskToBuf(buf, tIdx, srcCell, mask, sideTable);
430
+ markDirty(tIdx);
163
431
  }
164
432
  }
165
433
  },
@@ -182,7 +450,8 @@ export function createSurface(width, height, fill) {
182
450
  transformedCell.char = charMap[transformedCell.char];
183
451
  }
184
452
  const idx = y * w + x;
185
- applyMaskInPlace(cells[idx], transformedCell, mask);
453
+ applyMaskToBuf(buf, idx, transformedCell, mask, sideTable);
454
+ markDirty(idx);
186
455
  }
187
456
  }
188
457
  }
@@ -194,8 +463,11 @@ export function createSurface(width, height, fill) {
194
463
  const count = Math.min(w - xStart, rw);
195
464
  if (count <= 0)
196
465
  return [];
466
+ const base = y * w + xStart;
467
+ for (let i = 0; i < count; i++)
468
+ ensureClean(base + i);
197
469
  return cells
198
- .slice(y * w + xStart, y * w + xStart + count)
470
+ .slice(base, base + count)
199
471
  .map((c) => maskCell(c, mask));
200
472
  },
201
473
  setRow(y, rowCells, sx = 0, mask = FULL_MASK) {
@@ -205,14 +477,24 @@ export function createSurface(width, height, fill) {
205
477
  const count = Math.min(w - xStart, rowCells.length);
206
478
  for (let i = 0; i < count; i++) {
207
479
  const idx = y * w + xStart + i;
208
- applyMaskInPlace(cells[idx], rowCells[i], mask);
480
+ applyMaskToBuf(buf, idx, rowCells[i], mask, sideTable);
481
+ markDirty(idx);
209
482
  }
210
483
  },
211
484
  clone() {
212
485
  const s = createSurface(w, h);
213
- for (let i = 0; i < cells.length; i++) {
214
- copyCellInto(s.cells[i], cells[i]);
486
+ // Copy buffer wholesale O(n) byte copy instead of per-cell encode
487
+ s.buffer.set(buf);
488
+ // Copy side-table entries into the clone.
489
+ // includes() is O(n) per entry, but side tables are typically small
490
+ // (only entries for multi-codepoint grapheme clusters above SIDE_TABLE_THRESHOLD).
491
+ for (const entry of sideTable) {
492
+ if (!s.sideTable.includes(entry)) {
493
+ s.sideTable.push(entry);
494
+ }
215
495
  }
496
+ // Cells will decode lazily from the copied buffer
497
+ s.markAllDirty();
216
498
  return s;
217
499
  },
218
500
  };
@@ -1 +1 @@
1
- {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../src/ports/surface.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../../src/ports/surface.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@flyingrobots/bijou",
3
- "version": "4.2.0",
3
+ "version": "4.4.1",
4
4
  "description": "Themed terminal components for CLIs, loggers, and scripts — graceful degradation included.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -15,6 +15,10 @@
15
15
  "types": "./dist/adapters/test/index.d.ts",
16
16
  "default": "./dist/adapters/test/index.js"
17
17
  },
18
+ "./perf": {
19
+ "types": "./dist/core/render/packed-cell.d.ts",
20
+ "default": "./dist/core/render/packed-cell.js"
21
+ },
18
22
  "./package.json": "./package.json"
19
23
  },
20
24
  "files": [