@teaui/core 1.11.8 → 1.11.10

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 +16 -11
  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/inspect.js DELETED
@@ -1,172 +0,0 @@
1
- import { bold, cyan, gray, green, red, yellow } from './ansi.js';
2
- let _debug = false;
3
- export function isDebugging(enabled) {
4
- if (enabled !== undefined) {
5
- _debug = enabled;
6
- }
7
- return _debug;
8
- }
9
- function isEmpty(object) {
10
- for (const key in object) {
11
- return false;
12
- }
13
- return true;
14
- }
15
- const MAX = 200;
16
- export function inspect(value, wrap = true, recursionDepth = 0, visited = new Set()) {
17
- if (value && (typeof value === 'object' || typeof value === 'function')) {
18
- if (visited.has(value)) {
19
- return red('[Circular]');
20
- }
21
- else {
22
- visited = new Set(visited);
23
- visited.add(value);
24
- }
25
- }
26
- if (recursionDepth >= 10) {
27
- return red('...');
28
- }
29
- if (value instanceof Set) {
30
- return `new Set(${inspect(Array.from(value.values()), wrap, recursionDepth, visited)})`;
31
- }
32
- if (value instanceof Map) {
33
- return `new Map(${inspect(Array.from(value.entries()), wrap, recursionDepth, visited)})`;
34
- }
35
- const tab = ' '.repeat(recursionDepth);
36
- const innerTab = tab + ' ';
37
- if (Array.isArray(value)) {
38
- if (value.length === 0) {
39
- return '[]';
40
- }
41
- const values = value.map(val => inspect(val, wrap, recursionDepth + 1, visited));
42
- const count = values.reduce((len, val) => len + val.length, 0);
43
- const newline = wrap && count > MAX;
44
- let inner;
45
- if (newline) {
46
- const [prev, line] = values.reduce(([prev, line], value) => {
47
- if (line.length + value.length > MAX) {
48
- return [(prev ? prev + `,\n${innerTab}` : '') + line, value];
49
- }
50
- return [prev, line ? line + ', ' + value : value];
51
- }, ['', '']);
52
- inner = (prev ? prev + `,\n${innerTab}` : '') + line;
53
- }
54
- else {
55
- inner = values.join(', ');
56
- }
57
- return newline ? `[\n${innerTab}${inner}\n${tab}]` : `[ ${inner} ]`;
58
- }
59
- else if (typeof value === 'string') {
60
- return colorize.string(value, recursionDepth > 0);
61
- }
62
- else if (typeof value === 'symbol') {
63
- return colorize.symbol(value);
64
- }
65
- else if (typeof value === 'number' ||
66
- typeof value === 'boolean' ||
67
- value === undefined ||
68
- value === null) {
69
- return colorize.format(value);
70
- }
71
- else if (typeof value === 'function') {
72
- return `function${value.name ? ` ${value.name}` : ''}() {${value}}`;
73
- }
74
- else if (value instanceof Date) {
75
- return `Date(${colorize.string(value.toISOString())})`;
76
- }
77
- else if (value instanceof Object &&
78
- value.constructor !== Object &&
79
- isEmpty(value)) {
80
- return `${value.constructor.name}({})`;
81
- }
82
- const name = value.constructor === undefined
83
- ? ''
84
- : value.constructor.name === 'Object'
85
- ? ''
86
- : value.constructor.name.concat(' ');
87
- const keys = Object.keys(value);
88
- if (keys.length === 0) {
89
- return '{}';
90
- }
91
- // weird ReactFiberNode one-off
92
- if ('$$typeof' in value && '_owner' in value) {
93
- const { _owner: _, ...remainder } = value;
94
- return inspect(remainder, wrap, recursionDepth, visited);
95
- }
96
- const values = keys.map(key => `${colorize.key(key)}: ${inspect(value[key], wrap, recursionDepth + 1, visited)}`);
97
- const count = values.reduce((len, val) => len + val.length, 0);
98
- const newline = wrap && count > MAX;
99
- let inner;
100
- if (newline) {
101
- const [prev, line] = values.reduce(([prev, line], value) => {
102
- if (line.length + value.length > MAX) {
103
- return [(prev ? prev + `,\n${innerTab}` : '') + line, value];
104
- }
105
- return [prev, line ? line + ', ' + value : line];
106
- }, ['', '']);
107
- inner = (prev ? prev + `,\n${innerTab}` : '') + line;
108
- inner = values.join(`,\n${innerTab}`);
109
- }
110
- else {
111
- inner = values.join(', ');
112
- }
113
- return newline
114
- ? `${name}{\n${innerTab}${inner}\n${tab}}`
115
- : `${name}{ ${inner} }`;
116
- }
117
- export const colorize = {
118
- format: function (input) {
119
- switch (typeof input) {
120
- case 'string':
121
- return colorize.string(input);
122
- case 'symbol':
123
- return colorize.symbol(input);
124
- case 'number':
125
- return colorize.number(input);
126
- case 'undefined':
127
- return colorize.undefined();
128
- case 'object':
129
- return colorize['null']();
130
- default:
131
- return String(input);
132
- }
133
- },
134
- number: function (input) {
135
- return yellow(''.concat(String(input)));
136
- },
137
- symbol: function (input) {
138
- return red(''.concat(String(input)));
139
- },
140
- string: function (input, doQuote = true) {
141
- let quote;
142
- if (doQuote) {
143
- if (input.includes("'")) {
144
- quote = '"';
145
- input = input.replaceAll('"', '\\"');
146
- }
147
- else {
148
- quote = "'";
149
- input = input.replaceAll("'", "\\'");
150
- }
151
- }
152
- else {
153
- quote = '';
154
- }
155
- input = input.replaceAll(/\n/g, '⤦');
156
- input = input.replaceAll(/\x1b/g, '␛');
157
- return green(quote.concat(input, quote));
158
- },
159
- key: function (input) {
160
- return cyan(String(input));
161
- },
162
- boolean: function (input) {
163
- return yellow(''.concat(String(input)));
164
- },
165
- undefined: function () {
166
- return gray('undefined');
167
- },
168
- null: function () {
169
- return bold('null');
170
- },
171
- };
172
- //# sourceMappingURL=inspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../lib/inspect.ts"],"names":[],"mappings":"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"}
package/.dist/testing.js DELETED
@@ -1,208 +0,0 @@
1
- import { Buffer } from './Buffer.js';
2
- import { Viewport } from './Viewport.js';
3
- import { Size } from './geometry.js';
4
- import { TestTerminal } from './TestTerminal.js';
5
- import { FocusManager } from './managers/FocusManager.js';
6
- import { MouseManager } from './managers/MouseManager.js';
7
- import { ModalManager } from './managers/ModalManager.js';
8
- import { TickManager } from './managers/TickManager.js';
9
- import { UnboundSystem } from './System.js';
10
- class TestScreen {
11
- options;
12
- #view;
13
- #buffer;
14
- #terminal;
15
- #size;
16
- #focus;
17
- #focusManager;
18
- #mouseManager;
19
- #modalManager;
20
- #tickManager;
21
- #screenProxy = null;
22
- #focusChangeListeners = new Set();
23
- constructor(view, options) {
24
- this.options = options;
25
- this.#view = view;
26
- this.#focus = options.isFocused !== false;
27
- this.#size = new Size(options.width, options.height);
28
- this.#buffer = new Buffer();
29
- this.#terminal = new TestTerminal({
30
- cols: options.width,
31
- rows: options.height,
32
- });
33
- this.#focusManager = new FocusManager();
34
- this.#mouseManager = new MouseManager();
35
- this.#modalManager = new ModalManager();
36
- this.#tickManager = new TickManager(() => this.render());
37
- // Wire the view to this screen
38
- view.moveToScreen(this.asScreen());
39
- this.render();
40
- }
41
- get terminal() {
42
- return this.#terminal;
43
- }
44
- get view() {
45
- return this.#view;
46
- }
47
- /**
48
- * Advance time by `dt` milliseconds, triggering any registered tick
49
- * animations and re-rendering.
50
- */
51
- tick(dt) {
52
- this.#tickManager.triggerTick(dt);
53
- this.render();
54
- }
55
- asScreen() {
56
- // Cache the screen proxy so moveToScreen identity checks work
57
- if (!this.#screenProxy) {
58
- const focusManager = this.#focusManager;
59
- this.#screenProxy = {
60
- rootView: this.#view,
61
- preRender: (view) => {
62
- this.#modalManager.reset();
63
- this.#mouseManager.reset();
64
- this.#focusManager.reset(view === this.#view);
65
- },
66
- requestModal: (modal, rect) => {
67
- return this.#modalManager.requestModal(modal, rect);
68
- },
69
- get currentFocusView() {
70
- return focusManager.currentFocusView;
71
- },
72
- get hotKeyViews() {
73
- return focusManager.hotKeyViews;
74
- },
75
- registerHotKey: (view, key) => {
76
- this.#focusManager.registerHotKey(view, key);
77
- },
78
- registerKeyboard: (view) => {
79
- this.#focusManager.registerKeyboard(view);
80
- },
81
- registerFocus: (view, isDefault) => {
82
- return this.#focusManager.registerFocus(view, isDefault);
83
- },
84
- registerMouse: (view, offset, point, events) => {
85
- this.#mouseManager.registerMouse(view, offset, point, events);
86
- },
87
- registerTick: (view) => {
88
- this.#tickManager.registerTick(view);
89
- },
90
- checkMouse: (view, x, y) => {
91
- this.#mouseManager.checkMouse(view, x, y);
92
- },
93
- on: (event, listener) => {
94
- if (event === 'focusChange') {
95
- this.#focusChangeListeners.add(listener);
96
- return () => {
97
- this.#focusChangeListeners.delete(listener);
98
- };
99
- }
100
- return () => { };
101
- },
102
- needsRender: () => {
103
- // In test mode, renders are explicit — ignore async render requests
104
- },
105
- };
106
- }
107
- return this.#screenProxy;
108
- }
109
- render() {
110
- this.#buffer.resize(this.#size);
111
- this.#modalManager.reset();
112
- this.#focusManager.reset(true);
113
- this.#mouseManager.reset();
114
- if (!this.#focus) {
115
- this.#focusManager.unfocus();
116
- }
117
- const renderSize = this.#view.naturalSize(this.#size).min(this.#size);
118
- const viewport = new Viewport(this.asScreen(), this.#buffer, renderSize);
119
- this.#view.render(viewport);
120
- // Modals need the full screen size to position overlays (e.g. dropdowns),
121
- // matching Screen.render() which uses naturalSize.max(screenSize).
122
- const modalViewport = new Viewport(this.asScreen(), this.#buffer, this.#size);
123
- const rerenderView = this.#modalManager.renderModals(this.asScreen(), modalViewport);
124
- const focusNeedsRender = this.#focusManager.commit();
125
- if (focusNeedsRender) {
126
- this.#buffer.flush(this.#terminal);
127
- for (const listener of this.#focusChangeListeners) {
128
- listener(this.#focusManager.currentFocusView);
129
- }
130
- this.#view.render(viewport);
131
- // Match Screen.render(): re-render with the same viewport, no
132
- // mouse manager reset (so modal button registrations are preserved).
133
- rerenderView.render(modalViewport);
134
- this.#focusManager.commit();
135
- }
136
- this.#tickManager.endRender();
137
- this.#buffer.flush(this.#terminal);
138
- }
139
- sendKey(key, mods = {}) {
140
- const ctrl = mods.ctrl ?? false;
141
- const alt = mods.alt ?? false;
142
- const gui = mods.gui ?? false;
143
- const shift = mods.shift ?? false;
144
- let full = '';
145
- if (ctrl)
146
- full += 'C-';
147
- if (alt)
148
- full += 'A-';
149
- if (gui)
150
- full += 'G-';
151
- if (shift)
152
- full += 'S-';
153
- full += key;
154
- const char = key === 'space' ? ' ' : key.length === 1 ? key : '';
155
- const event = {
156
- type: 'key',
157
- name: key,
158
- char,
159
- full: full,
160
- ctrl,
161
- alt,
162
- gui,
163
- shift,
164
- };
165
- this.#focusManager.trigger(event);
166
- this.render();
167
- }
168
- sendMouse(name, pos, mods = {}) {
169
- const button = name.startsWith('mouse.wheel')
170
- ? 'wheel'
171
- : name === 'mouse.move.in'
172
- ? 'unknown'
173
- : 'left';
174
- const event = {
175
- type: 'mouse',
176
- name,
177
- x: pos.x,
178
- y: pos.y,
179
- ctrl: mods.ctrl ?? false,
180
- alt: mods.alt ?? false,
181
- gui: mods.gui ?? false,
182
- shift: mods.shift ?? false,
183
- button,
184
- };
185
- const system = new UnboundSystem(this.#focusManager);
186
- this.#mouseManager.trigger(event, system);
187
- this.render();
188
- }
189
- sendPaste(text) {
190
- this.#focusManager.triggerPaste(text);
191
- this.render();
192
- }
193
- }
194
- /**
195
- * Render a component headlessly and return a test harness for interaction testing.
196
- *
197
- * @example
198
- * ```ts
199
- * const t = testRender(new Input({value: 'hello'}), {width: 20, height: 1})
200
- * expect(t.terminal.textContent()).toContain('hello')
201
- * t.sendKey('!') // type a character
202
- * expect(t.terminal.textContent()).toContain('hello!')
203
- * ```
204
- */
205
- export function testRender(view, size) {
206
- return new TestScreen(view, size);
207
- }
208
- //# sourceMappingURL=testing.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../lib/testing.ts"],"names":[],"mappings":"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"}