take4-console 0.25.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 (107) hide show
  1. package/CHANGELOG.md +253 -0
  2. package/README.md +3 -2
  3. package/dist/Screen/ErrorHolder.d.mts +10 -0
  4. package/dist/Screen/ErrorHolder.d.mts.map +1 -0
  5. package/dist/Screen/ErrorHolder.mjs +14 -0
  6. package/dist/Screen/ErrorHolder.mjs.map +1 -0
  7. package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
  8. package/dist/Screen/InterfaceBuilder.mjs +7 -0
  9. package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
  10. package/dist/Screen/Screen.d.mts +90 -1
  11. package/dist/Screen/Screen.d.mts.map +1 -1
  12. package/dist/Screen/Screen.mjs +300 -1
  13. package/dist/Screen/Screen.mjs.map +1 -1
  14. package/dist/Screen/StyleRegistry.d.mts.map +1 -1
  15. package/dist/Screen/StyleRegistry.mjs +3 -1
  16. package/dist/Screen/StyleRegistry.mjs.map +1 -1
  17. package/dist/Screen/VirtualCursor.d.mts +57 -0
  18. package/dist/Screen/VirtualCursor.d.mts.map +1 -0
  19. package/dist/Screen/VirtualCursor.mjs +148 -0
  20. package/dist/Screen/VirtualCursor.mjs.map +1 -0
  21. package/dist/Screen/Window.d.mts +116 -6
  22. package/dist/Screen/Window.d.mts.map +1 -1
  23. package/dist/Screen/Window.mjs +359 -34
  24. package/dist/Screen/Window.mjs.map +1 -1
  25. package/dist/Screen/WindowManager.d.mts +78 -2
  26. package/dist/Screen/WindowManager.d.mts.map +1 -1
  27. package/dist/Screen/WindowManager.mjs +197 -3
  28. package/dist/Screen/WindowManager.mjs.map +1 -1
  29. package/dist/Screen/controls/BarChart.d.mts.map +1 -1
  30. package/dist/Screen/controls/BarChart.mjs +3 -0
  31. package/dist/Screen/controls/BarChart.mjs.map +1 -1
  32. package/dist/Screen/controls/Checkbox.d.mts.map +1 -1
  33. package/dist/Screen/controls/Checkbox.mjs +4 -0
  34. package/dist/Screen/controls/Checkbox.mjs.map +1 -1
  35. package/dist/Screen/controls/LineChart.d.mts.map +1 -1
  36. package/dist/Screen/controls/LineChart.mjs +3 -0
  37. package/dist/Screen/controls/LineChart.mjs.map +1 -1
  38. package/dist/Screen/controls/ListBox.d.mts.map +1 -1
  39. package/dist/Screen/controls/ListBox.mjs +9 -0
  40. package/dist/Screen/controls/ListBox.mjs.map +1 -1
  41. package/dist/Screen/controls/ProgressBar.d.mts.map +1 -1
  42. package/dist/Screen/controls/ProgressBar.mjs +2 -0
  43. package/dist/Screen/controls/ProgressBar.mjs.map +1 -1
  44. package/dist/Screen/controls/ProgressBarV.d.mts.map +1 -1
  45. package/dist/Screen/controls/ProgressBarV.mjs +2 -0
  46. package/dist/Screen/controls/ProgressBarV.mjs.map +1 -1
  47. package/dist/Screen/controls/Radio.d.mts.map +1 -1
  48. package/dist/Screen/controls/Radio.mjs +7 -1
  49. package/dist/Screen/controls/Radio.mjs.map +1 -1
  50. package/dist/Screen/controls/Sparkline.d.mts.map +1 -1
  51. package/dist/Screen/controls/Sparkline.mjs +3 -0
  52. package/dist/Screen/controls/Sparkline.mjs.map +1 -1
  53. package/dist/Screen/controls/Spinner.d.mts.map +1 -1
  54. package/dist/Screen/controls/Spinner.mjs +8 -0
  55. package/dist/Screen/controls/Spinner.mjs.map +1 -1
  56. package/dist/Screen/controls/StatusLED.d.mts.map +1 -1
  57. package/dist/Screen/controls/StatusLED.mjs +3 -0
  58. package/dist/Screen/controls/StatusLED.mjs.map +1 -1
  59. package/dist/Screen/controls/Tabs.d.mts.map +1 -1
  60. package/dist/Screen/controls/Tabs.mjs +2 -0
  61. package/dist/Screen/controls/Tabs.mjs.map +1 -1
  62. package/dist/Screen/controls/TextArea.d.mts +68 -2
  63. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  64. package/dist/Screen/controls/TextArea.mjs +291 -46
  65. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  66. package/dist/Screen/controls/TextBox.d.mts +52 -5
  67. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  68. package/dist/Screen/controls/TextBox.mjs +192 -10
  69. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  70. package/dist/Screen/controls/Toast.d.mts +72 -0
  71. package/dist/Screen/controls/Toast.d.mts.map +1 -0
  72. package/dist/Screen/controls/Toast.mjs +112 -0
  73. package/dist/Screen/controls/Toast.mjs.map +1 -0
  74. package/dist/Screen/types.d.mts +169 -0
  75. package/dist/Screen/types.d.mts.map +1 -1
  76. package/dist/Screen/types.mjs +8 -0
  77. package/dist/Screen/types.mjs.map +1 -1
  78. package/dist/index.d.mts +4 -2
  79. package/dist/index.d.mts.map +1 -1
  80. package/dist/index.mjs +3 -1
  81. package/dist/index.mjs.map +1 -1
  82. package/package.json +1 -1
  83. package/src/Screen/ErrorHolder.mts +22 -0
  84. package/src/Screen/InterfaceBuilder.mts +12 -5
  85. package/src/Screen/Screen.mts +313 -2
  86. package/src/Screen/StyleRegistry.mts +4 -0
  87. package/src/Screen/VirtualCursor.mts +175 -0
  88. package/src/Screen/Window.mts +352 -34
  89. package/src/Screen/WindowManager.mts +203 -3
  90. package/src/Screen/controls/BarChart.mts +3 -0
  91. package/src/Screen/controls/Checkbox.mts +3 -0
  92. package/src/Screen/controls/LineChart.mts +3 -0
  93. package/src/Screen/controls/ListBox.mts +8 -0
  94. package/src/Screen/controls/ProgressBar.mts +2 -0
  95. package/src/Screen/controls/ProgressBarV.mts +2 -0
  96. package/src/Screen/controls/Radio.mts +6 -1
  97. package/src/Screen/controls/Sparkline.mts +3 -0
  98. package/src/Screen/controls/Spinner.mts +6 -0
  99. package/src/Screen/controls/StatusLED.mts +2 -0
  100. package/src/Screen/controls/Tabs.mts +2 -0
  101. package/src/Screen/controls/TextArea.mts +290 -41
  102. package/src/Screen/controls/TextBox.mts +193 -10
  103. package/src/Screen/controls/Toast.mts +138 -0
  104. package/src/Screen/types.mts +167 -0
  105. package/src/demo.mts +131 -0
  106. package/src/index.mts +13 -0
  107. package/src/layout.yaml +16 -0
@@ -4,6 +4,7 @@ import { getRegistry, setRegistry } from './RegistryHolder.mjs';
4
4
  import { Window } from './Window.mjs';
5
5
  import { Pos } from './Pos.mjs';
6
6
  import { Size } from './Size.mjs';
7
+ import { Toast } from './controls/Toast.mjs';
7
8
  /** ANSI control sequences for the terminal lifecycle features owned by Screen. */
8
9
  const ENTER_ALT_SCREEN = '\x1b[?1049h';
9
10
  const EXIT_ALT_SCREEN = '\x1b[?1049l';
@@ -27,6 +28,30 @@ export class Screen extends Window {
27
28
  signalsInstalled;
28
29
  /** Whether dispose() has already restored terminal state. */
29
30
  disposed;
31
+ /** Active toast overlays grouped by anchor position. Within each group the
32
+ * toasts are stored in the order they were created so re-layout can stack
33
+ * them outward from the anchor edge. A toast is removed from its group by
34
+ * `dismissToast` (auto-dismiss timer) or by `Toast.dismiss()`. */
35
+ activeToasts;
36
+ /** Per-toast auto-dismiss timers. `dismissToast` consults this map so
37
+ * manual dismissals cancel the pending timer and leaking timers are
38
+ * impossible when the caller drops their reference to the toast. */
39
+ toastTimers;
40
+ /** Per-toast dismiss callbacks (from `ToastOptions.onDismiss`). Kept out of
41
+ * the `Toast` instance so the control stays free of bookkeeping code. */
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;
30
55
  /** Initializes the root window sized to the current terminal dimensions.
31
56
  * Creates a fresh StyleRegistry (with built-in styles pre-registered)
32
57
  * and installs it as the global singleton. The optional ScreenOptions
@@ -47,6 +72,11 @@ export class Screen extends Window {
47
72
  this.boundExit = () => { this.restoreTerminalState(); };
48
73
  this.signalsInstalled = false;
49
74
  this.disposed = false;
75
+ this.activeToasts = new Map();
76
+ this.toastTimers = new Map();
77
+ this.toastDismissHandlers = new Map();
78
+ this.damageTracking = options?.damageTracking ?? true;
79
+ this.fullInvalidate = true;
50
80
  if (options?.altScreen)
51
81
  this.enterAltScreen();
52
82
  if (options?.hideCursor)
@@ -70,6 +100,132 @@ export class Screen extends Window {
70
100
  getTargetFps() {
71
101
  return this.targetFps;
72
102
  }
103
+ // ── Toast overlays (P1-27) ────────────────────────────────────────────────
104
+ /** Shows a non-modal toast overlay with the given text. Returns the
105
+ * underlying `Toast` window so callers can inspect it, swap its message,
106
+ * or dismiss it manually via `toast.dismiss()`.
107
+ *
108
+ * Toasts are stacked by anchor: every call at the same `position` adds
109
+ * to the visible column, and a dismissal shifts the remainder back
110
+ * towards the anchor edge. Auto-dismissal is driven by a `setTimeout`
111
+ * whose handle is tracked per-toast so manual dismissals cancel the
112
+ * timer. A duration of `0` disables the timer entirely (sticky toast).
113
+ *
114
+ * The method calls `render()` once so the overlay appears immediately,
115
+ * and again after every dismissal for the same reason. Consumers
116
+ * driving their own render loop can call `screen.render()` themselves —
117
+ * the extra render here is idempotent against the `'frame'` event. */
118
+ toast(text, options) {
119
+ const position = options?.position ?? 'top-right';
120
+ const duration = options?.duration ?? 2000;
121
+ const zIndex = options?.zIndex ?? 10_000;
122
+ const border = options?.border ?? { top: true, right: true, bottom: true, left: true, style: 'rounded' };
123
+ const style = options?.style ?? Toast.resolveDefaultStyle();
124
+ const width = options?.width;
125
+ const toast = new Toast(text, { position, style, border, zIndex, width });
126
+ toast.attachDismiss(() => this.dismissToast(toast));
127
+ const list = this.activeToasts.get(position) ?? [];
128
+ list.push(toast);
129
+ this.activeToasts.set(position, list);
130
+ this.addChild(toast);
131
+ this.relayoutToasts(position);
132
+ if (duration > 0) {
133
+ const timer = setTimeout(() => this.dismissToast(toast), duration);
134
+ if (typeof timer === 'object' && timer !== null && 'unref' in timer && typeof timer.unref === 'function') {
135
+ timer.unref();
136
+ }
137
+ this.toastTimers.set(toast, timer);
138
+ }
139
+ if (options?.onDismiss)
140
+ this.toastDismissHandlers.set(toast, options.onDismiss);
141
+ this.render();
142
+ return toast;
143
+ }
144
+ /** Removes a toast from the Screen, cancels its auto-dismiss timer (if
145
+ * any), reflows the remaining toasts anchored to the same corner, and
146
+ * fires the `onDismiss` callback the caller registered at creation
147
+ * time. Safe to call twice — the second call is a no-op. */
148
+ dismissToast(toast) {
149
+ const position = toast.getToastPosition();
150
+ const list = this.activeToasts.get(position);
151
+ if (!list)
152
+ return;
153
+ const idx = list.indexOf(toast);
154
+ if (idx === -1)
155
+ return;
156
+ list.splice(idx, 1);
157
+ const timer = this.toastTimers.get(toast);
158
+ if (timer !== undefined) {
159
+ clearTimeout(timer);
160
+ this.toastTimers.delete(toast);
161
+ }
162
+ this.removeChild(toast);
163
+ this.relayoutToasts(position);
164
+ const handler = this.toastDismissHandlers.get(toast);
165
+ if (handler) {
166
+ this.toastDismissHandlers.delete(toast);
167
+ handler();
168
+ }
169
+ this.render();
170
+ }
171
+ /** Returns a snapshot of the currently active toasts for the given anchor
172
+ * position (or every anchor when `position` is omitted). Exposed for
173
+ * tests and diagnostics — consumers generally keep the instance returned
174
+ * by `toast()` rather than walking this list. */
175
+ getActiveToasts(position) {
176
+ if (position !== undefined) {
177
+ return [...(this.activeToasts.get(position) ?? [])];
178
+ }
179
+ const all = [];
180
+ for (const list of this.activeToasts.values())
181
+ all.push(...list);
182
+ return all;
183
+ }
184
+ /** Computes each toast's absolute position inside the Screen for the
185
+ * given anchor group and writes it to the toast's `x` / `y`. Called
186
+ * after every `addChild` / `removeChild` toast mutation and whenever
187
+ * the Screen is resized so the stack stays anchored. Mutates `x` / `y`
188
+ * directly — the Toast's `Pos.topLeft()` is only a placeholder consumed
189
+ * by the absolute layout pass that ran during `addChild`. */
190
+ relayoutToasts(position) {
191
+ const list = this.activeToasts.get(position);
192
+ if (!list || list.length === 0)
193
+ return;
194
+ const { width: screenW, height: screenH } = this.getSize();
195
+ const horizontalAnchor = position.endsWith('left') ? 'left' :
196
+ position.endsWith('right') ? 'right' :
197
+ 'center';
198
+ const verticalAnchor = position.startsWith('top') ? 'top' : 'bottom';
199
+ let offset = 0;
200
+ for (const toast of list) {
201
+ const { width: tw, height: th } = toast.getSize();
202
+ let x;
203
+ if (horizontalAnchor === 'left')
204
+ x = 0;
205
+ else if (horizontalAnchor === 'right')
206
+ x = Math.max(0, screenW - tw);
207
+ else
208
+ x = Math.max(0, Math.floor((screenW - tw) / 2));
209
+ let y;
210
+ if (verticalAnchor === 'top') {
211
+ y = offset;
212
+ }
213
+ else {
214
+ y = Math.max(0, screenH - offset - th);
215
+ }
216
+ offset += th;
217
+ toast.x = x;
218
+ toast.y = y;
219
+ }
220
+ }
221
+ /** Re-runs `relayoutToasts` for every non-empty anchor group. Invoked
222
+ * from `resize()` so terminal resizes keep the overlays pinned to their
223
+ * corners. */
224
+ relayoutAllToasts() {
225
+ for (const position of this.activeToasts.keys()) {
226
+ this.relayoutToasts(position);
227
+ }
228
+ }
73
229
  // ── Terminal lifecycle helpers ────────────────────────────────────────────
74
230
  /** Switches the terminal into the alternate screen buffer. Idempotent. */
75
231
  enterAltScreen() {
@@ -116,6 +272,13 @@ export class Screen extends Window {
116
272
  dispose() {
117
273
  if (this.disposed)
118
274
  return;
275
+ // Cancel every pending auto-dismiss timer so a disposed Screen does
276
+ // not hold the Node event loop open via a detached setTimeout.
277
+ for (const timer of this.toastTimers.values())
278
+ clearTimeout(timer);
279
+ this.toastTimers.clear();
280
+ this.toastDismissHandlers.clear();
281
+ this.activeToasts.clear();
119
282
  this.restoreTerminalState();
120
283
  this.uninstallSignalHandlers();
121
284
  this.disposed = true;
@@ -130,6 +293,9 @@ export class Screen extends Window {
130
293
  const w = width ?? process.stdout.columns ?? 80;
131
294
  const h = height ?? process.stdout.rows ?? 24;
132
295
  this.setSize(w, h);
296
+ // Re-anchor every active toast overlay so corner-positioned stacks
297
+ // follow the new terminal geometry rather than drifting out of view.
298
+ this.relayoutAllToasts();
133
299
  const size = { width: w, height: h };
134
300
  this.events.emit('resize', size);
135
301
  return size;
@@ -148,11 +314,46 @@ export class Screen extends Window {
148
314
  */
149
315
  render() {
150
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.
151
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() {
152
352
  const reg = getRegistry();
153
353
  const chars = this.region.getChars();
154
354
  const styleIds = this.region.getStyleIds();
155
355
  let output = '\x1b[H';
356
+ let count = 0;
156
357
  for (let i = 0; i < chars.length; i++) {
157
358
  const ch = chars[i];
158
359
  // Empty-string sentinel = continuation cell of a wide character;
@@ -161,10 +362,108 @@ export class Screen extends Window {
161
362
  continue;
162
363
  output += this.buildAnsiSequence(reg.get(styleIds[i]));
163
364
  output += ch;
365
+ count++;
164
366
  }
165
367
  output += '\x1b[0m';
166
368
  process.stdout.write(output);
167
- 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;
168
467
  }
169
468
  // ── Private helpers ───────────────────────────────────────────────────────
170
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 +1 @@
1
- {"version":3,"file":"StyleRegistry.d.mts","sourceRoot":"","sources":["../../src/Screen/StyleRegistry.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAclE;0EAC0E;AAC1E,qBAAa,aAAa;IACzB,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAA0B;IACxC,8CAA8C;IAC9C,OAAO,CAAC,KAAK,CAA8C;IAC3D,gEAAgE;IAChE,OAAO,CAAC,KAAK,CAAmC;IAEhD,6EAA6E;;IAc7E;gFAC4E;IACrE,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAU/C;8EAC0E;IACnE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO;IAMlE,0FAA0F;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIlD;mEAC+D;IACxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK;IAM/D,qFAAqF;IAC9E,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc;IAIvC;8EAC0E;IACnE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAMvD,2DAA2D;IAC3D,OAAO,CAAC,OAAO;CASf"}
1
+ {"version":3,"file":"StyleRegistry.d.mts","sourceRoot":"","sources":["../../src/Screen/StyleRegistry.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAgBlE;0EAC0E;AAC1E,qBAAa,aAAa;IACzB,kEAAkE;IAClE,OAAO,CAAC,MAAM,CAA0B;IACxC,8CAA8C;IAC9C,OAAO,CAAC,KAAK,CAA8C;IAC3D,gEAAgE;IAChE,OAAO,CAAC,KAAK,CAAmC;IAEhD,6EAA6E;;IAgB7E;gFAC4E;IACrE,QAAQ,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAU/C;8EAC0E;IACnE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO;IAMlE,0FAA0F;IACnF,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAIlD;mEAC+D;IACxD,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,GAAG,KAAK;IAM/D,qFAAqF;IAC9E,GAAG,CAAC,EAAE,EAAE,OAAO,GAAG,cAAc;IAIvC;8EAC0E;IACnE,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,OAAO;IAMvD,2DAA2D;IAC3D,OAAO,CAAC,OAAO;CASf"}
@@ -1,4 +1,4 @@
1
- import { BUILTIN_WINDOW_BG, BUILTIN_BORDER, BUILTIN_BORDER_FOCUSED, BUILTIN_BORDER_DISABLED, BUILTIN_TEXT, BUILTIN_TEXT_FOCUSED, BUILTIN_TEXT_DISABLED, BUILTIN_TEXT_PLACEHOLDER, BUILTIN_TEXT_CHECKED, BUILTIN_CURSOR, } from './types.mjs';
1
+ import { BUILTIN_WINDOW_BG, BUILTIN_BORDER, BUILTIN_BORDER_FOCUSED, BUILTIN_BORDER_DISABLED, BUILTIN_TEXT, BUILTIN_TEXT_FOCUSED, BUILTIN_TEXT_DISABLED, BUILTIN_TEXT_PLACEHOLDER, BUILTIN_TEXT_CHECKED, BUILTIN_CURSOR, BUILTIN_TEXT_SELECTION, BUILTIN_TOAST, } from './types.mjs';
2
2
  /** Central registry that maps integer style IDs to CellAttributes objects.
3
3
  * Identical attribute sets always map to the same ID (deduplication). */
4
4
  export class StyleRegistry {
@@ -20,6 +20,8 @@ export class StyleRegistry {
20
20
  this.registerNamed(BUILTIN_TEXT_PLACEHOLDER, { foreground: 242, italic: true });
21
21
  this.registerNamed(BUILTIN_TEXT_CHECKED, { foreground: 76, bold: true });
22
22
  this.registerNamed(BUILTIN_CURSOR, { inverse: true });
23
+ this.registerNamed(BUILTIN_TEXT_SELECTION, { background: 24, foreground: 231 });
24
+ this.registerNamed(BUILTIN_TOAST, { background: 24, foreground: 231, bold: true });
23
25
  }
24
26
  /** Registers a CellAttributes object and returns its stable ID.
25
27
  * If an identical style was registered before, returns the existing ID. */
@@ -1 +1 @@
1
- {"version":3,"file":"StyleRegistry.mjs","sourceRoot":"","sources":["../../src/Screen/StyleRegistry.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StyleRegistry.mjs","sourceRoot":"","sources":["../../src/Screen/StyleRegistry.mts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { CursorBlink, VirtualCursorOptions } from './types.mjs';
2
+ /** Default glyph used when the consumer does not supply one — a vertical
3
+ * bar that reads as a text insertion caret on most monospace fonts. */
4
+ export declare const DEFAULT_CURSOR_SYMBOL = "\u258E";
5
+ /** Software cursor model — owns the glyph rendered on screen and the
6
+ * on/off blink state. Stateless when `blink.mode === 'off'` or `'steady'`;
7
+ * for timed modes the class samples `Date.now()` on every `isVisible()`
8
+ * call and advances internal phase state as needed. A caller (typically
9
+ * `WindowManager`) is responsible for triggering re-renders on a timer so
10
+ * the visual state actually reaches the terminal. */
11
+ export declare class VirtualCursor {
12
+ /** Glyph rendered for the cursor when visible. `undefined` means "use
13
+ * the legacy inverse-block highlight over the underlying character". */
14
+ private symbol;
15
+ /** Blink configuration — mode and custom timings. */
16
+ private blink;
17
+ /** Current phase in the blink timeline. Lazily initialised on first
18
+ * `isVisible()` call so construction stays free of side effects. */
19
+ private phase;
20
+ /** Creates a new cursor with the provided symbol and blink settings.
21
+ * Defaults: symbol = `undefined` (inverse-block), blink = `{ mode: 'steady' }`. */
22
+ constructor(options?: VirtualCursorOptions);
23
+ /** Returns the caller-supplied glyph, or `DEFAULT_CURSOR_SYMBOL` when
24
+ * none was set. Use `hasCustomSymbol()` to distinguish the two cases. */
25
+ getSymbol(): string;
26
+ /** Returns true when a custom glyph was provided; false means the
27
+ * caller wants the legacy inverse-block highlight behaviour. */
28
+ hasCustomSymbol(): boolean;
29
+ /** Replaces the cursor glyph. Pass `undefined` to revert to inverse-block. */
30
+ setSymbol(symbol: string | undefined): void;
31
+ /** Returns the active blink configuration (for inspection / cloning). */
32
+ getBlink(): CursorBlink;
33
+ /** Replaces the blink configuration and resets the phase timer so the
34
+ * new mode starts in its "on" phase immediately. */
35
+ setBlink(blink: CursorBlink): void;
36
+ /** Returns the fastest cadence (in ms) a re-render would need to show
37
+ * this cursor's blink faithfully, or `null` when the cursor is static
38
+ * (modes `'off'` and `'steady'`). Used by `WindowManager` to pick a
39
+ * timer interval. For `irregular` we return the minimum possible
40
+ * off-phase duration so quick flicks are not missed. */
41
+ getTickHintMs(): number | null;
42
+ /** Returns whether the cursor should be drawn at the given moment.
43
+ * `now` is accepted for deterministic testing; defaults to `Date.now()`. */
44
+ isVisible(now?: number): boolean;
45
+ /** Forces the next `isVisible()` sample to begin a fresh "on" phase at
46
+ * `now`. Useful for keeping the cursor steady while the user types — a
47
+ * blink that vanishes mid-keystroke is jarring. */
48
+ resetPhase(now?: number): void;
49
+ /** Picks the first "on" phase duration for the current blink mode.
50
+ * Split out so tests can assert the expected preset values. */
51
+ private firstOnDuration;
52
+ /** Returns the duration of the upcoming phase given its visibility flag.
53
+ * Implements both the named presets and the `custom` / `irregular`
54
+ * semantics in one place. */
55
+ private phaseDuration;
56
+ }
57
+ //# sourceMappingURL=VirtualCursor.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VirtualCursor.d.mts","sourceRoot":"","sources":["../../src/Screen/VirtualCursor.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAerE;wEACwE;AACxE,eAAO,MAAM,qBAAqB,WAAM,CAAC;AAYzC;;;;;sDAKsD;AACtD,qBAAa,aAAa;IACzB;6EACyE;IACzE,OAAO,CAAC,MAAM,CAAqB;IACnC,qDAAqD;IACrD,OAAO,CAAC,KAAK,CAAc;IAC3B;yEACqE;IACrE,OAAO,CAAC,KAAK,CAAe;IAE5B;wFACoF;gBACjE,OAAO,CAAC,EAAE,oBAAoB;IAMjD;8EAC0E;IACnE,SAAS,IAAI,MAAM;IAI1B;qEACiE;IAC1D,eAAe,IAAI,OAAO;IAIjC,8EAA8E;IACvE,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAIlD,yEAAyE;IAClE,QAAQ,IAAI,WAAW;IAI9B;yDACqD;IAC9C,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI;IAKzC;;;;6DAIyD;IAClD,aAAa,IAAI,MAAM,GAAG,IAAI;IAkBrC;iFAC6E;IACtE,SAAS,CAAC,GAAG,GAAE,MAAmB,GAAG,OAAO;IA0BnD;;wDAEoD;IAC7C,UAAU,CAAC,GAAG,GAAE,MAAmB,GAAG,IAAI;IAIjD;oEACgE;IAChE,OAAO,CAAC,eAAe;IAIvB;;kCAE8B;IAC9B,OAAO,CAAC,aAAa;CAmBrB"}