take4-console 0.25.0 → 0.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (107) hide show
  1. package/CHANGELOG.md +253 -0
  2. package/README.md +3 -2
  3. package/dist/Screen/ErrorHolder.d.mts +10 -0
  4. package/dist/Screen/ErrorHolder.d.mts.map +1 -0
  5. package/dist/Screen/ErrorHolder.mjs +14 -0
  6. package/dist/Screen/ErrorHolder.mjs.map +1 -0
  7. package/dist/Screen/InterfaceBuilder.d.mts.map +1 -1
  8. package/dist/Screen/InterfaceBuilder.mjs +7 -0
  9. package/dist/Screen/InterfaceBuilder.mjs.map +1 -1
  10. package/dist/Screen/Screen.d.mts +90 -1
  11. package/dist/Screen/Screen.d.mts.map +1 -1
  12. package/dist/Screen/Screen.mjs +300 -1
  13. package/dist/Screen/Screen.mjs.map +1 -1
  14. package/dist/Screen/StyleRegistry.d.mts.map +1 -1
  15. package/dist/Screen/StyleRegistry.mjs +3 -1
  16. package/dist/Screen/StyleRegistry.mjs.map +1 -1
  17. package/dist/Screen/VirtualCursor.d.mts +57 -0
  18. package/dist/Screen/VirtualCursor.d.mts.map +1 -0
  19. package/dist/Screen/VirtualCursor.mjs +148 -0
  20. package/dist/Screen/VirtualCursor.mjs.map +1 -0
  21. package/dist/Screen/Window.d.mts +116 -6
  22. package/dist/Screen/Window.d.mts.map +1 -1
  23. package/dist/Screen/Window.mjs +359 -34
  24. package/dist/Screen/Window.mjs.map +1 -1
  25. package/dist/Screen/WindowManager.d.mts +78 -2
  26. package/dist/Screen/WindowManager.d.mts.map +1 -1
  27. package/dist/Screen/WindowManager.mjs +197 -3
  28. package/dist/Screen/WindowManager.mjs.map +1 -1
  29. package/dist/Screen/controls/BarChart.d.mts.map +1 -1
  30. package/dist/Screen/controls/BarChart.mjs +3 -0
  31. package/dist/Screen/controls/BarChart.mjs.map +1 -1
  32. package/dist/Screen/controls/Checkbox.d.mts.map +1 -1
  33. package/dist/Screen/controls/Checkbox.mjs +4 -0
  34. package/dist/Screen/controls/Checkbox.mjs.map +1 -1
  35. package/dist/Screen/controls/LineChart.d.mts.map +1 -1
  36. package/dist/Screen/controls/LineChart.mjs +3 -0
  37. package/dist/Screen/controls/LineChart.mjs.map +1 -1
  38. package/dist/Screen/controls/ListBox.d.mts.map +1 -1
  39. package/dist/Screen/controls/ListBox.mjs +9 -0
  40. package/dist/Screen/controls/ListBox.mjs.map +1 -1
  41. package/dist/Screen/controls/ProgressBar.d.mts.map +1 -1
  42. package/dist/Screen/controls/ProgressBar.mjs +2 -0
  43. package/dist/Screen/controls/ProgressBar.mjs.map +1 -1
  44. package/dist/Screen/controls/ProgressBarV.d.mts.map +1 -1
  45. package/dist/Screen/controls/ProgressBarV.mjs +2 -0
  46. package/dist/Screen/controls/ProgressBarV.mjs.map +1 -1
  47. package/dist/Screen/controls/Radio.d.mts.map +1 -1
  48. package/dist/Screen/controls/Radio.mjs +7 -1
  49. package/dist/Screen/controls/Radio.mjs.map +1 -1
  50. package/dist/Screen/controls/Sparkline.d.mts.map +1 -1
  51. package/dist/Screen/controls/Sparkline.mjs +3 -0
  52. package/dist/Screen/controls/Sparkline.mjs.map +1 -1
  53. package/dist/Screen/controls/Spinner.d.mts.map +1 -1
  54. package/dist/Screen/controls/Spinner.mjs +8 -0
  55. package/dist/Screen/controls/Spinner.mjs.map +1 -1
  56. package/dist/Screen/controls/StatusLED.d.mts.map +1 -1
  57. package/dist/Screen/controls/StatusLED.mjs +3 -0
  58. package/dist/Screen/controls/StatusLED.mjs.map +1 -1
  59. package/dist/Screen/controls/Tabs.d.mts.map +1 -1
  60. package/dist/Screen/controls/Tabs.mjs +2 -0
  61. package/dist/Screen/controls/Tabs.mjs.map +1 -1
  62. package/dist/Screen/controls/TextArea.d.mts +68 -2
  63. package/dist/Screen/controls/TextArea.d.mts.map +1 -1
  64. package/dist/Screen/controls/TextArea.mjs +291 -46
  65. package/dist/Screen/controls/TextArea.mjs.map +1 -1
  66. package/dist/Screen/controls/TextBox.d.mts +52 -5
  67. package/dist/Screen/controls/TextBox.d.mts.map +1 -1
  68. package/dist/Screen/controls/TextBox.mjs +192 -10
  69. package/dist/Screen/controls/TextBox.mjs.map +1 -1
  70. package/dist/Screen/controls/Toast.d.mts +72 -0
  71. package/dist/Screen/controls/Toast.d.mts.map +1 -0
  72. package/dist/Screen/controls/Toast.mjs +112 -0
  73. package/dist/Screen/controls/Toast.mjs.map +1 -0
  74. package/dist/Screen/types.d.mts +169 -0
  75. package/dist/Screen/types.d.mts.map +1 -1
  76. package/dist/Screen/types.mjs +8 -0
  77. package/dist/Screen/types.mjs.map +1 -1
  78. package/dist/index.d.mts +4 -2
  79. package/dist/index.d.mts.map +1 -1
  80. package/dist/index.mjs +3 -1
  81. package/dist/index.mjs.map +1 -1
  82. package/package.json +1 -1
  83. package/src/Screen/ErrorHolder.mts +22 -0
  84. package/src/Screen/InterfaceBuilder.mts +12 -5
  85. package/src/Screen/Screen.mts +313 -2
  86. package/src/Screen/StyleRegistry.mts +4 -0
  87. package/src/Screen/VirtualCursor.mts +175 -0
  88. package/src/Screen/Window.mts +352 -34
  89. package/src/Screen/WindowManager.mts +203 -3
  90. package/src/Screen/controls/BarChart.mts +3 -0
  91. package/src/Screen/controls/Checkbox.mts +3 -0
  92. package/src/Screen/controls/LineChart.mts +3 -0
  93. package/src/Screen/controls/ListBox.mts +8 -0
  94. package/src/Screen/controls/ProgressBar.mts +2 -0
  95. package/src/Screen/controls/ProgressBarV.mts +2 -0
  96. package/src/Screen/controls/Radio.mts +6 -1
  97. package/src/Screen/controls/Sparkline.mts +3 -0
  98. package/src/Screen/controls/Spinner.mts +6 -0
  99. package/src/Screen/controls/StatusLED.mts +2 -0
  100. package/src/Screen/controls/Tabs.mts +2 -0
  101. package/src/Screen/controls/TextArea.mts +290 -41
  102. package/src/Screen/controls/TextBox.mts +193 -10
  103. package/src/Screen/controls/Toast.mts +138 -0
  104. package/src/Screen/types.mts +167 -0
  105. package/src/demo.mts +131 -0
  106. package/src/index.mts +13 -0
  107. package/src/layout.yaml +16 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,258 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.31.0] – 2026-04-20
4
+
5
+ ### Added — backlog P2-59 (damage tracking / dirty-region render)
6
+ - **`DirtyRect`** — nowy typ (`{ x, y, w, h }`) eksportowany z
7
+ `src/index.mts`. Reprezentuje zmieniony obszar w lokalnym
8
+ układzie współrzędnych `Window` albo (po zebraniu przez
9
+ `Screen.render()`) w układzie ekranowym.
10
+ - **`Window.markDirty(rect?)` / `Window.invalidate()`** — publiczny
11
+ API do zgłaszania zmian zawartości. Wszystkie metody zapisu
12
+ (`setCell`, `setChar`, `mergeStyle`, `fill`, `clear`, `writeText`)
13
+ same wołają `markDirty`, więc niestandardowe kontrolki dostają
14
+ tracking za darmo; `invalidate()` to alias „cała kontrolka brudna”.
15
+ Zapisy w obrębie `render()` są globalnie tłumione
16
+ (`Window.renderingDepth`) żeby re-paint w overriddowanym
17
+ `render()` nie unieważniał pustych klatek.
18
+ - **`Window.parent` + `markFullInvalidation()`** — okno trzyma
19
+ wskaźnik na rodzica, a każda zmiana geometrii / topologii
20
+ (`addChild`, `removeChild`, `setVisible`, `setZIndex`,
21
+ `resizeRegions`) propaguje się w górę do rootowego `Screen`,
22
+ który ustawia flagę `fullInvalidate`. `Screen` overriduje tę
23
+ metodę bezpośrednio, więc sygnał nie idzie wyżej.
24
+ - **`Screen.render()` — nowa ścieżka emisji**. Gdy
25
+ `damageTracking` jest włączone (default `true`) i żadna dirty
26
+ nie istnieje, klatka jest pomijana w całości (zero
27
+ `process.stdout.write`). W przeciwnym razie `Screen` zbiera
28
+ rect-y w dół drzewa (`collectDirtyRects`), koalescencja do
29
+ per-row min/max X (`emitDirty`), emit tylko dla zmienionych
30
+ komórek z cursor-addressingiem `\x1b[row;colH`. Pełny repaint
31
+ (`emitFull`) uruchamia się dla pierwszej klatki, po `resize()`,
32
+ po `invalidate()` / `markFullInvalidation()` bąbelkowanym z
33
+ dziecka i po `setDamageTracking(...)` (tranzycja zawsze resetuje
34
+ terminal).
35
+ - **`ScreenOptions.damageTracking`** — konfigurowalne w
36
+ konstruktorze (default `true`); `Screen.setDamageTracking(enabled)`
37
+ / `Screen.isDamageTrackingEnabled()` do przełączania w runtime;
38
+ `Screen.invalidate()` do ręcznego forsowania pełnego repaintu.
39
+ - **`ScreenFrameStats.cellsEmitted` / `fullRepaint`** — nowe pola
40
+ w evencie `'frame'` raportujące ile cell-i realnie poszło na
41
+ stdout i czy była to pełna klatka. Klatki pominięte raportują
42
+ `cellsEmitted: 0` (`fullRepaint` pozostaje `undefined`).
43
+ - **WindowManager.resume()** — po wznowieniu z `pause()` woła
44
+ `screen.invalidate()`, więc klatka po powrocie z powłoki
45
+ zawsze jest pełna (cache dirty po pauzie jest już nieaktualny).
46
+ - **Audyt kontrolek** — state-setter-y w `TextBox`, `TextArea`,
47
+ `ListBox`, `Tabs`, `Checkbox`, `Radio`, `Spinner`, `Sparkline`,
48
+ `LineChart`, `BarChart`, `ProgressBar`, `ProgressBarV`,
49
+ `StatusLED` wołają `markDirty()`; `handleKey()` we wszystkich
50
+ interaktywnych kontrolkach również. Statyczne kontrolki nie
51
+ dostały zmian — ich zawartość zmienia się tylko przy jawnym
52
+ `markDirty` / `writeText`.
53
+ - **Demo + binding** — `Ctrl+D` przełącza damage tracking
54
+ (top-center toast z nowym stanem). `'frame'` event pozwala
55
+ zmierzyć różnicę `cellsEmitted`.
56
+ - **Doc** — `doc/p2-59-damage-tracking.md` opisuje algorytm,
57
+ propagację, escape hatches, backwards compatibility.
58
+ - **Testy** — `tests/Screen.test.mts` (6 nowych, 32 łącznie):
59
+ pełny repaint pierwszej klatki, skip klatki bez zmian, per-row
60
+ emit po `setCell`, `resize()` forsuje full, `invalidate()`
61
+ forsuje full, `setDamageTracking(false)` wraca do pre-0.31.
62
+
63
+ ## [0.30.0] – 2026-04-18
64
+
65
+ ### Added — backlog P1-27 (Toast / Notification overlay)
66
+ - **`Screen.toast(text, options?)`** — non-modal overlay anchored do
67
+ jednego z sześciu rogów (`top-left` / `top-center` / `top-right` /
68
+ `bottom-left` / `bottom-center` / `bottom-right`). Zwraca instancję
69
+ `Toast` (`Window` subclass) z metodami `getMessage()`,
70
+ `getToastPosition()`, `getToastStyle()`, `dismiss()`.
71
+ - **Auto-dismiss + sticky** — `duration` w `ToastOptions` (default `2000`
72
+ ms); `0` oznacza sticky toast usuwany tylko ręcznie. Timery są
73
+ `unref()`-owane, a `Screen.dispose()` czyści je zanim wyłączy terminal.
74
+ - **Stacking + reflow** — toasty z tej samej pozycji stackują się w
75
+ kolejności utworzenia; dismiss reflow-uje pozostałe w stronę kotwicy
76
+ przez `relayoutToasts`. `Screen.resize()` woła `relayoutAllToasts()`
77
+ przed emisją `'resize'`, więc SIGWINCH przenosi overlaye na nowe
78
+ rogi.
79
+ - **`Screen.dismissToast(toast)` / `getActiveToasts(position?)`** —
80
+ publiczny API do manualnego usuwania i diagnostyki.
81
+ - **`BUILTIN_TOAST`** — nowy built-in style (`{ background: 24,
82
+ foreground: 231, bold: true }`) rejestrowany przez `StyleRegistry`
83
+ konstruktor; user może nadpisać przez `Screen.setBuiltinStyle(BUILTIN_TOAST, …)`
84
+ lub przekazać własne `style` per call.
85
+ - **Typy publiczne** — `Toast`, `ToastPosition`, `ToastOptions`,
86
+ `BUILTIN_TOAST` eksportowane z `src/index.mts`.
87
+ - **Demo + bindingi** — `Ctrl+T` pokazuje 2.5-sekundowy top-right toast z
88
+ numerkiem i timestampem (stackuje się przy szybkim klikaniu),
89
+ `Ctrl+Y` pokazuje/ukrywa sticky bottom-right toast z `onDismiss`.
90
+ - **Doc** — `doc/p1-27-toast.md` opisuje API, algorytm placementu,
91
+ cykl życia i backwards compatibility.
92
+ - **Testy** — `tests/controls/Toast.test.mts` (18 testów: placement w
93
+ każdym rogu, stacking, reflow po dismiss, auto-dismiss, sticky,
94
+ manual dismiss, resize reanchor, styl default/custom, zIndex 10 000,
95
+ double-dismiss no-op).
96
+
97
+ ## [0.29.0] – 2026-04-18
98
+
99
+ ### Added — backlog P1-16 (margin dookoła okna)
100
+ - **`WindowProperties.margin`** — nowe pole mirrorujące `padding`
101
+ (shape: `number | [v, h] | Partial<{top, right, bottom, left}>`).
102
+ Resolver `resolveMargin` normalizuje wartość do pełnego rekordu,
103
+ `Window#getMargin()` zwraca snapshot.
104
+ - **Layout integration** — `layoutAbsolute` przesuwa dziecko o
105
+ `(marginLeft, marginTop)` bez zmiany rozmiaru; `layoutFlex` odejmuje
106
+ łączne `marginMain` od dostępnej przestrzeni przed rozdzielaniem
107
+ slack-u przez `grow` / `shrink`, a oś poprzeczna (stretch i
108
+ alignItems) uwzględnia `crossMargin`; `layoutGrid` zmniejsza komórkę
109
+ o margin dziecka i offsetuje je o `(marginLeft, marginTop)`.
110
+ - **InterfaceBuilder** — `def.margin` przekazywane 1:1 do
111
+ `WindowProperties`; YAML akceptuje ten sam shape co `padding`.
112
+ - **Typy publiczne** — `Margin` / `MarginSpec` eksportowane z
113
+ `src/index.mts`.
114
+ - **Demo + `layout.yaml`** — przycisk „Save" dostał `margin: { left: 2 }`,
115
+ pokazując per-dziecko odstęp poza zwykłym `gap`.
116
+ - **Doc** — `doc/p1-16-padding-margin.md` opisuje API, algorytm
117
+ `layoutFlex`, backwards compatibility i różnicę między
118
+ `margin`/`gap`/`padding`.
119
+
120
+ ## [0.28.0] – 2026-04-18
121
+
122
+ ### Added — backlog P1-20 (selection w TextBox / TextArea)
123
+ - **`TextBox` / `TextArea`** — model zaznaczenia oparty na kotwicy
124
+ (`selectionAnchor`) i pozycji kursora. Publiczne API:
125
+ `getSelection()` / `getSelectedText()` / `setSelection(anchor, cursor)` /
126
+ `selectAll()` / `clearSelection()`. `setValue()` i `setCursor()`
127
+ czyszczą zaznaczenie, by nie mapować nieaktualnej kotwicy na nowy
128
+ bufor.
129
+ - **Klawisze selekcji (`handleKey`)** — `shift+left` / `shift+right` /
130
+ `shift+home` / `shift+end` rozszerzają selekcję w TextBox; `TextArea`
131
+ dokłada `shift+up` / `shift+down`. `ctrl+a` zaznacza całą zawartość.
132
+ Obsługiwane są zarówno aliasy tekstowe (`shift+left`) jak i surowe
133
+ sekwencje xterm (`\x1b[1;2D`, `\x1b[1;2C`, `\x1b[1;2A`, `\x1b[1;2B`,
134
+ `\x1b[1;2H`, `\x1b[1;2F`, `\x01`).
135
+ - **Zachowanie bez shift przy aktywnej selekcji** — `left` kolapsuje do
136
+ początku, `right` do końca; `home` / `end` / `up` / `down` po prostu
137
+ czyszczą kotwicę przed ruchem. Wstawienie znaku, `backspace`, `delete`,
138
+ `enter` oraz soft-tab / `ctrl+d` (w `TextArea`) najpierw usuwają
139
+ zaznaczony fragment, potem wykonują swoją zwykłą operację.
140
+ - **`BUILTIN_TEXT_SELECTION`** — nowy nazwany styl (tło `24`, tekst
141
+ `231`) pre-rejestrowany w `StyleRegistry`; kontrolki mergują go na
142
+ cele w obrębie selekcji, więc podświetlenie zostaje skomponowane
143
+ z aktualnym stylem tekstu. Nadpisywalny przez
144
+ `Screen#overrideStyle('builtin:text-selection', …)`.
145
+ - **Demo + `layout.yaml`** — wartości początkowe TextBox/TextArea
146
+ zostawiają selekcję pustą; nowy skrót `/p1-20-selection.md` opisuje
147
+ API i algorytm, pełna ściana na froncie wymaga tylko Ctrl+A / Shift +
148
+ strzałki w trakcie działającego demo.
149
+
150
+ ## [0.27.0] – 2026-04-18
151
+
152
+ ### Added — virtual cursor (software caret z kontrolą migania i symbolu)
153
+ - **`VirtualCursor`** (`src/Screen/VirtualCursor.mts`) — model software-owego
154
+ kursora: glif + harmonogram migania. Tryby `off` / `steady` / `slow`
155
+ (600 ms on / 600 ms off) / `fast` (250 ms / 250 ms) / `irregular`
156
+ (losowe fazy 180–520 ms on, 90–240 ms off) / `custom { onMs, offMs }`.
157
+ API: `isVisible(now?)`, `getSymbol()`, `hasCustomSymbol()`,
158
+ `setSymbol(undefined)` (powrót do inverse-block), `setBlink()`,
159
+ `resetPhase(now?)` (utrzymuje kursor widoczny podczas pisania),
160
+ `getTickHintMs()` (dla WM przy wyborze kadencji timera).
161
+ - **`TextBoxProperties.cursorSymbol` / `cursorBlink`** — konfiguracja na
162
+ poziomie konstruktora; `TextBox#getVirtualCursor()` eksponuje model do
163
+ zmian runtime. Gdy `cursorSymbol` nie jest podany, kontrolka zachowuje
164
+ legacy wygląd (inverse-block nad znakiem pod kursorem) → pełna
165
+ kompatybilność wsteczna.
166
+ - **`TextAreaProperties.cursorSymbol` / `cursorBlink`** + `getVirtualCursor()`
167
+ — analogicznie dla wieloliniowej kontrolki. `handleKey()` w obu
168
+ kontrolkach woła `resetPhase()`, żeby miganie nie chowało kursora
169
+ w trakcie wpisywania.
170
+ - **`WindowManager#enableCursorBlink(intervalMs = 80)` /
171
+ `disableCursorBlink()`** — periodyczny rerender niezbędny, by
172
+ migotanie faktycznie trafiało na terminal. Timer jest `unref()`owany
173
+ (nie blokuje event-loop), automatycznie zdejmowany w `pause()` i
174
+ przywracany w `resume()`, sprzątany w `stop()`.
175
+ - **InterfaceBuilder (`textbox`, `textarea`)** — rozpoznaje pola
176
+ `cursorSymbol:` i `cursorBlink:` w YAML, przekazuje je do
177
+ konstruktorów kontrolek.
178
+ - **Export** — `VirtualCursor`, `DEFAULT_CURSOR_SYMBOL`, typy `CursorBlink`
179
+ i `VirtualCursorOptions` w publicznym barrelu `take4-console`.
180
+
181
+ ### Demo
182
+ - `layout.yaml` — `tbEmail` używa `cursorSymbol: "▎"` + `cursorBlink: slow`.
183
+ - `demo.mts` — `tbUsername` zostaje przełączony w trybie `irregular`
184
+ z symbolem `▏`; `wm.enableCursorBlink(80)` uruchamia timer.
185
+
186
+ ### Tests
187
+ - 14 nowych testów w `tests/VirtualCursor.test.mts` (domyślne wartości,
188
+ wszystkie tryby migania, `resetPhase`, `setBlink`, `getTickHintMs`).
189
+ - Uzupełnione testy `TextBox` — custom symbol, `cursorBlink: off`,
190
+ `getVirtualCursor()`.
191
+ - Nowy test w `WindowManager` — `enableCursorBlink` / `disableCursorBlink`
192
+ uruchamia i zatrzymuje cykliczne renderowanie.
193
+
194
+ ## [0.26.0] – 2026-04-18
195
+
196
+ ### Added — backlog P1-17 (z-index / non-modal stacking)
197
+ - **`WindowProperties.zIndex`** (+ `Window#getZIndex()` / `setZIndex()`) — stacking
198
+ order among siblings. Wyższa wartość rysuje się nad niższą; ties zachowują
199
+ kolejność wywołań `addChild()`. Layout (flex / absolute) pozostaje niezależny:
200
+ `runLayout()` nadal korzysta z kolejności wstawiania, a tylko pętla render()
201
+ sortuje dzieci po `(zIndex, idx)` do malowania i blitowania.
202
+ - **YAML `zIndex:`** — pole dostępne na każdym węźle w `layout.yaml`; wartość
203
+ jest przekazywana do `WindowProperties.zIndex` przez `InterfaceBuilder`.
204
+
205
+ ### Added — backlog P1-18 (focus management API)
206
+ - **`WindowManager#focusNext()` / `focusPrev()` / `focusFirst()` / `focusLast()`**
207
+ — programistyczne odpowiedniki Tab / Shift+Tab / skoku na pierwszy / ostatni
208
+ focusable kontrolek, uwzględniające disabled, hidden, focus-trap.
209
+ - **`WindowManager#focusById(id)`** — przeszukuje aktywny kontekst (main stack
210
+ lub topmost dialog) po `Window#getId()` i ustawia focus na dopasowanym
211
+ kontrolerze; zwraca `true` przy sukcesie, `false` gdy brak matcha lub
212
+ kontrolka nie jest eligible.
213
+ - **`WindowManager#trapFocus(within)`** — ogranicza nawigację (Tab / Shift+Tab /
214
+ focusNext itp.) i `setFocus` do descendantów wskazanego Window. Zwraca funkcję
215
+ zwalniającą; kolejne wywołania stackują się LIFO, `getFocusTrap()` zwraca
216
+ aktywny trap.
217
+ - **`WindowProperties.id` + `Window#getId()` / `setId()`** — opcjonalny string
218
+ używany przez `focusById`; `InterfaceBuilder` kopiuje YAML `id:` do tego pola,
219
+ więc reference-matching działa identycznie jak dotychczasowa mapa zwracana
220
+ przez `build()`.
221
+
222
+ ### Added — backlog P1-22 (onFocus / onBlur hooks)
223
+ - **`WindowProperties.onFocus` / `onBlur`** (+ `Window#setOnFocus()` /
224
+ `setOnBlur()`) — callbacki wyzwalane raz na zmianę stanu focus (`false → true`
225
+ dla onFocus, `true → false` dla onBlur). Idempotentne wywołania
226
+ `setFocused(…)` z bieżącą wartością nie re-odpalają handlerów.
227
+ - Wyzwalane są przez dowolną ścieżkę ustawiającą focus: `WindowManager.setFocus`,
228
+ `moveFocus`, `focusById`, `focusFirst/Last`, ręczny `Window.setFocused(true)`.
229
+
230
+ ### Added — backlog P1-23 (error boundary in render)
231
+ - **`WindowManagerOptions.onError(err, control)`** — globalny sink dla wyjątków
232
+ rzuconych podczas `Window.render()` któregoś z descendantów. Gdy handler jest
233
+ zarejestrowany, rodzic przechwytuje wyjątek, maluje placeholder `⚠ render
234
+ error: …` na obszarze winnego dziecka i kontynuuje renderowanie pozostałego
235
+ subtree — reszta klatki pozostaje sprawna.
236
+ - **`ErrorHolder.mts`** — nowy moduł-holder analogiczny do `RegistryHolder`,
237
+ z ekspozycją `setErrorHandler(fn)` / `getErrorHandler()`. WindowManager
238
+ instaluje handler w konstruktorze i czyści go w `stop()`, więc poza pętlą
239
+ managera `Window.render()` nadal rethrowuje wyjątki (no silent swallowing).
240
+
241
+ ### Demo / layout.yaml
242
+ - **z-index** — `buildBadge` dostał `zIndex: 10`, a nowy `headerOverlay` z
243
+ `zIndex: 1` dowodzi, że malowanie respektuje kolejność stackingu mimo
244
+ późniejszej deklaracji overlay-a.
245
+ - **focusById** — `Ctrl+G` bindKey w `demo.mts` przerzuca focus na `btnSave`
246
+ bez Tab-owania przez wszystkie pola.
247
+ - **onFocus / onBlur** — `btnSave.setOnFocus / setOnBlur` dopisują wpis do listy
248
+ zdarzeń przy każdej zmianie focus, dzięki czemu widać kiedy hooki wpadają.
249
+ - **onError** — `WindowManager({ onError })` loguje do listy zdarzeń wszelkie
250
+ render-time wyjątki (z pokaźnym ostrzegawczym placeholderem w miejscu
251
+ zawodnej kontrolki).
252
+
253
+ ### Version bump
254
+ - 0.25.0 → 0.26.0 — minor bump dla batcha P1-17/18/22/23.
255
+
3
256
  ## [0.25.0] – 2026-04-18
4
257
 
5
258
  ### Added — backlog P0-10 (InterfaceBuilder: register custom types)
package/README.md CHANGED
@@ -8,7 +8,8 @@ Ships 15 built-in controls — buttons, text inputs, checkboxes, radios,
8
8
  listboxes, tabs, status LEDs, progress bars, line/bar/sparkline charts,
9
9
  spinners — and an extension API for adding your own. Pure ESM, TypeScript
10
10
  first, zero runtime dependencies besides a YAML parser, one `stdout.write()`
11
- per frame.
11
+ per frame, with built-in damage tracking that skips the write entirely
12
+ when nothing is dirty.
12
13
 
13
14
  > **Requirements:** Node.js ≥ 18, a terminal that supports ANSI escape
14
15
  > sequences and 256-colour / 24-bit colour. NerdFonts glyphs are supported
@@ -192,7 +193,7 @@ MIT © Jarosław Mężyk
192
193
  | `Region` | A flat `chars[]` + `styleIds[]` buffer. Every Window has two: `content` (user writes) and `region` (composited on render). |
193
194
  | `StyleRegistry` | Maps integer `StyleId` → `CellAttributes`. Identical attribute objects always get the same ID (deduplication). ID 0 = empty style. |
194
195
  | `StyleId` | An opaque integer. Never construct cell attributes directly — always call `registry.register(attrs)` and keep the returned ID. |
195
- | `Screen` | A `Window` sized to the terminal. Owns the root `StyleRegistry`. Serialises its `region` into a single ANSI escape string and writes it with one `process.stdout.write()`. |
196
+ | `Screen` | A `Window` sized to the terminal. Owns the root `StyleRegistry`. Serialises its `region` into a single ANSI escape string and writes it with one `process.stdout.write()`. Damage tracking (on by default) emits only changed cells and skips the write entirely when nothing is dirty. |
196
197
  | `Pos` | Encodes position: absolute `new Pos(x, y)`, edge-relative `new Pos(-1, -1)`, percentage, or named preset (`Pos.center()`, …). |
197
198
  | `Size` | Encodes size: absolute `new Size(w, h)`, percentage, or fill shorthand (`Size.fill()`, `Size.fillWidth(h)`, …). |
198
199
 
@@ -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":"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"}
1
+ {"version":3,"file":"InterfaceBuilder.mjs","sourceRoot":"","sources":["../../src/Screen/InterfaceBuilder.mts"],"names":[],"mappings":"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"}
@@ -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,30 @@ 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;
35
+ /** When true, `render()` computes the union of every dirty rect propagated
36
+ * bottom-up from the window tree and emits ANSI sequences only for those
37
+ * cells. When false, every frame re-emits the full buffer (pre-0.31
38
+ * behaviour), which is useful for debugging or for terminals that
39
+ * mis-handle partial cursor jumps. Configured via `ScreenOptions.damageTracking`. */
40
+ private damageTracking;
41
+ /** Forces the next `render()` onto the full-repaint path regardless of the
42
+ * dirty state. Set on the first frame, after `resize()`, and bubbled up
43
+ * from descendants via `markFullInvalidation()` when they change
44
+ * geometry, visibility, or tree topology in ways that would leave
45
+ * stale cells on stdout. Cleared after every full-repaint emit. */
46
+ private fullInvalidate;
22
47
  /** Initializes the root window sized to the current terminal dimensions.
23
48
  * Creates a fresh StyleRegistry (with built-in styles pre-registered)
24
49
  * and installs it as the global singleton. The optional ScreenOptions
@@ -35,6 +60,42 @@ export declare class Screen extends Window {
35
60
  setBuiltinStyle(name: string, attrs: CellAttributes): StyleId;
36
61
  /** Returns the soft FPS cap configured via ScreenOptions, or undefined when uncapped. */
37
62
  getTargetFps(): number | undefined;
63
+ /** Shows a non-modal toast overlay with the given text. Returns the
64
+ * underlying `Toast` window so callers can inspect it, swap its message,
65
+ * or dismiss it manually via `toast.dismiss()`.
66
+ *
67
+ * Toasts are stacked by anchor: every call at the same `position` adds
68
+ * to the visible column, and a dismissal shifts the remainder back
69
+ * towards the anchor edge. Auto-dismissal is driven by a `setTimeout`
70
+ * whose handle is tracked per-toast so manual dismissals cancel the
71
+ * timer. A duration of `0` disables the timer entirely (sticky toast).
72
+ *
73
+ * The method calls `render()` once so the overlay appears immediately,
74
+ * and again after every dismissal for the same reason. Consumers
75
+ * driving their own render loop can call `screen.render()` themselves —
76
+ * the extra render here is idempotent against the `'frame'` event. */
77
+ toast(text: string, options?: ToastOptions): Toast;
78
+ /** Removes a toast from the Screen, cancels its auto-dismiss timer (if
79
+ * any), reflows the remaining toasts anchored to the same corner, and
80
+ * fires the `onDismiss` callback the caller registered at creation
81
+ * time. Safe to call twice — the second call is a no-op. */
82
+ dismissToast(toast: Toast): void;
83
+ /** Returns a snapshot of the currently active toasts for the given anchor
84
+ * position (or every anchor when `position` is omitted). Exposed for
85
+ * tests and diagnostics — consumers generally keep the instance returned
86
+ * by `toast()` rather than walking this list. */
87
+ getActiveToasts(position?: ToastPosition): readonly Toast[];
88
+ /** Computes each toast's absolute position inside the Screen for the
89
+ * given anchor group and writes it to the toast's `x` / `y`. Called
90
+ * after every `addChild` / `removeChild` toast mutation and whenever
91
+ * the Screen is resized so the stack stays anchored. Mutates `x` / `y`
92
+ * directly — the Toast's `Pos.topLeft()` is only a placeholder consumed
93
+ * by the absolute layout pass that ran during `addChild`. */
94
+ private relayoutToasts;
95
+ /** Re-runs `relayoutToasts` for every non-empty anchor group. Invoked
96
+ * from `resize()` so terminal resizes keep the overlays pinned to their
97
+ * corners. */
98
+ private relayoutAllToasts;
38
99
  /** Switches the terminal into the alternate screen buffer. Idempotent. */
39
100
  enterAltScreen(): void;
40
101
  /** Restores the primary screen buffer if Screen previously entered the
@@ -74,6 +135,34 @@ export declare class Screen extends Window {
74
135
  * Emits a 'frame' event with the wall-clock duration of the render after stdout has been written.
75
136
  */
76
137
  render(): void;
138
+ /** Emits every visible cell in `this.region` as one ANSI write, starting
139
+ * with `\x1b[H` (cursor home) and ending with `\x1b[0m`. Returns the
140
+ * number of cells whose character was actually written (skips wide-char
141
+ * continuation sentinels). Used by the full-repaint path. */
142
+ private emitFull;
143
+ /** Coalesces the collected dirty rects into per-row horizontal intervals
144
+ * and emits only those cells, using `\x1b[row;colH` cursor jumps between
145
+ * rows. Returns the number of cells emitted so consumers of the 'frame'
146
+ * event can see how much work each frame did. */
147
+ private emitDirty;
148
+ /** Overrides the parent hook so bubbled full-invalidation signals land
149
+ * on this Screen's own `fullInvalidate` flag instead of walking further
150
+ * up a non-existent parent chain. Public so WindowManager can also
151
+ * request a full repaint after pause/resume or alt-screen toggling. */
152
+ markFullInvalidation(): void;
153
+ /** Public alias of `markFullInvalidation()` — schedules a full repaint on
154
+ * the next `render()` call. Use this when external state (terminal
155
+ * re-init, post-OS dialog, SSH reconnect, …) may have corrupted the
156
+ * on-screen buffer and the stored dirty rects are no longer sufficient. */
157
+ invalidate(): void;
158
+ /** Returns whether damage tracking is currently enabled. Useful for demo
159
+ * code and tests that want to assert or toggle the mode at runtime. */
160
+ isDamageTrackingEnabled(): boolean;
161
+ /** Enables or disables damage tracking at runtime. Disabling forces every
162
+ * subsequent frame onto the full-repaint path; re-enabling resumes the
163
+ * dirty-rect emit on the next frame (after one final full repaint, so
164
+ * the terminal state matches the tree-derived baseline). */
165
+ setDamageTracking(enabled: boolean): void;
77
166
  /** Synchronous teardown of any terminal state we own. Used by both dispose()
78
167
  * and the 'exit' listener, where async work would be discarded. */
79
168
  private restoreTerminalState;
@@ -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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"}