take4-console 0.30.0 → 0.31.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 (76) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +3 -2
  3. package/dist/Screen/Screen.d.mts +40 -0
  4. package/dist/Screen/Screen.d.mts.map +1 -1
  5. package/dist/Screen/Screen.mjs +148 -1
  6. package/dist/Screen/Screen.mjs.map +1 -1
  7. package/dist/Screen/Window.d.mts +50 -1
  8. package/dist/Screen/Window.d.mts.map +1 -1
  9. package/dist/Screen/Window.mjs +176 -19
  10. package/dist/Screen/Window.mjs.map +1 -1
  11. package/dist/Screen/WindowManager.d.mts.map +1 -1
  12. package/dist/Screen/WindowManager.mjs +11 -0
  13. package/dist/Screen/WindowManager.mjs.map +1 -1
  14. package/dist/Screen/controls/BarChart.d.mts.map +1 -1
  15. package/dist/Screen/controls/BarChart.mjs +3 -0
  16. package/dist/Screen/controls/BarChart.mjs.map +1 -1
  17. package/dist/Screen/controls/Checkbox.d.mts.map +1 -1
  18. package/dist/Screen/controls/Checkbox.mjs +4 -0
  19. package/dist/Screen/controls/Checkbox.mjs.map +1 -1
  20. package/dist/Screen/controls/LineChart.d.mts.map +1 -1
  21. package/dist/Screen/controls/LineChart.mjs +3 -0
  22. package/dist/Screen/controls/LineChart.mjs.map +1 -1
  23. package/dist/Screen/controls/ListBox.d.mts.map +1 -1
  24. package/dist/Screen/controls/ListBox.mjs +9 -0
  25. package/dist/Screen/controls/ListBox.mjs.map +1 -1
  26. package/dist/Screen/controls/ProgressBar.d.mts.map +1 -1
  27. package/dist/Screen/controls/ProgressBar.mjs +2 -0
  28. package/dist/Screen/controls/ProgressBar.mjs.map +1 -1
  29. package/dist/Screen/controls/ProgressBarV.d.mts.map +1 -1
  30. package/dist/Screen/controls/ProgressBarV.mjs +2 -0
  31. package/dist/Screen/controls/ProgressBarV.mjs.map +1 -1
  32. package/dist/Screen/controls/Radio.d.mts.map +1 -1
  33. package/dist/Screen/controls/Radio.mjs +7 -1
  34. package/dist/Screen/controls/Radio.mjs.map +1 -1
  35. package/dist/Screen/controls/Sparkline.d.mts.map +1 -1
  36. package/dist/Screen/controls/Sparkline.mjs +3 -0
  37. package/dist/Screen/controls/Sparkline.mjs.map +1 -1
  38. package/dist/Screen/controls/Spinner.d.mts.map +1 -1
  39. package/dist/Screen/controls/Spinner.mjs +8 -0
  40. package/dist/Screen/controls/Spinner.mjs.map +1 -1
  41. package/dist/Screen/controls/StatusLED.d.mts.map +1 -1
  42. package/dist/Screen/controls/StatusLED.mjs +3 -0
  43. package/dist/Screen/controls/StatusLED.mjs.map +1 -1
  44. package/dist/Screen/controls/Tabs.d.mts.map +1 -1
  45. package/dist/Screen/controls/Tabs.mjs +2 -0
  46. package/dist/Screen/controls/Tabs.mjs.map +1 -1
  47. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  48. package/dist/Screen/controls/TextArea.mjs +11 -0
  49. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  50. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  51. package/dist/Screen/controls/TextBox.mjs +13 -0
  52. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  53. package/dist/Screen/types.d.mts +26 -0
  54. package/dist/Screen/types.d.mts.map +1 -1
  55. package/dist/index.d.mts +1 -1
  56. package/dist/index.d.mts.map +1 -1
  57. package/package.json +1 -1
  58. package/src/Screen/Screen.mts +148 -2
  59. package/src/Screen/Window.mts +165 -16
  60. package/src/Screen/WindowManager.mts +11 -0
  61. package/src/Screen/controls/BarChart.mts +3 -0
  62. package/src/Screen/controls/Checkbox.mts +3 -0
  63. package/src/Screen/controls/LineChart.mts +3 -0
  64. package/src/Screen/controls/ListBox.mts +8 -0
  65. package/src/Screen/controls/ProgressBar.mts +2 -0
  66. package/src/Screen/controls/ProgressBarV.mts +2 -0
  67. package/src/Screen/controls/Radio.mts +6 -1
  68. package/src/Screen/controls/Sparkline.mts +3 -0
  69. package/src/Screen/controls/Spinner.mts +6 -0
  70. package/src/Screen/controls/StatusLED.mts +2 -0
  71. package/src/Screen/controls/Tabs.mts +2 -0
  72. package/src/Screen/controls/TextArea.mts +10 -0
  73. package/src/Screen/controls/TextBox.mts +12 -0
  74. package/src/Screen/types.mts +27 -0
  75. package/src/demo.mts +51 -0
  76. package/src/index.mts +1 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,65 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.31.0] – 2026-04-20
4
+
5
+ ### Added — backlog P2-59 (damage tracking / dirty-region render)
6
+ - **`DirtyRect`** — nowy typ (`{ x, y, w, h }`) eksportowany z
7
+ `src/index.mts`. Reprezentuje zmieniony obszar w lokalnym
8
+ układzie współrzędnych `Window` albo (po zebraniu przez
9
+ `Screen.render()`) w układzie ekranowym.
10
+ - **`Window.markDirty(rect?)` / `Window.invalidate()`** — publiczny
11
+ API do zgłaszania zmian zawartości. Wszystkie metody zapisu
12
+ (`setCell`, `setChar`, `mergeStyle`, `fill`, `clear`, `writeText`)
13
+ same wołają `markDirty`, więc niestandardowe kontrolki dostają
14
+ tracking za darmo; `invalidate()` to alias „cała kontrolka brudna”.
15
+ Zapisy w obrębie `render()` są globalnie tłumione
16
+ (`Window.renderingDepth`) żeby re-paint w overriddowanym
17
+ `render()` nie unieważniał pustych klatek.
18
+ - **`Window.parent` + `markFullInvalidation()`** — okno trzyma
19
+ wskaźnik na rodzica, a każda zmiana geometrii / topologii
20
+ (`addChild`, `removeChild`, `setVisible`, `setZIndex`,
21
+ `resizeRegions`) propaguje się w górę do rootowego `Screen`,
22
+ który ustawia flagę `fullInvalidate`. `Screen` overriduje tę
23
+ metodę bezpośrednio, więc sygnał nie idzie wyżej.
24
+ - **`Screen.render()` — nowa ścieżka emisji**. Gdy
25
+ `damageTracking` jest włączone (default `true`) i żadna dirty
26
+ nie istnieje, klatka jest pomijana w całości (zero
27
+ `process.stdout.write`). W przeciwnym razie `Screen` zbiera
28
+ rect-y w dół drzewa (`collectDirtyRects`), koalescencja do
29
+ per-row min/max X (`emitDirty`), emit tylko dla zmienionych
30
+ komórek z cursor-addressingiem `\x1b[row;colH`. Pełny repaint
31
+ (`emitFull`) uruchamia się dla pierwszej klatki, po `resize()`,
32
+ po `invalidate()` / `markFullInvalidation()` bąbelkowanym z
33
+ dziecka i po `setDamageTracking(...)` (tranzycja zawsze resetuje
34
+ terminal).
35
+ - **`ScreenOptions.damageTracking`** — konfigurowalne w
36
+ konstruktorze (default `true`); `Screen.setDamageTracking(enabled)`
37
+ / `Screen.isDamageTrackingEnabled()` do przełączania w runtime;
38
+ `Screen.invalidate()` do ręcznego forsowania pełnego repaintu.
39
+ - **`ScreenFrameStats.cellsEmitted` / `fullRepaint`** — nowe pola
40
+ w evencie `'frame'` raportujące ile cell-i realnie poszło na
41
+ stdout i czy była to pełna klatka. Klatki pominięte raportują
42
+ `cellsEmitted: 0` (`fullRepaint` pozostaje `undefined`).
43
+ - **WindowManager.resume()** — po wznowieniu z `pause()` woła
44
+ `screen.invalidate()`, więc klatka po powrocie z powłoki
45
+ zawsze jest pełna (cache dirty po pauzie jest już nieaktualny).
46
+ - **Audyt kontrolek** — state-setter-y w `TextBox`, `TextArea`,
47
+ `ListBox`, `Tabs`, `Checkbox`, `Radio`, `Spinner`, `Sparkline`,
48
+ `LineChart`, `BarChart`, `ProgressBar`, `ProgressBarV`,
49
+ `StatusLED` wołają `markDirty()`; `handleKey()` we wszystkich
50
+ interaktywnych kontrolkach również. Statyczne kontrolki nie
51
+ dostały zmian — ich zawartość zmienia się tylko przy jawnym
52
+ `markDirty` / `writeText`.
53
+ - **Demo + binding** — `Ctrl+D` przełącza damage tracking
54
+ (top-center toast z nowym stanem). `'frame'` event pozwala
55
+ zmierzyć różnicę `cellsEmitted`.
56
+ - **Doc** — `doc/p2-59-damage-tracking.md` opisuje algorytm,
57
+ propagację, escape hatches, backwards compatibility.
58
+ - **Testy** — `tests/Screen.test.mts` (6 nowych, 32 łącznie):
59
+ pełny repaint pierwszej klatki, skip klatki bez zmian, per-row
60
+ emit po `setCell`, `resize()` forsuje full, `invalidate()`
61
+ forsuje full, `setDamageTracking(false)` wraca do pre-0.31.
62
+
3
63
  ## [0.30.0] – 2026-04-18
4
64
 
5
65
  ### Added — backlog P1-27 (Toast / Notification overlay)
package/README.md CHANGED
@@ -8,7 +8,8 @@ Ships 15 built-in controls — buttons, text inputs, checkboxes, radios,
8
8
  listboxes, tabs, status LEDs, progress bars, line/bar/sparkline charts,
9
9
  spinners — and an extension API for adding your own. Pure ESM, TypeScript
10
10
  first, zero runtime dependencies besides a YAML parser, one `stdout.write()`
11
- per frame.
11
+ per frame, with built-in damage tracking that skips the write entirely
12
+ when nothing is dirty.
12
13
 
13
14
  > **Requirements:** Node.js ≥ 18, a terminal that supports ANSI escape
14
15
  > sequences and 256-colour / 24-bit colour. NerdFonts glyphs are supported
@@ -192,7 +193,7 @@ MIT © Jarosław Mężyk
192
193
  | `Region` | A flat `chars[]` + `styleIds[]` buffer. Every Window has two: `content` (user writes) and `region` (composited on render). |
193
194
  | `StyleRegistry` | Maps integer `StyleId` → `CellAttributes`. Identical attribute objects always get the same ID (deduplication). ID 0 = empty style. |
194
195
  | `StyleId` | An opaque integer. Never construct cell attributes directly — always call `registry.register(attrs)` and keep the returned ID. |
195
- | `Screen` | A `Window` sized to the terminal. Owns the root `StyleRegistry`. Serialises its `region` into a single ANSI escape string and writes it with one `process.stdout.write()`. |
196
+ | `Screen` | A `Window` sized to the terminal. Owns the root `StyleRegistry`. Serialises its `region` into a single ANSI escape string and writes it with one `process.stdout.write()`. Damage tracking (on by default) emits only changed cells and skips the write entirely when nothing is dirty. |
196
197
  | `Pos` | Encodes position: absolute `new Pos(x, y)`, edge-relative `new Pos(-1, -1)`, percentage, or named preset (`Pos.center()`, …). |
197
198
  | `Size` | Encodes size: absolute `new Size(w, h)`, percentage, or fill shorthand (`Size.fill()`, `Size.fillWidth(h)`, …). |
198
199
 
@@ -32,6 +32,18 @@ export declare class Screen extends Window {
32
32
  /** Per-toast dismiss callbacks (from `ToastOptions.onDismiss`). Kept out of
33
33
  * the `Toast` instance so the control stays free of bookkeeping code. */
34
34
  private toastDismissHandlers;
35
+ /** When true, `render()` computes the union of every dirty rect propagated
36
+ * bottom-up from the window tree and emits ANSI sequences only for those
37
+ * cells. When false, every frame re-emits the full buffer (pre-0.31
38
+ * behaviour), which is useful for debugging or for terminals that
39
+ * mis-handle partial cursor jumps. Configured via `ScreenOptions.damageTracking`. */
40
+ private damageTracking;
41
+ /** Forces the next `render()` onto the full-repaint path regardless of the
42
+ * dirty state. Set on the first frame, after `resize()`, and bubbled up
43
+ * from descendants via `markFullInvalidation()` when they change
44
+ * geometry, visibility, or tree topology in ways that would leave
45
+ * stale cells on stdout. Cleared after every full-repaint emit. */
46
+ private fullInvalidate;
35
47
  /** Initializes the root window sized to the current terminal dimensions.
36
48
  * Creates a fresh StyleRegistry (with built-in styles pre-registered)
37
49
  * and installs it as the global singleton. The optional ScreenOptions
@@ -123,6 +135,34 @@ export declare class Screen extends Window {
123
135
  * Emits a 'frame' event with the wall-clock duration of the render after stdout has been written.
124
136
  */
125
137
  render(): void;
138
+ /** Emits every visible cell in `this.region` as one ANSI write, starting
139
+ * with `\x1b[H` (cursor home) and ending with `\x1b[0m`. Returns the
140
+ * number of cells whose character was actually written (skips wide-char
141
+ * continuation sentinels). Used by the full-repaint path. */
142
+ private emitFull;
143
+ /** Coalesces the collected dirty rects into per-row horizontal intervals
144
+ * and emits only those cells, using `\x1b[row;colH` cursor jumps between
145
+ * rows. Returns the number of cells emitted so consumers of the 'frame'
146
+ * event can see how much work each frame did. */
147
+ private emitDirty;
148
+ /** Overrides the parent hook so bubbled full-invalidation signals land
149
+ * on this Screen's own `fullInvalidate` flag instead of walking further
150
+ * up a non-existent parent chain. Public so WindowManager can also
151
+ * request a full repaint after pause/resume or alt-screen toggling. */
152
+ markFullInvalidation(): void;
153
+ /** Public alias of `markFullInvalidation()` — schedules a full repaint on
154
+ * the next `render()` call. Use this when external state (terminal
155
+ * re-init, post-OS dialog, SSH reconnect, …) may have corrupted the
156
+ * on-screen buffer and the stored dirty rects are no longer sufficient. */
157
+ invalidate(): void;
158
+ /** Returns whether damage tracking is currently enabled. Useful for demo
159
+ * code and tests that want to assert or toggle the mode at runtime. */
160
+ isDamageTrackingEnabled(): boolean;
161
+ /** Enables or disables damage tracking at runtime. Disabling forces every
162
+ * subsequent frame onto the full-repaint path; re-enabling resumes the
163
+ * dirty-rect emit on the next frame (after one final full repaint, so
164
+ * the terminal state matches the tree-derived baseline). */
165
+ setDamageTracking(enabled: boolean): void;
126
166
  /** Synchronous teardown of any terminal state we own. Used by both dispose()
127
167
  * and the 'exit' listener, where async work would be discarded. */
128
168
  private restoreTerminalState;
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.d.mts","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Screen.d.mts","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
@@ -40,6 +40,18 @@ export class Screen extends Window {
40
40
  /** Per-toast dismiss callbacks (from `ToastOptions.onDismiss`). Kept out of
41
41
  * the `Toast` instance so the control stays free of bookkeeping code. */
42
42
  toastDismissHandlers;
43
+ /** When true, `render()` computes the union of every dirty rect propagated
44
+ * bottom-up from the window tree and emits ANSI sequences only for those
45
+ * cells. When false, every frame re-emits the full buffer (pre-0.31
46
+ * behaviour), which is useful for debugging or for terminals that
47
+ * mis-handle partial cursor jumps. Configured via `ScreenOptions.damageTracking`. */
48
+ damageTracking;
49
+ /** Forces the next `render()` onto the full-repaint path regardless of the
50
+ * dirty state. Set on the first frame, after `resize()`, and bubbled up
51
+ * from descendants via `markFullInvalidation()` when they change
52
+ * geometry, visibility, or tree topology in ways that would leave
53
+ * stale cells on stdout. Cleared after every full-repaint emit. */
54
+ fullInvalidate;
43
55
  /** Initializes the root window sized to the current terminal dimensions.
44
56
  * Creates a fresh StyleRegistry (with built-in styles pre-registered)
45
57
  * and installs it as the global singleton. The optional ScreenOptions
@@ -63,6 +75,8 @@ export class Screen extends Window {
63
75
  this.activeToasts = new Map();
64
76
  this.toastTimers = new Map();
65
77
  this.toastDismissHandlers = new Map();
78
+ this.damageTracking = options?.damageTracking ?? true;
79
+ this.fullInvalidate = true;
66
80
  if (options?.altScreen)
67
81
  this.enterAltScreen();
68
82
  if (options?.hideCursor)
@@ -300,11 +314,46 @@ export class Screen extends Window {
300
314
  */
301
315
  render() {
302
316
  const start = Date.now();
317
+ // Fast path: damage tracking is on, nothing is dirty, no full
318
+ // invalidation pending — skip composition AND emit entirely. The
319
+ // terminal already shows the correct pixels from the previous frame.
320
+ if (this.damageTracking && !this.fullInvalidate) {
321
+ const rects = [];
322
+ this.collectDirtyRects(0, 0, rects);
323
+ if (rects.length === 0) {
324
+ this.events.emit('frame', { ms: Date.now() - start, cellsEmitted: 0 });
325
+ return;
326
+ }
327
+ // Compose first so `this.region` reflects the latest content; the
328
+ // emit below reads from it. We keep `rects` for the emit phase
329
+ // instead of re-collecting, because `super.render()` does not
330
+ // mutate dirty flags (render-depth guard suppresses markDirty
331
+ // inside render overrides).
332
+ super.render();
333
+ const stats = this.emitDirty(rects);
334
+ this.clearDirtyRecursive();
335
+ this.events.emit('frame', { ms: Date.now() - start, cellsEmitted: stats, fullRepaint: false });
336
+ return;
337
+ }
338
+ // Slow / fallback path: full repaint. Always used for the first
339
+ // frame, after `resize()`, after `markFullInvalidation()`, and when
340
+ // damage tracking has been disabled by the caller.
303
341
  super.render();
342
+ const cellsEmitted = this.emitFull();
343
+ this.fullInvalidate = false;
344
+ this.clearDirtyRecursive();
345
+ this.events.emit('frame', { ms: Date.now() - start, cellsEmitted, fullRepaint: true });
346
+ }
347
+ /** Emits every visible cell in `this.region` as one ANSI write, starting
348
+ * with `\x1b[H` (cursor home) and ending with `\x1b[0m`. Returns the
349
+ * number of cells whose character was actually written (skips wide-char
350
+ * continuation sentinels). Used by the full-repaint path. */
351
+ emitFull() {
304
352
  const reg = getRegistry();
305
353
  const chars = this.region.getChars();
306
354
  const styleIds = this.region.getStyleIds();
307
355
  let output = '\x1b[H';
356
+ let count = 0;
308
357
  for (let i = 0; i < chars.length; i++) {
309
358
  const ch = chars[i];
310
359
  // Empty-string sentinel = continuation cell of a wide character;
@@ -313,10 +362,108 @@ export class Screen extends Window {
313
362
  continue;
314
363
  output += this.buildAnsiSequence(reg.get(styleIds[i]));
315
364
  output += ch;
365
+ count++;
316
366
  }
317
367
  output += '\x1b[0m';
318
368
  process.stdout.write(output);
319
- this.events.emit('frame', { ms: Date.now() - start });
369
+ return count;
370
+ }
371
+ /** Coalesces the collected dirty rects into per-row horizontal intervals
372
+ * and emits only those cells, using `\x1b[row;colH` cursor jumps between
373
+ * rows. Returns the number of cells emitted so consumers of the 'frame'
374
+ * event can see how much work each frame did. */
375
+ emitDirty(rects) {
376
+ const { width: sw, height: sh } = this.getSize();
377
+ if (sw === 0 || sh === 0) {
378
+ process.stdout.write('');
379
+ return 0;
380
+ }
381
+ // Collapse rects into per-row min/max columns. A Map keyed by row is
382
+ // sparse enough for the common case (few small dirty regions) and
383
+ // avoids allocating a dense sh-sized array when only a couple of
384
+ // rows are touched.
385
+ const rowSpans = new Map();
386
+ for (const r of rects) {
387
+ const y0 = Math.max(0, r.y);
388
+ const y1 = Math.min(sh - 1, r.y + r.h - 1);
389
+ const x0 = Math.max(0, r.x);
390
+ const x1 = Math.min(sw - 1, r.x + r.w - 1);
391
+ if (y1 < y0 || x1 < x0)
392
+ continue;
393
+ for (let y = y0; y <= y1; y++) {
394
+ const existing = rowSpans.get(y);
395
+ if (existing) {
396
+ if (x0 < existing.minX)
397
+ existing.minX = x0;
398
+ if (x1 > existing.maxX)
399
+ existing.maxX = x1;
400
+ }
401
+ else {
402
+ rowSpans.set(y, { minX: x0, maxX: x1 });
403
+ }
404
+ }
405
+ }
406
+ if (rowSpans.size === 0)
407
+ return 0;
408
+ // Emit rows in ascending order so the terminal cursor advances
409
+ // forward — random access is fine (we always send an explicit cursor
410
+ // move) but ordered output compresses a bit better and is easier to
411
+ // reason about in transcripts / tests.
412
+ const rows = [...rowSpans.keys()].sort((a, b) => a - b);
413
+ const reg = getRegistry();
414
+ const chars = this.region.getChars();
415
+ const styleIds = this.region.getStyleIds();
416
+ let output = '';
417
+ let count = 0;
418
+ for (const y of rows) {
419
+ const span = rowSpans.get(y);
420
+ // ANSI cursor addressing is 1-based.
421
+ output += `\x1b[${y + 1};${span.minX + 1}H`;
422
+ for (let x = span.minX; x <= span.maxX; x++) {
423
+ const i = y * sw + x;
424
+ const ch = chars[i];
425
+ if (ch === '')
426
+ continue;
427
+ output += this.buildAnsiSequence(reg.get(styleIds[i]));
428
+ output += ch;
429
+ count++;
430
+ }
431
+ }
432
+ output += '\x1b[0m';
433
+ process.stdout.write(output);
434
+ return count;
435
+ }
436
+ /** Overrides the parent hook so bubbled full-invalidation signals land
437
+ * on this Screen's own `fullInvalidate` flag instead of walking further
438
+ * up a non-existent parent chain. Public so WindowManager can also
439
+ * request a full repaint after pause/resume or alt-screen toggling. */
440
+ markFullInvalidation() {
441
+ this.fullInvalidate = true;
442
+ }
443
+ /** Public alias of `markFullInvalidation()` — schedules a full repaint on
444
+ * the next `render()` call. Use this when external state (terminal
445
+ * re-init, post-OS dialog, SSH reconnect, …) may have corrupted the
446
+ * on-screen buffer and the stored dirty rects are no longer sufficient. */
447
+ invalidate() {
448
+ this.markFullInvalidation();
449
+ }
450
+ /** Returns whether damage tracking is currently enabled. Useful for demo
451
+ * code and tests that want to assert or toggle the mode at runtime. */
452
+ isDamageTrackingEnabled() {
453
+ return this.damageTracking;
454
+ }
455
+ /** Enables or disables damage tracking at runtime. Disabling forces every
456
+ * subsequent frame onto the full-repaint path; re-enabling resumes the
457
+ * dirty-rect emit on the next frame (after one final full repaint, so
458
+ * the terminal state matches the tree-derived baseline). */
459
+ setDamageTracking(enabled) {
460
+ if (this.damageTracking === enabled)
461
+ return;
462
+ this.damageTracking = enabled;
463
+ // Always do one full repaint on transition so the terminal buffer
464
+ // matches what the window tree would produce from scratch — useful
465
+ // when flipping back and forth for debugging.
466
+ this.fullInvalidate = true;
320
467
  }
321
468
  // ── Private helpers ───────────────────────────────────────────────────────
322
469
  /** Synchronous teardown of any terminal state we own. Used by both dispose()
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.mjs","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Screen.mjs","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { Cell, StyleId, WindowBorder, WindowProperties, WriteTextOptions, WriteTextInput, TerminalSize, Margin } from './types.mjs';
1
+ import type { Cell, StyleId, WindowBorder, WindowProperties, WriteTextOptions, WriteTextInput, TerminalSize, Margin, DirtyRect } from './types.mjs';
2
2
  import { Region } from './Region.mjs';
3
3
  import { StyleRegistry } from './StyleRegistry.mjs';
4
4
  export declare class Window {
@@ -62,12 +62,61 @@ export declare class Window {
62
62
  private onFocusHandler;
63
63
  /** Fires once when focused state flips from true to false. */
64
64
  private onBlurHandler;
65
+ /** Parent window (set by `addChild`, cleared by `removeChild`). Damage
66
+ * tracking walks up this chain to notify the root `Screen` of geometry
67
+ * or topology changes that need a full repaint. */
68
+ protected parent: Window | null;
69
+ /** Accumulated dirty region in this window's local coordinates.
70
+ * - `null` — nothing changed since the last emit.
71
+ * - `'all'` — the whole window area needs to be re-emitted.
72
+ * - `DirtyRect` — bounding box of localised writes; `markDirty()` eagerly
73
+ * unions new rects so we only ever carry one rect per window.
74
+ * Windows start as `'all'` so the very first frame re-emits every cell. */
75
+ protected dirtyRect: DirtyRect | 'all' | null;
76
+ /** Depth of nested `Window.render()` calls currently executing. Increments
77
+ * at the top of every `render()` and decrements in a `finally`, so
78
+ * controls whose `render()` override re-writes content via `this.clear()`
79
+ * / `this.writeText(...)` do not re-mark themselves dirty every frame —
80
+ * render-time writes deterministically rebuild the display buffer from
81
+ * existing state, so marking them as "user-driven dirty" would defeat the
82
+ * "skip frame when nothing changed" optimisation. */
83
+ protected static renderingDepth: number;
65
84
  /** Creates a window from the given properties.
66
85
  * For percentage-based sizes, call addChild() before writing content to the window.
67
86
  * Uses the global StyleRegistry set by the Screen constructor. */
68
87
  constructor(wp: WindowProperties);
69
88
  /** Returns the window dimensions (columns × rows). */
70
89
  getSize(): TerminalSize;
90
+ /** Marks this window (or a sub-rectangle in its local coordinates) as
91
+ * dirty. Subsequent `Screen.render()` calls emit ANSI only for cells
92
+ * inside the collected dirty rects, skipping untouched regions. When
93
+ * `rect` is omitted, the entire window is flagged. Render-time writes
94
+ * are ignored so controls' `render()` overrides do not re-mark
95
+ * themselves every frame. Safe to call many times between renders —
96
+ * new rects are unioned into the existing bounding box. */
97
+ markDirty(rect?: DirtyRect): void;
98
+ /** Convenience alias — flags the entire window as dirty. Equivalent to
99
+ * calling `markDirty()` with no argument; kept as a named entry point
100
+ * so custom controls can invalidate themselves without depending on
101
+ * the default-argument behaviour. */
102
+ invalidate(): void;
103
+ /** Walks the parent chain up to the root window. Damage tracking uses
104
+ * this to bubble a full-invalidation signal to the root `Screen` when
105
+ * geometry or tree topology changes, because the cells previously
106
+ * occupied by a now-moved / resized / hidden window need to be repainted
107
+ * from the content underneath them. `Screen` overrides it to toggle its
108
+ * internal full-repaint flag; plain `Window`s forward the call up. */
109
+ protected markFullInvalidation(): void;
110
+ /** Appends this window's dirty rect (translated into screen coordinates
111
+ * via the running offset) and every descendant's dirty rects to `acc`.
112
+ * Hidden subtrees are skipped — invisible windows don't contribute to
113
+ * the emit phase, and any state change that flips visibility already
114
+ * escalated to a full invalidation so the vacated area repaints. */
115
+ protected collectDirtyRects(offsetX: number, offsetY: number, acc: DirtyRect[]): void;
116
+ /** Clears the dirty flag on this window and every descendant. Called by
117
+ * `Screen.render()` after the emit phase so the next frame starts from
118
+ * a clean slate. */
119
+ protected clearDirtyRecursive(): void;
71
120
  /** Returns a snapshot of the resolved per-side margin (in cells). The parent's
72
121
  * layout engine reads this to reserve outer spacing around the child. */
73
122
  getMargin(): Readonly<Margin>;
@@ -1 +1 @@
1
- {"version":3,"file":"Window.d.mts","sourceRoot":"","sources":["../../src/Screen/Window.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Window.d.mts","sourceRoot":"","sources":["../../src/Screen/Window.mts"],"names":[],"mappings":"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"}