@teaui/core 1.10.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 (180) 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} +16 -15
  8. package/.dist/{Theme.js → Palette.js} +43 -28
  9. package/.dist/Palette.js.map +1 -0
  10. package/.dist/Screen.d.ts +43 -24
  11. package/.dist/Screen.js +102 -90
  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} +4 -6
  19. package/.dist/TestScreen.js +99 -0
  20. package/.dist/TestScreen.js.map +1 -0
  21. package/.dist/TestTerminal.js +5 -23
  22. package/.dist/TestTerminal.js.map +1 -1
  23. package/.dist/UI.d.ts +2 -2
  24. package/.dist/UI.js +20 -20
  25. package/.dist/UI.js.map +1 -1
  26. package/.dist/View.d.ts +12 -7
  27. package/.dist/View.js +17 -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 +21 -0
  43. package/.dist/components/AutoLegend.js +68 -0
  44. package/.dist/components/AutoLegend.js.map +1 -0
  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 +3 -2
  54. package/.dist/components/Button.js +13 -7
  55. package/.dist/components/Button.js.map +1 -1
  56. package/.dist/components/Calendar.d.ts +3 -1
  57. package/.dist/components/Calendar.js +34 -24
  58. package/.dist/components/Calendar.js.map +1 -1
  59. package/.dist/components/Callout.js +16 -16
  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 +3 -1
  64. package/.dist/components/Checkbox.js +11 -5
  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 +5 -3
  74. package/.dist/components/Drawer.js +20 -14
  75. package/.dist/components/Drawer.js.map +1 -1
  76. package/.dist/components/Dropdown.d.ts +1 -1
  77. package/.dist/components/Dropdown.js +25 -15
  78. package/.dist/components/Dropdown.js.map +1 -1
  79. package/.dist/components/HotKey.d.ts +7 -4
  80. package/.dist/components/HotKey.js +12 -4
  81. package/.dist/components/HotKey.js.map +1 -1
  82. package/.dist/components/Input.d.ts +3 -1
  83. package/.dist/components/Input.js +369 -45
  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 -163
  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 +3 -2
  112. package/.dist/components/Slider.js +14 -4
  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 +6 -2
  140. package/.dist/components/index.js +6 -2
  141. package/.dist/components/index.js.map +1 -1
  142. package/.dist/components/utility/TrackMouse.d.ts +3 -5
  143. package/.dist/components/utility/TrackMouse.js +1 -2
  144. package/.dist/components/utility/TrackMouse.js.map +1 -1
  145. package/.dist/events/key.d.ts +10 -6
  146. package/.dist/events/key.js +29 -6
  147. package/.dist/events/key.js.map +1 -1
  148. package/.dist/events/mouse.d.ts +1 -1
  149. package/.dist/events/translate.js +6 -6
  150. package/.dist/events/translate.js.map +1 -1
  151. package/.dist/iTerm2.d.ts +1 -1
  152. package/.dist/iTerm2.js +1 -1
  153. package/.dist/iTerm2.js.map +1 -1
  154. package/.dist/index.d.ts +6 -5
  155. package/.dist/index.js +6 -5
  156. package/.dist/index.js.map +1 -1
  157. package/.dist/log.d.ts +7 -2
  158. package/.dist/log.js +10 -3
  159. package/.dist/log.js.map +1 -1
  160. package/.dist/managers/FocusManager.d.ts +5 -2
  161. package/.dist/managers/FocusManager.js +58 -46
  162. package/.dist/managers/FocusManager.js.map +1 -1
  163. package/.dist/managers/MouseManager.js +1 -1
  164. package/.dist/managers/MouseManager.js.map +1 -1
  165. package/.dist/managers/TickManager.d.ts +1 -1
  166. package/.dist/managers/TickManager.js +4 -4
  167. package/.dist/managers/TickManager.js.map +1 -1
  168. package/.dist/renderToAnsi.d.ts +0 -7
  169. package/.dist/renderToAnsi.js +7 -36
  170. package/.dist/renderToAnsi.js.map +1 -1
  171. package/.dist/terminal.d.ts +1 -0
  172. package/.dist/types.d.ts +32 -0
  173. package/.dist/types.js.map +1 -1
  174. package/package.json +8 -4
  175. package/.dist/Theme.js.map +0 -1
  176. package/.dist/inspect.d.ts +0 -14
  177. package/.dist/inspect.js +0 -172
  178. package/.dist/inspect.js.map +0 -1
  179. package/.dist/testing.js +0 -190
  180. package/.dist/testing.js.map +0 -1
@@ -0,0 +1,52 @@
1
+ import { TestTerminal } from './TestTerminal.js';
2
+ /**
3
+ * A headless Program for testing. Wraps a TestTerminal for output assertions,
4
+ * and allows pushing events programmatically via sendEvent().
5
+ */
6
+ export class TestProgram {
7
+ #terminal;
8
+ #eventListener;
9
+ constructor({ cols, rows }) {
10
+ this.#terminal = new TestTerminal({ cols, rows });
11
+ }
12
+ get terminal() {
13
+ return this.#terminal;
14
+ }
15
+ // --- SGRTerminal interface ---
16
+ get cols() {
17
+ return this.#terminal.cols;
18
+ }
19
+ get rows() {
20
+ return this.#terminal.rows;
21
+ }
22
+ move(x, y) {
23
+ this.#terminal.move(x, y);
24
+ }
25
+ write(str) {
26
+ this.#terminal.write(str);
27
+ }
28
+ flush() {
29
+ this.#terminal.flush();
30
+ }
31
+ // --- Program lifecycle ---
32
+ setup() { }
33
+ teardown() { }
34
+ // --- Events ---
35
+ onEvents(listener) {
36
+ this.#eventListener = listener;
37
+ return () => {
38
+ this.#eventListener = undefined;
39
+ };
40
+ }
41
+ onResize(listener) {
42
+ // No resize in tests — return no-op unsubscribe
43
+ return () => { };
44
+ }
45
+ /**
46
+ * Push a system event into the Screen's event pipeline.
47
+ */
48
+ sendEvent(event) {
49
+ this.#eventListener?.(event);
50
+ }
51
+ }
52
+ //# sourceMappingURL=TestProgram.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestProgram.js","sourceRoot":"","sources":["../lib/TestProgram.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,mBAAmB,CAAA;AAE9C;;;GAGG;AACH,MAAM,OAAO,WAAW;IACtB,SAAS,CAAc;IACvB,cAAc,CAA+B;IAE7C,YAAY,EAAC,IAAI,EAAE,IAAI,EAA+B;QACpD,IAAI,CAAC,SAAS,GAAG,IAAI,YAAY,CAAC,EAAC,IAAI,EAAE,IAAI,EAAC,CAAC,CAAA;IACjD,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,QAAsC;QAC7C,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAA;QAC9B,OAAO,GAAG,EAAE;YACV,IAAI,CAAC,cAAc,GAAG,SAAS,CAAA;QACjC,CAAC,CAAA;IACH,CAAC;IAED,QAAQ,CAAC,QAAoB;QAC3B,gDAAgD;QAChD,OAAO,GAAG,EAAE,GAAE,CAAC,CAAA;IACjB,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,KAAkB;QAC1B,IAAI,CAAC,cAAc,EAAE,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;CACF"}
@@ -15,10 +15,9 @@
15
15
  * expect(t.terminal.charAt(0, 0)).toBe('a')
16
16
  */
17
17
  import { type KeyName } from '@teaui/term';
18
- import { TestTerminal } from './TestTerminal.js';
18
+ import type { TestTerminal } from './TestTerminal.js';
19
19
  import type { View } from './View.js';
20
- import type { Screen } from './Screen.js';
21
- import type { SystemMouseEvent } from './events/index.js';
20
+ import { type SystemMouseEvent } from './events/index.js';
22
21
  declare class TestScreen {
23
22
  #private;
24
23
  readonly options: {
@@ -38,12 +37,11 @@ declare class TestScreen {
38
37
  * animations and re-rendering.
39
38
  */
40
39
  tick(dt: number): void;
41
- asScreen(): Screen;
42
40
  render(): void;
43
41
  sendKey(key: KeyName, mods?: {
44
42
  ctrl?: boolean;
45
43
  alt?: boolean;
46
- meta?: boolean;
44
+ gui?: boolean;
47
45
  shift?: boolean;
48
46
  }): void;
49
47
  sendMouse(name: SystemMouseEvent['name'], pos: {
@@ -52,7 +50,7 @@ declare class TestScreen {
52
50
  }, mods?: {
53
51
  ctrl?: boolean;
54
52
  alt?: boolean;
55
- meta?: boolean;
53
+ gui?: boolean;
56
54
  shift?: boolean;
57
55
  }): void;
58
56
  sendPaste(text: string): void;
@@ -0,0 +1,99 @@
1
+ import { Screen } from './Screen.js';
2
+ import { TestProgram } from './TestProgram.js';
3
+ class TestScreen {
4
+ options;
5
+ #screen;
6
+ #program;
7
+ constructor(view, options) {
8
+ this.options = options;
9
+ this.#program = new TestProgram({
10
+ cols: options.width,
11
+ rows: options.height,
12
+ });
13
+ this.#screen = new Screen(this.#program, view, {
14
+ isFocused: options.isFocused !== false,
15
+ });
16
+ this.#screen.start();
17
+ }
18
+ get terminal() {
19
+ return this.#program.terminal;
20
+ }
21
+ get view() {
22
+ return this.#screen.rootView;
23
+ }
24
+ /**
25
+ * Advance time by `dt` milliseconds, triggering any registered tick
26
+ * animations and re-rendering.
27
+ */
28
+ tick(dt) {
29
+ this.#screen.tick(dt);
30
+ }
31
+ render() {
32
+ this.#screen.render();
33
+ }
34
+ sendKey(key, mods = {}) {
35
+ const ctrl = mods.ctrl ?? false;
36
+ const alt = mods.alt ?? false;
37
+ const gui = mods.gui ?? false;
38
+ const shift = mods.shift ?? false;
39
+ let full = '';
40
+ if (ctrl)
41
+ full += 'C-';
42
+ if (alt)
43
+ full += 'A-';
44
+ if (gui)
45
+ full += 'G-';
46
+ if (shift)
47
+ full += 'S-';
48
+ full += key;
49
+ const char = key === 'space' ? ' ' : key.length === 1 ? key : '';
50
+ const event = {
51
+ type: 'key',
52
+ name: key,
53
+ char,
54
+ full: full,
55
+ ctrl,
56
+ alt,
57
+ gui,
58
+ shift,
59
+ };
60
+ this.#screen.trigger(event);
61
+ }
62
+ sendMouse(name, pos, mods = {}) {
63
+ const button = name.startsWith('mouse.wheel')
64
+ ? 'wheel'
65
+ : name === 'mouse.move.in'
66
+ ? 'unknown'
67
+ : 'left';
68
+ const event = {
69
+ type: 'mouse',
70
+ name,
71
+ x: pos.x,
72
+ y: pos.y,
73
+ ctrl: mods.ctrl ?? false,
74
+ alt: mods.alt ?? false,
75
+ gui: mods.gui ?? false,
76
+ shift: mods.shift ?? false,
77
+ button,
78
+ };
79
+ this.#screen.trigger(event);
80
+ }
81
+ sendPaste(text) {
82
+ this.#screen.trigger({ type: 'paste', text });
83
+ }
84
+ }
85
+ /**
86
+ * Render a component headlessly and return a test harness for interaction testing.
87
+ *
88
+ * @example
89
+ * ```ts
90
+ * const t = testRender(new Input({value: 'hello'}), {width: 20, height: 1})
91
+ * expect(t.terminal.textContent()).toContain('hello')
92
+ * t.sendKey('!') // type a character
93
+ * expect(t.terminal.textContent()).toContain('hello!')
94
+ * ```
95
+ */
96
+ export function testRender(view, size) {
97
+ return new TestScreen(view, size);
98
+ }
99
+ //# sourceMappingURL=TestScreen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TestScreen.js","sourceRoot":"","sources":["../lib/TestScreen.ts"],"names":[],"mappings":"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"}
@@ -38,26 +38,13 @@ export class TestTerminal {
38
38
  this.#cursorY = y;
39
39
  }
40
40
  write(str) {
41
- let i = 0;
42
- while (i < str.length) {
43
- if (str[i] === '\x1b' && i + 1 < str.length && str[i + 1] === '[') {
41
+ for (const char of unicode.printableChars(str)) {
42
+ const width = unicode.charWidth(char);
43
+ if (width === 0) {
44
44
  // ANSI escape sequence
45
- let j = i + 2;
46
- while (j < str.length && !isAnsiTerminator(str[j])) {
47
- j++;
48
- }
49
- if (j < str.length) {
50
- j++; // include the terminator
51
- }
52
- const sgr = str.slice(i, j);
53
- this.#pendingSgr += sgr;
54
- i = j;
45
+ this.#pendingSgr += char;
55
46
  }
56
47
  else {
57
- // Visible character — may be multi-code-unit (emoji, CJK)
58
- const codePoint = str.codePointAt(i);
59
- const char = String.fromCodePoint(codePoint);
60
- const width = unicode.charWidth(char);
61
48
  // Apply any pending SGR to current style
62
49
  if (this.#pendingSgr) {
63
50
  this.#currentStyle = this.#parseAccumulatedSGR(this.#pendingSgr);
@@ -80,7 +67,6 @@ export class TestTerminal {
80
67
  }
81
68
  }
82
69
  this.#cursorX += Math.max(width, 1);
83
- i += char.length;
84
70
  }
85
71
  }
86
72
  }
@@ -153,7 +139,7 @@ export class TestTerminal {
153
139
  continue; // skip wide char continuation cells
154
140
  line += char;
155
141
  }
156
- return line.trimEnd();
142
+ return line.trimEnd(); // + '␤'
157
143
  }
158
144
  /**
159
145
  * Get all visible text content (rows joined by newlines, trailing spaces trimmed).
@@ -283,8 +269,4 @@ export class TestTerminal {
283
269
  this.#currentStyle = Style.NONE;
284
270
  }
285
271
  }
286
- function isAnsiTerminator(ch) {
287
- const code = ch.charCodeAt(0);
288
- return (code >= 65 && code <= 90) || (code >= 97 && code <= 122);
289
- }
290
272
  //# sourceMappingURL=TestTerminal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TestTerminal.js","sourceRoot":"","sources":["../lib/TestTerminal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,aAAa,CAAA;AAGtC,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAOhC;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAY;IACvB,IAAI,CAAQ;IACZ,IAAI,CAAQ;IACZ,KAAK,CAAU;IACf,QAAQ,GAAG,CAAC,CAAA;IACZ,QAAQ,GAAG,CAAC,CAAA;IACZ,WAAW,GAAG,EAAE,CAAA;IAChB,aAAa,GAAG,KAAK,CAAC,IAAI,CAAA;IAE1B,YAAY,EAAC,IAAI,EAAE,IAAI,EAA+B;QACpD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAChB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;IACjC,CAAC;IAED,WAAW;QACT,MAAM,IAAI,GAAa,EAAE,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAW,EAAE,CAAA;YACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,GAAG,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAC,CAAC,CAAA;YAC1C,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,IAAI,CAAC,CAAS,EAAE,CAAS;QACvB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,IAAI,CAAC,GAAG,CAAC,CAAA;QACT,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClE,uBAAuB;gBACvB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACb,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,CAAC,EAAE,CAAA;gBACL,CAAC;gBACD,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;oBACnB,CAAC,EAAE,CAAA,CAAC,yBAAyB;gBAC/B,CAAC;gBACD,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC3B,IAAI,CAAC,WAAW,IAAI,GAAG,CAAA;gBACvB,CAAC,GAAG,CAAC,CAAA;YACP,CAAC;iBAAM,CAAC;gBACN,0DAA0D;gBAC1D,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC,CAAE,CAAA;gBACrC,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;gBAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;gBAErC,yCAAyC;gBACzC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;oBACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;oBAChE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;gBACvB,CAAC;gBAED,IACE,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI;oBACzB,IAAI,CAAC,QAAQ,IAAI,CAAC;oBAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,EACzB,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;wBACzC,IAAI;wBACJ,KAAK,EAAE,IAAI,CAAC,aAAa;qBAC1B,CAAA;oBACD,iCAAiC;oBACjC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;wBACjD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG;4BAC7C,IAAI,EAAE,EAAE;4BACR,KAAK,EAAE,IAAI,CAAC,aAAa;yBAC1B,CAAA;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;gBACnC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAA;YAClB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,KAAU,CAAC;IAEhB;;;;;;;;OAQG;IACH,oBAAoB,CAAC,GAAW;QAC9B,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAA;QACnD,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAA;QAC9B,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;gBAC1C,KAAK,GAAG,KAAK,CAAC,IAAI,CAAA;YACpB,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,8BAA8B;IAE9B;;OAEG;IACH,MAAM,CAAC,CAAS,EAAE,CAAS;QACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IAC9B,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,CAAS,EAAE,CAAS;QAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,KAAK,CAAC,IAAI,CAAA;QACzE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/B,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,CAAS,EAAE,CAAS,EAAE,MAAc;QACzC,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,KAAK,GAAG,CAAC,CAAA;QACb,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,KAAK,GAAG,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;YACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,CAAA;YAC5C,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAQ,CAAC,oCAAoC;YAC9D,MAAM,IAAI,IAAI,CAAA;YACd,KAAK,EAAE,CAAA;QACT,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,CAAS;QACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACtC,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAClC,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAQ,CAAC,oCAAoC;YAC9D,IAAI,IAAI,IAAI,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED;;OAEG;IACH,WAAW;QACT,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/B,CAAC;QACD,4BAA4B;QAC5B,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1D,KAAK,CAAC,GAAG,EAAE,CAAA;QACb,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,IAAY;QACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAC3B,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBACb,OAAO,EAAC,CAAC,EAAE,CAAC,EAAC,CAAA;YACf,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;OAGG;IACH,OAAO,CAAC,IAAY;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,GAAG;YAAE,OAAO,IAAI,CAAA;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;IACnC,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,CAAS,EAAE,IAAa,EAAE,EAAW;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,EAAE,CAAA;QACtC,IAAI,KAAK,CAAC,CAAA;QACV,EAAE,KAAK,IAAI,CAAC,IAAI,CAAA;QAChB,IAAI,IAAI,GAAG,EAAE,CAAA;QACb,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAClC,IAAI,IAAI,KAAK,EAAE;gBAAE,SAAQ;YACzB,IAAI,IAAI,IAAI,CAAA;QACd,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;OASG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,MAAc;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7D,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAA;QAC5C,CAAC;QACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACzB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,CAAS,EACT,CAAS,EACT,KAAa,EACb,SAAoC,EACpC,SAAiB,CAAC;QAElB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,MAAM,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC7D,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;gBAC5D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,KAAK,CAAA;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;OAMG;IACH,aAAa,CAAC,QAAgB;QAC5B,MAAM,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAA;YACrD,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;gBAC5B,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;;;;;;;;OASG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QAC/B,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAA;QACjB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAA;QACrB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,IAAI,CAAA;IACjC,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,EAAU;IAClC,MAAM,IAAI,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IAC7B,OAAO,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,GAAG,CAAC,CAAA;AAClE,CAAC"}
1
+ {"version":3,"file":"TestTerminal.js","sourceRoot":"","sources":["../lib/TestTerminal.ts"],"names":[],"mappings":"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"}
package/.dist/UI.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { Theme } from './Theme.js';
2
- export declare function childTheme(theme: Theme, isPressed?: boolean, isHover?: boolean): Theme;
1
+ import { Palette } from './Palette.js';
2
+ export declare function childPalette(purpose: Palette, isPressed?: boolean, isHover?: boolean): Palette;
package/.dist/UI.js CHANGED
@@ -1,28 +1,28 @@
1
- import { Theme } from './Theme.js';
2
- export function childTheme(theme, isPressed = false, isHover = false) {
3
- return new Theme({
4
- background: isPressed
5
- ? theme.darkenColor
1
+ import { Palette } from './Palette.js';
2
+ export function childPalette(purpose, isPressed = false, isHover = false) {
3
+ return new Palette({
4
+ controlBackground: isPressed
5
+ ? purpose.darkenColor
6
6
  : isHover
7
- ? theme.highlightColor
8
- : theme.backgroundColor,
7
+ ? purpose.highlightColor
8
+ : purpose.controlBackgroundColor,
9
9
  textBackground: isPressed
10
- ? theme.darkenColor
10
+ ? purpose.darkenColor
11
11
  : isHover
12
- ? theme.highlightColor
13
- : theme.backgroundColor,
14
- highlight: theme.highlightColor,
12
+ ? purpose.highlightColor
13
+ : purpose.controlBackgroundColor,
14
+ highlight: purpose.highlightColor,
15
15
  darken: isPressed
16
- ? theme.darkenColor
16
+ ? purpose.darkenColor
17
17
  : isHover
18
- ? theme.highlightColor
19
- : theme.darkenColor,
20
- text: theme.textColor,
21
- contrastText: theme.contrastTextColor,
22
- dimText: theme.dimTextColor,
23
- tableChecked: theme.tableCheckedColor,
24
- tableCheckedHighlight: theme.tableCheckedHighlightColor,
25
- emoji: theme.emoji,
18
+ ? purpose.highlightColor
19
+ : purpose.darkenColor,
20
+ text: purpose.textColor,
21
+ contrastText: purpose.contrastTextColor,
22
+ dimText: purpose.dimTextColor,
23
+ tableChecked: purpose.tableCheckedColor,
24
+ tableCheckedHighlight: purpose.tableCheckedHighlightColor,
25
+ emoji: purpose.emoji,
26
26
  });
27
27
  }
28
28
  //# sourceMappingURL=UI.js.map
package/.dist/UI.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"UI.js","sourceRoot":"","sources":["../lib/UI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,YAAY,CAAA;AAEhC,MAAM,UAAU,UAAU,CAAC,KAAY,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK;IACzE,OAAO,IAAI,KAAK,CAAC;QACf,UAAU,EAAE,SAAS;YACnB,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,KAAK,CAAC,eAAe;QAC3B,cAAc,EAAE,SAAS;YACvB,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,KAAK,CAAC,eAAe;QAC3B,SAAS,EAAE,KAAK,CAAC,cAAc;QAC/B,MAAM,EAAE,SAAS;YACf,CAAC,CAAC,KAAK,CAAC,WAAW;YACnB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,KAAK,CAAC,cAAc;gBACtB,CAAC,CAAC,KAAK,CAAC,WAAW;QACvB,IAAI,EAAE,KAAK,CAAC,SAAS;QACrB,YAAY,EAAE,KAAK,CAAC,iBAAiB;QACrC,OAAO,EAAE,KAAK,CAAC,YAAY;QAC3B,YAAY,EAAE,KAAK,CAAC,iBAAiB;QACrC,qBAAqB,EAAE,KAAK,CAAC,0BAA0B;QACvD,KAAK,EAAE,KAAK,CAAC,KAAK;KACnB,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"UI.js","sourceRoot":"","sources":["../lib/UI.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAA;AAEpC,MAAM,UAAU,YAAY,CAC1B,OAAgB,EAChB,SAAS,GAAG,KAAK,EACjB,OAAO,GAAG,KAAK;IAEf,OAAO,IAAI,OAAO,CAAC;QACjB,iBAAiB,EAAE,SAAS;YAC1B,CAAC,CAAC,OAAO,CAAC,WAAW;YACrB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,OAAO,CAAC,cAAc;gBACxB,CAAC,CAAC,OAAO,CAAC,sBAAsB;QACpC,cAAc,EAAE,SAAS;YACvB,CAAC,CAAC,OAAO,CAAC,WAAW;YACrB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,OAAO,CAAC,cAAc;gBACxB,CAAC,CAAC,OAAO,CAAC,sBAAsB;QACpC,SAAS,EAAE,OAAO,CAAC,cAAc;QACjC,MAAM,EAAE,SAAS;YACf,CAAC,CAAC,OAAO,CAAC,WAAW;YACrB,CAAC,CAAC,OAAO;gBACP,CAAC,CAAC,OAAO,CAAC,cAAc;gBACxB,CAAC,CAAC,OAAO,CAAC,WAAW;QACzB,IAAI,EAAE,OAAO,CAAC,SAAS;QACvB,YAAY,EAAE,OAAO,CAAC,iBAAiB;QACvC,OAAO,EAAE,OAAO,CAAC,YAAY;QAC7B,YAAY,EAAE,OAAO,CAAC,iBAAiB;QACvC,qBAAqB,EAAE,OAAO,CAAC,0BAA0B;QACzD,KAAK,EAAE,OAAO,CAAC,KAAK;KACrB,CAAC,CAAA;AACJ,CAAC"}
package/.dist/View.d.ts CHANGED
@@ -1,20 +1,20 @@
1
1
  import type { Viewport } from './Viewport.js';
2
2
  import type { Screen } from './Screen.js';
3
- import type { Purpose } from './Theme.js';
4
- import { Theme } from './Theme.js';
3
+ import type { Purpose } from './Palette.js';
4
+ import { Palette } from './Palette.js';
5
5
  import { Container } from './Container.js';
6
6
  import { System } from './System.js';
7
7
  import { type KeyEvent, type MouseEvent } from './events/index.js';
8
8
  import { Size } from './geometry.js';
9
9
  import { Color } from './Color.js';
10
- import { Edges } from './types.js';
10
+ import { type Edges, type LegendItem } from './types.js';
11
11
  export type Dimension = number | 'fill' | 'shrink' | 'natural';
12
12
  export type FlexSize = 'natural' | number;
13
13
  export type FlexShorthand = FlexSize | `flex${number}`;
14
14
  export declare function parseFlexShorthand(flex: FlexShorthand): FlexSize;
15
15
  export type Pin = 'horizontal' | 'vertical';
16
16
  export interface Props {
17
- theme?: Theme | Purpose;
17
+ purpose?: Palette | Purpose;
18
18
  /**
19
19
  * A heading for this view. Container views (Box, Page, Alert, Drawer, etc.)
20
20
  * can read this from their children to display a section heading without
@@ -58,9 +58,9 @@ export declare abstract class View {
58
58
  pin: Pin | undefined;
59
59
  constructor(props?: Props);
60
60
  update(props: Props): void;
61
- get theme(): Theme;
62
- set theme(value: Theme | undefined);
63
- childTheme(_view: View): Theme;
61
+ get purpose(): Palette;
62
+ set purpose(value: Palette | Purpose | undefined);
63
+ childPalette(_view: View): Palette;
64
64
  get heading(): string | undefined;
65
65
  set heading(value: string | undefined);
66
66
  get isVisible(): boolean;
@@ -112,6 +112,11 @@ export declare abstract class View {
112
112
  * had focus (i.e. `didFocus()` was called).
113
113
  */
114
114
  didBlur(): void;
115
+ /**
116
+ * Returns keyboard shortcut items for this view, shown by AutoLegend
117
+ * when this view has focus. Override in subclasses to advertise shortcuts.
118
+ */
119
+ legendItems(): LegendItem[];
115
120
  removeFromParent(): void;
116
121
  moveToScreen(screen: Screen | undefined): void;
117
122
  /**
package/.dist/View.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Theme } from './Theme.js';
1
+ import { Palette } from './Palette.js';
2
2
  import { isMouseEnter, isMouseExit, isMousePressStart, isMousePressExit, } from './events/index.js';
3
3
  import { Point, Size, Rect } from './geometry.js';
4
4
  import { Style } from './Style.js';
@@ -17,7 +17,7 @@ export class View {
17
17
  parent = undefined;
18
18
  debug = false;
19
19
  #screen = undefined;
20
- #theme;
20
+ #purpose;
21
21
  #prevSizeCache = new Map();
22
22
  #viewportContentSize = Size.zero;
23
23
  #renderedContentSize = Size.zero;
@@ -66,8 +66,8 @@ export class View {
66
66
  this.#update(props);
67
67
  this.invalidateSize();
68
68
  }
69
- #update({ theme, heading, x, y, width, height, minWidth, minHeight, maxWidth, maxHeight, isVisible, background, padding, paddingTop, paddingRight, paddingBottom, paddingLeft, flex, pin, debug, }) {
70
- this.#theme = typeof theme === 'string' ? Theme[theme] : theme;
69
+ #update({ purpose, heading, x, y, width, height, minWidth, minHeight, maxWidth, maxHeight, isVisible, background, padding, paddingTop, paddingRight, paddingBottom, paddingLeft, flex, pin, debug, }) {
70
+ this.#purpose = typeof purpose === 'string' ? Palette[purpose] : purpose;
71
71
  this.#heading = heading;
72
72
  this.#x = x;
73
73
  this.#y = y;
@@ -96,14 +96,14 @@ export class View {
96
96
  },
97
97
  });
98
98
  }
99
- get theme() {
100
- return this.#theme ?? this.parent?.childTheme(this) ?? Theme.plain;
99
+ get purpose() {
100
+ return this.#purpose ?? this.parent?.childPalette(this) ?? Palette.plain;
101
101
  }
102
- set theme(value) {
103
- this.#theme = value;
102
+ set purpose(value) {
103
+ this.#purpose = typeof value === 'string' ? Palette[value] : value;
104
104
  }
105
- childTheme(_view) {
106
- return this.theme;
105
+ childPalette(_view) {
106
+ return this.purpose;
107
107
  }
108
108
  get heading() {
109
109
  return this.#heading;
@@ -342,6 +342,13 @@ export class View {
342
342
  didBlur() {
343
343
  this.#hasFocus = false;
344
344
  }
345
+ /**
346
+ * Returns keyboard shortcut items for this view, shown by AutoLegend
347
+ * when this view has focus. Override in subclasses to advertise shortcuts.
348
+ */
349
+ legendItems() {
350
+ return [];
351
+ }
345
352
  removeFromParent() {
346
353
  if (!this.parent) {
347
354
  return;
package/.dist/View.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"View.js","sourceRoot":"","sources":["../lib/View.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../lib/View.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,17 @@ export declare class Viewport {
24
24
  * always.
25
25
  */
26
26
  get contentSize(): Size;
27
+ /**
28
+ * In most cases, `availableRect` is synonymous with `contentRect`, but in some
29
+ * rare cases (e.g. drawing on top of box borders) the `availableRect` is larger.
30
+ * The available Rect will always be positioned outside or overlapping the
31
+ * `contentRect`, i.e.
32
+ * availableRect.origin.x <= 0
33
+ * availableRect.origin.y <= 0
34
+ * availableRect.size.width >= contentRect.size.width
35
+ * availableRect.size.height >= contentRect.size.height
36
+ */
37
+ get availableRect(): Rect;
27
38
  get visibleRect(): Rect;
28
39
  get contentRect(): Rect;
29
40
  get isEmpty(): boolean;
@@ -86,6 +97,21 @@ export declare class Viewport {
86
97
  _render(view: View, clip: Rect, draw: (viewport: Viewport) => void): void;
87
98
  clipped(clip: Rect, draw: (viewport: Viewport) => void): void;
88
99
  clipped(clip: Rect, style: Style, draw: (viewport: Viewport) => void): void;
100
+ /**
101
+ * Shifts the viewport origin inward (to `rect.origin`) and sets contentSize to
102
+ * `rect.size`, without changing the clip boundary. This makes `availableRect`
103
+ * extend beyond `contentRect` so children can draw "on top of" the surrounding
104
+ * area (e.g. box borders).
105
+ *
106
+ * Must be called inside a `clipped()` callback — the enclosing `clipped` will
107
+ * restore the previous state.
108
+ *
109
+ * viewport.clipped(outerRect, inside => {
110
+ * inside.inset(innerRect)
111
+ * super.render(inside)
112
+ * })
113
+ */
114
+ inset(rect: Rect, draw: (viewport: Viewport) => void): void;
89
115
  }
90
116
  declare class Pen {
91
117
  #private;