@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.
- package/.dist/Buffer.d.ts +5 -0
- package/.dist/Buffer.js +150 -7
- package/.dist/Buffer.js.map +1 -1
- package/.dist/HeadlessProgram.d.ts +24 -0
- package/.dist/HeadlessProgram.js +41 -0
- package/.dist/HeadlessProgram.js.map +1 -0
- package/.dist/{Theme.d.ts → Palette.d.ts} +13 -13
- package/.dist/{Theme.js → Palette.js} +16 -16
- package/.dist/Palette.js.map +1 -0
- package/.dist/Screen.d.ts +33 -23
- package/.dist/Screen.js +75 -75
- package/.dist/Screen.js.map +1 -1
- package/.dist/Style.js +11 -10
- package/.dist/Style.js.map +1 -1
- package/.dist/TestProgram.d.ts +28 -0
- package/.dist/TestProgram.js +52 -0
- package/.dist/TestProgram.js.map +1 -0
- package/.dist/{testing.d.ts → TestScreen.d.ts} +2 -4
- package/.dist/TestScreen.js +99 -0
- package/.dist/TestScreen.js.map +1 -0
- package/.dist/TestTerminal.js +1 -1
- package/.dist/TestTerminal.js.map +1 -1
- package/.dist/UI.d.ts +2 -2
- package/.dist/UI.js +19 -19
- package/.dist/UI.js.map +1 -1
- package/.dist/View.d.ts +7 -8
- package/.dist/View.js +10 -10
- package/.dist/View.js.map +1 -1
- package/.dist/Viewport.d.ts +26 -0
- package/.dist/Viewport.js +57 -7
- package/.dist/Viewport.js.map +1 -1
- package/.dist/components/AbstractLegend.d.ts +30 -0
- package/.dist/components/AbstractLegend.js +195 -0
- package/.dist/components/AbstractLegend.js.map +1 -0
- package/.dist/components/Accordion.js +1 -1
- package/.dist/components/Accordion.js.map +1 -1
- package/.dist/components/Alert.d.ts +1 -1
- package/.dist/components/Alert.js +1 -1
- package/.dist/components/At.d.ts +57 -0
- package/.dist/components/At.js +182 -0
- package/.dist/components/At.js.map +1 -0
- package/.dist/components/AutoLegend.d.ts +6 -4
- package/.dist/components/AutoLegend.js +27 -10
- package/.dist/components/AutoLegend.js.map +1 -1
- package/.dist/components/Badge.d.ts +16 -0
- package/.dist/components/Badge.js +54 -0
- package/.dist/components/Badge.js.map +1 -0
- package/.dist/components/Box.d.ts +1 -1
- package/.dist/components/Box.js +4 -5
- package/.dist/components/Box.js.map +1 -1
- package/.dist/components/Breadcrumb.js +1 -1
- package/.dist/components/Breadcrumb.js.map +1 -1
- package/.dist/components/Button.d.ts +2 -3
- package/.dist/components/Button.js +6 -6
- package/.dist/components/Button.js.map +1 -1
- package/.dist/components/Calendar.d.ts +2 -2
- package/.dist/components/Calendar.js +24 -24
- package/.dist/components/Calendar.js.map +1 -1
- package/.dist/components/Callout.js +14 -14
- package/.dist/components/Callout.js.map +1 -1
- package/.dist/components/Canvas.js +1 -1
- package/.dist/components/Canvas.js.map +1 -1
- package/.dist/components/Checkbox.d.ts +2 -2
- package/.dist/components/Checkbox.js +4 -4
- package/.dist/components/Checkbox.js.map +1 -1
- package/.dist/components/Collapsible.js +1 -1
- package/.dist/components/Collapsible.js.map +1 -1
- package/.dist/components/CollapsibleText.js +1 -1
- package/.dist/components/CollapsibleText.js.map +1 -1
- package/.dist/components/Digits.d.ts +1 -1
- package/.dist/components/Digits.js +1 -1
- package/.dist/components/Digits.js.map +1 -1
- package/.dist/components/Drawer.d.ts +4 -4
- package/.dist/components/Drawer.js +13 -13
- package/.dist/components/Drawer.js.map +1 -1
- package/.dist/components/Dropdown.d.ts +1 -1
- package/.dist/components/Dropdown.js +12 -6
- package/.dist/components/Dropdown.js.map +1 -1
- package/.dist/components/HotKey.d.ts +4 -4
- package/.dist/components/HotKey.js +3 -3
- package/.dist/components/HotKey.js.map +1 -1
- package/.dist/components/Input.d.ts +1 -2
- package/.dist/components/Input.js +3 -3
- package/.dist/components/Input.js.map +1 -1
- package/.dist/components/Legend.d.ts +7 -13
- package/.dist/components/Legend.js +15 -187
- package/.dist/components/Legend.js.map +1 -1
- package/.dist/components/Log.d.ts +1 -0
- package/.dist/components/Log.js +5 -2
- package/.dist/components/Log.js.map +1 -1
- package/.dist/components/Modal.d.ts +2 -1
- package/.dist/components/Modal.js +2 -2
- package/.dist/components/Modal.js.map +1 -1
- package/.dist/components/Notification.d.ts +1 -1
- package/.dist/components/Notification.js +3 -3
- package/.dist/components/Notification.js.map +1 -1
- package/.dist/components/Page.js +5 -14
- package/.dist/components/Page.js.map +1 -1
- package/.dist/components/Pane.js +13 -10
- package/.dist/components/Pane.js.map +1 -1
- package/.dist/components/Plot.js +1 -1
- package/.dist/components/Plot.js.map +1 -1
- package/.dist/components/Progress.js +2 -2
- package/.dist/components/Progress.js.map +1 -1
- package/.dist/components/Scrollable.js +4 -4
- package/.dist/components/Scrollable.js.map +1 -1
- package/.dist/components/ScrollableList.js +4 -4
- package/.dist/components/ScrollableList.js.map +1 -1
- package/.dist/components/Separator.js +1 -1
- package/.dist/components/Separator.js.map +1 -1
- package/.dist/components/Slider.d.ts +2 -3
- package/.dist/components/Slider.js +8 -5
- package/.dist/components/Slider.js.map +1 -1
- package/.dist/components/Space.d.ts +1 -1
- package/.dist/components/Space.js +1 -1
- package/.dist/components/Space.js.map +1 -1
- package/.dist/components/Spinner.d.ts +3 -1
- package/.dist/components/Spinner.js +11 -1
- package/.dist/components/Spinner.js.map +1 -1
- package/.dist/components/Table.d.ts +1 -2
- package/.dist/components/Table.js +5 -5
- package/.dist/components/Table.js.map +1 -1
- package/.dist/components/Tabs.d.ts +3 -2
- package/.dist/components/Tabs.js +42 -3
- package/.dist/components/Tabs.js.map +1 -1
- package/.dist/components/Text.d.ts +1 -1
- package/.dist/components/Text.js +8 -1
- package/.dist/components/Text.js.map +1 -1
- package/.dist/components/Toggle.d.ts +26 -0
- package/.dist/components/Toggle.js +151 -0
- package/.dist/components/Toggle.js.map +1 -0
- package/.dist/components/ToggleGroup.d.ts +1 -1
- package/.dist/components/ToggleGroup.js +22 -4
- package/.dist/components/ToggleGroup.js.map +1 -1
- package/.dist/components/ZStack.js +3 -1
- package/.dist/components/ZStack.js.map +1 -1
- package/.dist/components/charts/BarChart.js +2 -2
- package/.dist/components/charts/BarChart.js.map +1 -1
- package/.dist/components/index.d.ts +5 -2
- package/.dist/components/index.js +5 -2
- package/.dist/components/index.js.map +1 -1
- package/.dist/iTerm2.d.ts +1 -1
- package/.dist/iTerm2.js +1 -1
- package/.dist/iTerm2.js.map +1 -1
- package/.dist/index.d.ts +6 -5
- package/.dist/index.js +6 -5
- package/.dist/index.js.map +1 -1
- package/.dist/log.d.ts +7 -2
- package/.dist/log.js +10 -3
- package/.dist/log.js.map +1 -1
- package/.dist/managers/FocusManager.d.ts +3 -2
- package/.dist/managers/FocusManager.js +51 -47
- package/.dist/managers/FocusManager.js.map +1 -1
- package/.dist/managers/TickManager.d.ts +1 -1
- package/.dist/managers/TickManager.js +4 -4
- package/.dist/managers/TickManager.js.map +1 -1
- package/.dist/renderToAnsi.d.ts +0 -7
- package/.dist/renderToAnsi.js +7 -45
- package/.dist/renderToAnsi.js.map +1 -1
- package/.dist/terminal.d.ts +1 -0
- package/.dist/types.d.ts +32 -0
- package/.dist/types.js.map +1 -1
- package/package.json +8 -4
- package/.dist/Theme.js.map +0 -1
- package/.dist/inspect.d.ts +0 -14
- package/.dist/inspect.js +0 -172
- package/.dist/inspect.js.map +0 -1
- package/.dist/testing.js +0 -208
- package/.dist/testing.js.map +0 -1
|
@@ -2,8 +2,8 @@ import { match } from '../events/index.js';
|
|
|
2
2
|
const UNFOCUS = Symbol('UNFOCUS');
|
|
3
3
|
export class FocusManager {
|
|
4
4
|
#didCommit = false;
|
|
5
|
-
#
|
|
6
|
-
#
|
|
5
|
+
#currentFocusView;
|
|
6
|
+
#prevFocusView;
|
|
7
7
|
#lastCommittedFocus;
|
|
8
8
|
#focusRing = [];
|
|
9
9
|
#hotKeys = [];
|
|
@@ -18,9 +18,9 @@ export class FocusManager {
|
|
|
18
18
|
*/
|
|
19
19
|
reset(isRootView) {
|
|
20
20
|
if (isRootView) {
|
|
21
|
-
this.#
|
|
21
|
+
this.#prevFocusView = this.#currentFocusView;
|
|
22
22
|
}
|
|
23
|
-
this.#
|
|
23
|
+
this.#currentFocusView = undefined;
|
|
24
24
|
this.#focusRing = [];
|
|
25
25
|
this.#hotKeys = [];
|
|
26
26
|
this.#keyboardListeners = [];
|
|
@@ -40,8 +40,8 @@ export class FocusManager {
|
|
|
40
40
|
this.nextFocus();
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
else if (this.#
|
|
44
|
-
this.#
|
|
43
|
+
else if (this.#currentFocusView && this.#currentFocusView !== UNFOCUS) {
|
|
44
|
+
this.#currentFocusView.receiveKey(event);
|
|
45
45
|
}
|
|
46
46
|
else if (this.#keyboardListeners.length > 0) {
|
|
47
47
|
// Last registered = innermost view = highest priority
|
|
@@ -49,8 +49,8 @@ export class FocusManager {
|
|
|
49
49
|
}
|
|
50
50
|
}
|
|
51
51
|
triggerPaste(text) {
|
|
52
|
-
if (this.#
|
|
53
|
-
this.#
|
|
52
|
+
if (this.#currentFocusView && this.#currentFocusView !== UNFOCUS) {
|
|
53
|
+
this.#currentFocusView.receivePaste(text);
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
@@ -60,18 +60,18 @@ export class FocusManager {
|
|
|
60
60
|
if (!this.#didCommit) {
|
|
61
61
|
this.#focusRing.push(view);
|
|
62
62
|
}
|
|
63
|
-
if (!this.#
|
|
63
|
+
if (!this.#currentFocusView && this.#prevFocusView === view) {
|
|
64
64
|
// The previously-focused view is re-registering — restore its focus
|
|
65
65
|
// regardless of isDefault (it was explicitly focused via tab/click).
|
|
66
|
-
this.#
|
|
66
|
+
this.#currentFocusView = view;
|
|
67
67
|
return true;
|
|
68
68
|
}
|
|
69
|
-
else if (!this.#
|
|
69
|
+
else if (!this.#currentFocusView && !this.#prevFocusView && isDefault) {
|
|
70
70
|
// First render: only isDefault views can claim initial focus.
|
|
71
|
-
this.#
|
|
71
|
+
this.#currentFocusView = view;
|
|
72
72
|
return true;
|
|
73
73
|
}
|
|
74
|
-
else if (this.#
|
|
74
|
+
else if (this.#currentFocusView === view) {
|
|
75
75
|
return true;
|
|
76
76
|
}
|
|
77
77
|
else {
|
|
@@ -79,8 +79,11 @@ export class FocusManager {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
get currentFocusView() {
|
|
82
|
-
|
|
83
|
-
? this.#
|
|
82
|
+
if (!this.#didCommit) {
|
|
83
|
+
return this.#prevFocusView !== UNFOCUS ? this.#prevFocusView : undefined;
|
|
84
|
+
}
|
|
85
|
+
return this.#currentFocusView && this.#currentFocusView !== UNFOCUS
|
|
86
|
+
? this.#currentFocusView
|
|
84
87
|
: undefined;
|
|
85
88
|
}
|
|
86
89
|
get hotKeyViews() {
|
|
@@ -103,37 +106,33 @@ export class FocusManager {
|
|
|
103
106
|
this.#keyboardListeners.push(view);
|
|
104
107
|
}
|
|
105
108
|
requestFocus(view) {
|
|
106
|
-
this.#
|
|
109
|
+
this.#currentFocusView = view;
|
|
107
110
|
return true;
|
|
108
111
|
}
|
|
109
112
|
unfocus() {
|
|
110
|
-
this.#
|
|
113
|
+
this.#currentFocusView = UNFOCUS;
|
|
111
114
|
}
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
commit() {
|
|
116
|
-
this.#didCommit = true;
|
|
117
|
-
if (this.#prevFocus === UNFOCUS && !this.#currentFocus) {
|
|
118
|
-
this.#currentFocus = UNFOCUS;
|
|
115
|
+
determineFocus() {
|
|
116
|
+
if (this.#prevFocusView === UNFOCUS && !this.#currentFocusView) {
|
|
117
|
+
this.#currentFocusView = UNFOCUS;
|
|
119
118
|
}
|
|
120
119
|
else if (this.#focusRing.length > 0 &&
|
|
121
|
-
this.#
|
|
122
|
-
!this.#
|
|
120
|
+
this.#prevFocusView &&
|
|
121
|
+
!this.#currentFocusView) {
|
|
123
122
|
// The previously-focused view didn't re-register — fall back to the
|
|
124
123
|
// first view in the ring so focus doesn't disappear.
|
|
125
|
-
this.#
|
|
124
|
+
this.#currentFocusView = this.#focusRing[0];
|
|
126
125
|
}
|
|
127
126
|
else if (this.#focusRing.length > 0 &&
|
|
128
|
-
!this.#
|
|
129
|
-
!this.#
|
|
127
|
+
!this.#prevFocusView &&
|
|
128
|
+
!this.#currentFocusView) {
|
|
130
129
|
// First render with focusable views but no default view claimed focus —
|
|
131
130
|
// enter the unfocused state so that tab can move into the focus ring.
|
|
132
|
-
this.#
|
|
131
|
+
this.#currentFocusView = UNFOCUS;
|
|
133
132
|
}
|
|
134
133
|
// Detect focus changes and fire lifecycle events
|
|
135
134
|
const prev = this.#lastCommittedFocus;
|
|
136
|
-
const current = this.#
|
|
135
|
+
const current = this.#currentFocusView;
|
|
137
136
|
if (prev !== current) {
|
|
138
137
|
if (prev && prev !== UNFOCUS) {
|
|
139
138
|
prev.didBlur();
|
|
@@ -146,57 +145,62 @@ export class FocusManager {
|
|
|
146
145
|
}
|
|
147
146
|
return false;
|
|
148
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* @return boolean Whether the focus changed
|
|
150
|
+
*/
|
|
151
|
+
commit() {
|
|
152
|
+
this.#didCommit = true;
|
|
153
|
+
return this.determineFocus();
|
|
154
|
+
}
|
|
149
155
|
#reorderRing() {
|
|
150
|
-
if (!this.#
|
|
156
|
+
if (!this.#currentFocusView || this.#currentFocusView === UNFOCUS) {
|
|
151
157
|
return;
|
|
152
158
|
}
|
|
153
|
-
const index = this.#focusRing.indexOf(this.#
|
|
159
|
+
const index = this.#focusRing.indexOf(this.#currentFocusView);
|
|
154
160
|
if (~index) {
|
|
155
161
|
const pre = this.#focusRing.slice(0, index);
|
|
156
162
|
this.#focusRing = this.#focusRing.slice(index).concat(pre);
|
|
157
163
|
}
|
|
158
164
|
}
|
|
159
165
|
prevFocus() {
|
|
160
|
-
if (!this.#
|
|
161
|
-
this.#
|
|
166
|
+
if (!this.#currentFocusView || this.#currentFocusView === UNFOCUS) {
|
|
167
|
+
this.#currentFocusView = this.#focusRing.at(-1);
|
|
162
168
|
return;
|
|
163
169
|
}
|
|
164
170
|
if (this.#focusRing.length <= 1) {
|
|
165
|
-
this.#
|
|
171
|
+
this.#currentFocusView = UNFOCUS;
|
|
166
172
|
return;
|
|
167
173
|
}
|
|
168
174
|
// If focused on the first item, unfocus instead of wrapping.
|
|
169
|
-
const index = this.#focusRing.indexOf(this.#
|
|
175
|
+
const index = this.#focusRing.indexOf(this.#currentFocusView);
|
|
170
176
|
if (index === 0) {
|
|
171
|
-
this.#
|
|
177
|
+
this.#currentFocusView = UNFOCUS;
|
|
172
178
|
return;
|
|
173
179
|
}
|
|
174
180
|
this.#reorderRing();
|
|
175
181
|
const last = this.#focusRing.pop();
|
|
176
182
|
this.#focusRing.unshift(last);
|
|
177
|
-
this.#
|
|
178
|
-
return this.#currentFocus;
|
|
183
|
+
this.#currentFocusView = last;
|
|
179
184
|
}
|
|
180
185
|
nextFocus() {
|
|
181
|
-
if (!this.#
|
|
182
|
-
this.#
|
|
186
|
+
if (!this.#currentFocusView || this.#currentFocusView === UNFOCUS) {
|
|
187
|
+
this.#currentFocusView = this.#focusRing[0];
|
|
183
188
|
return;
|
|
184
189
|
}
|
|
185
190
|
if (this.#focusRing.length <= 1) {
|
|
186
|
-
this.#
|
|
191
|
+
this.#currentFocusView = UNFOCUS;
|
|
187
192
|
return;
|
|
188
193
|
}
|
|
189
194
|
// If focused on the last item, unfocus instead of wrapping.
|
|
190
|
-
const index = this.#focusRing.indexOf(this.#
|
|
195
|
+
const index = this.#focusRing.indexOf(this.#currentFocusView);
|
|
191
196
|
if (index === this.#focusRing.length - 1) {
|
|
192
|
-
this.#
|
|
197
|
+
this.#currentFocusView = UNFOCUS;
|
|
193
198
|
return;
|
|
194
199
|
}
|
|
195
200
|
this.#reorderRing();
|
|
196
201
|
const first = this.#focusRing.shift();
|
|
197
202
|
this.#focusRing.push(first);
|
|
198
|
-
this.#
|
|
199
|
-
return this.#currentFocus;
|
|
203
|
+
this.#currentFocusView = this.#focusRing[0];
|
|
200
204
|
}
|
|
201
205
|
}
|
|
202
206
|
function findView(parent, prevFocus) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FocusManager.js","sourceRoot":"","sources":["../../lib/managers/FocusManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,KAAK,EAAgC,MAAM,oBAAoB,CAAA;AAEvE,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"FocusManager.js","sourceRoot":"","sources":["../../lib/managers/FocusManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export class TickManager {
|
|
2
|
-
#
|
|
2
|
+
#onRender;
|
|
3
3
|
#tickTimer;
|
|
4
4
|
#tickViews = new Set();
|
|
5
5
|
#needsRender = false;
|
|
6
|
-
constructor(
|
|
7
|
-
this.#
|
|
6
|
+
constructor(onRender) {
|
|
7
|
+
this.#onRender = onRender;
|
|
8
8
|
}
|
|
9
9
|
reset() {
|
|
10
10
|
this.#tickViews = new Set();
|
|
@@ -51,7 +51,7 @@ export class TickManager {
|
|
|
51
51
|
needsRender = view.receiveTick(dt) || needsRender;
|
|
52
52
|
}
|
|
53
53
|
if (needsRender) {
|
|
54
|
-
this.#
|
|
54
|
+
this.#onRender();
|
|
55
55
|
this.#needsRender = false;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TickManager.js","sourceRoot":"","sources":["../../lib/managers/TickManager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACtB,
|
|
1
|
+
{"version":3,"file":"TickManager.js","sourceRoot":"","sources":["../../lib/managers/TickManager.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,WAAW;IACtB,SAAS,CAAY;IACrB,UAAU,CAA4C;IACtD,UAAU,GAAc,IAAI,GAAG,EAAE,CAAA;IACjC,YAAY,GAAG,KAAK,CAAA;IAEpB,YAAY,QAAoB;QAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAA;IAC3B,CAAC;IAED,KAAK;QACH,IAAI,CAAC,UAAU,GAAG,IAAI,GAAG,EAAE,CAAA;IAC7B,CAAC;IAED,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,EAAE,CAAA;QACd,CAAC;aAAM,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,MAAM,EAAE,CAAA;QACf,CAAC;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,KAAK,EAAE,CAAA;IACd,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,OAAM;QACR,CAAC;QAED,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACzB,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YAC3B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAA;YACnD,QAAQ,GAAG,QAAQ,CAAA;QACrB,CAAC,EAAE,EAAE,CAAC,CAAA;IACR,CAAC;IAED,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,OAAM;QACR,CAAC;QAED,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAA;IAC7B,CAAC;IAED,YAAY,CAAC,IAAU;QACrB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3B,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,MAAM,EAAE,CAAA;IACf,CAAC;IAED,WAAW,CAAC,EAAU;QACpB,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAA;QACnC,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACnC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,WAAW,CAAA;QACnD,CAAC;QAED,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,SAAS,EAAE,CAAA;YAEhB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QAC3B,CAAC;IACH,CAAC;CACF"}
|
package/.dist/renderToAnsi.d.ts
CHANGED
|
@@ -1,11 +1,4 @@
|
|
|
1
1
|
import type { View } from './View.js';
|
|
2
|
-
import type { Screen } from './Screen.js';
|
|
3
|
-
/**
|
|
4
|
-
* A minimal Screen-like object for headless rendering.
|
|
5
|
-
* Viewport calls various registration methods on Screen during render —
|
|
6
|
-
* these are all no-ops for screenshot/offscreen purposes.
|
|
7
|
-
*/
|
|
8
|
-
export declare function createHeadlessScreen(): Screen;
|
|
9
2
|
/**
|
|
10
3
|
* Render a View to an ANSI string at the given size, without needing a real terminal.
|
|
11
4
|
*
|
package/.dist/renderToAnsi.js
CHANGED
|
@@ -1,38 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { Size } from './geometry.js';
|
|
4
|
-
import { StringTerminal } from './StringTerminal.js';
|
|
5
|
-
/**
|
|
6
|
-
* A minimal Screen-like object for headless rendering.
|
|
7
|
-
* Viewport calls various registration methods on Screen during render —
|
|
8
|
-
* these are all no-ops for screenshot/offscreen purposes.
|
|
9
|
-
*/
|
|
10
|
-
export function createHeadlessScreen() {
|
|
11
|
-
return {
|
|
12
|
-
render() { },
|
|
13
|
-
needsRender() { },
|
|
14
|
-
requestModal() {
|
|
15
|
-
return false;
|
|
16
|
-
},
|
|
17
|
-
get currentFocusView() {
|
|
18
|
-
return undefined;
|
|
19
|
-
},
|
|
20
|
-
get hotKeyViews() {
|
|
21
|
-
return [];
|
|
22
|
-
},
|
|
23
|
-
on() {
|
|
24
|
-
return () => { };
|
|
25
|
-
},
|
|
26
|
-
registerHotKey(_view, _key) { },
|
|
27
|
-
registerKeyboard(_view) { },
|
|
28
|
-
registerFocus(_view, _isDefault) {
|
|
29
|
-
return false;
|
|
30
|
-
},
|
|
31
|
-
registerMouse(_view, _offset, _point, _events) { },
|
|
32
|
-
registerTick(_view) { },
|
|
33
|
-
checkMouse(_view, _x, _y) { },
|
|
34
|
-
};
|
|
35
|
-
}
|
|
1
|
+
import { Screen } from './Screen.js';
|
|
2
|
+
import { HeadlessProgram } from './HeadlessProgram.js';
|
|
36
3
|
/**
|
|
37
4
|
* Render a View to an ANSI string at the given size, without needing a real terminal.
|
|
38
5
|
*
|
|
@@ -41,15 +8,10 @@ export function createHeadlessScreen() {
|
|
|
41
8
|
* @returns A string containing ANSI escape codes representing the rendered output
|
|
42
9
|
*/
|
|
43
10
|
export function renderToAnsi(view, size) {
|
|
44
|
-
const
|
|
45
|
-
const
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const viewport = new Viewport(screen, buffer, renderSize);
|
|
50
|
-
view.render(viewport);
|
|
51
|
-
const terminal = new StringTerminal({ cols: size.width, rows: size.height });
|
|
52
|
-
buffer.flush(terminal);
|
|
53
|
-
return terminal.output;
|
|
11
|
+
const program = new HeadlessProgram({ cols: size.width, rows: size.height });
|
|
12
|
+
const screen = new Screen(program, view);
|
|
13
|
+
screen.start();
|
|
14
|
+
screen.stop();
|
|
15
|
+
return program.terminal.output;
|
|
54
16
|
}
|
|
55
17
|
//# sourceMappingURL=renderToAnsi.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderToAnsi.js","sourceRoot":"","sources":["../lib/renderToAnsi.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"renderToAnsi.js","sourceRoot":"","sources":["../lib/renderToAnsi.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAA;AAClC,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAA;AAEpD;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,IAAqC;IAErC,MAAM,OAAO,GAAG,IAAI,eAAe,CAAC,EAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAC,CAAC,CAAA;IAC1E,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;IACxC,MAAM,CAAC,KAAK,EAAE,CAAA;IACd,MAAM,CAAC,IAAI,EAAE,CAAA;IAEb,OAAO,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAA;AAChC,CAAC"}
|
package/.dist/terminal.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface Terminal {
|
|
|
3
3
|
writeChar(char: string, x: number, y: number, style: Style): void;
|
|
4
4
|
restyleChar(x: number, y: number, style: Style): void;
|
|
5
5
|
writeMeta(str: string): void;
|
|
6
|
+
paintRect(style: Style, minX: number, minY: number, maxX: number, maxY: number): void;
|
|
6
7
|
}
|
|
7
8
|
export interface SGRTerminal {
|
|
8
9
|
cols: number;
|
package/.dist/types.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import type { SGRTerminal } from './terminal.js';
|
|
2
|
+
import type { SystemEvent } from './events/index.js';
|
|
1
3
|
export type Alignment = 'left' | 'right' | 'center';
|
|
2
4
|
export declare const FontFamilies: readonly ["default", "serif-bold", "serif-italic", "serif-italic-bold", "sans", "sans-bold", "sans-italic", "sans-italic-bold", "monospace", "double-struck", "fraktur", "fraktur-bold", "script", "script-bold"];
|
|
3
5
|
export type FontFamily = (typeof FontFamilies)[number];
|
|
@@ -10,3 +12,33 @@ export interface Edges {
|
|
|
10
12
|
bottom: number;
|
|
11
13
|
left: number;
|
|
12
14
|
}
|
|
15
|
+
export interface LegendItem {
|
|
16
|
+
key: string | string[];
|
|
17
|
+
label: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The abstract interface that Screen depends on. Any terminal backend
|
|
21
|
+
* (real terminal, test harness, web adapter, etc.) can implement this.
|
|
22
|
+
*/
|
|
23
|
+
export interface Program extends SGRTerminal {
|
|
24
|
+
/**
|
|
25
|
+
* Prepare the terminal for fullscreen app mode (e.g. enter alt buffer,
|
|
26
|
+
* enable mouse, hide cursor). Called once before the first render.
|
|
27
|
+
*/
|
|
28
|
+
setup(): void;
|
|
29
|
+
/**
|
|
30
|
+
* Restore the terminal to its original state (e.g. exit alt buffer,
|
|
31
|
+
* show cursor). Called when the screen stops.
|
|
32
|
+
*/
|
|
33
|
+
teardown(): void;
|
|
34
|
+
/**
|
|
35
|
+
* Subscribe to system events (key, mouse, paste, focus/blur).
|
|
36
|
+
* Returns an unsubscribe function.
|
|
37
|
+
*/
|
|
38
|
+
onEvents(listener: (event: SystemEvent) => void): () => void;
|
|
39
|
+
/**
|
|
40
|
+
* Subscribe to terminal resize events.
|
|
41
|
+
* Returns an unsubscribe function.
|
|
42
|
+
*/
|
|
43
|
+
onResize(listener: () => void): () => void;
|
|
44
|
+
}
|
package/.dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../lib/types.ts"],"names":[],"mappings":"AAIA,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,SAAS;IACT,YAAY;IACZ,cAAc;IACd,mBAAmB;IACnB,MAAM;IACN,WAAW;IACX,aAAa;IACb,kBAAkB;IAClB,WAAW;IACX,eAAe;IACf,SAAS;IACT,cAAc;IACd,QAAQ;IACR,aAAa;CACL,CAAA"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
"contributors": [
|
|
6
6
|
"Shawn Chen <meishangchen@gmail.com>"
|
|
7
7
|
],
|
|
8
|
-
"version": "1.11.
|
|
8
|
+
"version": "1.11.9",
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"type": "module",
|
|
11
11
|
"preferGlobal": false,
|
|
@@ -38,16 +38,20 @@
|
|
|
38
38
|
"node": ">= 18.12.0"
|
|
39
39
|
},
|
|
40
40
|
"dependencies": {
|
|
41
|
-
"@teaui/
|
|
41
|
+
"@teaui/inspect": "1.11.9",
|
|
42
|
+
"@teaui/term": "1.11.9"
|
|
42
43
|
},
|
|
43
44
|
"devDependencies": {
|
|
44
|
-
"@teaui/shared": "1.11.
|
|
45
|
+
"@teaui/shared": "1.11.9"
|
|
46
|
+
},
|
|
47
|
+
"publishConfig": {
|
|
48
|
+
"access": "public"
|
|
45
49
|
},
|
|
46
50
|
"scripts": {
|
|
47
|
-
"gittag": "git tag $(node -e 'process.stdout.write(require(\"./package\").version)')",
|
|
48
51
|
"clean": "rm -rf .dist/",
|
|
49
52
|
"_build": "pnpm clean && pnpm tsc",
|
|
50
53
|
"build": "node ../../shared/check.js",
|
|
54
|
+
"typecheck": "tsc -p tsconfig.check.json --noEmit",
|
|
51
55
|
"test": "vitest run",
|
|
52
56
|
"test:watch": "vitest"
|
|
53
57
|
}
|
package/.dist/Theme.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Theme.js","sourceRoot":"","sources":["../lib/Theme.ts"],"names":[],"mappings":"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"}
|
package/.dist/inspect.d.ts
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export declare function isDebugging(enabled?: boolean): boolean;
|
|
2
|
-
export declare function inspect(value: any, wrap?: boolean, recursionDepth?: number, visited?: Set<unknown>): string;
|
|
3
|
-
interface Colorize {
|
|
4
|
-
format(input: any): string;
|
|
5
|
-
number(input: number): string;
|
|
6
|
-
symbol(input: symbol): string;
|
|
7
|
-
string(input: string, doQuote?: boolean): string;
|
|
8
|
-
key(input: string | symbol | number): string;
|
|
9
|
-
boolean(input: boolean): string;
|
|
10
|
-
undefined(): string;
|
|
11
|
-
null(): string;
|
|
12
|
-
}
|
|
13
|
-
export declare const colorize: Colorize;
|
|
14
|
-
export {};
|
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
|