@teaui/core 1.11.8 → 1.11.9

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 (169) hide show
  1. package/.dist/Buffer.d.ts +5 -0
  2. package/.dist/Buffer.js +150 -7
  3. package/.dist/Buffer.js.map +1 -1
  4. package/.dist/HeadlessProgram.d.ts +24 -0
  5. package/.dist/HeadlessProgram.js +41 -0
  6. package/.dist/HeadlessProgram.js.map +1 -0
  7. package/.dist/{Theme.d.ts → Palette.d.ts} +13 -13
  8. package/.dist/{Theme.js → Palette.js} +16 -16
  9. package/.dist/Palette.js.map +1 -0
  10. package/.dist/Screen.d.ts +33 -23
  11. package/.dist/Screen.js +75 -75
  12. package/.dist/Screen.js.map +1 -1
  13. package/.dist/Style.js +11 -10
  14. package/.dist/Style.js.map +1 -1
  15. package/.dist/TestProgram.d.ts +28 -0
  16. package/.dist/TestProgram.js +52 -0
  17. package/.dist/TestProgram.js.map +1 -0
  18. package/.dist/{testing.d.ts → TestScreen.d.ts} +2 -4
  19. package/.dist/TestScreen.js +99 -0
  20. package/.dist/TestScreen.js.map +1 -0
  21. package/.dist/TestTerminal.js +1 -1
  22. package/.dist/TestTerminal.js.map +1 -1
  23. package/.dist/UI.d.ts +2 -2
  24. package/.dist/UI.js +19 -19
  25. package/.dist/UI.js.map +1 -1
  26. package/.dist/View.d.ts +7 -8
  27. package/.dist/View.js +10 -10
  28. package/.dist/View.js.map +1 -1
  29. package/.dist/Viewport.d.ts +26 -0
  30. package/.dist/Viewport.js +57 -7
  31. package/.dist/Viewport.js.map +1 -1
  32. package/.dist/components/AbstractLegend.d.ts +30 -0
  33. package/.dist/components/AbstractLegend.js +195 -0
  34. package/.dist/components/AbstractLegend.js.map +1 -0
  35. package/.dist/components/Accordion.js +1 -1
  36. package/.dist/components/Accordion.js.map +1 -1
  37. package/.dist/components/Alert.d.ts +1 -1
  38. package/.dist/components/Alert.js +1 -1
  39. package/.dist/components/At.d.ts +57 -0
  40. package/.dist/components/At.js +182 -0
  41. package/.dist/components/At.js.map +1 -0
  42. package/.dist/components/AutoLegend.d.ts +6 -4
  43. package/.dist/components/AutoLegend.js +27 -10
  44. package/.dist/components/AutoLegend.js.map +1 -1
  45. package/.dist/components/Badge.d.ts +16 -0
  46. package/.dist/components/Badge.js +54 -0
  47. package/.dist/components/Badge.js.map +1 -0
  48. package/.dist/components/Box.d.ts +1 -1
  49. package/.dist/components/Box.js +4 -5
  50. package/.dist/components/Box.js.map +1 -1
  51. package/.dist/components/Breadcrumb.js +1 -1
  52. package/.dist/components/Breadcrumb.js.map +1 -1
  53. package/.dist/components/Button.d.ts +2 -3
  54. package/.dist/components/Button.js +6 -6
  55. package/.dist/components/Button.js.map +1 -1
  56. package/.dist/components/Calendar.d.ts +2 -2
  57. package/.dist/components/Calendar.js +24 -24
  58. package/.dist/components/Calendar.js.map +1 -1
  59. package/.dist/components/Callout.js +14 -14
  60. package/.dist/components/Callout.js.map +1 -1
  61. package/.dist/components/Canvas.js +1 -1
  62. package/.dist/components/Canvas.js.map +1 -1
  63. package/.dist/components/Checkbox.d.ts +2 -2
  64. package/.dist/components/Checkbox.js +4 -4
  65. package/.dist/components/Checkbox.js.map +1 -1
  66. package/.dist/components/Collapsible.js +1 -1
  67. package/.dist/components/Collapsible.js.map +1 -1
  68. package/.dist/components/CollapsibleText.js +1 -1
  69. package/.dist/components/CollapsibleText.js.map +1 -1
  70. package/.dist/components/Digits.d.ts +1 -1
  71. package/.dist/components/Digits.js +1 -1
  72. package/.dist/components/Digits.js.map +1 -1
  73. package/.dist/components/Drawer.d.ts +4 -4
  74. package/.dist/components/Drawer.js +13 -13
  75. package/.dist/components/Drawer.js.map +1 -1
  76. package/.dist/components/Dropdown.d.ts +1 -1
  77. package/.dist/components/Dropdown.js +12 -6
  78. package/.dist/components/Dropdown.js.map +1 -1
  79. package/.dist/components/HotKey.d.ts +4 -4
  80. package/.dist/components/HotKey.js +3 -3
  81. package/.dist/components/HotKey.js.map +1 -1
  82. package/.dist/components/Input.d.ts +1 -2
  83. package/.dist/components/Input.js +3 -3
  84. package/.dist/components/Input.js.map +1 -1
  85. package/.dist/components/Legend.d.ts +7 -13
  86. package/.dist/components/Legend.js +15 -187
  87. package/.dist/components/Legend.js.map +1 -1
  88. package/.dist/components/Log.d.ts +1 -0
  89. package/.dist/components/Log.js +5 -2
  90. package/.dist/components/Log.js.map +1 -1
  91. package/.dist/components/Modal.d.ts +2 -1
  92. package/.dist/components/Modal.js +2 -2
  93. package/.dist/components/Modal.js.map +1 -1
  94. package/.dist/components/Notification.d.ts +1 -1
  95. package/.dist/components/Notification.js +3 -3
  96. package/.dist/components/Notification.js.map +1 -1
  97. package/.dist/components/Page.js +5 -14
  98. package/.dist/components/Page.js.map +1 -1
  99. package/.dist/components/Pane.js +13 -10
  100. package/.dist/components/Pane.js.map +1 -1
  101. package/.dist/components/Plot.js +1 -1
  102. package/.dist/components/Plot.js.map +1 -1
  103. package/.dist/components/Progress.js +2 -2
  104. package/.dist/components/Progress.js.map +1 -1
  105. package/.dist/components/Scrollable.js +4 -4
  106. package/.dist/components/Scrollable.js.map +1 -1
  107. package/.dist/components/ScrollableList.js +4 -4
  108. package/.dist/components/ScrollableList.js.map +1 -1
  109. package/.dist/components/Separator.js +1 -1
  110. package/.dist/components/Separator.js.map +1 -1
  111. package/.dist/components/Slider.d.ts +2 -3
  112. package/.dist/components/Slider.js +8 -5
  113. package/.dist/components/Slider.js.map +1 -1
  114. package/.dist/components/Space.d.ts +1 -1
  115. package/.dist/components/Space.js +1 -1
  116. package/.dist/components/Space.js.map +1 -1
  117. package/.dist/components/Spinner.d.ts +3 -1
  118. package/.dist/components/Spinner.js +11 -1
  119. package/.dist/components/Spinner.js.map +1 -1
  120. package/.dist/components/Table.d.ts +1 -2
  121. package/.dist/components/Table.js +5 -5
  122. package/.dist/components/Table.js.map +1 -1
  123. package/.dist/components/Tabs.d.ts +3 -2
  124. package/.dist/components/Tabs.js +42 -3
  125. package/.dist/components/Tabs.js.map +1 -1
  126. package/.dist/components/Text.d.ts +1 -1
  127. package/.dist/components/Text.js +8 -1
  128. package/.dist/components/Text.js.map +1 -1
  129. package/.dist/components/Toggle.d.ts +26 -0
  130. package/.dist/components/Toggle.js +151 -0
  131. package/.dist/components/Toggle.js.map +1 -0
  132. package/.dist/components/ToggleGroup.d.ts +1 -1
  133. package/.dist/components/ToggleGroup.js +22 -4
  134. package/.dist/components/ToggleGroup.js.map +1 -1
  135. package/.dist/components/ZStack.js +3 -1
  136. package/.dist/components/ZStack.js.map +1 -1
  137. package/.dist/components/charts/BarChart.js +2 -2
  138. package/.dist/components/charts/BarChart.js.map +1 -1
  139. package/.dist/components/index.d.ts +5 -2
  140. package/.dist/components/index.js +5 -2
  141. package/.dist/components/index.js.map +1 -1
  142. package/.dist/iTerm2.d.ts +1 -1
  143. package/.dist/iTerm2.js +1 -1
  144. package/.dist/iTerm2.js.map +1 -1
  145. package/.dist/index.d.ts +6 -5
  146. package/.dist/index.js +6 -5
  147. package/.dist/index.js.map +1 -1
  148. package/.dist/log.d.ts +7 -2
  149. package/.dist/log.js +10 -3
  150. package/.dist/log.js.map +1 -1
  151. package/.dist/managers/FocusManager.d.ts +3 -2
  152. package/.dist/managers/FocusManager.js +51 -47
  153. package/.dist/managers/FocusManager.js.map +1 -1
  154. package/.dist/managers/TickManager.d.ts +1 -1
  155. package/.dist/managers/TickManager.js +4 -4
  156. package/.dist/managers/TickManager.js.map +1 -1
  157. package/.dist/renderToAnsi.d.ts +0 -7
  158. package/.dist/renderToAnsi.js +7 -45
  159. package/.dist/renderToAnsi.js.map +1 -1
  160. package/.dist/terminal.d.ts +1 -0
  161. package/.dist/types.d.ts +32 -0
  162. package/.dist/types.js.map +1 -1
  163. package/package.json +8 -4
  164. package/.dist/Theme.js.map +0 -1
  165. package/.dist/inspect.d.ts +0 -14
  166. package/.dist/inspect.js +0 -172
  167. package/.dist/inspect.js.map +0 -1
  168. package/.dist/testing.js +0 -208
  169. package/.dist/testing.js.map +0 -1
package/.dist/Buffer.d.ts CHANGED
@@ -18,6 +18,11 @@ export declare class Buffer implements Terminal {
18
18
  * wrapping behavior).
19
19
  */
20
20
  writeChar(char: string, x: number, y: number, style: Style): void;
21
+ /**
22
+ * Fills a rectangular region with BG_DRAW cells lazily.
23
+ * The cells are materialized during flush or when overwritten by writeChar.
24
+ */
25
+ paintRect(style: Style, minX: number, minY: number, maxX: number, maxY: number): void;
21
26
  /**
22
27
  * Replaces the style of an existing cell without changing its character.
23
28
  * If no cell exists at (x, y), writes a space with the given style.
package/.dist/Buffer.js CHANGED
@@ -2,11 +2,17 @@ import * as unicode from '@teaui/term';
2
2
  import { BG_DRAW } from './ansi.js';
3
3
  import { Style } from './Style.js';
4
4
  import { Size } from './geometry.js';
5
+ const EMPTY_CELL = { char: ' ', style: Style.NONE, width: 1 };
5
6
  export class Buffer {
6
7
  size = Size.zero;
7
8
  #meta = '';
8
9
  #canvas = new Map();
9
10
  #prev = new Map();
11
+ #paintRects = [];
12
+ #prevPaintRects = [];
13
+ #dirtyRows = new Set();
14
+ #prevDirtyRows = new Set();
15
+ #mergeCache = new Map();
10
16
  setForeground(fg) { }
11
17
  setBackground(bg) { }
12
18
  resize(size) {
@@ -39,16 +45,17 @@ export class Buffer {
39
45
  if (x < 0 || x >= this.size.width || y < 0 || y >= this.size.height) {
40
46
  return;
41
47
  }
48
+ this.#dirtyRows.add(y);
42
49
  let line = this.#canvas.get(y);
43
50
  if (line) {
44
51
  const prev = line.get(x);
45
52
  if (prev?.char === BG_DRAW) {
46
- const { foreground, background } = prev.style;
47
- if (style.foreground === undefined) {
48
- style = style.merge({ foreground });
49
- }
50
- if (style.background === undefined) {
51
- style = style.merge({ background });
53
+ style = this.#mergeBackgroundStyle(style, prev.style);
54
+ }
55
+ else if (!prev) {
56
+ const paintStyle = this.#paintStyleAt(x, y);
57
+ if (paintStyle) {
58
+ style = this.#mergeBackgroundStyle(style, paintStyle);
52
59
  }
53
60
  }
54
61
  const leftChar = line.get(x - 1);
@@ -80,10 +87,95 @@ export class Buffer {
80
87
  }
81
88
  }
82
89
  else {
90
+ const paintStyle = this.#paintStyleAt(x, y);
91
+ if (paintStyle) {
92
+ style = this.#mergeBackgroundStyle(style, paintStyle);
93
+ }
83
94
  line = new Map([[x, { char, width, style }]]);
84
95
  this.#canvas.set(y, line);
85
96
  }
86
97
  }
98
+ /**
99
+ * Merges foreground/background from a background style into a text style,
100
+ * only when the text style is missing those properties. Single merge call.
101
+ */
102
+ #mergeBackgroundStyle(style, bgStyle) {
103
+ const needsFg = style.foreground === undefined && bgStyle.foreground !== undefined;
104
+ const needsBg = style.background === undefined && bgStyle.background !== undefined;
105
+ if (!needsFg && !needsBg) {
106
+ return style;
107
+ }
108
+ // Check cache
109
+ let bgCache = this.#mergeCache.get(bgStyle);
110
+ if (bgCache) {
111
+ const cached = bgCache.get(style);
112
+ if (cached)
113
+ return cached;
114
+ }
115
+ else {
116
+ bgCache = new Map();
117
+ this.#mergeCache.set(bgStyle, bgCache);
118
+ }
119
+ const merged = style.merge({
120
+ foreground: needsFg ? bgStyle.foreground : undefined,
121
+ background: needsBg ? bgStyle.background : undefined,
122
+ });
123
+ bgCache.set(style, merged);
124
+ return merged;
125
+ }
126
+ /**
127
+ * Fills a rectangular region with BG_DRAW cells lazily.
128
+ * The cells are materialized during flush or when overwritten by writeChar.
129
+ */
130
+ paintRect(style, minX, minY, maxX, maxY) {
131
+ const rMinX = Math.max(0, ~~minX);
132
+ const rMinY = Math.max(0, ~~minY);
133
+ const rMaxX = Math.min(this.size.width, ~~maxX);
134
+ const rMaxY = Math.min(this.size.height, ~~maxY);
135
+ // Clear canvas cells in this region so the lazy paint rect takes priority
136
+ // over content that was rendered before this paint call.
137
+ for (let y = rMinY; y < rMaxY; y++) {
138
+ const line = this.#canvas.get(y);
139
+ if (!line)
140
+ continue;
141
+ for (let x = rMinX; x < rMaxX; x++) {
142
+ line.delete(x);
143
+ }
144
+ }
145
+ this.#paintRects.push({
146
+ style,
147
+ cell: { char: BG_DRAW, width: 1, style },
148
+ minX: rMinX,
149
+ minY: rMinY,
150
+ maxX: rMaxX,
151
+ maxY: rMaxY,
152
+ });
153
+ }
154
+ /**
155
+ * Returns the paint style for coordinates that fall within a paint rect,
156
+ * checking most recent rects first.
157
+ */
158
+ #paintStyleAt(x, y) {
159
+ for (let i = this.#paintRects.length - 1; i >= 0; i--) {
160
+ const r = this.#paintRects[i];
161
+ if (x >= r.minX && x < r.maxX && y >= r.minY && y < r.maxY) {
162
+ return r.style;
163
+ }
164
+ }
165
+ return undefined;
166
+ }
167
+ /**
168
+ * Returns a pre-allocated Char for coordinates in a paint rect.
169
+ */
170
+ #paintCellAt(x, y) {
171
+ for (let i = this.#paintRects.length - 1; i >= 0; i--) {
172
+ const r = this.#paintRects[i];
173
+ if (x >= r.minX && x < r.maxX && y >= r.minY && y < r.maxY) {
174
+ return r.cell;
175
+ }
176
+ }
177
+ return undefined;
178
+ }
87
179
  /**
88
180
  * Replaces the style of an existing cell without changing its character.
89
181
  * If no cell exists at (x, y), writes a space with the given style.
@@ -94,6 +186,7 @@ export class Buffer {
94
186
  if (x < 0 || x >= this.size.width || y < 0 || y >= this.size.height) {
95
187
  return;
96
188
  }
189
+ this.#dirtyRows.add(y);
97
190
  let line = this.#canvas.get(y);
98
191
  if (!line) {
99
192
  line = new Map();
@@ -117,15 +210,34 @@ export class Buffer {
117
210
  if (this.#meta) {
118
211
  terminal.write(this.#meta);
119
212
  }
213
+ // Check if paint rects changed since last flush
214
+ const paintRectsChanged = !this.#paintRectsEqual(this.#paintRects, this.#prevPaintRects);
120
215
  let prevStyle = Style.NONE;
121
216
  for (let y = 0; y < this.size.height; y++) {
217
+ // Skip rows with no canvas writes (now or previously) and unchanged paint rects
218
+ if (!this.#dirtyRows.has(y) &&
219
+ !this.#prevDirtyRows.has(y) &&
220
+ !paintRectsChanged &&
221
+ this.#prev.has(y)) {
222
+ continue;
223
+ }
122
224
  const line = this.#canvas.get(y) ?? new Map();
123
225
  const prevLine = this.#prev.get(y) ?? new Map();
124
226
  this.#prev.set(y, prevLine);
227
+ // Pre-compute paint rects applicable to this row, newest first. There
228
+ // can be multiple disjoint paint rects on the same row (e.g. multiple
229
+ // themed calendars in a horizontal stack), so choose per-cell below.
230
+ const rowPaintRects = [];
231
+ for (let i = this.#paintRects.length - 1; i >= 0; i--) {
232
+ const r = this.#paintRects[i];
233
+ if (y >= r.minY && y < r.maxY) {
234
+ rowPaintRects.push(r);
235
+ }
236
+ }
125
237
  let didWrite = false;
126
238
  let dx = 1;
127
239
  for (let x = 0; x < this.size.width; x += dx) {
128
- const chrInfo = line.get(x) ?? { char: ' ', style: Style.NONE, width: 1 };
240
+ const chrInfo = line.get(x) ?? paintCellAt(rowPaintRects, x) ?? EMPTY_CELL;
129
241
  const prevInfo = prevLine.get(x);
130
242
  dx = chrInfo.width;
131
243
  if (prevInfo && isCharEqual(chrInfo, prevInfo)) {
@@ -145,6 +257,10 @@ export class Buffer {
145
257
  prevStyle = style;
146
258
  }
147
259
  terminal.write(char);
260
+ if (unicode.isAnnoyingWidth(char) &&
261
+ x + chrInfo.width < this.size.width) {
262
+ terminal.move(x + chrInfo.width, y);
263
+ }
148
264
  prevLine.set(x, chrInfo);
149
265
  if (chrInfo.width === 2) {
150
266
  prevLine.delete(x + 1);
@@ -156,6 +272,33 @@ export class Buffer {
156
272
  }
157
273
  terminal.flush();
158
274
  this.#canvas = new Map();
275
+ this.#prevDirtyRows = this.#dirtyRows;
276
+ this.#dirtyRows = new Set();
277
+ this.#prevPaintRects = this.#paintRects;
278
+ this.#paintRects = [];
279
+ }
280
+ #paintRectsEqual(a, b) {
281
+ if (a.length !== b.length)
282
+ return false;
283
+ for (let i = 0; i < a.length; i++) {
284
+ const ra = a[i];
285
+ const rb = b[i];
286
+ if (ra.minX !== rb.minX ||
287
+ ra.minY !== rb.minY ||
288
+ ra.maxX !== rb.maxX ||
289
+ ra.maxY !== rb.maxY ||
290
+ !ra.style.isEqual(rb.style)) {
291
+ return false;
292
+ }
293
+ }
294
+ return true;
295
+ }
296
+ }
297
+ function paintCellAt(rects, x) {
298
+ for (const r of rects) {
299
+ if (x >= r.minX && x < r.maxX) {
300
+ return r.cell;
301
+ }
159
302
  }
160
303
  }
161
304
  function isCharEqual(lhs, rhs) {
@@ -1 +1 @@
1
- {"version":3,"file":"Buffer.js","sourceRoot":"","sources":["../lib/Buffer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Buffer.js","sourceRoot":"","sources":["../lib/Buffer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { Program } from './types.js';
2
+ import type { SystemEvent } from './events/index.js';
3
+ import { StringTerminal } from './StringTerminal.js';
4
+ /**
5
+ * A headless Program for offscreen rendering (screenshots, ANSI export).
6
+ * Wraps a StringTerminal and no-ops everything else.
7
+ */
8
+ export declare class HeadlessProgram implements Program {
9
+ #private;
10
+ constructor({ cols, rows }: {
11
+ cols: number;
12
+ rows: number;
13
+ });
14
+ get terminal(): StringTerminal;
15
+ get cols(): number;
16
+ get rows(): number;
17
+ move(x: number, y: number): void;
18
+ write(str: string): void;
19
+ flush(): void;
20
+ setup(): void;
21
+ teardown(): void;
22
+ onEvents(_listener: (event: SystemEvent) => void): () => void;
23
+ onResize(_listener: () => void): () => void;
24
+ }
@@ -0,0 +1,41 @@
1
+ import { StringTerminal } from './StringTerminal.js';
2
+ /**
3
+ * A headless Program for offscreen rendering (screenshots, ANSI export).
4
+ * Wraps a StringTerminal and no-ops everything else.
5
+ */
6
+ export class HeadlessProgram {
7
+ #terminal;
8
+ constructor({ cols, rows }) {
9
+ this.#terminal = new StringTerminal({ cols, rows });
10
+ }
11
+ get terminal() {
12
+ return this.#terminal;
13
+ }
14
+ // --- SGRTerminal interface ---
15
+ get cols() {
16
+ return this.#terminal.cols;
17
+ }
18
+ get rows() {
19
+ return this.#terminal.rows;
20
+ }
21
+ move(x, y) {
22
+ this.#terminal.move(x, y);
23
+ }
24
+ write(str) {
25
+ this.#terminal.write(str);
26
+ }
27
+ flush() {
28
+ this.#terminal.flush();
29
+ }
30
+ // --- Program lifecycle ---
31
+ setup() { }
32
+ teardown() { }
33
+ // --- Events ---
34
+ onEvents(_listener) {
35
+ return () => { };
36
+ }
37
+ onResize(_listener) {
38
+ return () => { };
39
+ }
40
+ }
41
+ //# sourceMappingURL=HeadlessProgram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HeadlessProgram.js","sourceRoot":"","sources":["../lib/HeadlessProgram.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAA;AAElD;;;GAGG;AACH,MAAM,OAAO,eAAe;IAC1B,SAAS,CAAgB;IAEzB,YAAY,EAAC,IAAI,EAAE,IAAI,EAA+B;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,cAAc,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAA;IACnD,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAA;IACvB,CAAC;IAED,gCAAgC;IAEhC,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAA;IAC5B,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,CAAS;QACvB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;IACxB,CAAC;IAED,4BAA4B;IAE5B,KAAK,KAAU,CAAC;IAChB,QAAQ,KAAU,CAAC;IAEnB,iBAAiB;IAEjB,QAAQ,CAAC,SAAuC;QAC9C,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IAED,QAAQ,CAAC,SAAqB;QAC5B,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;CACF"}
@@ -14,7 +14,7 @@ interface Props {
14
14
  tableCheckedHighlight?: Color;
15
15
  emoji?: boolean;
16
16
  }
17
- export declare class Theme {
17
+ export declare class Palette {
18
18
  textColor: Color;
19
19
  contrastTextColor: Color;
20
20
  dimTextColor: Color;
@@ -26,16 +26,16 @@ export declare class Theme {
26
26
  tableCheckedColor: Color;
27
27
  tableCheckedHighlightColor: Color;
28
28
  emoji: boolean;
29
- static plain: Theme;
30
- static primary: Theme;
31
- static secondary: Theme;
32
- static proceed: Theme;
33
- static cancel: Theme;
34
- static selected: Theme;
35
- static red: Theme;
36
- static green: Theme;
37
- static blue: Theme;
38
- static orange: Theme;
29
+ static plain: Palette;
30
+ static primary: Palette;
31
+ static secondary: Palette;
32
+ static proceed: Palette;
33
+ static cancel: Palette;
34
+ static selected: Palette;
35
+ static red: Palette;
36
+ static green: Palette;
37
+ static blue: Palette;
38
+ static orange: Palette;
39
39
  constructor({ text, contrastText, dimText, dimBackground, controlBackground, textBackground, highlight, darken, tableChecked, tableCheckedHighlight, emoji, }: Props);
40
40
  /**
41
41
  * "Ornament" is meant to draw decorative characters that disappear on hover/press
@@ -46,7 +46,7 @@ export declare class Theme {
46
46
  isOrnament?: boolean;
47
47
  }): Style;
48
48
  /**
49
- * Creates a text style using the current theme.
49
+ * Creates a text style using the current purpose.
50
50
  *
51
51
  * Not all combinations are supported:
52
52
  * - isSelected and isPlaceholder revert to just isPlaceholder
@@ -58,6 +58,6 @@ export declare class Theme {
58
58
  isPlaceholder?: boolean;
59
59
  hasFocus?: boolean;
60
60
  }): Style;
61
- merge(props: Partial<Props>): Theme;
61
+ merge(props: Partial<Props>): Palette;
62
62
  }
63
63
  export {};
@@ -3,7 +3,7 @@ const defaultText = 'default';
3
3
  const defaultContrastText = '#FFF(16)';
4
4
  const defaultDimText = '#808080(239)';
5
5
  const defaultDimBackground = '#434343(238)';
6
- export class Theme {
6
+ export class Palette {
7
7
  textColor;
8
8
  contrastTextColor;
9
9
  dimTextColor;
@@ -15,7 +15,7 @@ export class Theme {
15
15
  tableCheckedColor;
16
16
  tableCheckedHighlightColor;
17
17
  emoji;
18
- static plain = new Theme({
18
+ static plain = new Palette({
19
19
  controlBackground: '#4F4F4F(239)',
20
20
  textBackground: 'default',
21
21
  highlight: '#616161(241)',
@@ -23,7 +23,7 @@ export class Theme {
23
23
  tableChecked: '#3a2040',
24
24
  tableCheckedHighlight: '#4d2a55',
25
25
  });
26
- static primary = new Theme({
26
+ static primary = new Palette({
27
27
  controlBackground: '#3B5EA7',
28
28
  textBackground: '#273F70',
29
29
  highlight: '#5A7AC2',
@@ -34,7 +34,7 @@ export class Theme {
34
34
  contrastText: '#5A7AC2',
35
35
  dimText: '#314F8C',
36
36
  });
37
- static secondary = new Theme({
37
+ static secondary = new Palette({
38
38
  controlBackground: '#D0851C',
39
39
  textBackground: '#805211',
40
40
  highlight: '#D0924B',
@@ -45,7 +45,7 @@ export class Theme {
45
45
  contrastText: '#D0924B',
46
46
  dimText: '#A66A16',
47
47
  });
48
- static proceed = new Theme({
48
+ static proceed = new Palette({
49
49
  controlBackground: '#4A7A5B',
50
50
  textBackground: '#2E4E3A',
51
51
  highlight: '#58A877',
@@ -56,7 +56,7 @@ export class Theme {
56
56
  contrastText: '#58A877',
57
57
  dimText: '#3D664C',
58
58
  });
59
- static cancel = new Theme({
59
+ static cancel = new Palette({
60
60
  controlBackground: '#A04A4C',
61
61
  textBackground: '#5B282A',
62
62
  highlight: '#C46264',
@@ -67,7 +67,7 @@ export class Theme {
67
67
  contrastText: '#C46264',
68
68
  dimText: '#853D3F',
69
69
  });
70
- static selected = new Theme({
70
+ static selected = new Palette({
71
71
  text: '#383838(236)',
72
72
  controlBackground: '#BDBDBD(250)',
73
73
  textBackground: '#BDBDBD(250)',
@@ -76,10 +76,10 @@ export class Theme {
76
76
  tableChecked: '#8fa1c8',
77
77
  tableCheckedHighlight: '#a7b8dc',
78
78
  });
79
- static red = Theme.cancel;
80
- static green = Theme.proceed;
81
- static blue = Theme.primary;
82
- static orange = Theme.secondary;
79
+ static red = Palette.cancel;
80
+ static green = Palette.proceed;
81
+ static blue = Palette.primary;
82
+ static orange = Palette.secondary;
83
83
  constructor({ text, contrastText, dimText, dimBackground, controlBackground, textBackground, highlight, darken, tableChecked, tableCheckedHighlight, emoji, }) {
84
84
  this.textColor = text ?? defaultText;
85
85
  this.contrastTextColor = contrastText ?? defaultContrastText;
@@ -89,9 +89,9 @@ export class Theme {
89
89
  this.textBackgroundColor = textBackground ?? controlBackground;
90
90
  this.highlightColor = highlight;
91
91
  this.darkenColor = darken;
92
- this.tableCheckedColor = tableChecked ?? Theme.plain.tableCheckedColor;
92
+ this.tableCheckedColor = tableChecked ?? Palette.plain.tableCheckedColor;
93
93
  this.tableCheckedHighlightColor =
94
- tableCheckedHighlight ?? Theme.plain.tableCheckedHighlightColor;
94
+ tableCheckedHighlight ?? Palette.plain.tableCheckedHighlightColor;
95
95
  this.emoji = emoji ?? true;
96
96
  }
97
97
  /**
@@ -124,7 +124,7 @@ export class Theme {
124
124
  }
125
125
  }
126
126
  /**
127
- * Creates a text style using the current theme.
127
+ * Creates a text style using the current purpose.
128
128
  *
129
129
  * Not all combinations are supported:
130
130
  * - isSelected and isPlaceholder revert to just isPlaceholder
@@ -169,7 +169,7 @@ export class Theme {
169
169
  });
170
170
  }
171
171
  merge(props) {
172
- return new Theme({
172
+ return new Palette({
173
173
  text: props.text ?? this.textColor,
174
174
  contrastText: props.contrastText ?? this.contrastTextColor,
175
175
  dimText: props.dimText ?? this.dimTextColor,
@@ -184,4 +184,4 @@ export class Theme {
184
184
  });
185
185
  }
186
186
  }
187
- //# sourceMappingURL=Theme.js.map
187
+ //# sourceMappingURL=Palette.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Palette.js","sourceRoot":"","sources":["../lib/Palette.ts"],"names":[],"mappings":"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"}
package/.dist/Screen.d.ts CHANGED
@@ -1,15 +1,15 @@
1
1
  import { Terminal as TermTerminal } from '@teaui/term';
2
- import type { SGRTerminal } from './terminal.js';
3
2
  import type { Rect, Point } from './geometry.js';
3
+ import { type Program } from './types.js';
4
4
  import { View } from './View.js';
5
5
  import type { HotKeyDef, KeyEvent, MouseEventListenerName, SystemEvent, SystemMouseEvent } from './events/index.js';
6
6
  import type { Modal } from './components/Modal.js';
7
7
  import { Window } from './components/Window.js';
8
- type KeyListener = (char: string, key: KeyEvent) => void;
9
8
  /**
10
9
  * Wraps @teaui/term's Terminal for use by Screen and the public API.
10
+ * Translates low-level terminal input into SystemEvents that Screen can consume.
11
11
  */
12
- export declare class TerminalProgram implements SGRTerminal {
12
+ export declare class TerminalProgram implements Program {
13
13
  #private;
14
14
  constructor();
15
15
  get terminal(): TermTerminal;
@@ -18,22 +18,29 @@ export declare class TerminalProgram implements SGRTerminal {
18
18
  move(x: number, y: number): void;
19
19
  write(str: string): void;
20
20
  flush(): void;
21
- enterFullscreen(): void;
22
- exitFullscreen(): void;
23
- clear(): void;
24
- startInput(screen: Screen): void;
25
- stopInput(): void;
21
+ setup(): void;
22
+ teardown(): void;
26
23
  /**
27
- * Register a key binding.
28
- * Pattern: 'escape', 'C-c', 'C-q', 'return', etc.
24
+ * Subscribe to translated system events from terminal input.
25
+ * Returns an unsubscribe function.
26
+ */
27
+ onEvents(listener: (event: SystemEvent) => void): () => void;
28
+ /**
29
+ * Subscribe to terminal resize events.
30
+ * Returns an unsubscribe function.
29
31
  */
30
- key(pattern: string | string[], fn: KeyListener): void;
32
+ onResize(listener: () => void): () => void;
31
33
  /**
32
- * Provide raw data listener (for iTerm2 etc.)
34
+ * Listen for raw data once (for iTerm2 proprietary escape sequences, etc.)
33
35
  */
34
- once(event: string, fn: (...args: any[]) => void): void;
36
+ onceRawData(fn: (...args: any[]) => void): void;
35
37
  }
36
38
  type ViewConstructor<T extends View> = (program: TerminalProgram) => T | Promise<T>;
39
+ /**
40
+ * A ViewConstructor that receives a Program (for use with Screen constructor directly).
41
+ */
42
+ export type ProgramViewConstructor<T extends View> = (program: Program) => T | Promise<T>;
43
+ type ScreenKeyListener = (char: string, key: KeyEvent) => void;
37
44
  export interface ScreenOptions {
38
45
  quitChar?: 'C-c' | 'C-q' | '' | undefined | false;
39
46
  emoji?: boolean;
@@ -45,16 +52,17 @@ interface ScreenEventMap {
45
52
  export declare class Screen {
46
53
  #private;
47
54
  rootView: View;
48
- /**
49
- * A helper function that puts the terminal into a "known good" state. I use this
50
- * during debugging, if the app crashes and I need to get the terminal CLI working
51
- * again.
52
- */
53
- static reset(): void;
54
55
  static start(): Promise<[Screen, TerminalProgram, Window]>;
55
56
  static start<T extends View>(viewConstructor: T | ViewConstructor<T>, opts?: Partial<ScreenOptions>): Promise<[Screen, TerminalProgram, T]>;
56
- constructor(program: TerminalProgram, rootView: View);
57
+ constructor(program: Program, rootView: View, { isFocused }?: {
58
+ isFocused?: boolean;
59
+ });
57
60
  onExit(callback: () => void): void;
61
+ /**
62
+ * Register a key binding on the screen.
63
+ * Pattern: 'escape', 'C-c', 'C-q', 'return', etc.
64
+ */
65
+ key(pattern: string | string[], fn: ScreenKeyListener): void;
58
66
  /**
59
67
  * Called from Screen.start(). Don't call this yourself unless you wanted
60
68
  * to construct your own 'program'. I recommend starting with a
@@ -89,8 +97,6 @@ export declare class Screen {
89
97
  * Subscribe to a screen event. Returns an unsubscribe function.
90
98
  */
91
99
  on<K extends keyof ScreenEventMap>(event: K, listener: ScreenEventMap[K]): ScreenEventUnsubscribe;
92
- nextFocus(): void;
93
- prevFocus(): void;
94
100
  triggerKeyboard(event: KeyEvent): void;
95
101
  triggerPaste(text: string): void;
96
102
  /**
@@ -100,7 +106,11 @@ export declare class Screen {
100
106
  checkMouse(view: View, x: number, y: number): void;
101
107
  triggerMouse(systemEvent: SystemMouseEvent): void;
102
108
  registerTick(view: View): void;
103
- triggerTick(dt: number): void;
109
+ /**
110
+ * Manually advance tick animations by `dt` milliseconds.
111
+ * Useful for testing animations without real timers.
112
+ */
113
+ tick(dt: number): void;
104
114
  preRender(view: View): void;
105
115
  /**
106
116
  * @return boolean Whether or not to rerender the view due to focus or mouse change