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.
Files changed (62) hide show
  1. package/CHANGELOG.md +193 -0
  2. package/dist/Screen/ErrorHolder.d.mts +10 -0
  3. package/dist/Screen/ErrorHolder.d.mts.map +1 -0
  4. package/dist/Screen/ErrorHolder.mjs +14 -0
  5. package/dist/Screen/ErrorHolder.mjs.map +1 -0
  6. package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
  7. package/dist/Screen/InterfaceBuilder.mjs +7 -0
  8. package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
  9. package/dist/Screen/Screen.d.mts +50 -1
  10. package/dist/Screen/Screen.d.mts.map +1 -1
  11. package/dist/Screen/Screen.mjs +152 -0
  12. package/dist/Screen/Screen.mjs.map +1 -1
  13. package/dist/Screen/StyleRegistry.d.mts.map +1 -1
  14. package/dist/Screen/StyleRegistry.mjs +3 -1
  15. package/dist/Screen/StyleRegistry.mjs.map +1 -1
  16. package/dist/Screen/VirtualCursor.d.mts +57 -0
  17. package/dist/Screen/VirtualCursor.d.mts.map +1 -0
  18. package/dist/Screen/VirtualCursor.mjs +148 -0
  19. package/dist/Screen/VirtualCursor.mjs.map +1 -0
  20. package/dist/Screen/Window.d.mts +67 -6
  21. package/dist/Screen/Window.d.mts.map +1 -1
  22. package/dist/Screen/Window.mjs +195 -27
  23. package/dist/Screen/Window.mjs.map +1 -1
  24. package/dist/Screen/WindowManager.d.mts +78 -2
  25. package/dist/Screen/WindowManager.d.mts.map +1 -1
  26. package/dist/Screen/WindowManager.mjs +186 -3
  27. package/dist/Screen/WindowManager.mjs.map +1 -1
  28. package/dist/Screen/controls/TextArea.d.mts +68 -2
  29. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  30. package/dist/Screen/controls/TextArea.mjs +280 -46
  31. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  32. package/dist/Screen/controls/TextBox.d.mts +52 -5
  33. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  34. package/dist/Screen/controls/TextBox.mjs +179 -10
  35. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  36. package/dist/Screen/controls/Toast.d.mts +72 -0
  37. package/dist/Screen/controls/Toast.d.mts.map +1 -0
  38. package/dist/Screen/controls/Toast.mjs +112 -0
  39. package/dist/Screen/controls/Toast.mjs.map +1 -0
  40. package/dist/Screen/types.d.mts +143 -0
  41. package/dist/Screen/types.d.mts.map +1 -1
  42. package/dist/Screen/types.mjs +8 -0
  43. package/dist/Screen/types.mjs.map +1 -1
  44. package/dist/index.d.mts +4 -2
  45. package/dist/index.d.mts.map +1 -1
  46. package/dist/index.mjs +3 -1
  47. package/dist/index.mjs.map +1 -1
  48. package/package.json +1 -1
  49. package/src/Screen/ErrorHolder.mts +22 -0
  50. package/src/Screen/InterfaceBuilder.mts +12 -5
  51. package/src/Screen/Screen.mts +166 -1
  52. package/src/Screen/StyleRegistry.mts +4 -0
  53. package/src/Screen/VirtualCursor.mts +175 -0
  54. package/src/Screen/Window.mts +197 -28
  55. package/src/Screen/WindowManager.mts +192 -3
  56. package/src/Screen/controls/TextArea.mts +280 -41
  57. package/src/Screen/controls/TextBox.mts +181 -10
  58. package/src/Screen/controls/Toast.mts +138 -0
  59. package/src/Screen/types.mts +140 -0
  60. package/src/demo.mts +80 -0
  61. package/src/index.mts +12 -0
  62. 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;IAqPjB,8EAA8E;IAC9E,OAAO,CAAC,WAAW;CAOpB"}
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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAc5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,GAAG,EAAO,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAY,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAa,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAO,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAc,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AAEtD,iFAAiF;AAEjF;6BAC6B;AAC7B;;qEAEqE;AACrE,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,CAAC,GAAG,GAAyB,CAAC;IACpC,OAAO,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;IACzC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO;IAC9D,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU;IACnE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS;CAC1C,CAAC,CAAC;AAQH,gFAAgF;AAChF,SAAS,cAAc,CAAC,CAAgB;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,sCAAsC,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gDAAgD;AAChD,SAAS,QAAQ,CAAC,IAA6B;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,QAAQ;QAAO,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS;QAAM,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,IAAI,KAAK,UAAU;QAAK,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IAClD,IAAI,IAAI,KAAK,YAAY;QAAG,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC;IACpD,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,IAAI,KAAK,MAAM;QAAS,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,KAAK,CAAC,CAAI,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnC,KAAK,MAAM,CAAC,CAAG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpC,KAAK,OAAO,CAAC,CAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;4EAE4E;AAC5E,SAAS,aAAa,CAAC,CAAe;IACpC,IAAI,CAAC,KAAK,MAAM;QAAK,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,cAAc,CAAC,CAAkB,CAAC,CAAC;AAC5C,CAAC;AAED,kDAAkD;AAClD,SAAS,SAAS,CAAC,IAAkB;IACnC,IAAI,IAAI,KAAK,MAAM;QAAK,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,MAAM;QAAK,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,WAAW,IAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,IAAI,YAAY,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;0FAE0F;AAC1F,SAAS,iBAAiB,CAAC,EAA+B;IACxD,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAA8C;IACvD,WAAW,CAAiC;IAEpD,kFAAkF;IAClF;QACE,IAAI,CAAC,SAAS,GAAK,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,uFAAuF;IAChF,gBAAgB,CAAC,EAAU,EAAE,EAAgC;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;qCAKiC;IAC1B,YAAY,CAAC,IAAY,EAAE,OAA0B;QAC1D,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,yCAAyC,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;4EAGwE;IACjE,KAAK,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAkB;QAC/D,MAAM,MAAM,GAAU,KAAK,CAAC,QAAQ,CAAe,CAAC;QACpD,MAAM,MAAM,GAAU,IAAI,GAAG,EAAkB,CAAC;QAChD,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAyC,EAAE,CAAC;QAE/D,sEAAsE;QACtE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;gBACpC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;YACpE,2EAA2E;YAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,8EAA8E;QAC9E,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,EAAE,EAAE,CAAC;YACP,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC3C,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+DAA+D;IACxD,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAkB;QAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,iFAAiF;IAEjF;;yEAEqE;IAC7D,SAAS,CACf,GAAkB,EAClB,MAA2B,EAC3B,OAA8B,EAC9B,aAAmD,EACnD,WAAqB;QAErB,MAAM,GAAG,GAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAO,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnD,4DAA4D;QAC5D,MAAM,EAAE,GAAqB;YAC3B,GAAG;YACH,IAAI,EAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAM,IAAI;YACpB,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,OAAO,EAAS,GAAG,CAAC,OAAO;YAC3B,QAAQ,EAAQ,GAAG,CAAC,QAAQ;YAC5B,KAAK,EAAW,GAAG,CAAC,KAAK;YACzB,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,GAAG,EAAa,GAAG,CAAC,GAAG;YACvB,OAAO,EAAS,GAAG,CAAC,OAAO;YAC3B,WAAW,EAAK,GAAG,CAAC,WAAW;YAC/B,UAAU,EAAM,GAAG,CAAC,UAAU;YAC9B,cAAc,EAAE,GAAG,CAAC,cAAc;SACnC,CAAC;QAEF,IAAI,GAAW,CAAC;QAEhB,QAAQ,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE;oBACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC1D,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,SAAS,GAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAQ,GAAG,CAAC,KAAK;oBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAK,QAAkE;oBAC/E,QAAQ,EAAK,QAAkE;oBAC/E,SAAS,EAAI,SAAkE;iBAChF,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,SAAS,GAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,KAAK,EAAgB,GAAG,CAAC,KAAK;oBAC9B,WAAW,EAAU,GAAG,CAAC,WAAW;oBACpC,QAAQ,EAAa,QAA0D;oBAC/E,QAAQ,EAAa,QAA0D;oBAC/E,SAAS,EAAY,SAA0D;oBAC/E,iBAAiB,EAAI,GAAG,CAAC,iBAAiB;oBAC1C,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;iBAC7C,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,OAAO,EAAG,GAAG,CAAC,OAAO;oBACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzE,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;oBACtB,OAAO,EAAG,GAAG,CAAC,OAAO;oBACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzE,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACxD,GAAG,GAAG,CAAC,CAAC;gBACR,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;gBACH,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE;oBAC7B,KAAK,EAAO,GAAG,CAAC,QAAQ;oBACxB,GAAG,EAAS,GAAG,CAAC,GAAG;oBACnB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE;oBAC/B,KAAK,EAAO,GAAG,CAAC,QAAQ;oBACxB,GAAG,EAAS,GAAG,CAAC,GAAG;oBACnB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;gBACH,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC3B,IAAI,EAAG,GAAG,CAAC,IAAI;oBACf,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,KAAK,EAAE,GAAG,CAAC,UAAU;iBACtB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,IAAI,EAAM,GAAG,CAAC,IAAI;oBAClB,MAAM,EAAI,GAAG,CAAC,SAAS;oBACvB,GAAG,EAAO,GAAG,CAAC,GAAG;oBACjB,QAAQ,EAAE,GAAG,CAAC,UAAU;oBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAU,GAAG,CAAC,KAAK;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,QAAQ,EAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzF,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE;oBACxB,MAAM,EAAO,GAAG,CAAC,MAAM;oBACvB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzF,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3D,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC3B,IAAI,EAAG,GAAG,CAAC,IAAI;oBACf,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,KAAK,EAAE,GAAG,CAAC,UAAU;iBACtB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAI,GAAG,CAAC,YAAY;oBACzB,KAAK,EAAI,GAAG,CAAC,KAAK;oBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAI,GAAG,CAAC,UAAU;iBACxB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,GAAG,GAAsB;wBAC7B,EAAE;wBACF,QAAQ,EAAS,WAAW,EAAE;wBAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;qBACnE,CAAC;oBACF,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC9B,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAyB,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC3C,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpC,oEAAoE;QACpE,IAAI,GAAG,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;gBAC9F,IAAI,GAAG,YAAY,IAAI,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtD,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8EAA8E;IACtE,WAAW,CAAC,GAAkB;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"InterfaceBuilder.mjs","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAc5C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAGtC,OAAO,EAAE,GAAG,EAAO,GAAG,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAY,uBAAuB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAa,sBAAsB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAO,4BAA4B,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAU,yBAAyB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAc,qBAAqB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAS,0BAA0B,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAW,wBAAwB,CAAC;AAEtD,iFAAiF;AAEjF;6BAC6B;AAC7B;;qEAEqE;AACrE,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,CAAC,GAAG,GAAyB,CAAC;IACpC,OAAO,OAAO,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC;AAC3C,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAS;IACzC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO;IAC9D,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,UAAU;IACnE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS;CAC1C,CAAC,CAAC;AAQH,gFAAgF;AAChF,SAAS,cAAc,CAAC,CAAgB;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,sCAAsC,CAAC,CAAC;QACzF,OAAO,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,gDAAgD;AAChD,SAAS,QAAQ,CAAC,IAA6B;IAC7C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,IAAI,KAAK,QAAQ;QAAO,OAAO,GAAG,CAAC,MAAM,EAAE,CAAC;IAChD,IAAI,IAAI,KAAK,SAAS;QAAM,OAAO,GAAG,CAAC,OAAO,EAAE,CAAC;IACjD,IAAI,IAAI,KAAK,UAAU;QAAK,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IAClD,IAAI,IAAI,KAAK,YAAY;QAAG,OAAO,GAAG,CAAC,UAAU,EAAE,CAAC;IACpD,IAAI,IAAI,KAAK,aAAa;QAAE,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;IACrD,IAAI,IAAI,KAAK,MAAM;QAAS,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxE,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,KAAK,CAAC,CAAI,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACnC,KAAK,MAAM,CAAC,CAAG,OAAO,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpC,KAAK,OAAO,CAAC,CAAE,OAAO,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACrC,KAAK,QAAQ,CAAC,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/B,OAAO,IAAI,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED;;4EAE4E;AAC5E,SAAS,aAAa,CAAC,CAAe;IACpC,IAAI,CAAC,KAAK,MAAM;QAAK,OAAO,IAAI,EAAE,CAAC;IACnC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,OAAO,EAAE,CAAC;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;YAChB,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,EAAE,CAAC;IAC7D,CAAC;IACD,OAAO,cAAc,CAAC,CAAkB,CAAC,CAAC;AAC5C,CAAC;AAED,kDAAkD;AAClD,SAAS,SAAS,CAAC,IAAkB;IACnC,IAAI,IAAI,KAAK,MAAM;QAAK,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,MAAM;QAAK,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC7B,IAAI,WAAW,IAAK,IAAI;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAChF,IAAI,YAAY,IAAI,IAAI;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClF,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,OAAO,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACxC,OAAO,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED;;0FAE0F;AAC1F,SAAS,iBAAiB,CAAC,EAA+B;IACxD,IAAI,EAAE,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IACvC,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,WAAW,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACnE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,iFAAiF;AAEjF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,gBAAgB;IACnB,SAAS,CAA8C;IACvD,WAAW,CAAiC;IAEpD,kFAAkF;IAClF;QACE,IAAI,CAAC,SAAS,GAAK,IAAI,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,uFAAuF;IAChF,gBAAgB,CAAC,EAAU,EAAE,EAAgC;QAClE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC7B,CAAC;IAED;;;;;qCAKiC;IAC1B,YAAY,CAAC,IAAY,EAAE,OAA0B;QAC1D,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,yCAAyC,CAAC,CAAC;QACjG,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;4EAGwE;IACjE,KAAK,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAkB;QAC/D,MAAM,MAAM,GAAU,KAAK,CAAC,QAAQ,CAAe,CAAC;QACpD,MAAM,MAAM,GAAU,IAAI,GAAG,EAAkB,CAAC;QAChD,MAAM,OAAO,GAA0B,EAAE,CAAC;QAC1C,MAAM,aAAa,GAAyC,EAAE,CAAC;QAE/D,sEAAsE;QACtE,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;YAC/B,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBACrC,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC;gBACpC,QAAQ,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CAAC,CAAC;YACpE,2EAA2E;YAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACvB,CAAC;QAED,8EAA8E;QAC9E,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,aAAa,EAAE,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACtB,CAAC;QAED,IAAI,EAAE,EAAE,CAAC;YACP,KAAK,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,OAAO,EAAE,CAAC;gBAC3C,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,+DAA+D;IACxD,KAAK,CAAC,aAAa,CAAC,QAAgB,EAAE,MAAc,EAAE,EAAkB;QAC7E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,iFAAiF;IAEjF;;yEAEqE;IAC7D,SAAS,CACf,GAAkB,EAClB,MAA2B,EAC3B,OAA8B,EAC9B,aAAmD,EACnD,WAAqB;QAErB,MAAM,GAAG,GAAQ,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,IAAI,GAAO,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAEnD,4DAA4D;QAC5D,MAAM,EAAE,GAAqB;YAC3B,GAAG;YACH,IAAI,EAAY,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;YAC1D,UAAU,EAAM,IAAI;YACpB,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,OAAO,EAAS,GAAG,CAAC,OAAO;YAC3B,QAAQ,EAAQ,GAAG,CAAC,QAAQ;YAC5B,KAAK,EAAW,GAAG,CAAC,KAAK;YACzB,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,GAAG,EAAa,GAAG,CAAC,GAAG;YACvB,OAAO,EAAS,GAAG,CAAC,OAAO;YAC3B,MAAM,EAAU,GAAG,CAAC,MAAM;YAC1B,WAAW,EAAK,GAAG,CAAC,WAAW;YAC/B,UAAU,EAAM,GAAG,CAAC,UAAU;YAC9B,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,EAAE,EAAc,GAAG,CAAC,EAAE;YACtB,MAAM,EAAU,GAAG,CAAC,MAAM;SAC3B,CAAC;QAEF,IAAI,GAAW,CAAC;QAEhB,QAAQ,GAAG,CAAC,IAAI,IAAI,QAAQ,EAAE,CAAC;YAC7B,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC1E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,EAAE;oBACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS;iBAC/C,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC1D,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,SAAS,GAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAS,GAAG,CAAC,KAAK;oBACvB,WAAW,EAAG,GAAG,CAAC,WAAW;oBAC7B,QAAQ,EAAM,QAAkE;oBAChF,QAAQ,EAAM,QAAkE;oBAChF,SAAS,EAAK,SAAkE;oBAChF,YAAY,EAAE,GAAG,CAAC,YAAY;oBAC9B,WAAW,EAAG,GAAG,CAAC,WAAW;iBAC9B,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,QAAQ,GAAM,GAAG,CAAC,QAAQ,CAAE,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAE,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,SAAS,GAAK,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAClF,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,KAAK,EAAgB,GAAG,CAAC,KAAK;oBAC9B,WAAW,EAAU,GAAG,CAAC,WAAW;oBACpC,QAAQ,EAAa,QAA0D;oBAC/E,QAAQ,EAAa,QAA0D;oBAC/E,SAAS,EAAY,SAA0D;oBAC/E,iBAAiB,EAAI,GAAG,CAAC,iBAAiB;oBAC1C,mBAAmB,EAAE,GAAG,CAAC,mBAAmB;oBAC5C,YAAY,EAAS,GAAG,CAAC,YAAY;oBACrC,WAAW,EAAU,GAAG,CAAC,WAAW;iBACrC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,OAAO,EAAG,GAAG,CAAC,OAAO;oBACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzE,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,EAAE;oBACtB,OAAO,EAAG,GAAG,CAAC,OAAO;oBACrB,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAgB,EAAE,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzE,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACxD,GAAG,GAAG,CAAC,CAAC;gBACR,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;iBACjB,CAAC,CAAC;gBACH,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,aAAa,CAAC,CAAC,CAAC;gBACnB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE;oBAC7B,KAAK,EAAO,GAAG,CAAC,QAAQ;oBACxB,GAAG,EAAS,GAAG,CAAC,GAAG;oBACnB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,GAAG,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE;oBAC/B,KAAK,EAAO,GAAG,CAAC,QAAQ;oBACxB,GAAG,EAAS,GAAG,CAAC,GAAG;oBACnB,SAAS,EAAG,GAAG,CAAC,SAAS;oBACzB,UAAU,EAAE,GAAG,CAAC,UAAU;iBAC3B,CAAC,CAAC;gBACH,GAAG,GAAG,GAAG,CAAC;gBACV,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC3B,IAAI,EAAG,GAAG,CAAC,IAAI;oBACf,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,KAAK,EAAE,GAAG,CAAC,UAAU;iBACtB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,QAAQ,CAAC,EAAE,EAAE;oBAC1B,IAAI,EAAM,GAAG,CAAC,IAAI;oBAClB,MAAM,EAAI,GAAG,CAAC,SAAS;oBACvB,GAAG,EAAO,GAAG,CAAC,GAAG;oBACjB,QAAQ,EAAE,GAAG,CAAC,UAAU;oBACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;iBACvB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAU,GAAG,CAAC,KAAK;oBACxB,aAAa,EAAE,GAAG,CAAC,aAAa;oBAChC,QAAQ,EAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzF,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBACzD,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC7E,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,EAAE;oBACxB,MAAM,EAAO,GAAG,CAAC,MAAM;oBACvB,WAAW,EAAE,GAAG,CAAC,WAAW;oBAC5B,QAAQ,EAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAW,EAAE,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;iBACzF,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;gBAC3D,GAAG,GAAG,IAAI,CAAC;gBACX,MAAM;YACR,CAAC;YAED,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,EAAE,EAAE;oBAC3B,IAAI,EAAG,GAAG,CAAC,IAAI;oBACf,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,GAAG,EAAI,GAAG,CAAC,GAAG;oBACd,KAAK,EAAE,GAAG,CAAC,UAAU;iBACtB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,EAAE,EAAE;oBACzB,KAAK,EAAI,GAAG,CAAC,YAAY;oBACzB,KAAK,EAAI,GAAG,CAAC,KAAK;oBAClB,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAI,GAAG,CAAC,UAAU;iBACxB,CAAC,CAAC;gBACH,GAAG,GAAG,EAAE,CAAC;gBACT,MAAM;YACR,CAAC;YAED,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBAC5E,IAAI,aAAa,EAAE,CAAC;oBAClB,MAAM,GAAG,GAAsB;wBAC7B,EAAE;wBACF,QAAQ,EAAS,WAAW,EAAE;wBAC9B,eAAe,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;qBACnE,CAAC;oBACF,GAAG,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;oBAC9B,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;wBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,GAAyB,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;oBAClF,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBAC3C,GAAG,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;gBACvB,CAAC;gBACD,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,EAAE;YAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACpC,oEAAoE;QACpE,IAAI,GAAG,CAAC,OAAO;YAAE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAEhE,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;gBACpC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;gBAC9F,IAAI,GAAG,YAAY,IAAI,IAAI,QAAQ,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtD,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACzC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAED,8EAA8E;IACtE,WAAW,CAAC,GAAkB;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,GAAG,CAAC,CAAC;QAC3D,CAAC;QACD,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;CACF"}
@@ -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;AAC1G,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAUtC,qBAAa,MAAO,SAAQ,MAAM;IACjC;2EACuE;IACvE,OAAO,CAAC,MAAM,CAAe;IAC7B,kEAAkE;IAClE,OAAO,CAAC,eAAe,CAAU;IACjC,0DAA0D;IAC1D,OAAO,CAAC,YAAY,CAAU;IAC9B,kFAAkF;IAClF,OAAO,CAAC,SAAS,CAAqB;IACtC,uEAAuE;IACvE,OAAO,CAAC,aAAa,CAAa;IAClC,oEAAoE;IACpE,OAAO,CAAC,SAAS,CAAa;IAC9B,sEAAsE;IACtE,OAAO,CAAC,gBAAgB,CAAU;IAClC,6DAA6D;IAC7D,OAAO,CAAC,QAAQ,CAAU;IAE1B;;;;;+EAK2E;gBACxD,OAAO,CAAC,EAAE,aAAa;IAqB1C,gGAAgG;IACzF,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO;IAIpD,wCAAwC;IACjC,gBAAgB,IAAI,aAAa;IAIxC;2EACuE;IAChE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO;IAIpE,yFAAyF;IAClF,YAAY,IAAI,MAAM,GAAG,SAAS;IAMzC,0EAA0E;IACnE,cAAc,IAAI,IAAI;IAM7B;qCACiC;IAC1B,aAAa,IAAI,IAAI;IAM5B;;yCAEqC;IAC9B,iBAAiB,IAAI,OAAO;IAInC,6CAA6C;IACtC,kBAAkB,IAAI,IAAI;IAMjC,4EAA4E;IACrE,kBAAkB,IAAI,IAAI;IAMjC,uEAAuE;IAChE,cAAc,IAAI,OAAO;IAIhC;;2EAEuE;IAChE,OAAO,IAAI,IAAI;IAStB;;;;wEAIoE;IAC7D,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,YAAY;IAW5D;;;2EAGuE;IAChE,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IACjE,EAAE,CAAC,KAAK,EAAE,OAAO,EAAG,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAM7E,gDAAgD;IACzC,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,GAAG,IAAI;IAClE,GAAG,CAAC,KAAK,EAAE,OAAO,EAAG,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,GAAG,IAAI;IAM9E;;;OAGG;IACa,MAAM,IAAI,IAAI;IAuB9B;wEACoE;IACpE,OAAO,CAAC,oBAAoB;IAO5B;;uEAEmE;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAK;IACnD;6DACyD;IACzD,OAAO,CAAC,MAAM,CAAC,aAAa,CAAK;IAEjC;0DACsD;IACtD,OAAO,CAAC,qBAAqB;IAU7B,+EAA+E;IAC/E,OAAO,CAAC,uBAAuB;IAQ/B,sFAAsF;IACtF,OAAO,CAAC,cAAc;IAItB,mFAAmF;IACnF,OAAO,CAAC,iBAAiB;IAgCzB,6EAA6E;IAC7E,OAAO,CAAC,QAAQ;CAehB"}
1
+ {"version":3,"file":"Screen.d.mts","sourceRoot":"","sources":["../../src/Screen/Screen.mts"],"names":[],"mappings":"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"}
@@ -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;