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.
- package/CHANGELOG.md +360 -0
- package/dist/Screen/InterfaceBuilder.d.mts +15 -4
- package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
- package/dist/Screen/InterfaceBuilder.mjs +104 -8
- package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
- package/dist/Screen/Pos.d.mts +12 -0
- package/dist/Screen/Pos.d.mts.map +1 -1
- package/dist/Screen/Pos.mjs +23 -1
- package/dist/Screen/Pos.mjs.map +1 -1
- package/dist/Screen/Screen.d.mts +77 -3
- package/dist/Screen/Screen.d.mts.map +1 -1
- package/dist/Screen/Screen.mjs +168 -3
- package/dist/Screen/Screen.mjs.map +1 -1
- package/dist/Screen/Size.d.mts +49 -6
- package/dist/Screen/Size.d.mts.map +1 -1
- package/dist/Screen/Size.mjs +81 -7
- package/dist/Screen/Size.mjs.map +1 -1
- package/dist/Screen/Window.d.mts +131 -20
- package/dist/Screen/Window.d.mts.map +1 -1
- package/dist/Screen/Window.mjs +474 -57
- package/dist/Screen/Window.mjs.map +1 -1
- package/dist/Screen/WindowManager.d.mts +85 -5
- package/dist/Screen/WindowManager.d.mts.map +1 -1
- package/dist/Screen/WindowManager.mjs +279 -26
- package/dist/Screen/WindowManager.mjs.map +1 -1
- package/dist/Screen/controls/ListBox.d.mts +34 -12
- package/dist/Screen/controls/ListBox.d.mts.map +1 -1
- package/dist/Screen/controls/ListBox.mjs +127 -25
- package/dist/Screen/controls/ListBox.mjs.map +1 -1
- package/dist/Screen/controls/TextArea.d.mts +15 -1
- package/dist/Screen/controls/TextArea.d.mts.map +1 -1
- package/dist/Screen/controls/TextArea.mjs +74 -1
- package/dist/Screen/controls/TextArea.mjs.map +1 -1
- package/dist/Screen/controls/TextBox.d.mts +13 -1
- package/dist/Screen/controls/TextBox.d.mts.map +1 -1
- package/dist/Screen/controls/TextBox.mjs +36 -1
- package/dist/Screen/controls/TextBox.mjs.map +1 -1
- package/dist/Screen/textWidth.d.mts +13 -0
- package/dist/Screen/textWidth.d.mts.map +1 -0
- package/dist/Screen/textWidth.mjs +188 -0
- package/dist/Screen/textWidth.mjs.map +1 -0
- package/dist/Screen/types.d.mts +336 -20
- package/dist/Screen/types.d.mts.map +1 -1
- package/dist/Screen/types.mjs.map +1 -1
- package/dist/index.d.mts +3 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/src/Screen/InterfaceBuilder.mts +116 -20
- package/src/Screen/Pos.mts +24 -1
- package/src/Screen/Screen.mts +192 -4
- package/src/Screen/Size.mts +97 -12
- package/src/Screen/Window.mts +463 -63
- package/src/Screen/WindowManager.mts +301 -29
- package/src/Screen/controls/ListBox.mts +151 -32
- package/src/Screen/controls/TextArea.mts +82 -1
- package/src/Screen/controls/TextBox.mts +40 -1
- package/src/Screen/textWidth.mts +186 -0
- package/src/Screen/types.mts +328 -23
- package/src/demo.mts +232 -20
- package/src/index.mts +23 -3
- 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
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
239
|
-
|
|
240
|
-
process.stdin.
|
|
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.
|
|
245
|
-
|
|
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
|
-
|
|
248
|
-
|
|
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
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
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
|
-
/**
|
|
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() &&
|
|
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
|
|
595
|
+
// Otherwise focus the first eligible control.
|
|
344
596
|
for (let i = 0; i < entries.length; i++) {
|
|
345
|
-
if (
|
|
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
|
|
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
|
|
369
|
-
if (
|
|
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 (
|
|
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
|
|
4
|
-
* be moved with arrow keys, PgUp/PgDn,
|
|
5
|
-
* selection index changes via keyboard.
|
|
6
|
-
*
|
|
7
|
-
|
|
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:
|
|
24
|
+
setItems(items: T[]): void;
|
|
19
25
|
/** Returns the current list items. */
|
|
20
|
-
getItems():
|
|
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
|
|
26
|
-
getSelectedItem():
|
|
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,
|
|
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"}
|