@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.
- package/README.md +6 -1
- package/dist/core/components/alert-v3.js +4 -4
- package/dist/core/components/alert-v3.js.map +1 -1
- package/dist/core/components/alert.d.ts.map +1 -1
- package/dist/core/components/alert.js +12 -5
- package/dist/core/components/alert.js.map +1 -1
- package/dist/core/components/badge.d.ts.map +1 -1
- package/dist/core/components/badge.js +38 -7
- package/dist/core/components/badge.js.map +1 -1
- package/dist/core/components/box-v3.d.ts.map +1 -1
- package/dist/core/components/box-v3.js +101 -26
- package/dist/core/components/box-v3.js.map +1 -1
- package/dist/core/components/braille-chart.d.ts +45 -0
- package/dist/core/components/braille-chart.d.ts.map +1 -0
- package/dist/core/components/braille-chart.js +94 -0
- package/dist/core/components/braille-chart.js.map +1 -0
- package/dist/core/components/data-viz-utils.d.ts +25 -0
- package/dist/core/components/data-viz-utils.d.ts.map +1 -0
- package/dist/core/components/data-viz-utils.js +72 -0
- package/dist/core/components/data-viz-utils.js.map +1 -0
- package/dist/core/components/index.d.ts +8 -0
- package/dist/core/components/index.d.ts.map +1 -1
- package/dist/core/components/index.js +4 -0
- package/dist/core/components/index.js.map +1 -1
- package/dist/core/components/inspector.d.ts.map +1 -1
- package/dist/core/components/inspector.js +2 -1
- package/dist/core/components/inspector.js.map +1 -1
- package/dist/core/components/perf-overlay.d.ts +63 -0
- package/dist/core/components/perf-overlay.d.ts.map +1 -0
- package/dist/core/components/perf-overlay.js +84 -0
- package/dist/core/components/perf-overlay.js.map +1 -0
- package/dist/core/components/preference-list.d.ts.map +1 -1
- package/dist/core/components/preference-list.js +63 -11
- package/dist/core/components/preference-list.js.map +1 -1
- package/dist/core/components/separator-v3.d.ts.map +1 -1
- package/dist/core/components/separator-v3.js +55 -15
- package/dist/core/components/separator-v3.js.map +1 -1
- package/dist/core/components/sparkline.d.ts +33 -0
- package/dist/core/components/sparkline.d.ts.map +1 -0
- package/dist/core/components/sparkline.js +45 -0
- package/dist/core/components/sparkline.js.map +1 -0
- package/dist/core/components/stats-panel.d.ts +50 -0
- package/dist/core/components/stats-panel.d.ts.map +1 -0
- package/dist/core/components/stats-panel.js +83 -0
- package/dist/core/components/stats-panel.js.map +1 -0
- package/dist/core/components/surface-text.d.ts +1 -1
- package/dist/core/components/surface-text.d.ts.map +1 -1
- package/dist/core/components/surface-text.js +80 -9
- package/dist/core/components/surface-text.js.map +1 -1
- package/dist/core/components/table-v3.d.ts.map +1 -1
- package/dist/core/components/table-v3.js +34 -2
- package/dist/core/components/table-v3.js.map +1 -1
- package/dist/core/components/types.d.ts +4 -4
- package/dist/core/components/types.d.ts.map +1 -1
- package/dist/core/render/differ.d.ts +12 -1
- package/dist/core/render/differ.d.ts.map +1 -1
- package/dist/core/render/differ.js +502 -11
- package/dist/core/render/differ.js.map +1 -1
- package/dist/core/render/packed-cell.d.ts +110 -0
- package/dist/core/render/packed-cell.d.ts.map +1 -0
- package/dist/core/render/packed-cell.js +301 -0
- package/dist/core/render/packed-cell.js.map +1 -0
- package/dist/core/text/grapheme.d.ts.map +1 -1
- package/dist/core/text/grapheme.js +17 -5
- package/dist/core/text/grapheme.js.map +1 -1
- package/dist/core/theme/presets.d.ts +9 -1
- package/dist/core/theme/presets.d.ts.map +1 -1
- package/dist/core/theme/presets.js +44 -2
- package/dist/core/theme/presets.js.map +1 -1
- package/dist/core/theme/resolve.d.ts.map +1 -1
- package/dist/core/theme/resolve.js +21 -1
- package/dist/core/theme/resolve.js.map +1 -1
- package/dist/core/theme/tokens.d.ts +12 -0
- package/dist/core/theme/tokens.d.ts.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/ports/io.d.ts +17 -0
- package/dist/ports/io.d.ts.map +1 -1
- package/dist/ports/surface.d.ts +83 -2
- package/dist/ports/surface.d.ts.map +1 -1
- package/dist/ports/surface.js +319 -37
- package/dist/ports/surface.js.map +1 -1
- package/package.json +5 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { createSurface } from '../../ports/surface.js';
|
|
2
2
|
import { ANSI_OSC8_RE, graphemeClusterWidth, stripAnsi, segmentGraphemes } from '../text/index.js';
|
|
3
|
+
import { CELL_STRIDE, OFF_FG_R, OFF_BG_R, OFF_BG_G, OFF_BG_B, FLAG_BOLD, FLAG_DIM, FLAG_STRIKETHROUGH, FLAG_INVERSE, FLAG_FG_SET, FLAG_BG_SET, FLAG_EMPTY, FLAG_DASHED, SIDE_TABLE_THRESHOLD, decodeChar, parseHex, } from './packed-cell.js';
|
|
3
4
|
const EMPTY_CELL = { char: ' ', empty: true };
|
|
4
5
|
const EMPTY_MODIFIERS = [];
|
|
6
|
+
function isPackedSurface(s) {
|
|
7
|
+
return 'buffer' in s && s.buffer instanceof Uint8Array;
|
|
8
|
+
}
|
|
5
9
|
function hasVisibleStyle(cell) {
|
|
6
10
|
return cell.fg !== undefined
|
|
7
11
|
|| cell.bg !== undefined
|
|
@@ -131,9 +135,31 @@ function writeSurfaceGrapheme(surface, x, y, char, style) {
|
|
|
131
135
|
if (x >= surface.width)
|
|
132
136
|
return 0;
|
|
133
137
|
const width = Math.max(1, graphemeClusterWidth(char));
|
|
134
|
-
surface
|
|
135
|
-
|
|
136
|
-
|
|
138
|
+
if (isPackedSurface(surface) && (style?.fg || style?.bg)) {
|
|
139
|
+
const fg = style?.fg ? parseHex(style.fg) : undefined;
|
|
140
|
+
let fR = -1, fG = 0, fB = 0;
|
|
141
|
+
if (fg) {
|
|
142
|
+
fR = fg[0];
|
|
143
|
+
fG = fg[1];
|
|
144
|
+
fB = fg[2];
|
|
145
|
+
}
|
|
146
|
+
const bg = style?.bg ? parseHex(style.bg) : undefined;
|
|
147
|
+
let bR = -1, bG = 0, bB = 0;
|
|
148
|
+
if (bg) {
|
|
149
|
+
bR = bg[0];
|
|
150
|
+
bG = bg[1];
|
|
151
|
+
bB = bg[2];
|
|
152
|
+
}
|
|
153
|
+
surface.setRGB(x, y, char, fR, fG, fB, bR, bG, bB);
|
|
154
|
+
for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
|
|
155
|
+
surface.setRGB(x + offset, y, '', fR, fG, fB, bR, bG, bB);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
surface.set(x, y, { char, ...style, empty: false });
|
|
160
|
+
for (let offset = 1; offset < width && x + offset < surface.width; offset++) {
|
|
161
|
+
surface.set(x + offset, y, { char: '', ...style, empty: false });
|
|
162
|
+
}
|
|
137
163
|
}
|
|
138
164
|
return width;
|
|
139
165
|
}
|
|
@@ -197,8 +223,10 @@ export function isSameCell(a, b) {
|
|
|
197
223
|
return true;
|
|
198
224
|
if (aMods.length !== bMods.length)
|
|
199
225
|
return false;
|
|
226
|
+
// Order-insensitive comparison: every modifier in a must exist in b.
|
|
227
|
+
// For short arrays (typically 0-3 modifiers) this is faster than sorting.
|
|
200
228
|
for (let i = 0; i < aMods.length; i++) {
|
|
201
|
-
if (aMods[i]
|
|
229
|
+
if (!bMods.includes(aMods[i]))
|
|
202
230
|
return false;
|
|
203
231
|
}
|
|
204
232
|
return true;
|
|
@@ -218,12 +246,481 @@ function moveCursor(x, y) {
|
|
|
218
246
|
* 2. Minimizes CUP (move cursor) commands by detecting contiguous changes.
|
|
219
247
|
* 3. Batches cells with identical styles to minimize SGR codes and keep strings contiguous.
|
|
220
248
|
*
|
|
249
|
+
* When both surfaces are {@link PackedSurface}, the caller owns a pooled
|
|
250
|
+
* `outBuf`, and the IO port implements {@link WritePort.writeBytes}, the
|
|
251
|
+
* composed frame is UTF-8 encoded into the supplied buffer once and
|
|
252
|
+
* handed off via `writeBytes` instead of `write(string)`. This lets the
|
|
253
|
+
* TUI runtime own the output allocation and bypass the implicit
|
|
254
|
+
* string→UTF-8 conversion inside the underlying stream.
|
|
255
|
+
*
|
|
256
|
+
* Callers without an `outBuf` (tests, bench scenarios, simple drivers)
|
|
257
|
+
* fall through to the legacy `io.write(string)` path with no overhead.
|
|
258
|
+
*
|
|
221
259
|
* @param current - The surface currently on the terminal.
|
|
222
260
|
* @param target - The desired surface state.
|
|
223
261
|
* @param io - The port to write ANSI codes to.
|
|
224
262
|
* @param style - The port to resolve cell styling.
|
|
263
|
+
* @param outBuf - Optional pooled byte buffer for the packed byte path.
|
|
264
|
+
*/
|
|
265
|
+
export function renderDiff(current, target, io, style, outBuf) {
|
|
266
|
+
// Use packed byte path when both surfaces have buffers
|
|
267
|
+
if (isPackedSurface(target) && isPackedSurface(current)) {
|
|
268
|
+
renderDiffPacked(current, target, io, style, outBuf);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
renderDiffCells(current, target, io, style);
|
|
272
|
+
}
|
|
273
|
+
// ── Packed byte-comparison differ ───────────────────────
|
|
274
|
+
/**
|
|
275
|
+
* Empty cell encoded as packed bytes for out-of-bounds boundary comparison.
|
|
276
|
+
* Must match what createSurface produces for `{ char: ' ', empty: true }`.
|
|
277
|
+
* Static shared buffer — do not mutate.
|
|
278
|
+
*/
|
|
279
|
+
const EMPTY_PACKED = new Uint8Array(CELL_STRIDE);
|
|
280
|
+
EMPTY_PACKED[0] = 0x20; // char: space (0x0020 LE)
|
|
281
|
+
EMPTY_PACKED[8] = FLAG_EMPTY; // flags: empty bit set
|
|
282
|
+
EMPTY_PACKED[9] = 63; // alpha: opacity=63 (1.0), fg/bg not present
|
|
283
|
+
function packedBytesEqual(a, aOff, b, bOff) {
|
|
284
|
+
for (let i = 0; i < CELL_STRIDE; i++) {
|
|
285
|
+
if (a[aOff + i] !== b[bOff + i])
|
|
286
|
+
return false;
|
|
287
|
+
}
|
|
288
|
+
return true;
|
|
289
|
+
}
|
|
290
|
+
function packedStyleBytesEqual(a, aOff, b, bOff) {
|
|
291
|
+
// Compare from OFF_FG_R through end (fg, bg, flags, alpha) — skip char
|
|
292
|
+
for (let i = OFF_FG_R; i < CELL_STRIDE; i++) {
|
|
293
|
+
if (a[aOff + i] !== b[bOff + i])
|
|
294
|
+
return false;
|
|
295
|
+
}
|
|
296
|
+
return true;
|
|
297
|
+
}
|
|
298
|
+
function packedHasVisibleStyle(buf, off) {
|
|
299
|
+
const alpha = buf[off + 9];
|
|
300
|
+
return (alpha & (FLAG_FG_SET | FLAG_BG_SET)) !== 0
|
|
301
|
+
|| (buf[off + 8] & ~FLAG_EMPTY) !== 0;
|
|
302
|
+
}
|
|
303
|
+
// --- Direct ANSI byte emission ─────────────────────────
|
|
304
|
+
//
|
|
305
|
+
// II-4: the differ no longer builds SGR/cursor/batch strings and
|
|
306
|
+
// concatenates them. It writes raw UTF-8 bytes directly into the
|
|
307
|
+
// pooled output buffer using the helpers below. The legacy
|
|
308
|
+
// `sgrCache` / `buildSgr` / `styleCacheKey` machinery is gone — the
|
|
309
|
+
// direct byte writers are fast enough that caching hash-indexed
|
|
310
|
+
// strings is pure overhead.
|
|
311
|
+
// Reusable UTF-8 encoder/decoder for the byte-output path. encodeInto
|
|
312
|
+
// writes UTF-8 directly into a target view without an intermediate
|
|
313
|
+
// Uint8Array; the decoder is only used on the fallback path where the
|
|
314
|
+
// IO port lacks writeBytes (tests, mock sinks).
|
|
315
|
+
const textEncoder = new TextEncoder();
|
|
316
|
+
const textDecoder = new TextDecoder('utf-8');
|
|
317
|
+
// Lazy module-level scratch buffer used when the caller does not pass
|
|
318
|
+
// an outBuf (tests, bench scenarios, simple drivers). Grown once to
|
|
319
|
+
// match the largest surface seen and reused thereafter.
|
|
320
|
+
let scratchOutBuf = null;
|
|
321
|
+
/** Upper bound on bytes the differ may emit per surface cell. */
|
|
322
|
+
const SCRATCH_BYTES_PER_CELL = 96;
|
|
323
|
+
/** Fixed slack on top of the scratch cell budget. */
|
|
324
|
+
const SCRATCH_SLACK = 8192;
|
|
325
|
+
// ANSI byte constants are emitted as inline `buf[off++] = …` writes in
|
|
326
|
+
// writeCursorBytes / writeSgrFromBufBytes. TypedArray.set has per-call
|
|
327
|
+
// setup cost that dominates for 4-byte sequences, so inline writes beat
|
|
328
|
+
// pre-allocated Uint8Array constants in the hot path.
|
|
329
|
+
/**
|
|
330
|
+
* Write an unsigned integer (0–9999) as ASCII digits. Returns new offset.
|
|
331
|
+
* Covers cursor coordinates (1-based, up to 9999 for ultra-wide
|
|
332
|
+
* terminals) and RGB components (0–255).
|
|
333
|
+
*/
|
|
334
|
+
function writeDecimal(buf, off, n) {
|
|
335
|
+
if (n >= 1000) {
|
|
336
|
+
const th = (n / 1000) | 0;
|
|
337
|
+
const rem3 = n - th * 1000;
|
|
338
|
+
const h = (rem3 / 100) | 0;
|
|
339
|
+
const rem2 = rem3 - h * 100;
|
|
340
|
+
const t = (rem2 / 10) | 0;
|
|
341
|
+
buf[off] = 0x30 + th;
|
|
342
|
+
buf[off + 1] = 0x30 + h;
|
|
343
|
+
buf[off + 2] = 0x30 + t;
|
|
344
|
+
buf[off + 3] = 0x30 + (rem2 - t * 10);
|
|
345
|
+
return off + 4;
|
|
346
|
+
}
|
|
347
|
+
if (n >= 100) {
|
|
348
|
+
const h = (n / 100) | 0;
|
|
349
|
+
const rem = n - h * 100;
|
|
350
|
+
const t = (rem / 10) | 0;
|
|
351
|
+
buf[off] = 0x30 + h;
|
|
352
|
+
buf[off + 1] = 0x30 + t;
|
|
353
|
+
buf[off + 2] = 0x30 + (rem - t * 10);
|
|
354
|
+
return off + 3;
|
|
355
|
+
}
|
|
356
|
+
if (n >= 10) {
|
|
357
|
+
const t = (n / 10) | 0;
|
|
358
|
+
buf[off] = 0x30 + t;
|
|
359
|
+
buf[off + 1] = 0x30 + (n - t * 10);
|
|
360
|
+
return off + 2;
|
|
361
|
+
}
|
|
362
|
+
buf[off] = 0x30 + n;
|
|
363
|
+
return off + 1;
|
|
364
|
+
}
|
|
365
|
+
/** Write `\x1b[Y;XH` (CUP) with 1-based coordinates. */
|
|
366
|
+
function writeCursorBytes(buf, off, x, y) {
|
|
367
|
+
buf[off] = 0x1b; // ESC
|
|
368
|
+
buf[off + 1] = 0x5b; // [
|
|
369
|
+
off += 2;
|
|
370
|
+
off = writeDecimal(buf, off, y + 1);
|
|
371
|
+
buf[off++] = 0x3b; // ;
|
|
372
|
+
off = writeDecimal(buf, off, x + 1);
|
|
373
|
+
buf[off++] = 0x48; // H
|
|
374
|
+
return off;
|
|
375
|
+
}
|
|
376
|
+
/**
|
|
377
|
+
* Emit the full SGR prelude for the style bytes at `srcOff` into `buf`.
|
|
378
|
+
* Functionally equivalent to the legacy `buildSgr()` emission: reset,
|
|
379
|
+
* optional truecolor FG, optional truecolor BG, modifier flags (bold,
|
|
380
|
+
* dim, strike, inverse in that order), optional underline.
|
|
381
|
+
*
|
|
382
|
+
* Short (≤6 byte) byte sequences are inlined via direct index writes
|
|
383
|
+
* rather than `buf.set(CONST, off)` — the call overhead on a tiny
|
|
384
|
+
* TypedArray.set outweighs the memcpy for 4-byte bursts in V8.
|
|
385
|
+
*/
|
|
386
|
+
function writeSgrFromBufBytes(buf, off, srcBuf, srcOff) {
|
|
387
|
+
// Leading reset: \x1b[0m — 4 inline byte writes.
|
|
388
|
+
buf[off] = 0x1b;
|
|
389
|
+
buf[off + 1] = 0x5b;
|
|
390
|
+
buf[off + 2] = 0x30;
|
|
391
|
+
buf[off + 3] = 0x6d;
|
|
392
|
+
off += 4;
|
|
393
|
+
const flags = srcBuf[srcOff + 8];
|
|
394
|
+
const alpha = srcBuf[srcOff + 9];
|
|
395
|
+
if (alpha & FLAG_FG_SET) {
|
|
396
|
+
// \x1b[38;2;R;G;Bm — 7-byte prefix inlined as individual writes.
|
|
397
|
+
buf[off] = 0x1b;
|
|
398
|
+
buf[off + 1] = 0x5b;
|
|
399
|
+
buf[off + 2] = 0x33;
|
|
400
|
+
buf[off + 3] = 0x38;
|
|
401
|
+
buf[off + 4] = 0x3b;
|
|
402
|
+
buf[off + 5] = 0x32;
|
|
403
|
+
buf[off + 6] = 0x3b;
|
|
404
|
+
off += 7;
|
|
405
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R]);
|
|
406
|
+
buf[off++] = 0x3b;
|
|
407
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R + 1]);
|
|
408
|
+
buf[off++] = 0x3b;
|
|
409
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_FG_R + 2]);
|
|
410
|
+
buf[off++] = 0x6d;
|
|
411
|
+
}
|
|
412
|
+
if (alpha & FLAG_BG_SET) {
|
|
413
|
+
// \x1b[48;2;R;G;Bm
|
|
414
|
+
buf[off] = 0x1b;
|
|
415
|
+
buf[off + 1] = 0x5b;
|
|
416
|
+
buf[off + 2] = 0x34;
|
|
417
|
+
buf[off + 3] = 0x38;
|
|
418
|
+
buf[off + 4] = 0x3b;
|
|
419
|
+
buf[off + 5] = 0x32;
|
|
420
|
+
buf[off + 6] = 0x3b;
|
|
421
|
+
off += 7;
|
|
422
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_R]);
|
|
423
|
+
buf[off++] = 0x3b;
|
|
424
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_G]);
|
|
425
|
+
buf[off++] = 0x3b;
|
|
426
|
+
off = writeDecimal(buf, off, srcBuf[srcOff + OFF_BG_B]);
|
|
427
|
+
buf[off++] = 0x6d;
|
|
428
|
+
}
|
|
429
|
+
// Modifier flags — 4-byte sequences inlined.
|
|
430
|
+
if (flags & FLAG_BOLD) {
|
|
431
|
+
buf[off] = 0x1b;
|
|
432
|
+
buf[off + 1] = 0x5b;
|
|
433
|
+
buf[off + 2] = 0x31;
|
|
434
|
+
buf[off + 3] = 0x6d;
|
|
435
|
+
off += 4;
|
|
436
|
+
}
|
|
437
|
+
if (flags & FLAG_DIM) {
|
|
438
|
+
buf[off] = 0x1b;
|
|
439
|
+
buf[off + 1] = 0x5b;
|
|
440
|
+
buf[off + 2] = 0x32;
|
|
441
|
+
buf[off + 3] = 0x6d;
|
|
442
|
+
off += 4;
|
|
443
|
+
}
|
|
444
|
+
if (flags & FLAG_STRIKETHROUGH) {
|
|
445
|
+
buf[off] = 0x1b;
|
|
446
|
+
buf[off + 1] = 0x5b;
|
|
447
|
+
buf[off + 2] = 0x39;
|
|
448
|
+
buf[off + 3] = 0x6d;
|
|
449
|
+
off += 4;
|
|
450
|
+
}
|
|
451
|
+
if (flags & FLAG_INVERSE) {
|
|
452
|
+
buf[off] = 0x1b;
|
|
453
|
+
buf[off + 1] = 0x5b;
|
|
454
|
+
buf[off + 2] = 0x37;
|
|
455
|
+
buf[off + 3] = 0x6d;
|
|
456
|
+
off += 4;
|
|
457
|
+
}
|
|
458
|
+
const uStyle = (flags >> 4) & 0x03;
|
|
459
|
+
if (uStyle === 1) {
|
|
460
|
+
// \x1b[4m
|
|
461
|
+
buf[off] = 0x1b;
|
|
462
|
+
buf[off + 1] = 0x5b;
|
|
463
|
+
buf[off + 2] = 0x34;
|
|
464
|
+
buf[off + 3] = 0x6d;
|
|
465
|
+
off += 4;
|
|
466
|
+
}
|
|
467
|
+
else if (uStyle === 2) {
|
|
468
|
+
// \x1b[4:3m
|
|
469
|
+
buf[off] = 0x1b;
|
|
470
|
+
buf[off + 1] = 0x5b;
|
|
471
|
+
buf[off + 2] = 0x34;
|
|
472
|
+
buf[off + 3] = 0x3a;
|
|
473
|
+
buf[off + 4] = 0x33;
|
|
474
|
+
buf[off + 5] = 0x6d;
|
|
475
|
+
off += 6;
|
|
476
|
+
}
|
|
477
|
+
else if (uStyle === 3) {
|
|
478
|
+
// \x1b[4:4m (dotted) or \x1b[4:5m (dashed)
|
|
479
|
+
buf[off] = 0x1b;
|
|
480
|
+
buf[off + 1] = 0x5b;
|
|
481
|
+
buf[off + 2] = 0x34;
|
|
482
|
+
buf[off + 3] = 0x3a;
|
|
483
|
+
buf[off + 4] = (flags & FLAG_DASHED) ? 0x35 : 0x34;
|
|
484
|
+
buf[off + 5] = 0x6d;
|
|
485
|
+
off += 6;
|
|
486
|
+
}
|
|
487
|
+
return off;
|
|
488
|
+
}
|
|
489
|
+
/**
|
|
490
|
+
* Write one packed cell's character into the output buffer as UTF-8.
|
|
491
|
+
* ASCII and BMP code points are encoded inline; only side-table graphemes
|
|
492
|
+
* (multi-codepoint clusters) require a `TextEncoder.encodeInto` call.
|
|
225
493
|
*/
|
|
226
|
-
|
|
494
|
+
function writeCharBytes(buf, off, srcBuf, srcOff, sideTable) {
|
|
495
|
+
const code = srcBuf[srcOff] | (srcBuf[srcOff + 1] << 8);
|
|
496
|
+
if (code < 0x80) {
|
|
497
|
+
// ASCII fast path
|
|
498
|
+
buf[off] = code;
|
|
499
|
+
return off + 1;
|
|
500
|
+
}
|
|
501
|
+
if (code < SIDE_TABLE_THRESHOLD) {
|
|
502
|
+
// BMP code point: 0x0080..0x07ff → 2 bytes, 0x0800..0xffff → 3 bytes.
|
|
503
|
+
if (code < 0x800) {
|
|
504
|
+
buf[off] = 0xc0 | (code >> 6);
|
|
505
|
+
buf[off + 1] = 0x80 | (code & 0x3f);
|
|
506
|
+
return off + 2;
|
|
507
|
+
}
|
|
508
|
+
buf[off] = 0xe0 | (code >> 12);
|
|
509
|
+
buf[off + 1] = 0x80 | ((code >> 6) & 0x3f);
|
|
510
|
+
buf[off + 2] = 0x80 | (code & 0x3f);
|
|
511
|
+
return off + 3;
|
|
512
|
+
}
|
|
513
|
+
// Side-table index — multi-codepoint grapheme cluster.
|
|
514
|
+
const grapheme = sideTable[code - SIDE_TABLE_THRESHOLD] ?? '';
|
|
515
|
+
const { written } = textEncoder.encodeInto(grapheme, buf.subarray(off));
|
|
516
|
+
return off + written;
|
|
517
|
+
}
|
|
518
|
+
/**
|
|
519
|
+
* Semantic packed-cell equality across two buffers with independent side tables.
|
|
520
|
+
* Raw bytes are compared first; if they match and the char is a side-table
|
|
521
|
+
* index, the actual grapheme strings are verified.
|
|
522
|
+
*/
|
|
523
|
+
function packedCellsSemanticallyEqual(aBuf, aOff, aSide, bBuf, bOff, bSide) {
|
|
524
|
+
if (!packedBytesEqual(aBuf, aOff, bBuf, bOff))
|
|
525
|
+
return false;
|
|
526
|
+
const aChar = aBuf[aOff] | (aBuf[aOff + 1] << 8);
|
|
527
|
+
if (aChar < SIDE_TABLE_THRESHOLD)
|
|
528
|
+
return true;
|
|
529
|
+
const bChar = bBuf[bOff] | (bBuf[bOff + 1] << 8);
|
|
530
|
+
return aChar === bChar && decodeChar(aChar, aSide) === decodeChar(bChar, bSide);
|
|
531
|
+
}
|
|
532
|
+
/**
|
|
533
|
+
* Fixed byte budget for the cursor move + full SGR prelude + trailing
|
|
534
|
+
* reset that bookend a batch. The variable per-batch cost comes from
|
|
535
|
+
* the char writes, which are bounded by `width * MAX_CHAR_BYTES`.
|
|
536
|
+
* The full batch budget is computed inside `renderDiffPacked` as
|
|
537
|
+
* `BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES` so it scales with
|
|
538
|
+
* terminal width and never overflows on ultra-wide monitors.
|
|
539
|
+
*/
|
|
540
|
+
const BATCH_FIXED_BUDGET = 128;
|
|
541
|
+
/** Worst-case UTF-8 bytes per cell character (side-table emoji cluster). */
|
|
542
|
+
const MAX_CHAR_BYTES = 32;
|
|
543
|
+
function renderDiffPacked(current, target, io, _style, outBuf) {
|
|
544
|
+
const width = target.width;
|
|
545
|
+
const height = target.height;
|
|
546
|
+
const tBuf = target.buffer;
|
|
547
|
+
const cBuf = current.buffer;
|
|
548
|
+
const cWidth = current.width;
|
|
549
|
+
const cHeight = current.height;
|
|
550
|
+
const tSide = target.sideTable;
|
|
551
|
+
const cSide = current.sideTable;
|
|
552
|
+
// Render-dirty bitmap fast path. Cells that weren't mutated since
|
|
553
|
+
// the last clear() in EITHER surface are guaranteed unchanged on
|
|
554
|
+
// the buffer level, so we can skip them entirely. We walk the union
|
|
555
|
+
// of the two bitmaps because:
|
|
556
|
+
// - Bits in target.renderDirtyWords = cells the user painted this frame
|
|
557
|
+
// - Bits in current.renderDirtyWords = cells the user painted last frame
|
|
558
|
+
// (which may now need to be erased if not painted this frame)
|
|
559
|
+
// The union covers both "new content" and "needs erasure" cases.
|
|
560
|
+
const tDirty = target.renderDirtyWords;
|
|
561
|
+
const cDirty = current.renderDirtyWords;
|
|
562
|
+
const cellCount = width * height;
|
|
563
|
+
const wordCount = (cellCount + 31) >>> 5;
|
|
564
|
+
// Early out: if no cells in EITHER surface are dirty, there is
|
|
565
|
+
// nothing to emit. This is the diff-static / unchanged-frame case
|
|
566
|
+
// and should be near-zero cost.
|
|
567
|
+
let anyDirty = false;
|
|
568
|
+
// Both bitmaps may have different lengths if width/height differ,
|
|
569
|
+
// but in practice they're the same. Walk min(both).
|
|
570
|
+
const tWords = Math.min(wordCount, tDirty.length);
|
|
571
|
+
const cWords = Math.min(wordCount, cDirty.length);
|
|
572
|
+
const minWords = Math.min(tWords, cWords);
|
|
573
|
+
for (let w = 0; w < minWords; w++) {
|
|
574
|
+
if ((tDirty[w] | cDirty[w]) !== 0) {
|
|
575
|
+
anyDirty = true;
|
|
576
|
+
break;
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
if (!anyDirty) {
|
|
580
|
+
// Check tail words from whichever bitmap is longer
|
|
581
|
+
for (let w = minWords; w < tWords && !anyDirty; w++) {
|
|
582
|
+
if (tDirty[w] !== 0)
|
|
583
|
+
anyDirty = true;
|
|
584
|
+
}
|
|
585
|
+
for (let w = minWords; w < cWords && !anyDirty; w++) {
|
|
586
|
+
if (cDirty[w] !== 0)
|
|
587
|
+
anyDirty = true;
|
|
588
|
+
}
|
|
589
|
+
}
|
|
590
|
+
if (!anyDirty) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
// Acquire the pooled output buffer. The runtime supplies one sized
|
|
594
|
+
// against the current viewport; all other callers land on the
|
|
595
|
+
// module-level scratch buffer (sized against the live surface and
|
|
596
|
+
// reused across calls).
|
|
597
|
+
let buf;
|
|
598
|
+
if (outBuf !== undefined) {
|
|
599
|
+
buf = outBuf;
|
|
600
|
+
}
|
|
601
|
+
else {
|
|
602
|
+
const needed = cellCount * SCRATCH_BYTES_PER_CELL + SCRATCH_SLACK;
|
|
603
|
+
if (scratchOutBuf === null || scratchOutBuf.length < needed) {
|
|
604
|
+
scratchOutBuf = new Uint8Array(needed);
|
|
605
|
+
}
|
|
606
|
+
buf = scratchOutBuf;
|
|
607
|
+
}
|
|
608
|
+
let off = 0;
|
|
609
|
+
// Flush the pending bytes to the IO port and reset the cursor to
|
|
610
|
+
// the start of the pool. Direct `writeBytes` handoff on the Node
|
|
611
|
+
// stdout path; TextDecoder fallback for mock sinks that only carry
|
|
612
|
+
// a string-level `write`.
|
|
613
|
+
const flush = () => {
|
|
614
|
+
if (off === 0)
|
|
615
|
+
return;
|
|
616
|
+
if (io.writeBytes !== undefined) {
|
|
617
|
+
io.writeBytes(buf, off);
|
|
618
|
+
}
|
|
619
|
+
else {
|
|
620
|
+
io.write(textDecoder.decode(buf.subarray(0, off)));
|
|
621
|
+
}
|
|
622
|
+
off = 0;
|
|
623
|
+
};
|
|
624
|
+
let cursorX = -1;
|
|
625
|
+
let cursorY = -1;
|
|
626
|
+
// Fast path: skip expensive side-table string verification when neither
|
|
627
|
+
// surface has any side-table entries (the common case — no emoji/astral).
|
|
628
|
+
const needsSideTableCheck = tSide.length > 0 || cSide.length > 0;
|
|
629
|
+
// Per-batch byte budget computed from the current surface width so
|
|
630
|
+
// the inner char-write loop never needs a per-cell capacity check,
|
|
631
|
+
// even on ultra-wide terminals.
|
|
632
|
+
const batchBudget = BATCH_FIXED_BUDGET + width * MAX_CHAR_BYTES;
|
|
633
|
+
for (let y = 0; y < height; y++) {
|
|
634
|
+
let x = 0;
|
|
635
|
+
while (x < width) {
|
|
636
|
+
const tIdx = y * width + x;
|
|
637
|
+
// Per-cell dirty skip: if neither surface marked this cell as
|
|
638
|
+
// touched, the bytes are guaranteed identical and there is
|
|
639
|
+
// nothing to emit. Skip it without doing the byte compare.
|
|
640
|
+
const wordIdx = tIdx >>> 5;
|
|
641
|
+
const bitMask = 1 << (tIdx & 31);
|
|
642
|
+
const cellDirty = ((wordIdx < tDirty.length ? tDirty[wordIdx] : 0) & bitMask) !== 0
|
|
643
|
+
|| ((wordIdx < cDirty.length ? cDirty[wordIdx] : 0) & bitMask) !== 0;
|
|
644
|
+
if (!cellDirty) {
|
|
645
|
+
x++;
|
|
646
|
+
continue;
|
|
647
|
+
}
|
|
648
|
+
const tOff = tIdx * CELL_STRIDE;
|
|
649
|
+
const inBounds = y < cHeight && x < cWidth;
|
|
650
|
+
const cOff = inBounds ? (y * cWidth + x) * CELL_STRIDE : -1;
|
|
651
|
+
const same = inBounds
|
|
652
|
+
? (needsSideTableCheck
|
|
653
|
+
? packedCellsSemanticallyEqual(tBuf, tOff, tSide, cBuf, cOff, cSide)
|
|
654
|
+
: packedBytesEqual(tBuf, tOff, cBuf, cOff))
|
|
655
|
+
: packedBytesEqual(tBuf, tOff, EMPTY_PACKED, 0);
|
|
656
|
+
if (same) {
|
|
657
|
+
x++;
|
|
658
|
+
continue;
|
|
659
|
+
}
|
|
660
|
+
// Flush if the batch preamble (cursor + SGR) cannot fit contiguously.
|
|
661
|
+
if (off + batchBudget > buf.length) {
|
|
662
|
+
flush();
|
|
663
|
+
}
|
|
664
|
+
if (x !== cursorX || y !== cursorY) {
|
|
665
|
+
off = writeCursorBytes(buf, off, x, y);
|
|
666
|
+
}
|
|
667
|
+
const hasStyle = packedHasVisibleStyle(tBuf, tOff);
|
|
668
|
+
if (hasStyle) {
|
|
669
|
+
off = writeSgrFromBufBytes(buf, off, tBuf, tOff);
|
|
670
|
+
}
|
|
671
|
+
// Write the first cell of the batch unconditionally: the outer
|
|
672
|
+
// "same?" check above already told us it differs from current,
|
|
673
|
+
// and the batch-leader style check is trivially true at the
|
|
674
|
+
// leader position. This removes a redundant 10-byte compare and
|
|
675
|
+
// a branch from the hot path — in diff-gradient, every batch is
|
|
676
|
+
// one cell, so that's one compare saved per cell per frame.
|
|
677
|
+
off = writeCharBytes(buf, off, tBuf, tOff, tSide);
|
|
678
|
+
let batchX = x + 1;
|
|
679
|
+
// NOTE: The batch continuation loop does not consult the render-
|
|
680
|
+
// dirty bitmap per cell. This is intentional — the cellsMatch
|
|
681
|
+
// byte-compare below catches unchanged cells and breaks the
|
|
682
|
+
// batch. Checking the bitmap here would add a branch to every
|
|
683
|
+
// iteration of the hot inner loop for negligible benefit, since
|
|
684
|
+
// batches are short in practice (style changes break them).
|
|
685
|
+
while (batchX < width) {
|
|
686
|
+
const bIdx = y * width + batchX;
|
|
687
|
+
const bOff = bIdx * CELL_STRIDE;
|
|
688
|
+
// Style check vs batch leader (always — batchX > x here).
|
|
689
|
+
if (!packedStyleBytesEqual(tBuf, tOff, tBuf, bOff)) {
|
|
690
|
+
break;
|
|
691
|
+
}
|
|
692
|
+
// Cell-match break check: stop the batch when we hit a cell
|
|
693
|
+
// that already matches current and has nothing to emit.
|
|
694
|
+
const bInBounds = y < cHeight && batchX < cWidth;
|
|
695
|
+
const bcOff = bInBounds ? (y * cWidth + batchX) * CELL_STRIDE : -1;
|
|
696
|
+
const cellsMatch = bInBounds
|
|
697
|
+
? (needsSideTableCheck
|
|
698
|
+
? packedCellsSemanticallyEqual(tBuf, bOff, tSide, cBuf, bcOff, cSide)
|
|
699
|
+
: packedBytesEqual(tBuf, bOff, cBuf, bcOff))
|
|
700
|
+
: packedBytesEqual(tBuf, bOff, EMPTY_PACKED, 0);
|
|
701
|
+
if (cellsMatch)
|
|
702
|
+
break;
|
|
703
|
+
off = writeCharBytes(buf, off, tBuf, bOff, tSide);
|
|
704
|
+
batchX++;
|
|
705
|
+
}
|
|
706
|
+
// Trailing reset after styled batch — matches legacy emission.
|
|
707
|
+
// 4-byte inline write, same as the leading reset inside writeSgrFromBufBytes.
|
|
708
|
+
if (hasStyle) {
|
|
709
|
+
buf[off] = 0x1b;
|
|
710
|
+
buf[off + 1] = 0x5b;
|
|
711
|
+
buf[off + 2] = 0x30;
|
|
712
|
+
buf[off + 3] = 0x6d;
|
|
713
|
+
off += 4;
|
|
714
|
+
}
|
|
715
|
+
cursorX = batchX;
|
|
716
|
+
cursorY = y;
|
|
717
|
+
x = batchX;
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
flush();
|
|
721
|
+
}
|
|
722
|
+
// ── Legacy cell-based differ (fallback) ─────────────────
|
|
723
|
+
function renderDiffCells(current, target, io, style) {
|
|
227
724
|
const width = target.width;
|
|
228
725
|
const height = target.height;
|
|
229
726
|
const targetCells = target.cells;
|
|
@@ -263,12 +760,9 @@ export function renderDiff(current, target, io, style) {
|
|
|
263
760
|
x++;
|
|
264
761
|
continue;
|
|
265
762
|
}
|
|
266
|
-
// If we are not at the expected cursor position, move it
|
|
267
763
|
if (x !== cursorX || y !== cursorY) {
|
|
268
764
|
output += moveCursor(x, y);
|
|
269
765
|
}
|
|
270
|
-
// Find how many contiguous cells have the SAME style as this one
|
|
271
|
-
// and also NEED to be updated.
|
|
272
766
|
let batchX = x;
|
|
273
767
|
let batchText = '';
|
|
274
768
|
const batchStyleMods = targetMods;
|
|
@@ -315,7 +809,6 @@ export function renderDiff(current, target, io, style) {
|
|
|
315
809
|
batchText += c.char;
|
|
316
810
|
batchX++;
|
|
317
811
|
}
|
|
318
|
-
// Render the batch
|
|
319
812
|
if (hasVisibleStyle(targetCell)) {
|
|
320
813
|
token.hex = targetCell.fg;
|
|
321
814
|
token.bg = targetCell.bg;
|
|
@@ -325,11 +818,9 @@ export function renderDiff(current, target, io, style) {
|
|
|
325
818
|
else {
|
|
326
819
|
output += batchText;
|
|
327
820
|
}
|
|
328
|
-
// Advance our internal cursor tracking
|
|
329
821
|
const batchWidth = batchX - x;
|
|
330
822
|
cursorX = x + batchWidth;
|
|
331
823
|
cursorY = y;
|
|
332
|
-
// Advance loop index
|
|
333
824
|
x = batchX;
|
|
334
825
|
}
|
|
335
826
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4C,MAAM,wBAAwB,CAAC;AAEjG,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEnG,MAAM,UAAU,GAAS,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;AACpD,MAAM,eAAe,GAAsB,EAAE,CAAC;AAE9C,SAAS,eAAe,CAAC,IAAU;IACjC,OAAO,IAAI,CAAC,EAAE,KAAK,SAAS;WACvB,IAAI,CAAC,EAAE,KAAK,SAAS;WACrB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;AACzC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,KAAK;gBAAE,MAAM;YACtB,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;IAC5E,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5D,MAAM,OAAO,GAAG,mBAAmB,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,IAAI,SAA6B,CAAC;QAClC,IAAI,SAA6B,CAAC;QAClC,IAAI,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;QAEpC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QACnD,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,UAAU,GAAG,KAAK,CAAC,KAAM,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YAC/C,MAAM,EAAE,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAClC,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;gBACtB,IAAI,CAAC,IAAI,KAAK;oBAAE,MAAM;gBACtB,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;oBAC7C,EAAE,EAAE,SAAS;oBACb,EAAE,EAAE,SAAS;oBACb,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;iBACnC,CAAC,CAAC;YACL,CAAC;YAED,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC;gBACtB,SAAS,GAAG,SAAS,CAAC;gBACtB,WAAW,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBACxB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC;oBACvB,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;yBACrC,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;yBACzC,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;yBAC5C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;yBAC/C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;yBAC7C,IAAI,IAAI,KAAK,GAAG;wBAAE,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;yBAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAAC,CAAC;yBAC7E,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;yBACnD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;yBACjD,IAAI,IAAI,KAAK,IAAI;wBAAE,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;yBAChD,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC7C,2BAA2B;wBAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,CAAC;oBACT,CAAC;yBAAM,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,CAAC,GAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;wBAC/C,2BAA2B;wBAC3B,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,GAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;wBAClE,SAAS,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC5B,CAAC,IAAI,CAAC,CAAC;oBACT,CAAC;oBACD,CAAC,EAAE,CAAC;gBACN,CAAC;YACH,CAAC;YAED,SAAS,GAAG,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAC3C,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,MAAM,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;QACvC,KAAK,MAAM,IAAI,IAAI,EAAE,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,KAAK;gBAAE,MAAM;YACtB,CAAC,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE;gBAC7C,EAAE,EAAE,SAAS;gBACb,EAAE,EAAE,SAAS;gBACb,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;aACnC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,OAAgB,EAChB,CAAS,EACT,CAAS,EACT,IAAY,EACZ,KAA6C;IAE7C,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAEjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpD,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,IAAI,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC;QAC5E,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,OAAgB,EAAE,KAAgB;IAChE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YACvC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC/B,MAAM,KAAK,GAAG;gBACZ,GAAG,EAAE,IAAI,CAAC,EAAE;gBACZ,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,SAAS,EAAE,IAAI,CAAC,SAAgB;aACjC,CAAC;YACF,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAChD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe,EAAE,IAAgB;IAC/D,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,eAAe,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,CAAO,EAAE,CAAO;IACzC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACzB,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAChC,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IAEtC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IAC1C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,CAAS,EAAE,CAAS;IACtC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;AACnC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CACxB,OAAgB,EAChB,MAAe,EACf,EAAa,EACb,KAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC7B,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IACjC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IACnC,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC;IACnC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAErC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;IACjB,MAAM,KAAK,GAAiE,EAAE,CAAC;IAE/E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,eAAe,GAAG,CAAC,GAAG,KAAK,CAAC;QAClC,MAAM,gBAAgB,GAAG,CAAC,GAAG,YAAY,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC;QACV,OAAO,CAAC,GAAG,KAAK,EAAE,CAAC;YACjB,MAAM,UAAU,GAAG,WAAW,CAAC,eAAe,GAAG,CAAC,CAAE,CAAC;YACrD,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,IAAI,CAAC,GAAG,YAAY;gBACvD,CAAC,CAAC,YAAY,CAAC,gBAAgB,GAAG,CAAC,CAAE;gBACrC,CAAC,CAAC,UAAU,CAAC;YAEf,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,IAAI,eAAe,CAAC;YAC3D,MAAM,WAAW,GAAG,WAAW,CAAC,SAAS,IAAI,eAAe,CAAC;YAC7D,IAAI,QAAQ,GAAG,UAAU,KAAK,WAAW;mBACpC,CACD,UAAU,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI;uBACjC,UAAU,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE;uBAChC,UAAU,CAAC,EAAE,KAAK,WAAW,CAAC,EAAE;uBAChC,UAAU,CAAC,KAAK,KAAK,WAAW,CAAC,KAAK;uBACtC,UAAU,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,CAC5C,CAAC;YACJ,IAAI,QAAQ,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;gBACzE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3C,IAAI,UAAU,CAAC,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrC,QAAQ,GAAG,KAAK,CAAC;wBACjB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,CAAC,EAAE,CAAC;gBACJ,SAAS;YACX,CAAC;YAED,yDAAyD;YACzD,IAAI,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;gBACnC,MAAM,IAAI,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAC7B,CAAC;YAED,iEAAiE;YACjE,+BAA+B;YAC/B,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,IAAI,SAAS,GAAG,EAAE,CAAC;YACnB,MAAM,cAAc,GAAG,UAAU,CAAC;YAClC,OAAO,MAAM,GAAG,KAAK,EAAE,CAAC;gBACtB,MAAM,CAAC,GAAG,WAAW,CAAC,eAAe,GAAG,MAAM,CAAE,CAAC;gBACjD,MAAM,IAAI,GAAG,CAAC,GAAG,aAAa,IAAI,MAAM,GAAG,YAAY;oBACrD,CAAC,CAAC,YAAY,CAAC,gBAAgB,GAAG,MAAM,CAAE;oBAC1C,CAAC,CAAC,UAAU,CAAC;gBAEf,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBACf,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,eAAe,CAAC;oBAChD,IAAI,SAAS,GAAG,CAAC,KAAK,UAAU;2BAC3B,CACD,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE;+BACnB,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,EAAE;+BACtB,QAAQ,CAAC,MAAM,KAAK,cAAc,CAAC,MAAM,CAC7C,CAAC;oBACJ,IAAI,SAAS,IAAI,CAAC,KAAK,UAAU,IAAI,QAAQ,KAAK,cAAc,EAAE,CAAC;wBACjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;gCACtC,SAAS,GAAG,KAAK,CAAC;gCAClB,MAAM;4BACR,CAAC;wBACH,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,SAAS;wBAAE,MAAM;gBACxB,CAAC;gBAED,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAS,IAAI,eAAe,CAAC;gBAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,IAAI,eAAe,CAAC;gBACnD,IAAI,UAAU,GAAG,CAAC,KAAK,IAAI;uBACtB,CACD,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI;2BACjB,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;2BAChB,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;2BAChB,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK;2BACtB,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM,CACvC,CAAC;gBACJ,IAAI,UAAU,IAAI,CAAC,KAAK,IAAI,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBACtD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACzC,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;4BAChC,UAAU,GAAG,KAAK,CAAC;4BACnB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,UAAU;oBAAE,MAAM;gBAEtB,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC;gBACpB,MAAM,EAAE,CAAC;YACX,CAAC;YAED,mBAAmB;YACnB,IAAI,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC;gBAC1B,KAAK,CAAC,EAAE,GAAG,UAAU,CAAC,EAAE,CAAC;gBACzB,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC,SAAgB,CAAC;gBAC9C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAY,EAAE,SAAS,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,SAAS,CAAC;YACtB,CAAC;YAED,uCAAuC;YACvC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,CAAC;YAC9B,OAAO,GAAG,CAAC,GAAG,UAAU,CAAC;YACzB,OAAO,GAAG,CAAC,CAAC;YAEZ,qBAAqB;YACrB,CAAC,GAAG,MAAM,CAAC;QAEb,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"differ.js","sourceRoot":"","sources":["../../../src/core/render/differ.ts"],"names":[],"mappings":"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"}
|