take4-console 0.25.0 → 0.30.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 +193 -0
- package/dist/Screen/ErrorHolder.d.mts +10 -0
- package/dist/Screen/ErrorHolder.d.mts.map +1 -0
- package/dist/Screen/ErrorHolder.mjs +14 -0
- package/dist/Screen/ErrorHolder.mjs.map +1 -0
- package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
- package/dist/Screen/InterfaceBuilder.mjs +7 -0
- package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
- package/dist/Screen/Screen.d.mts +50 -1
- package/dist/Screen/Screen.d.mts.map +1 -1
- package/dist/Screen/Screen.mjs +152 -0
- package/dist/Screen/Screen.mjs.map +1 -1
- package/dist/Screen/StyleRegistry.d.mts.map +1 -1
- package/dist/Screen/StyleRegistry.mjs +3 -1
- package/dist/Screen/StyleRegistry.mjs.map +1 -1
- package/dist/Screen/VirtualCursor.d.mts +57 -0
- package/dist/Screen/VirtualCursor.d.mts.map +1 -0
- package/dist/Screen/VirtualCursor.mjs +148 -0
- package/dist/Screen/VirtualCursor.mjs.map +1 -0
- package/dist/Screen/Window.d.mts +67 -6
- package/dist/Screen/Window.d.mts.map +1 -1
- package/dist/Screen/Window.mjs +195 -27
- package/dist/Screen/Window.mjs.map +1 -1
- package/dist/Screen/WindowManager.d.mts +78 -2
- package/dist/Screen/WindowManager.d.mts.map +1 -1
- package/dist/Screen/WindowManager.mjs +186 -3
- package/dist/Screen/WindowManager.mjs.map +1 -1
- package/dist/Screen/controls/TextArea.d.mts +68 -2
- package/dist/Screen/controls/TextArea.d.mts.map +1 -1
- package/dist/Screen/controls/TextArea.mjs +280 -46
- package/dist/Screen/controls/TextArea.mjs.map +1 -1
- package/dist/Screen/controls/TextBox.d.mts +52 -5
- package/dist/Screen/controls/TextBox.d.mts.map +1 -1
- package/dist/Screen/controls/TextBox.mjs +179 -10
- package/dist/Screen/controls/TextBox.mjs.map +1 -1
- package/dist/Screen/controls/Toast.d.mts +72 -0
- package/dist/Screen/controls/Toast.d.mts.map +1 -0
- package/dist/Screen/controls/Toast.mjs +112 -0
- package/dist/Screen/controls/Toast.mjs.map +1 -0
- package/dist/Screen/types.d.mts +143 -0
- package/dist/Screen/types.d.mts.map +1 -1
- package/dist/Screen/types.mjs +8 -0
- package/dist/Screen/types.mjs.map +1 -1
- package/dist/index.d.mts +4 -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/ErrorHolder.mts +22 -0
- package/src/Screen/InterfaceBuilder.mts +12 -5
- package/src/Screen/Screen.mts +166 -1
- package/src/Screen/StyleRegistry.mts +4 -0
- package/src/Screen/VirtualCursor.mts +175 -0
- package/src/Screen/Window.mts +197 -28
- package/src/Screen/WindowManager.mts +192 -3
- package/src/Screen/controls/TextArea.mts +280 -41
- package/src/Screen/controls/TextBox.mts +181 -10
- package/src/Screen/controls/Toast.mts +138 -0
- package/src/Screen/types.mts +140 -0
- package/src/demo.mts +80 -0
- package/src/index.mts +12 -0
- package/src/layout.yaml +16 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,198 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.30.0] – 2026-04-18
|
|
4
|
+
|
|
5
|
+
### Added — backlog P1-27 (Toast / Notification overlay)
|
|
6
|
+
- **`Screen.toast(text, options?)`** — non-modal overlay anchored do
|
|
7
|
+
jednego z sześciu rogów (`top-left` / `top-center` / `top-right` /
|
|
8
|
+
`bottom-left` / `bottom-center` / `bottom-right`). Zwraca instancję
|
|
9
|
+
`Toast` (`Window` subclass) z metodami `getMessage()`,
|
|
10
|
+
`getToastPosition()`, `getToastStyle()`, `dismiss()`.
|
|
11
|
+
- **Auto-dismiss + sticky** — `duration` w `ToastOptions` (default `2000`
|
|
12
|
+
ms); `0` oznacza sticky toast usuwany tylko ręcznie. Timery są
|
|
13
|
+
`unref()`-owane, a `Screen.dispose()` czyści je zanim wyłączy terminal.
|
|
14
|
+
- **Stacking + reflow** — toasty z tej samej pozycji stackują się w
|
|
15
|
+
kolejności utworzenia; dismiss reflow-uje pozostałe w stronę kotwicy
|
|
16
|
+
przez `relayoutToasts`. `Screen.resize()` woła `relayoutAllToasts()`
|
|
17
|
+
przed emisją `'resize'`, więc SIGWINCH przenosi overlaye na nowe
|
|
18
|
+
rogi.
|
|
19
|
+
- **`Screen.dismissToast(toast)` / `getActiveToasts(position?)`** —
|
|
20
|
+
publiczny API do manualnego usuwania i diagnostyki.
|
|
21
|
+
- **`BUILTIN_TOAST`** — nowy built-in style (`{ background: 24,
|
|
22
|
+
foreground: 231, bold: true }`) rejestrowany przez `StyleRegistry`
|
|
23
|
+
konstruktor; user może nadpisać przez `Screen.setBuiltinStyle(BUILTIN_TOAST, …)`
|
|
24
|
+
lub przekazać własne `style` per call.
|
|
25
|
+
- **Typy publiczne** — `Toast`, `ToastPosition`, `ToastOptions`,
|
|
26
|
+
`BUILTIN_TOAST` eksportowane z `src/index.mts`.
|
|
27
|
+
- **Demo + bindingi** — `Ctrl+T` pokazuje 2.5-sekundowy top-right toast z
|
|
28
|
+
numerkiem i timestampem (stackuje się przy szybkim klikaniu),
|
|
29
|
+
`Ctrl+Y` pokazuje/ukrywa sticky bottom-right toast z `onDismiss`.
|
|
30
|
+
- **Doc** — `doc/p1-27-toast.md` opisuje API, algorytm placementu,
|
|
31
|
+
cykl życia i backwards compatibility.
|
|
32
|
+
- **Testy** — `tests/controls/Toast.test.mts` (18 testów: placement w
|
|
33
|
+
każdym rogu, stacking, reflow po dismiss, auto-dismiss, sticky,
|
|
34
|
+
manual dismiss, resize reanchor, styl default/custom, zIndex 10 000,
|
|
35
|
+
double-dismiss no-op).
|
|
36
|
+
|
|
37
|
+
## [0.29.0] – 2026-04-18
|
|
38
|
+
|
|
39
|
+
### Added — backlog P1-16 (margin dookoła okna)
|
|
40
|
+
- **`WindowProperties.margin`** — nowe pole mirrorujące `padding`
|
|
41
|
+
(shape: `number | [v, h] | Partial<{top, right, bottom, left}>`).
|
|
42
|
+
Resolver `resolveMargin` normalizuje wartość do pełnego rekordu,
|
|
43
|
+
`Window#getMargin()` zwraca snapshot.
|
|
44
|
+
- **Layout integration** — `layoutAbsolute` przesuwa dziecko o
|
|
45
|
+
`(marginLeft, marginTop)` bez zmiany rozmiaru; `layoutFlex` odejmuje
|
|
46
|
+
łączne `marginMain` od dostępnej przestrzeni przed rozdzielaniem
|
|
47
|
+
slack-u przez `grow` / `shrink`, a oś poprzeczna (stretch i
|
|
48
|
+
alignItems) uwzględnia `crossMargin`; `layoutGrid` zmniejsza komórkę
|
|
49
|
+
o margin dziecka i offsetuje je o `(marginLeft, marginTop)`.
|
|
50
|
+
- **InterfaceBuilder** — `def.margin` przekazywane 1:1 do
|
|
51
|
+
`WindowProperties`; YAML akceptuje ten sam shape co `padding`.
|
|
52
|
+
- **Typy publiczne** — `Margin` / `MarginSpec` eksportowane z
|
|
53
|
+
`src/index.mts`.
|
|
54
|
+
- **Demo + `layout.yaml`** — przycisk „Save" dostał `margin: { left: 2 }`,
|
|
55
|
+
pokazując per-dziecko odstęp poza zwykłym `gap`.
|
|
56
|
+
- **Doc** — `doc/p1-16-padding-margin.md` opisuje API, algorytm
|
|
57
|
+
`layoutFlex`, backwards compatibility i różnicę między
|
|
58
|
+
`margin`/`gap`/`padding`.
|
|
59
|
+
|
|
60
|
+
## [0.28.0] – 2026-04-18
|
|
61
|
+
|
|
62
|
+
### Added — backlog P1-20 (selection w TextBox / TextArea)
|
|
63
|
+
- **`TextBox` / `TextArea`** — model zaznaczenia oparty na kotwicy
|
|
64
|
+
(`selectionAnchor`) i pozycji kursora. Publiczne API:
|
|
65
|
+
`getSelection()` / `getSelectedText()` / `setSelection(anchor, cursor)` /
|
|
66
|
+
`selectAll()` / `clearSelection()`. `setValue()` i `setCursor()`
|
|
67
|
+
czyszczą zaznaczenie, by nie mapować nieaktualnej kotwicy na nowy
|
|
68
|
+
bufor.
|
|
69
|
+
- **Klawisze selekcji (`handleKey`)** — `shift+left` / `shift+right` /
|
|
70
|
+
`shift+home` / `shift+end` rozszerzają selekcję w TextBox; `TextArea`
|
|
71
|
+
dokłada `shift+up` / `shift+down`. `ctrl+a` zaznacza całą zawartość.
|
|
72
|
+
Obsługiwane są zarówno aliasy tekstowe (`shift+left`) jak i surowe
|
|
73
|
+
sekwencje xterm (`\x1b[1;2D`, `\x1b[1;2C`, `\x1b[1;2A`, `\x1b[1;2B`,
|
|
74
|
+
`\x1b[1;2H`, `\x1b[1;2F`, `\x01`).
|
|
75
|
+
- **Zachowanie bez shift przy aktywnej selekcji** — `left` kolapsuje do
|
|
76
|
+
początku, `right` do końca; `home` / `end` / `up` / `down` po prostu
|
|
77
|
+
czyszczą kotwicę przed ruchem. Wstawienie znaku, `backspace`, `delete`,
|
|
78
|
+
`enter` oraz soft-tab / `ctrl+d` (w `TextArea`) najpierw usuwają
|
|
79
|
+
zaznaczony fragment, potem wykonują swoją zwykłą operację.
|
|
80
|
+
- **`BUILTIN_TEXT_SELECTION`** — nowy nazwany styl (tło `24`, tekst
|
|
81
|
+
`231`) pre-rejestrowany w `StyleRegistry`; kontrolki mergują go na
|
|
82
|
+
cele w obrębie selekcji, więc podświetlenie zostaje skomponowane
|
|
83
|
+
z aktualnym stylem tekstu. Nadpisywalny przez
|
|
84
|
+
`Screen#overrideStyle('builtin:text-selection', …)`.
|
|
85
|
+
- **Demo + `layout.yaml`** — wartości początkowe TextBox/TextArea
|
|
86
|
+
zostawiają selekcję pustą; nowy skrót `/p1-20-selection.md` opisuje
|
|
87
|
+
API i algorytm, pełna ściana na froncie wymaga tylko Ctrl+A / Shift +
|
|
88
|
+
strzałki w trakcie działającego demo.
|
|
89
|
+
|
|
90
|
+
## [0.27.0] – 2026-04-18
|
|
91
|
+
|
|
92
|
+
### Added — virtual cursor (software caret z kontrolą migania i symbolu)
|
|
93
|
+
- **`VirtualCursor`** (`src/Screen/VirtualCursor.mts`) — model software-owego
|
|
94
|
+
kursora: glif + harmonogram migania. Tryby `off` / `steady` / `slow`
|
|
95
|
+
(600 ms on / 600 ms off) / `fast` (250 ms / 250 ms) / `irregular`
|
|
96
|
+
(losowe fazy 180–520 ms on, 90–240 ms off) / `custom { onMs, offMs }`.
|
|
97
|
+
API: `isVisible(now?)`, `getSymbol()`, `hasCustomSymbol()`,
|
|
98
|
+
`setSymbol(undefined)` (powrót do inverse-block), `setBlink()`,
|
|
99
|
+
`resetPhase(now?)` (utrzymuje kursor widoczny podczas pisania),
|
|
100
|
+
`getTickHintMs()` (dla WM przy wyborze kadencji timera).
|
|
101
|
+
- **`TextBoxProperties.cursorSymbol` / `cursorBlink`** — konfiguracja na
|
|
102
|
+
poziomie konstruktora; `TextBox#getVirtualCursor()` eksponuje model do
|
|
103
|
+
zmian runtime. Gdy `cursorSymbol` nie jest podany, kontrolka zachowuje
|
|
104
|
+
legacy wygląd (inverse-block nad znakiem pod kursorem) → pełna
|
|
105
|
+
kompatybilność wsteczna.
|
|
106
|
+
- **`TextAreaProperties.cursorSymbol` / `cursorBlink`** + `getVirtualCursor()`
|
|
107
|
+
— analogicznie dla wieloliniowej kontrolki. `handleKey()` w obu
|
|
108
|
+
kontrolkach woła `resetPhase()`, żeby miganie nie chowało kursora
|
|
109
|
+
w trakcie wpisywania.
|
|
110
|
+
- **`WindowManager#enableCursorBlink(intervalMs = 80)` /
|
|
111
|
+
`disableCursorBlink()`** — periodyczny rerender niezbędny, by
|
|
112
|
+
migotanie faktycznie trafiało na terminal. Timer jest `unref()`owany
|
|
113
|
+
(nie blokuje event-loop), automatycznie zdejmowany w `pause()` i
|
|
114
|
+
przywracany w `resume()`, sprzątany w `stop()`.
|
|
115
|
+
- **InterfaceBuilder (`textbox`, `textarea`)** — rozpoznaje pola
|
|
116
|
+
`cursorSymbol:` i `cursorBlink:` w YAML, przekazuje je do
|
|
117
|
+
konstruktorów kontrolek.
|
|
118
|
+
- **Export** — `VirtualCursor`, `DEFAULT_CURSOR_SYMBOL`, typy `CursorBlink`
|
|
119
|
+
i `VirtualCursorOptions` w publicznym barrelu `take4-console`.
|
|
120
|
+
|
|
121
|
+
### Demo
|
|
122
|
+
- `layout.yaml` — `tbEmail` używa `cursorSymbol: "▎"` + `cursorBlink: slow`.
|
|
123
|
+
- `demo.mts` — `tbUsername` zostaje przełączony w trybie `irregular`
|
|
124
|
+
z symbolem `▏`; `wm.enableCursorBlink(80)` uruchamia timer.
|
|
125
|
+
|
|
126
|
+
### Tests
|
|
127
|
+
- 14 nowych testów w `tests/VirtualCursor.test.mts` (domyślne wartości,
|
|
128
|
+
wszystkie tryby migania, `resetPhase`, `setBlink`, `getTickHintMs`).
|
|
129
|
+
- Uzupełnione testy `TextBox` — custom symbol, `cursorBlink: off`,
|
|
130
|
+
`getVirtualCursor()`.
|
|
131
|
+
- Nowy test w `WindowManager` — `enableCursorBlink` / `disableCursorBlink`
|
|
132
|
+
uruchamia i zatrzymuje cykliczne renderowanie.
|
|
133
|
+
|
|
134
|
+
## [0.26.0] – 2026-04-18
|
|
135
|
+
|
|
136
|
+
### Added — backlog P1-17 (z-index / non-modal stacking)
|
|
137
|
+
- **`WindowProperties.zIndex`** (+ `Window#getZIndex()` / `setZIndex()`) — stacking
|
|
138
|
+
order among siblings. Wyższa wartość rysuje się nad niższą; ties zachowują
|
|
139
|
+
kolejność wywołań `addChild()`. Layout (flex / absolute) pozostaje niezależny:
|
|
140
|
+
`runLayout()` nadal korzysta z kolejności wstawiania, a tylko pętla render()
|
|
141
|
+
sortuje dzieci po `(zIndex, idx)` do malowania i blitowania.
|
|
142
|
+
- **YAML `zIndex:`** — pole dostępne na każdym węźle w `layout.yaml`; wartość
|
|
143
|
+
jest przekazywana do `WindowProperties.zIndex` przez `InterfaceBuilder`.
|
|
144
|
+
|
|
145
|
+
### Added — backlog P1-18 (focus management API)
|
|
146
|
+
- **`WindowManager#focusNext()` / `focusPrev()` / `focusFirst()` / `focusLast()`**
|
|
147
|
+
— programistyczne odpowiedniki Tab / Shift+Tab / skoku na pierwszy / ostatni
|
|
148
|
+
focusable kontrolek, uwzględniające disabled, hidden, focus-trap.
|
|
149
|
+
- **`WindowManager#focusById(id)`** — przeszukuje aktywny kontekst (main stack
|
|
150
|
+
lub topmost dialog) po `Window#getId()` i ustawia focus na dopasowanym
|
|
151
|
+
kontrolerze; zwraca `true` przy sukcesie, `false` gdy brak matcha lub
|
|
152
|
+
kontrolka nie jest eligible.
|
|
153
|
+
- **`WindowManager#trapFocus(within)`** — ogranicza nawigację (Tab / Shift+Tab /
|
|
154
|
+
focusNext itp.) i `setFocus` do descendantów wskazanego Window. Zwraca funkcję
|
|
155
|
+
zwalniającą; kolejne wywołania stackują się LIFO, `getFocusTrap()` zwraca
|
|
156
|
+
aktywny trap.
|
|
157
|
+
- **`WindowProperties.id` + `Window#getId()` / `setId()`** — opcjonalny string
|
|
158
|
+
używany przez `focusById`; `InterfaceBuilder` kopiuje YAML `id:` do tego pola,
|
|
159
|
+
więc reference-matching działa identycznie jak dotychczasowa mapa zwracana
|
|
160
|
+
przez `build()`.
|
|
161
|
+
|
|
162
|
+
### Added — backlog P1-22 (onFocus / onBlur hooks)
|
|
163
|
+
- **`WindowProperties.onFocus` / `onBlur`** (+ `Window#setOnFocus()` /
|
|
164
|
+
`setOnBlur()`) — callbacki wyzwalane raz na zmianę stanu focus (`false → true`
|
|
165
|
+
dla onFocus, `true → false` dla onBlur). Idempotentne wywołania
|
|
166
|
+
`setFocused(…)` z bieżącą wartością nie re-odpalają handlerów.
|
|
167
|
+
- Wyzwalane są przez dowolną ścieżkę ustawiającą focus: `WindowManager.setFocus`,
|
|
168
|
+
`moveFocus`, `focusById`, `focusFirst/Last`, ręczny `Window.setFocused(true)`.
|
|
169
|
+
|
|
170
|
+
### Added — backlog P1-23 (error boundary in render)
|
|
171
|
+
- **`WindowManagerOptions.onError(err, control)`** — globalny sink dla wyjątków
|
|
172
|
+
rzuconych podczas `Window.render()` któregoś z descendantów. Gdy handler jest
|
|
173
|
+
zarejestrowany, rodzic przechwytuje wyjątek, maluje placeholder `⚠ render
|
|
174
|
+
error: …` na obszarze winnego dziecka i kontynuuje renderowanie pozostałego
|
|
175
|
+
subtree — reszta klatki pozostaje sprawna.
|
|
176
|
+
- **`ErrorHolder.mts`** — nowy moduł-holder analogiczny do `RegistryHolder`,
|
|
177
|
+
z ekspozycją `setErrorHandler(fn)` / `getErrorHandler()`. WindowManager
|
|
178
|
+
instaluje handler w konstruktorze i czyści go w `stop()`, więc poza pętlą
|
|
179
|
+
managera `Window.render()` nadal rethrowuje wyjątki (no silent swallowing).
|
|
180
|
+
|
|
181
|
+
### Demo / layout.yaml
|
|
182
|
+
- **z-index** — `buildBadge` dostał `zIndex: 10`, a nowy `headerOverlay` z
|
|
183
|
+
`zIndex: 1` dowodzi, że malowanie respektuje kolejność stackingu mimo
|
|
184
|
+
późniejszej deklaracji overlay-a.
|
|
185
|
+
- **focusById** — `Ctrl+G` bindKey w `demo.mts` przerzuca focus na `btnSave`
|
|
186
|
+
bez Tab-owania przez wszystkie pola.
|
|
187
|
+
- **onFocus / onBlur** — `btnSave.setOnFocus / setOnBlur` dopisują wpis do listy
|
|
188
|
+
zdarzeń przy każdej zmianie focus, dzięki czemu widać kiedy hooki wpadają.
|
|
189
|
+
- **onError** — `WindowManager({ onError })` loguje do listy zdarzeń wszelkie
|
|
190
|
+
render-time wyjątki (z pokaźnym ostrzegawczym placeholderem w miejscu
|
|
191
|
+
zawodnej kontrolki).
|
|
192
|
+
|
|
193
|
+
### Version bump
|
|
194
|
+
- 0.25.0 → 0.26.0 — minor bump dla batcha P1-17/18/22/23.
|
|
195
|
+
|
|
3
196
|
## [0.25.0] – 2026-04-18
|
|
4
197
|
|
|
5
198
|
### Added — backlog P0-10 (InterfaceBuilder: register custom types)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Window } from './Window.mjs';
|
|
2
|
+
/** Callback signature for render-time error handlers.
|
|
3
|
+
* The thrown value is forwarded verbatim alongside the Window whose
|
|
4
|
+
* `render()` call raised it. */
|
|
5
|
+
export type ErrorHandler = (err: unknown, control: Window) => void;
|
|
6
|
+
/** Returns the currently installed error handler, or undefined when none. */
|
|
7
|
+
export declare function getErrorHandler(): ErrorHandler | undefined;
|
|
8
|
+
/** Installs a render-time error handler. Pass `undefined` to clear. */
|
|
9
|
+
export declare function setErrorHandler(handler: ErrorHandler | undefined): void;
|
|
10
|
+
//# sourceMappingURL=ErrorHolder.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorHolder.d.mts","sourceRoot":"","sources":["../../src/Screen/ErrorHolder.mts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE3C;;iCAEiC;AACjC,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;AAQnE,6EAA6E;AAC7E,wBAAgB,eAAe,IAAI,YAAY,GAAG,SAAS,CAE1D;AAED,uEAAuE;AACvE,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,IAAI,CAEvE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** Module-level singleton holding the active render error handler.
|
|
2
|
+
* Defaults to `undefined` so Windows rendered outside a WindowManager
|
|
3
|
+
* still propagate exceptions. The WindowManager installs a handler in
|
|
4
|
+
* its constructor and clears it on stop(). */
|
|
5
|
+
let activeHandler = undefined;
|
|
6
|
+
/** Returns the currently installed error handler, or undefined when none. */
|
|
7
|
+
export function getErrorHandler() {
|
|
8
|
+
return activeHandler;
|
|
9
|
+
}
|
|
10
|
+
/** Installs a render-time error handler. Pass `undefined` to clear. */
|
|
11
|
+
export function setErrorHandler(handler) {
|
|
12
|
+
activeHandler = handler;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ErrorHolder.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorHolder.mjs","sourceRoot":"","sources":["../../src/Screen/ErrorHolder.mts"],"names":[],"mappings":"AAOA;;;+CAG+C;AAC/C,IAAI,aAAa,GAA6B,SAAS,CAAC;AAExD,6EAA6E;AAC7E,MAAM,UAAU,eAAe;IAC9B,OAAO,aAAa,CAAC;AACtB,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,eAAe,CAAC,OAAiC;IAChE,aAAa,GAAG,OAAO,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceBuilder.d.mts","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAUV,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiIpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAAiC;IAEpD,kFAAkF;;IAMlF,uFAAuF;IAChF,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAI3E;;;;;qCAKiC;IAC1B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAOnE;;;4EAGwE;IACjE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAmCvF,+DAA+D;IAClD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO9G;;yEAEqE;IACrE,OAAO,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"InterfaceBuilder.d.mts","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAUV,iBAAiB,EAElB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAiIpD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,WAAW,CAAiC;IAEpD,kFAAkF;;IAMlF,uFAAuF;IAChF,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI;IAI3E;;;;;qCAKiC;IAC1B,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAOnE;;;4EAGwE;IACjE,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAmCvF,+DAA+D;IAClD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAO9G;;yEAEqE;IACrE,OAAO,CAAC,SAAS;IA4PjB,8EAA8E;IAC9E,OAAO,CAAC,WAAW;CAOpB"}
|
|
@@ -233,9 +233,12 @@ export class InterfaceBuilder {
|
|
|
233
233
|
layout: def.layout,
|
|
234
234
|
gap: def.gap,
|
|
235
235
|
padding: def.padding,
|
|
236
|
+
margin: def.margin,
|
|
236
237
|
gridColumns: def.gridColumns,
|
|
237
238
|
alignItems: def.alignItems,
|
|
238
239
|
justifyContent: def.justifyContent,
|
|
240
|
+
id: def.id,
|
|
241
|
+
zIndex: def.zIndex,
|
|
239
242
|
};
|
|
240
243
|
let win;
|
|
241
244
|
switch (def.type ?? 'window') {
|
|
@@ -260,6 +263,8 @@ export class InterfaceBuilder {
|
|
|
260
263
|
onChange: tbChange,
|
|
261
264
|
onSubmit: tbSubmit,
|
|
262
265
|
onKeyDown: tbKeyDown,
|
|
266
|
+
cursorSymbol: def.cursorSymbol,
|
|
267
|
+
cursorBlink: def.cursorBlink,
|
|
263
268
|
});
|
|
264
269
|
pending.push({ control: tb, parents: [...parentChain] });
|
|
265
270
|
win = tb;
|
|
@@ -278,6 +283,8 @@ export class InterfaceBuilder {
|
|
|
278
283
|
onKeyDown: taKeyDown,
|
|
279
284
|
insertTabAsSpaces: def.insertTabAsSpaces,
|
|
280
285
|
ctrlDDeletesForward: def.ctrlDDeletesForward,
|
|
286
|
+
cursorSymbol: def.cursorSymbol,
|
|
287
|
+
cursorBlink: def.cursorBlink,
|
|
281
288
|
});
|
|
282
289
|
pending.push({ control: ta, parents: [...parentChain] });
|
|
283
290
|
win = ta;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InterfaceBuilder.mjs","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"InterfaceBuilder.mjs","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"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"}
|
package/dist/Screen/Screen.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type { CellAttributes, ScreenFrameStats, ScreenOptions, StyleId, TerminalSize } from './types.mjs';
|
|
1
|
+
import type { CellAttributes, ScreenFrameStats, ScreenOptions, StyleId, TerminalSize, ToastOptions, ToastPosition } from './types.mjs';
|
|
2
2
|
import { StyleRegistry } from './StyleRegistry.mjs';
|
|
3
3
|
import { Window } from './Window.mjs';
|
|
4
|
+
import { Toast } from './controls/Toast.mjs';
|
|
4
5
|
export declare class Screen extends Window {
|
|
5
6
|
/** Internal event bus for 'resize' and 'frame' notifications. Composed
|
|
6
7
|
* rather than inherited so the Window class hierarchy stays plain. */
|
|
@@ -19,6 +20,18 @@ export declare class Screen extends Window {
|
|
|
19
20
|
private signalsInstalled;
|
|
20
21
|
/** Whether dispose() has already restored terminal state. */
|
|
21
22
|
private disposed;
|
|
23
|
+
/** Active toast overlays grouped by anchor position. Within each group the
|
|
24
|
+
* toasts are stored in the order they were created so re-layout can stack
|
|
25
|
+
* them outward from the anchor edge. A toast is removed from its group by
|
|
26
|
+
* `dismissToast` (auto-dismiss timer) or by `Toast.dismiss()`. */
|
|
27
|
+
private activeToasts;
|
|
28
|
+
/** Per-toast auto-dismiss timers. `dismissToast` consults this map so
|
|
29
|
+
* manual dismissals cancel the pending timer and leaking timers are
|
|
30
|
+
* impossible when the caller drops their reference to the toast. */
|
|
31
|
+
private toastTimers;
|
|
32
|
+
/** Per-toast dismiss callbacks (from `ToastOptions.onDismiss`). Kept out of
|
|
33
|
+
* the `Toast` instance so the control stays free of bookkeeping code. */
|
|
34
|
+
private toastDismissHandlers;
|
|
22
35
|
/** Initializes the root window sized to the current terminal dimensions.
|
|
23
36
|
* Creates a fresh StyleRegistry (with built-in styles pre-registered)
|
|
24
37
|
* and installs it as the global singleton. The optional ScreenOptions
|
|
@@ -35,6 +48,42 @@ export declare class Screen extends Window {
|
|
|
35
48
|
setBuiltinStyle(name: string, attrs: CellAttributes): StyleId;
|
|
36
49
|
/** Returns the soft FPS cap configured via ScreenOptions, or undefined when uncapped. */
|
|
37
50
|
getTargetFps(): number | undefined;
|
|
51
|
+
/** Shows a non-modal toast overlay with the given text. Returns the
|
|
52
|
+
* underlying `Toast` window so callers can inspect it, swap its message,
|
|
53
|
+
* or dismiss it manually via `toast.dismiss()`.
|
|
54
|
+
*
|
|
55
|
+
* Toasts are stacked by anchor: every call at the same `position` adds
|
|
56
|
+
* to the visible column, and a dismissal shifts the remainder back
|
|
57
|
+
* towards the anchor edge. Auto-dismissal is driven by a `setTimeout`
|
|
58
|
+
* whose handle is tracked per-toast so manual dismissals cancel the
|
|
59
|
+
* timer. A duration of `0` disables the timer entirely (sticky toast).
|
|
60
|
+
*
|
|
61
|
+
* The method calls `render()` once so the overlay appears immediately,
|
|
62
|
+
* and again after every dismissal for the same reason. Consumers
|
|
63
|
+
* driving their own render loop can call `screen.render()` themselves —
|
|
64
|
+
* the extra render here is idempotent against the `'frame'` event. */
|
|
65
|
+
toast(text: string, options?: ToastOptions): Toast;
|
|
66
|
+
/** Removes a toast from the Screen, cancels its auto-dismiss timer (if
|
|
67
|
+
* any), reflows the remaining toasts anchored to the same corner, and
|
|
68
|
+
* fires the `onDismiss` callback the caller registered at creation
|
|
69
|
+
* time. Safe to call twice — the second call is a no-op. */
|
|
70
|
+
dismissToast(toast: Toast): void;
|
|
71
|
+
/** Returns a snapshot of the currently active toasts for the given anchor
|
|
72
|
+
* position (or every anchor when `position` is omitted). Exposed for
|
|
73
|
+
* tests and diagnostics — consumers generally keep the instance returned
|
|
74
|
+
* by `toast()` rather than walking this list. */
|
|
75
|
+
getActiveToasts(position?: ToastPosition): readonly Toast[];
|
|
76
|
+
/** Computes each toast's absolute position inside the Screen for the
|
|
77
|
+
* given anchor group and writes it to the toast's `x` / `y`. Called
|
|
78
|
+
* after every `addChild` / `removeChild` toast mutation and whenever
|
|
79
|
+
* the Screen is resized so the stack stays anchored. Mutates `x` / `y`
|
|
80
|
+
* directly — the Toast's `Pos.topLeft()` is only a placeholder consumed
|
|
81
|
+
* by the absolute layout pass that ran during `addChild`. */
|
|
82
|
+
private relayoutToasts;
|
|
83
|
+
/** Re-runs `relayoutToasts` for every non-empty anchor group. Invoked
|
|
84
|
+
* from `resize()` so terminal resizes keep the overlays pinned to their
|
|
85
|
+
* corners. */
|
|
86
|
+
private relayoutAllToasts;
|
|
38
87
|
/** Switches the terminal into the alternate screen buffer. Idempotent. */
|
|
39
88
|
enterAltScreen(): void;
|
|
40
89
|
/** Restores the primary screen buffer if Screen previously entered the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.d.mts","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"Screen.d.mts","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
|
package/dist/Screen/Screen.mjs
CHANGED
|
@@ -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,18 @@ 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;
|
|
30
43
|
/** Initializes the root window sized to the current terminal dimensions.
|
|
31
44
|
* Creates a fresh StyleRegistry (with built-in styles pre-registered)
|
|
32
45
|
* and installs it as the global singleton. The optional ScreenOptions
|
|
@@ -47,6 +60,9 @@ export class Screen extends Window {
|
|
|
47
60
|
this.boundExit = () => { this.restoreTerminalState(); };
|
|
48
61
|
this.signalsInstalled = false;
|
|
49
62
|
this.disposed = false;
|
|
63
|
+
this.activeToasts = new Map();
|
|
64
|
+
this.toastTimers = new Map();
|
|
65
|
+
this.toastDismissHandlers = new Map();
|
|
50
66
|
if (options?.altScreen)
|
|
51
67
|
this.enterAltScreen();
|
|
52
68
|
if (options?.hideCursor)
|
|
@@ -70,6 +86,132 @@ export class Screen extends Window {
|
|
|
70
86
|
getTargetFps() {
|
|
71
87
|
return this.targetFps;
|
|
72
88
|
}
|
|
89
|
+
// ── Toast overlays (P1-27) ────────────────────────────────────────────────
|
|
90
|
+
/** Shows a non-modal toast overlay with the given text. Returns the
|
|
91
|
+
* underlying `Toast` window so callers can inspect it, swap its message,
|
|
92
|
+
* or dismiss it manually via `toast.dismiss()`.
|
|
93
|
+
*
|
|
94
|
+
* Toasts are stacked by anchor: every call at the same `position` adds
|
|
95
|
+
* to the visible column, and a dismissal shifts the remainder back
|
|
96
|
+
* towards the anchor edge. Auto-dismissal is driven by a `setTimeout`
|
|
97
|
+
* whose handle is tracked per-toast so manual dismissals cancel the
|
|
98
|
+
* timer. A duration of `0` disables the timer entirely (sticky toast).
|
|
99
|
+
*
|
|
100
|
+
* The method calls `render()` once so the overlay appears immediately,
|
|
101
|
+
* and again after every dismissal for the same reason. Consumers
|
|
102
|
+
* driving their own render loop can call `screen.render()` themselves —
|
|
103
|
+
* the extra render here is idempotent against the `'frame'` event. */
|
|
104
|
+
toast(text, options) {
|
|
105
|
+
const position = options?.position ?? 'top-right';
|
|
106
|
+
const duration = options?.duration ?? 2000;
|
|
107
|
+
const zIndex = options?.zIndex ?? 10_000;
|
|
108
|
+
const border = options?.border ?? { top: true, right: true, bottom: true, left: true, style: 'rounded' };
|
|
109
|
+
const style = options?.style ?? Toast.resolveDefaultStyle();
|
|
110
|
+
const width = options?.width;
|
|
111
|
+
const toast = new Toast(text, { position, style, border, zIndex, width });
|
|
112
|
+
toast.attachDismiss(() => this.dismissToast(toast));
|
|
113
|
+
const list = this.activeToasts.get(position) ?? [];
|
|
114
|
+
list.push(toast);
|
|
115
|
+
this.activeToasts.set(position, list);
|
|
116
|
+
this.addChild(toast);
|
|
117
|
+
this.relayoutToasts(position);
|
|
118
|
+
if (duration > 0) {
|
|
119
|
+
const timer = setTimeout(() => this.dismissToast(toast), duration);
|
|
120
|
+
if (typeof timer === 'object' && timer !== null && 'unref' in timer && typeof timer.unref === 'function') {
|
|
121
|
+
timer.unref();
|
|
122
|
+
}
|
|
123
|
+
this.toastTimers.set(toast, timer);
|
|
124
|
+
}
|
|
125
|
+
if (options?.onDismiss)
|
|
126
|
+
this.toastDismissHandlers.set(toast, options.onDismiss);
|
|
127
|
+
this.render();
|
|
128
|
+
return toast;
|
|
129
|
+
}
|
|
130
|
+
/** Removes a toast from the Screen, cancels its auto-dismiss timer (if
|
|
131
|
+
* any), reflows the remaining toasts anchored to the same corner, and
|
|
132
|
+
* fires the `onDismiss` callback the caller registered at creation
|
|
133
|
+
* time. Safe to call twice — the second call is a no-op. */
|
|
134
|
+
dismissToast(toast) {
|
|
135
|
+
const position = toast.getToastPosition();
|
|
136
|
+
const list = this.activeToasts.get(position);
|
|
137
|
+
if (!list)
|
|
138
|
+
return;
|
|
139
|
+
const idx = list.indexOf(toast);
|
|
140
|
+
if (idx === -1)
|
|
141
|
+
return;
|
|
142
|
+
list.splice(idx, 1);
|
|
143
|
+
const timer = this.toastTimers.get(toast);
|
|
144
|
+
if (timer !== undefined) {
|
|
145
|
+
clearTimeout(timer);
|
|
146
|
+
this.toastTimers.delete(toast);
|
|
147
|
+
}
|
|
148
|
+
this.removeChild(toast);
|
|
149
|
+
this.relayoutToasts(position);
|
|
150
|
+
const handler = this.toastDismissHandlers.get(toast);
|
|
151
|
+
if (handler) {
|
|
152
|
+
this.toastDismissHandlers.delete(toast);
|
|
153
|
+
handler();
|
|
154
|
+
}
|
|
155
|
+
this.render();
|
|
156
|
+
}
|
|
157
|
+
/** Returns a snapshot of the currently active toasts for the given anchor
|
|
158
|
+
* position (or every anchor when `position` is omitted). Exposed for
|
|
159
|
+
* tests and diagnostics — consumers generally keep the instance returned
|
|
160
|
+
* by `toast()` rather than walking this list. */
|
|
161
|
+
getActiveToasts(position) {
|
|
162
|
+
if (position !== undefined) {
|
|
163
|
+
return [...(this.activeToasts.get(position) ?? [])];
|
|
164
|
+
}
|
|
165
|
+
const all = [];
|
|
166
|
+
for (const list of this.activeToasts.values())
|
|
167
|
+
all.push(...list);
|
|
168
|
+
return all;
|
|
169
|
+
}
|
|
170
|
+
/** Computes each toast's absolute position inside the Screen for the
|
|
171
|
+
* given anchor group and writes it to the toast's `x` / `y`. Called
|
|
172
|
+
* after every `addChild` / `removeChild` toast mutation and whenever
|
|
173
|
+
* the Screen is resized so the stack stays anchored. Mutates `x` / `y`
|
|
174
|
+
* directly — the Toast's `Pos.topLeft()` is only a placeholder consumed
|
|
175
|
+
* by the absolute layout pass that ran during `addChild`. */
|
|
176
|
+
relayoutToasts(position) {
|
|
177
|
+
const list = this.activeToasts.get(position);
|
|
178
|
+
if (!list || list.length === 0)
|
|
179
|
+
return;
|
|
180
|
+
const { width: screenW, height: screenH } = this.getSize();
|
|
181
|
+
const horizontalAnchor = position.endsWith('left') ? 'left' :
|
|
182
|
+
position.endsWith('right') ? 'right' :
|
|
183
|
+
'center';
|
|
184
|
+
const verticalAnchor = position.startsWith('top') ? 'top' : 'bottom';
|
|
185
|
+
let offset = 0;
|
|
186
|
+
for (const toast of list) {
|
|
187
|
+
const { width: tw, height: th } = toast.getSize();
|
|
188
|
+
let x;
|
|
189
|
+
if (horizontalAnchor === 'left')
|
|
190
|
+
x = 0;
|
|
191
|
+
else if (horizontalAnchor === 'right')
|
|
192
|
+
x = Math.max(0, screenW - tw);
|
|
193
|
+
else
|
|
194
|
+
x = Math.max(0, Math.floor((screenW - tw) / 2));
|
|
195
|
+
let y;
|
|
196
|
+
if (verticalAnchor === 'top') {
|
|
197
|
+
y = offset;
|
|
198
|
+
}
|
|
199
|
+
else {
|
|
200
|
+
y = Math.max(0, screenH - offset - th);
|
|
201
|
+
}
|
|
202
|
+
offset += th;
|
|
203
|
+
toast.x = x;
|
|
204
|
+
toast.y = y;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
/** Re-runs `relayoutToasts` for every non-empty anchor group. Invoked
|
|
208
|
+
* from `resize()` so terminal resizes keep the overlays pinned to their
|
|
209
|
+
* corners. */
|
|
210
|
+
relayoutAllToasts() {
|
|
211
|
+
for (const position of this.activeToasts.keys()) {
|
|
212
|
+
this.relayoutToasts(position);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
73
215
|
// ── Terminal lifecycle helpers ────────────────────────────────────────────
|
|
74
216
|
/** Switches the terminal into the alternate screen buffer. Idempotent. */
|
|
75
217
|
enterAltScreen() {
|
|
@@ -116,6 +258,13 @@ export class Screen extends Window {
|
|
|
116
258
|
dispose() {
|
|
117
259
|
if (this.disposed)
|
|
118
260
|
return;
|
|
261
|
+
// Cancel every pending auto-dismiss timer so a disposed Screen does
|
|
262
|
+
// not hold the Node event loop open via a detached setTimeout.
|
|
263
|
+
for (const timer of this.toastTimers.values())
|
|
264
|
+
clearTimeout(timer);
|
|
265
|
+
this.toastTimers.clear();
|
|
266
|
+
this.toastDismissHandlers.clear();
|
|
267
|
+
this.activeToasts.clear();
|
|
119
268
|
this.restoreTerminalState();
|
|
120
269
|
this.uninstallSignalHandlers();
|
|
121
270
|
this.disposed = true;
|
|
@@ -130,6 +279,9 @@ export class Screen extends Window {
|
|
|
130
279
|
const w = width ?? process.stdout.columns ?? 80;
|
|
131
280
|
const h = height ?? process.stdout.rows ?? 24;
|
|
132
281
|
this.setSize(w, h);
|
|
282
|
+
// Re-anchor every active toast overlay so corner-positioned stacks
|
|
283
|
+
// follow the new terminal geometry rather than drifting out of view.
|
|
284
|
+
this.relayoutAllToasts();
|
|
133
285
|
const size = { width: w, height: h };
|
|
134
286
|
this.events.emit('resize', size);
|
|
135
287
|
return size;
|