take4-console 0.15.1 → 0.25.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 (63) hide show
  1. package/CHANGELOG.md +360 -0
  2. package/dist/Screen/InterfaceBuilder.d.mts +15 -4
  3. package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
  4. package/dist/Screen/InterfaceBuilder.mjs +104 -8
  5. package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
  6. package/dist/Screen/Pos.d.mts +12 -0
  7. package/dist/Screen/Pos.d.mts.map +1 -1
  8. package/dist/Screen/Pos.mjs +23 -1
  9. package/dist/Screen/Pos.mjs.map +1 -1
  10. package/dist/Screen/Screen.d.mts +77 -3
  11. package/dist/Screen/Screen.d.mts.map +1 -1
  12. package/dist/Screen/Screen.mjs +168 -3
  13. package/dist/Screen/Screen.mjs.map +1 -1
  14. package/dist/Screen/Size.d.mts +49 -6
  15. package/dist/Screen/Size.d.mts.map +1 -1
  16. package/dist/Screen/Size.mjs +81 -7
  17. package/dist/Screen/Size.mjs.map +1 -1
  18. package/dist/Screen/Window.d.mts +131 -20
  19. package/dist/Screen/Window.d.mts.map +1 -1
  20. package/dist/Screen/Window.mjs +474 -57
  21. package/dist/Screen/Window.mjs.map +1 -1
  22. package/dist/Screen/WindowManager.d.mts +85 -5
  23. package/dist/Screen/WindowManager.d.mts.map +1 -1
  24. package/dist/Screen/WindowManager.mjs +279 -26
  25. package/dist/Screen/WindowManager.mjs.map +1 -1
  26. package/dist/Screen/controls/ListBox.d.mts +34 -12
  27. package/dist/Screen/controls/ListBox.d.mts.map +1 -1
  28. package/dist/Screen/controls/ListBox.mjs +127 -25
  29. package/dist/Screen/controls/ListBox.mjs.map +1 -1
  30. package/dist/Screen/controls/TextArea.d.mts +15 -1
  31. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  32. package/dist/Screen/controls/TextArea.mjs +74 -1
  33. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  34. package/dist/Screen/controls/TextBox.d.mts +13 -1
  35. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  36. package/dist/Screen/controls/TextBox.mjs +36 -1
  37. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  38. package/dist/Screen/textWidth.d.mts +13 -0
  39. package/dist/Screen/textWidth.d.mts.map +1 -0
  40. package/dist/Screen/textWidth.mjs +188 -0
  41. package/dist/Screen/textWidth.mjs.map +1 -0
  42. package/dist/Screen/types.d.mts +336 -20
  43. package/dist/Screen/types.d.mts.map +1 -1
  44. package/dist/Screen/types.mjs.map +1 -1
  45. package/dist/index.d.mts +3 -2
  46. package/dist/index.d.mts.map +1 -1
  47. package/dist/index.mjs +3 -1
  48. package/dist/index.mjs.map +1 -1
  49. package/package.json +1 -1
  50. package/src/Screen/InterfaceBuilder.mts +116 -20
  51. package/src/Screen/Pos.mts +24 -1
  52. package/src/Screen/Screen.mts +192 -4
  53. package/src/Screen/Size.mts +97 -12
  54. package/src/Screen/Window.mts +463 -63
  55. package/src/Screen/WindowManager.mts +301 -29
  56. package/src/Screen/controls/ListBox.mts +151 -32
  57. package/src/Screen/controls/TextArea.mts +82 -1
  58. package/src/Screen/controls/TextBox.mts +40 -1
  59. package/src/Screen/textWidth.mts +186 -0
  60. package/src/Screen/types.mts +328 -23
  61. package/src/demo.mts +232 -20
  62. package/src/index.mts +23 -3
  63. package/src/layout.yaml +56 -24
@@ -88,6 +88,47 @@ function parseMouseEvent(key) {
88
88
  ctrl: (raw & 16) !== 0,
89
89
  };
90
90
  }
91
+ // ── Key spec parsing ──────────────────────────────────────────────────────────
92
+ /** Lookup table of friendly key names → raw terminal key strings.
93
+ * Used by `bindKey` so callers can write `'ctrl+s'` or `'enter'` instead
94
+ * of `'\x13'` / `'\r'`. Arrow keys, function keys, etc. stay raw. */
95
+ const KEY_ALIASES = {
96
+ enter: '\r',
97
+ return: '\r',
98
+ space: ' ',
99
+ esc: '\x1b',
100
+ escape: '\x1b',
101
+ tab: '\t',
102
+ backspace: '\x7f',
103
+ del: '\x7f',
104
+ delete: '\x1b[3~',
105
+ up: '\x1b[A',
106
+ down: '\x1b[B',
107
+ right: '\x1b[C',
108
+ left: '\x1b[D',
109
+ home: '\x1b[H',
110
+ end: '\x1b[F',
111
+ pageup: '\x1b[5~',
112
+ pagedown: '\x1b[6~',
113
+ };
114
+ /** Normalises a caller-provided key spec into the raw key string emitted by
115
+ * the terminal. Accepts raw strings (`'\r'`, `'a'`), friendly names
116
+ * (`'enter'`, `'space'`, `'up'`), and `'ctrl+<letter>'` combinations.
117
+ * Everything else is returned unchanged. */
118
+ function normaliseKeySpec(spec) {
119
+ if (spec.length <= 1)
120
+ return spec;
121
+ const lower = spec.toLowerCase();
122
+ if (lower in KEY_ALIASES)
123
+ return KEY_ALIASES[lower];
124
+ // `ctrl+<letter>` → ASCII control code (\x01 = Ctrl+A … \x1a = Ctrl+Z).
125
+ const ctrlMatch = /^ctrl\+([a-z])$/.exec(lower);
126
+ if (ctrlMatch) {
127
+ const letter = ctrlMatch[1].charCodeAt(0);
128
+ return String.fromCharCode(letter - 'a'.charCodeAt(0) + 1);
129
+ }
130
+ return spec;
131
+ }
91
132
  // ── WindowManager ─────────────────────────────────────────────────────────────
92
133
  /** Manages the application input loop, focus, and modal dialogs.
93
134
  *
@@ -106,14 +147,33 @@ export class WindowManager {
106
147
  onKey;
107
148
  onMouse;
108
149
  mouseEnabled;
150
+ /** Registered bindings mapped by raw key string.
151
+ * Multiple handlers for the same key fire in insertion order; the first
152
+ * one that returns `true` marks the event as consumed. */
153
+ keyBindings = new Map();
109
154
  mainEntries;
110
155
  mainFocusIndex;
111
156
  dialogStack;
112
157
  running;
158
+ /** True while pause() is in effect and resume() has not yet reclaimed the
159
+ * terminal. Distinct from `running`: a paused WindowManager is still
160
+ * considered running — `stop()` can finalise it, and all registered
161
+ * focus entries remain intact for resume(). */
162
+ paused = false;
113
163
  /** Bound reference kept so we can remove the listener in stop(). */
114
164
  boundHandleInput;
115
165
  /** Bound SIGTERM handler for clean shutdown. */
116
166
  boundSigterm;
167
+ /** True when run() entered the alt-screen on its own (so stop() owes it an exit). */
168
+ ownsAltScreen = false;
169
+ /** True when run() hid the cursor on its own (so stop() owes it a restore). */
170
+ ownsCursor = false;
171
+ /** Set by pause() when it exited the alternate screen buffer — instructs
172
+ * resume() to re-enter. Cleared after resume() or stop() uses it. */
173
+ pauseRestoreAltScreen = false;
174
+ /** Set by pause() when it showed a previously-hidden cursor — instructs
175
+ * resume() to hide it again. Cleared after resume() or stop() uses it. */
176
+ pauseRestoreCursorHidden = false;
117
177
  /** Creates a WindowManager for the given Screen.
118
178
  * Does not start the input loop; call run() to begin. */
119
179
  constructor(screen, options) {
@@ -156,16 +216,64 @@ export class WindowManager {
156
216
  const idx = this.getActiveFocusIndex();
157
217
  return idx >= 0 ? entries[idx].control : null;
158
218
  }
159
- /** Moves focus to the given control if it belongs to the active context and is enabled. */
219
+ /** Moves focus to the given control if it belongs to the active context and is
220
+ * eligible (not disabled, not hidden via setVisible(false)). */
160
221
  setFocus(control) {
161
222
  const entries = this.activeEntries();
162
223
  const idx = entries.findIndex(e => e.control === control);
163
- if (idx === -1 || entries[idx].control.isDisabled())
224
+ if (idx === -1)
225
+ return;
226
+ const candidate = entries[idx].control;
227
+ if (candidate.isDisabled() || !candidate.isVisible())
164
228
  return;
165
229
  this.blurCurrent();
166
230
  this.setActiveFocusIndex(idx);
167
231
  control.setFocused(true);
168
232
  }
233
+ // ── Global key bindings (P0-4) ─────────────────────────────────────────────
234
+ /** Registers a global shortcut handler.
235
+ *
236
+ * The handler fires **before** the focused control receives the key; if it
237
+ * returns `true`, the key is marked as consumed (no dispatch to the
238
+ * focused control, no exit-key check, no focus navigation). Return
239
+ * `false`/`void` to let the key continue through the pipeline — useful
240
+ * for observer-only handlers that want to track keys without blocking.
241
+ *
242
+ * `keySpec` accepts friendly names (`'enter'`, `'space'`, `'esc'`,
243
+ * `'ctrl+s'`, arrow names) as well as raw terminal strings
244
+ * (`'\r'`, `'q'`, `'\x1b[A'`). Multiple handlers can be bound to the same
245
+ * key — they fire in insertion order until one consumes the event.
246
+ *
247
+ * Returns an unbind function that removes *this particular* registration. */
248
+ bindKey(keySpec, handler) {
249
+ const key = normaliseKeySpec(keySpec);
250
+ const list = this.keyBindings.get(key);
251
+ if (list)
252
+ list.push(handler);
253
+ else
254
+ this.keyBindings.set(key, [handler]);
255
+ return () => this.unbindKey(keySpec, handler);
256
+ }
257
+ /** Removes a handler previously registered with `bindKey`. When `handler`
258
+ * is omitted, all handlers for the given key are removed. Returns `true`
259
+ * when at least one handler was removed. */
260
+ unbindKey(keySpec, handler) {
261
+ const key = normaliseKeySpec(keySpec);
262
+ const list = this.keyBindings.get(key);
263
+ if (!list)
264
+ return false;
265
+ if (handler === undefined) {
266
+ this.keyBindings.delete(key);
267
+ return true;
268
+ }
269
+ const idx = list.indexOf(handler);
270
+ if (idx === -1)
271
+ return false;
272
+ list.splice(idx, 1);
273
+ if (list.length === 0)
274
+ this.keyBindings.delete(key);
275
+ return true;
276
+ }
169
277
  // ── Dialog ─────────────────────────────────────────────────────────────────
170
278
  /** Opens a modal dialog: blurs the current context, adds the dialog Window to
171
279
  * the Screen, and activates a new focus context for the provided controls.
@@ -220,35 +328,136 @@ export class WindowManager {
220
328
  process.stdin.resume();
221
329
  process.stdin.on('data', this.boundHandleInput);
222
330
  process.once('SIGTERM', this.boundSigterm);
223
- process.stdout.write('\x1b[?1049h'); // switch to alternate screen buffer
331
+ // Defer alt-screen / cursor hiding to Screen so consumers using
332
+ // ScreenOptions don't get them double-toggled. We only "own" the toggle
333
+ // (and therefore have to undo it in stop()) when the Screen wasn't
334
+ // already in that state — for instance because the user constructed it
335
+ // with `altScreen: true`, in which case the alt buffer should outlive
336
+ // stop() until Screen.dispose() runs.
337
+ if (!this.screen.isAltScreenActive()) {
338
+ this.screen.enterAltScreen();
339
+ this.ownsAltScreen = true;
340
+ }
224
341
  if (this.mouseEnabled) {
225
342
  // Enable button-press tracking + SGR extended coordinates.
226
343
  process.stdout.write('\x1b[?1000h\x1b[?1006h');
227
344
  }
228
- process.stdout.write('\x1b[?25l'); // hide cursor
345
+ if (!this.screen.isCursorHidden()) {
346
+ this.screen.hideHardwareCursor();
347
+ this.ownsCursor = true;
348
+ }
229
349
  this.initializeFocus();
230
350
  this.renderFrame();
231
351
  }
232
352
  /** Stops the input loop, restores terminal state, and fires the onExit callback.
233
- * Safe to call even when the loop was not started (skips terminal teardown). */
353
+ * Safe to call even when the loop was not started (skips terminal teardown).
354
+ * When called while paused, the parts that pause() already released
355
+ * (stdin listener, raw mode, mouse tracking) are not re-teardown'd — only
356
+ * the remaining owned state (alt-screen, cursor, SIGTERM listener) is
357
+ * finalised. */
234
358
  stop() {
235
359
  const wasRunning = this.running;
360
+ const wasPaused = this.paused;
236
361
  this.running = false;
362
+ this.paused = false;
237
363
  if (wasRunning) {
238
- process.stdin.off('data', this.boundHandleInput);
239
- if (process.stdin.isTTY) {
240
- process.stdin.setRawMode(false);
364
+ if (!wasPaused) {
365
+ process.stdin.off('data', this.boundHandleInput);
366
+ if (process.stdin.isTTY) {
367
+ process.stdin.setRawMode(false);
368
+ }
369
+ process.stdin.pause();
370
+ if (this.mouseEnabled) {
371
+ process.stdout.write('\x1b[?1006l\x1b[?1000l');
372
+ }
241
373
  }
242
- process.stdin.pause();
243
374
  process.off('SIGTERM', this.boundSigterm);
244
- if (this.mouseEnabled) {
245
- process.stdout.write('\x1b[?1006l\x1b[?1000l');
375
+ if (this.ownsCursor) {
376
+ this.screen.showHardwareCursor();
377
+ this.ownsCursor = false;
378
+ }
379
+ if (this.ownsAltScreen) {
380
+ this.screen.exitAltScreen();
381
+ this.ownsAltScreen = false;
246
382
  }
247
- process.stdout.write('\x1b[?25h'); // show cursor
248
- process.stdout.write('\x1b[?1049l'); // restore normal screen buffer
383
+ // Drop any latent pause-restore intents so a future run() starts fresh.
384
+ this.pauseRestoreAltScreen = false;
385
+ this.pauseRestoreCursorHidden = false;
249
386
  }
250
387
  this.onExit?.();
251
388
  }
389
+ /** Suspends the input loop without tearing down the focus tree. Releases the
390
+ * terminal ownership the WindowManager needs for interactive mode:
391
+ *
392
+ * - detaches the stdin 'data' listener, leaves raw mode, pauses stdin;
393
+ * - disables mouse tracking when it was enabled;
394
+ * - restores the hardware cursor when it was hidden (so an external
395
+ * process has a visible cursor);
396
+ * - optionally exits the alternate screen buffer
397
+ * (`{ leaveAltScreen: true }`).
398
+ *
399
+ * The typical use is spawning `$EDITOR` or a shell: pause, exec, resume.
400
+ * All registered focus entries, dialog stack, and the onKey/bindKey
401
+ * bindings are preserved, so `resume()` brings the UI back without a
402
+ * full re-registration. No-op when the manager is not running or is
403
+ * already paused. */
404
+ pause(options) {
405
+ if (!this.running || this.paused)
406
+ return;
407
+ this.paused = true;
408
+ process.stdin.off('data', this.boundHandleInput);
409
+ if (process.stdin.isTTY) {
410
+ process.stdin.setRawMode(false);
411
+ }
412
+ process.stdin.pause();
413
+ if (this.mouseEnabled) {
414
+ process.stdout.write('\x1b[?1006l\x1b[?1000l');
415
+ }
416
+ this.pauseRestoreCursorHidden = this.screen.isCursorHidden();
417
+ if (this.pauseRestoreCursorHidden) {
418
+ this.screen.showHardwareCursor();
419
+ }
420
+ this.pauseRestoreAltScreen = false;
421
+ if (options?.leaveAltScreen && this.screen.isAltScreenActive()) {
422
+ this.screen.exitAltScreen();
423
+ this.pauseRestoreAltScreen = true;
424
+ }
425
+ }
426
+ /** Resumes the input loop after pause(). Re-enters the alternate screen if
427
+ * pause() left it, re-enables mouse tracking, re-hides the cursor when
428
+ * pause() showed it, restores raw mode + stdin listener, and re-renders
429
+ * the current frame unless `{ rerender: false }` is passed. No-op when
430
+ * the manager is not currently paused. */
431
+ resume(options) {
432
+ if (!this.paused)
433
+ return;
434
+ this.paused = false;
435
+ if (this.pauseRestoreAltScreen) {
436
+ this.screen.enterAltScreen();
437
+ this.pauseRestoreAltScreen = false;
438
+ }
439
+ if (this.mouseEnabled) {
440
+ process.stdout.write('\x1b[?1000h\x1b[?1006h');
441
+ }
442
+ if (this.pauseRestoreCursorHidden) {
443
+ this.screen.hideHardwareCursor();
444
+ this.pauseRestoreCursorHidden = false;
445
+ }
446
+ if (process.stdin.isTTY) {
447
+ process.stdin.setRawMode(true);
448
+ }
449
+ process.stdin.resume();
450
+ process.stdin.on('data', this.boundHandleInput);
451
+ if (options?.rerender !== false) {
452
+ this.renderFrame();
453
+ }
454
+ }
455
+ /** Returns true while pause() is active and resume() has not yet been
456
+ * called. A paused manager still has its `run()` context (focus
457
+ * registrations, dialog stack, exit keys) intact. */
458
+ isPaused() {
459
+ return this.paused;
460
+ }
252
461
  // ── Input handling ─────────────────────────────────────────────────────────
253
462
  /** Processes a raw stdin Buffer. Exposed as public so tests can drive it directly
254
463
  * without needing a real TTY. Tab / Shift-Tab navigation works even before run()
@@ -265,19 +474,39 @@ export class WindowManager {
265
474
  continue;
266
475
  }
267
476
  }
268
- this.onKey?.(key);
477
+ // Build a KeyContext snapshot for global handlers. The focused
478
+ // control is captured before any handler fires so handlers see a
479
+ // consistent view even when they mutate focus.
480
+ const ctx = {
481
+ focusedControl: this.getFocused(),
482
+ inDialog: this.dialogStack.length > 0,
483
+ dialogDepth: this.dialogStack.length,
484
+ };
485
+ // Fire global shortcut handlers first (P0-4). Any handler returning
486
+ // `true` marks the key as consumed — exit-key check, focus
487
+ // navigation, and dispatch to the focused control are all skipped.
488
+ if (this.dispatchGlobalKey(key, ctx)) {
489
+ this.renderFrame();
490
+ continue;
491
+ }
269
492
  // Exit keys.
270
493
  if (this.exitKeys.includes(key)) {
271
494
  this.stop();
272
495
  return;
273
496
  }
274
497
  // Focus navigation – moveFocus handles index -1 correctly.
498
+ // Controls that want Tab to flow into handleKey (e.g. TextArea with
499
+ // insertTabAsSpaces) opt in via Focusable.capturesTab().
275
500
  if (key === '\t') {
276
- this.moveFocus(1);
277
- this.renderFrame();
278
- continue;
501
+ const focused = ctx.focusedControl;
502
+ if (!focused?.capturesTab?.()) {
503
+ this.moveFocus(1);
504
+ this.renderFrame();
505
+ continue;
506
+ }
507
+ // Fall through — let the focused control's handleKey see Tab.
279
508
  }
280
- if (key === '\x1b[Z') { // Shift-Tab
509
+ else if (key === '\x1b[Z') { // Shift-Tab — always cycles focus.
281
510
  this.moveFocus(-1);
282
511
  this.renderFrame();
283
512
  continue;
@@ -296,6 +525,24 @@ export class WindowManager {
296
525
  }
297
526
  }
298
527
  }
528
+ /** Runs registered `bindKey` handlers and the global `onKey` callback
529
+ * for the given key. Returns `true` when the event was consumed. */
530
+ dispatchGlobalKey(key, ctx) {
531
+ const bound = this.keyBindings.get(key);
532
+ if (bound) {
533
+ // Copy before iterating so an unbindKey() call from within a handler
534
+ // doesn't skip the next handler in the list.
535
+ for (const handler of bound.slice()) {
536
+ if (handler(ctx) === true)
537
+ return true;
538
+ }
539
+ }
540
+ if (this.onKey) {
541
+ if (this.onKey(key, ctx) === true)
542
+ return true;
543
+ }
544
+ return false;
545
+ }
299
546
  // ── Private helpers ────────────────────────────────────────────────────────
300
547
  /** Returns the FocusEntry array for the active context (topmost dialog or main). */
301
548
  activeEntries() {
@@ -328,28 +575,34 @@ export class WindowManager {
328
575
  entries[fi].control.setFocused(false);
329
576
  }
330
577
  }
331
- /** Finds the first already-focused (or first non-disabled) control and focuses it. */
578
+ /** Returns true when the control is eligible to receive focus in the current
579
+ * context — neither disabled nor hidden via `Window.setVisible(false)`. */
580
+ isFocusable(control) {
581
+ return !control.isDisabled() && control.isVisible();
582
+ }
583
+ /** Finds the first already-focused (or first eligible) control and focuses it. */
332
584
  initializeFocus() {
333
585
  const entries = this.activeEntries();
334
586
  if (entries.length === 0)
335
587
  return;
336
588
  // Prefer a control that is already marked as focused.
337
589
  for (let i = 0; i < entries.length; i++) {
338
- if (entries[i].control.isFocused() && !entries[i].control.isDisabled()) {
590
+ if (entries[i].control.isFocused() && this.isFocusable(entries[i].control)) {
339
591
  this.setActiveFocusIndex(i);
340
592
  return;
341
593
  }
342
594
  }
343
- // Otherwise focus the first enabled control.
595
+ // Otherwise focus the first eligible control.
344
596
  for (let i = 0; i < entries.length; i++) {
345
- if (!entries[i].control.isDisabled()) {
597
+ if (this.isFocusable(entries[i].control)) {
346
598
  this.setActiveFocusIndex(i);
347
599
  entries[i].control.setFocused(true);
348
600
  return;
349
601
  }
350
602
  }
351
603
  }
352
- /** Moves focus by delta (+1 for Tab, -1 for Shift-Tab), skipping disabled controls. */
604
+ /** Moves focus by delta (+1 for Tab, -1 for Shift-Tab), skipping disabled
605
+ * and hidden controls. */
353
606
  moveFocus(delta) {
354
607
  const entries = this.activeEntries();
355
608
  if (entries.length === 0)
@@ -365,8 +618,8 @@ export class WindowManager {
365
618
  do {
366
619
  next = ((next + delta) % count + count) % count;
367
620
  attempts++;
368
- } while (entries[next].control.isDisabled() && attempts <= count);
369
- if (!entries[next].control.isDisabled()) {
621
+ } while (!this.isFocusable(entries[next].control) && attempts <= count);
622
+ if (this.isFocusable(entries[next].control)) {
370
623
  this.setActiveFocusIndex(next);
371
624
  entries[next].control.setFocused(true);
372
625
  }
@@ -378,7 +631,7 @@ export class WindowManager {
378
631
  const entries = this.activeEntries();
379
632
  for (let i = 0; i < entries.length; i++) {
380
633
  const { control, absX, absY } = entries[i];
381
- if (control.isDisabled())
634
+ if (!this.isFocusable(control))
382
635
  continue;
383
636
  const { width, height } = control.getSize();
384
637
  if (event.x >= absX && event.x < absX + width &&
@@ -1 +1 @@
1
- {"version":3,"file":"WindowManager.mjs","sourceRoot":"","sources":["../../src/Screen/WindowManager.mts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WindowManager.mjs","sourceRoot":"","sources":["../../src/Screen/WindowManager.mts"],"names":[],"mappings":"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"}
@@ -1,34 +1,56 @@
1
- import type { ListBoxProperties, WindowProperties } from '../types.mjs';
1
+ import type { ListBoxProperties, ListBoxRenderContext, ListBoxRowSegments, WindowProperties } from '../types.mjs';
2
2
  import { Window } from '../Window.mjs';
3
- /** A scrollable list of single-line items. The selected item is highlighted and may
4
- * be moved with arrow keys, PgUp/PgDn, and Home/End. Emits onChange whenever the
5
- * selection index changes via keyboard. Appearance follows the same built-in style
6
- * naming scheme as the other focusable controls. */
7
- export declare class ListBox extends Window {
3
+ /** A scrollable list of items. Generic over the item type T (default: string).
4
+ * The selected item is highlighted and may be moved with arrow keys, PgUp/PgDn,
5
+ * and Home/End. Emits onChange whenever the selection index changes via keyboard.
6
+ * Consumers may customise per-row rendering via `renderItem`, which returns either a
7
+ * plain string (single left-aligned segment) or an array of styled ListBoxRowSegment
8
+ * entries supporting `left`/`right`/`fill` alignment. Appearance follows the same
9
+ * built-in style naming scheme as the other focusable controls. */
10
+ export declare class ListBox<T = string> extends Window {
8
11
  private items;
9
12
  private selectedIndex;
10
13
  private scrollTop;
11
14
  private onChange?;
15
+ private renderItem?;
16
+ private rowHeight;
17
+ private keyFn?;
12
18
  private selectedStyleId;
13
19
  private focusedSelStyle;
14
20
  /** Creates a ListBox from window properties and optional control-specific properties.
15
21
  * Uses the global StyleRegistry set by the Screen constructor. */
16
- constructor(wp: WindowProperties, cp?: ListBoxProperties);
22
+ constructor(wp: WindowProperties, cp?: ListBoxProperties<T>);
17
23
  /** Replaces the list items. Resets selection to 0 (or -1 if empty) and scrolls to top. */
18
- setItems(items: string[]): void;
24
+ setItems(items: T[]): void;
19
25
  /** Returns the current list items. */
20
- getItems(): string[];
26
+ getItems(): T[];
21
27
  /** Sets the selected index. Clamped to valid range; -1 allowed only when items is empty. */
22
28
  setSelectedIndex(index: number): void;
23
29
  /** Returns the currently selected index, or -1 when the list is empty. */
24
30
  getSelectedIndex(): number;
25
- /** Returns the currently selected item string, or undefined when nothing is selected. */
26
- getSelectedItem(): string | undefined;
31
+ /** Returns the currently selected item, or undefined when nothing is selected. */
32
+ getSelectedItem(): T | undefined;
33
+ /** Replaces the per-row renderer after construction. Pass undefined to restore default behaviour. */
34
+ setRenderItem(fn: ((item: T, ctx: ListBoxRenderContext) => ListBoxRowSegments) | undefined): void;
35
+ /** Returns the configured row height in cells. */
36
+ getRowHeight(): number;
37
+ /** Returns the stable key for an item, computed via the configured keyFn (falls back to String(item)). */
38
+ getItemKey(item: T): string;
27
39
  /** Processes a key press: arrow keys, Home/End, PgUp/PgDn move the selection. */
28
40
  handleKey(key: string): void;
41
+ /** Returns the number of item slots that fit in the current inner area (>= 1). */
42
+ private getVisibleRowCount;
29
43
  /** Adjusts scrollTop so that the selected index remains within the visible window. */
30
44
  private ensureVisible;
31
- /** Rebuilds the list: renders visible rows with styles. */
45
+ /** Rebuilds the list: renders visible rows with styles and optional custom renderer. */
32
46
  render(): void;
47
+ /** Returns the row-level base style ID for the given item index. */
48
+ private pickRowStyle;
49
+ /** Invokes the configured renderItem (or a default stringifier) and normalises the result into segments. */
50
+ private resolveSegments;
51
+ /** Draws a single row's segments onto the inner area at the given top row. */
52
+ private drawRowSegments;
53
+ /** Merges a segment's optional style onto the row's base style, preserving the highlight background. */
54
+ private segmentStyle;
33
55
  }
34
56
  //# sourceMappingURL=ListBox.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/ListBox.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAW,MAAM,cAAc,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;;qDAGqD;AACrD,qBAAa,OAAQ,SAAQ,MAAM;IAClC,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAwC;IACzD,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,eAAe,CAAW;IAElC;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,iBAAiB;IAiB/D,0FAA0F;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAMtC,sCAAsC;IAC/B,QAAQ,IAAI,MAAM,EAAE;IAI3B,4FAA4F;IACrF,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS5C,0EAA0E;IACnE,gBAAgB,IAAI,MAAM;IAIjC,yFAAyF;IAClF,eAAe,IAAI,MAAM,GAAG,SAAS;IAK5C,iFAAiF;IAC1E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqCnC,sFAAsF;IACtF,OAAO,CAAC,aAAa;IAYrB,2DAA2D;IAC3C,MAAM,IAAI,IAAI;CAiC9B"}
1
+ {"version":3,"file":"ListBox.d.mts","sourceRoot":"","sources":["../../../src/Screen/controls/ListBox.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,iBAAiB,EACjB,oBAAoB,EAEpB,kBAAkB,EAElB,gBAAgB,EAChB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAGvC;;;;;;oEAMoE;AACpE,qBAAa,OAAO,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,MAAM;IAC9C,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,CAAmC;IACpD,OAAO,CAAC,UAAU,CAAC,CAA6D;IAChF,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAC,CAAsB;IACpC,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,eAAe,CAAW;IAElC;uEACmE;gBAChD,EAAE,EAAE,gBAAgB,EAAE,EAAE,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAoBlE,0FAA0F;IACnF,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI;IAMjC,sCAAsC;IAC/B,QAAQ,IAAI,CAAC,EAAE;IAItB,4FAA4F;IACrF,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAS5C,0EAA0E;IACnE,gBAAgB,IAAI,MAAM;IAIjC,kFAAkF;IAC3E,eAAe,IAAI,CAAC,GAAG,SAAS;IAKvC,qGAAqG;IAC9F,aAAa,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,oBAAoB,KAAK,kBAAkB,CAAC,GAAG,SAAS,GAAG,IAAI;IAIxG,kDAAkD;IAC3C,YAAY,IAAI,MAAM;IAI7B,0GAA0G;IACnG,UAAU,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM;IAIlC,iFAAiF;IAC1E,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAqCnC,kFAAkF;IAClF,OAAO,CAAC,kBAAkB;IAI1B,sFAAsF;IACtF,OAAO,CAAC,aAAa;IAYrB,wFAAwF;IACxE,MAAM,IAAI,IAAI;IAwC9B,oEAAoE;IACpE,OAAO,CAAC,YAAY;IAQpB,4GAA4G;IAC5G,OAAO,CAAC,eAAe;IAUvB,8EAA8E;IAC9E,OAAO,CAAC,eAAe;IAmDvB,wGAAwG;IACxG,OAAO,CAAC,YAAY;CAGpB"}