@teaui/core 1.1.4
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 +21 -0
- package/.dist/Buffer.js +140 -0
- package/.dist/Buffer.js.map +1 -0
- package/.dist/Color.d.ts +7 -0
- package/.dist/Color.js +39 -0
- package/.dist/Color.js.map +1 -0
- package/.dist/Container.d.ts +21 -0
- package/.dist/Container.js +138 -0
- package/.dist/Container.js.map +1 -0
- package/.dist/Screen.d.ts +54 -0
- package/.dist/Screen.js +278 -0
- package/.dist/Screen.js.map +1 -0
- package/.dist/Style.d.ts +46 -0
- package/.dist/Style.js +433 -0
- package/.dist/Style.js.map +1 -0
- package/.dist/System.d.ts +13 -0
- package/.dist/System.js +26 -0
- package/.dist/System.js.map +1 -0
- package/.dist/Theme.d.ts +56 -0
- package/.dist/Theme.js +157 -0
- package/.dist/Theme.js.map +1 -0
- package/.dist/UI.d.ts +2 -0
- package/.dist/UI.js +28 -0
- package/.dist/UI.js.map +1 -0
- package/.dist/View.d.ts +99 -0
- package/.dist/View.js +374 -0
- package/.dist/View.js.map +1 -0
- package/.dist/Viewport.d.ts +89 -0
- package/.dist/Viewport.js +295 -0
- package/.dist/Viewport.js.map +1 -0
- package/.dist/ansi.d.ts +31 -0
- package/.dist/ansi.js +139 -0
- package/.dist/ansi.js.map +1 -0
- package/.dist/components/Accordion.d.ts +47 -0
- package/.dist/components/Accordion.js +294 -0
- package/.dist/components/Accordion.js.map +1 -0
- package/.dist/components/Box.d.ts +67 -0
- package/.dist/components/Box.js +211 -0
- package/.dist/components/Box.js.map +1 -0
- package/.dist/components/Button.d.ts +28 -0
- package/.dist/components/Button.js +118 -0
- package/.dist/components/Button.js.map +1 -0
- package/.dist/components/Checkbox.d.ts +31 -0
- package/.dist/components/Checkbox.js +106 -0
- package/.dist/components/Checkbox.js.map +1 -0
- package/.dist/components/Collapsible.d.ts +32 -0
- package/.dist/components/Collapsible.js +109 -0
- package/.dist/components/Collapsible.js.map +1 -0
- package/.dist/components/CollapsibleText.d.ts +21 -0
- package/.dist/components/CollapsibleText.js +113 -0
- package/.dist/components/CollapsibleText.js.map +1 -0
- package/.dist/components/Digits.d.ts +20 -0
- package/.dist/components/Digits.js +843 -0
- package/.dist/components/Digits.js.map +1 -0
- package/.dist/components/Drawer.d.ts +44 -0
- package/.dist/components/Drawer.js +473 -0
- package/.dist/components/Drawer.js.map +1 -0
- package/.dist/components/Dropdown.d.ts +61 -0
- package/.dist/components/Dropdown.js +367 -0
- package/.dist/components/Dropdown.js.map +1 -0
- package/.dist/components/Header.d.ts +25 -0
- package/.dist/components/Header.js +106 -0
- package/.dist/components/Header.js.map +1 -0
- package/.dist/components/HotKey.d.ts +14 -0
- package/.dist/components/HotKey.js +31 -0
- package/.dist/components/HotKey.js.map +1 -0
- package/.dist/components/Input.d.ts +45 -0
- package/.dist/components/Input.js +1109 -0
- package/.dist/components/Input.js.map +1 -0
- package/.dist/components/Log.d.ts +16 -0
- package/.dist/components/Log.js +122 -0
- package/.dist/components/Log.js.map +1 -0
- package/.dist/components/Progress.d.ts +21 -0
- package/.dist/components/Progress.js +200 -0
- package/.dist/components/Progress.js.map +1 -0
- package/.dist/components/Scrollable.d.ts +50 -0
- package/.dist/components/Scrollable.js +226 -0
- package/.dist/components/Scrollable.js.map +1 -0
- package/.dist/components/ScrollableList.d.ts +70 -0
- package/.dist/components/ScrollableList.js +354 -0
- package/.dist/components/ScrollableList.js.map +1 -0
- package/.dist/components/Separator.d.ts +21 -0
- package/.dist/components/Separator.js +67 -0
- package/.dist/components/Separator.js.map +1 -0
- package/.dist/components/Slider.d.ts +60 -0
- package/.dist/components/Slider.js +341 -0
- package/.dist/components/Slider.js.map +1 -0
- package/.dist/components/Space.d.ts +19 -0
- package/.dist/components/Space.js +45 -0
- package/.dist/components/Space.js.map +1 -0
- package/.dist/components/Spinner.d.ts +16 -0
- package/.dist/components/Spinner.js +48 -0
- package/.dist/components/Spinner.js.map +1 -0
- package/.dist/components/Stack.d.ts +33 -0
- package/.dist/components/Stack.js +285 -0
- package/.dist/components/Stack.js.map +1 -0
- package/.dist/components/Tabs.d.ts +52 -0
- package/.dist/components/Tabs.js +312 -0
- package/.dist/components/Tabs.js.map +1 -0
- package/.dist/components/Text.d.ts +35 -0
- package/.dist/components/Text.js +242 -0
- package/.dist/components/Text.js.map +1 -0
- package/.dist/components/ToggleGroup.d.ts +26 -0
- package/.dist/components/ToggleGroup.js +279 -0
- package/.dist/components/ToggleGroup.js.map +1 -0
- package/.dist/components/Tree.d.ts +21 -0
- package/.dist/components/Tree.js +233 -0
- package/.dist/components/Tree.js.map +1 -0
- package/.dist/components/Window.d.ts +6 -0
- package/.dist/components/Window.js +17 -0
- package/.dist/components/Window.js.map +1 -0
- package/.dist/components/fonts.d.ts +2 -0
- package/.dist/components/fonts.js +39 -0
- package/.dist/components/fonts.js.map +1 -0
- package/.dist/components/index.d.ts +27 -0
- package/.dist/components/index.js +48 -0
- package/.dist/components/index.js.map +1 -0
- package/.dist/components/types.d.ts +6 -0
- package/.dist/components/types.js +20 -0
- package/.dist/components/types.js.map +1 -0
- package/.dist/components/utility/TrackMouse.d.ts +16 -0
- package/.dist/components/utility/TrackMouse.js +53 -0
- package/.dist/components/utility/TrackMouse.js.map +1 -0
- package/.dist/components/utility/index.d.ts +1 -0
- package/.dist/components/utility/index.js +6 -0
- package/.dist/components/utility/index.js.map +1 -0
- package/.dist/events/index.d.ts +12 -0
- package/.dist/events/index.js +20 -0
- package/.dist/events/index.js.map +1 -0
- package/.dist/events/key.d.ts +15 -0
- package/.dist/events/key.js +105 -0
- package/.dist/events/key.js.map +1 -0
- package/.dist/events/mouse.d.ts +65 -0
- package/.dist/events/mouse.js +68 -0
- package/.dist/events/mouse.js.map +1 -0
- package/.dist/events/window.d.ts +6 -0
- package/.dist/events/window.js +3 -0
- package/.dist/events/window.js.map +1 -0
- package/.dist/geometry.d.ts +178 -0
- package/.dist/geometry.js +315 -0
- package/.dist/geometry.js.map +1 -0
- package/.dist/iTerm2.d.ts +20 -0
- package/.dist/iTerm2.js +60 -0
- package/.dist/iTerm2.js.map +1 -0
- package/.dist/index.d.ts +18 -0
- package/.dist/index.js +37 -0
- package/.dist/index.js.map +1 -0
- package/.dist/inspect.d.ts +2 -0
- package/.dist/inspect.js +118 -0
- package/.dist/inspect.js.map +1 -0
- package/.dist/log.d.ts +12 -0
- package/.dist/log.js +56 -0
- package/.dist/log.js.map +1 -0
- package/.dist/managers/FocusManager.d.ts +28 -0
- package/.dist/managers/FocusManager.js +143 -0
- package/.dist/managers/FocusManager.js.map +1 -0
- package/.dist/managers/ModalManager.d.ts +10 -0
- package/.dist/managers/ModalManager.js +67 -0
- package/.dist/managers/ModalManager.js.map +1 -0
- package/.dist/managers/MouseManager.d.ts +21 -0
- package/.dist/managers/MouseManager.js +313 -0
- package/.dist/managers/MouseManager.js.map +1 -0
- package/.dist/managers/TickManager.d.ts +11 -0
- package/.dist/managers/TickManager.js +63 -0
- package/.dist/managers/TickManager.js.map +1 -0
- package/.dist/sys/alias.d.ts +470 -0
- package/.dist/sys/alias.js +487 -0
- package/.dist/sys/alias.js.map +1 -0
- package/.dist/sys/colors.d.ts +10 -0
- package/.dist/sys/colors.js +285 -0
- package/.dist/sys/colors.js.map +1 -0
- package/.dist/sys/gpmclient.d.ts +11 -0
- package/.dist/sys/gpmclient.js +193 -0
- package/.dist/sys/gpmclient.js.map +1 -0
- package/.dist/sys/index.d.ts +4 -0
- package/.dist/sys/index.js +41 -0
- package/.dist/sys/index.js.map +1 -0
- package/.dist/sys/keys.d.ts +4 -0
- package/.dist/sys/keys.js +531 -0
- package/.dist/sys/keys.js.map +1 -0
- package/.dist/sys/program.d.ts +356 -0
- package/.dist/sys/program.js +3739 -0
- package/.dist/sys/program.js.map +1 -0
- package/.dist/sys/tput.d.ts +297 -0
- package/.dist/sys/tput.js +2708 -0
- package/.dist/sys/tput.js.map +1 -0
- package/.dist/sys/unicode.d.ts +11 -0
- package/.dist/sys/unicode.js +619 -0
- package/.dist/sys/unicode.js.map +1 -0
- package/.dist/sys/usr/linux +0 -0
- package/.dist/sys/usr/windows-ansi +0 -0
- package/.dist/sys/usr/xterm +0 -0
- package/.dist/sys/usr/xterm-256color +0 -0
- package/.dist/sys/usr/xterm.termcap +243 -0
- package/.dist/sys/usr/xterm.terminfo +1977 -0
- package/.dist/terminal.d.ts +7 -0
- package/.dist/terminal.js +3 -0
- package/.dist/terminal.js.map +1 -0
- package/.dist/util.d.ts +22 -0
- package/.dist/util.js +79 -0
- package/.dist/util.js.map +1 -0
- package/LICENSE +24 -0
- package/package.json +49 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Terminal, SGRTerminal } from './terminal';
|
|
2
|
+
import type { Color } from './Color';
|
|
3
|
+
import { Style } from './Style';
|
|
4
|
+
import { Size } from './geometry';
|
|
5
|
+
export declare class Buffer implements Terminal {
|
|
6
|
+
#private;
|
|
7
|
+
size: Size;
|
|
8
|
+
setForeground(fg: Color): void;
|
|
9
|
+
setBackground(bg: Color): void;
|
|
10
|
+
resize(size: Size): void;
|
|
11
|
+
/**
|
|
12
|
+
* Writes the string at the cursor from left to write. Exits on newline (no default
|
|
13
|
+
* wrapping behavior).
|
|
14
|
+
*/
|
|
15
|
+
writeChar(char: string, x: number, y: number, style: Style): void;
|
|
16
|
+
/**
|
|
17
|
+
* For ANSI sequences that aren't related to any specific character.
|
|
18
|
+
*/
|
|
19
|
+
writeMeta(str: string): void;
|
|
20
|
+
flush(terminal: SGRTerminal): void;
|
|
21
|
+
}
|
package/.dist/Buffer.js
ADDED
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Buffer = void 0;
|
|
4
|
+
const sys_1 = require("./sys");
|
|
5
|
+
const ansi_1 = require("./ansi");
|
|
6
|
+
const Style_1 = require("./Style");
|
|
7
|
+
const geometry_1 = require("./geometry");
|
|
8
|
+
class Buffer {
|
|
9
|
+
size = geometry_1.Size.zero;
|
|
10
|
+
#meta = '';
|
|
11
|
+
#canvas = new Map();
|
|
12
|
+
#prev = new Map();
|
|
13
|
+
setForeground(fg) { }
|
|
14
|
+
setBackground(bg) { }
|
|
15
|
+
resize(size) {
|
|
16
|
+
if (size.width !== this.size.width || size.height !== this.size.height) {
|
|
17
|
+
this.#prev = new Map();
|
|
18
|
+
}
|
|
19
|
+
this.size = size;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Writes the string at the cursor from left to write. Exits on newline (no default
|
|
23
|
+
* wrapping behavior).
|
|
24
|
+
*/
|
|
25
|
+
writeChar(char, x, y, style) {
|
|
26
|
+
x = ~~x;
|
|
27
|
+
y = ~~y;
|
|
28
|
+
if (char === '\n') {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const width = sys_1.unicode.charWidth(char);
|
|
32
|
+
if (width === 0) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
if (x < 0 || x >= this.size.width || y < 0 || y >= this.size.height) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
let line = this.#canvas.get(y);
|
|
39
|
+
if (line) {
|
|
40
|
+
const prev = line.get(x);
|
|
41
|
+
if (prev?.char === ansi_1.BG_DRAW) {
|
|
42
|
+
const { foreground, background } = prev.style;
|
|
43
|
+
if (style.foreground === undefined) {
|
|
44
|
+
style = style.merge({ foreground });
|
|
45
|
+
}
|
|
46
|
+
if (style.background === undefined) {
|
|
47
|
+
style = style.merge({ background });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const leftChar = line.get(x - 1);
|
|
51
|
+
if (leftChar && leftChar.width === 2) {
|
|
52
|
+
// hides a 2-width character that this character is overlapping
|
|
53
|
+
line.set(x - 1, { char: ' ', width: 1, style: leftChar.style });
|
|
54
|
+
// actually writes the character, and records the hidden character
|
|
55
|
+
line.set(x, { char, width, style, hiding: leftChar });
|
|
56
|
+
if (width === 2) {
|
|
57
|
+
line.delete(x + 1);
|
|
58
|
+
}
|
|
59
|
+
const hiding = leftChar.hiding;
|
|
60
|
+
if (hiding) {
|
|
61
|
+
line.set(x - 2, hiding);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// actually writes the character
|
|
66
|
+
line.set(x, { char, width, style });
|
|
67
|
+
if (width === 2) {
|
|
68
|
+
line.delete(x + 1);
|
|
69
|
+
}
|
|
70
|
+
const next = line.get(x + 1);
|
|
71
|
+
if (next && next.hiding) {
|
|
72
|
+
// the next character can no longer be "hiding" the previous character (this
|
|
73
|
+
// character)
|
|
74
|
+
line.set(x + 1, { ...next, hiding: undefined });
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
line = new Map([[x, { char, width, style }]]);
|
|
80
|
+
this.#canvas.set(y, line);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* For ANSI sequences that aren't related to any specific character.
|
|
85
|
+
*/
|
|
86
|
+
writeMeta(str) {
|
|
87
|
+
this.#meta += str;
|
|
88
|
+
}
|
|
89
|
+
flush(terminal) {
|
|
90
|
+
if (this.#meta) {
|
|
91
|
+
terminal.write(this.#meta);
|
|
92
|
+
}
|
|
93
|
+
let prevStyle = Style_1.Style.NONE;
|
|
94
|
+
for (let y = 0; y < this.size.height; y++) {
|
|
95
|
+
const line = this.#canvas.get(y) ?? new Map();
|
|
96
|
+
const prevLine = this.#prev.get(y) ?? new Map();
|
|
97
|
+
this.#prev.set(y, prevLine);
|
|
98
|
+
let didWrite = false;
|
|
99
|
+
let dx = 1;
|
|
100
|
+
for (let x = 0; x < this.size.width; x += dx) {
|
|
101
|
+
const chrInfo = line.get(x) ?? { char: ' ', style: Style_1.Style.NONE, width: 1 };
|
|
102
|
+
const prevInfo = prevLine.get(x);
|
|
103
|
+
dx = chrInfo.width;
|
|
104
|
+
if (prevInfo && isCharEqual(chrInfo, prevInfo)) {
|
|
105
|
+
didWrite = false;
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (!didWrite) {
|
|
109
|
+
didWrite = true;
|
|
110
|
+
terminal.move(x, y);
|
|
111
|
+
}
|
|
112
|
+
let { char, style } = chrInfo;
|
|
113
|
+
if (char === ansi_1.BG_DRAW) {
|
|
114
|
+
char = ' ';
|
|
115
|
+
}
|
|
116
|
+
if (!prevStyle.isEqual(style)) {
|
|
117
|
+
terminal.write(style.toSGR(prevStyle));
|
|
118
|
+
prevStyle = style;
|
|
119
|
+
}
|
|
120
|
+
terminal.write(char);
|
|
121
|
+
prevLine.set(x, chrInfo);
|
|
122
|
+
if (chrInfo.width === 2) {
|
|
123
|
+
prevLine.delete(x + 1);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (prevStyle !== Style_1.Style.NONE) {
|
|
128
|
+
terminal.write('\x1b[0m');
|
|
129
|
+
}
|
|
130
|
+
terminal.flush();
|
|
131
|
+
this.#canvas = new Map();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.Buffer = Buffer;
|
|
135
|
+
function isCharEqual(lhs, rhs) {
|
|
136
|
+
return (lhs.char === rhs.char &&
|
|
137
|
+
lhs.width === rhs.width &&
|
|
138
|
+
lhs.style.isEqual(rhs.style));
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=Buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Buffer.js","sourceRoot":"","sources":["../lib/Buffer.ts"],"names":[],"mappings":";;;AAAA,+BAA6B;AAI7B,iCAA8B;AAC9B,mCAA6B;AAC7B,yCAA+B;AAI/B,MAAa,MAAM;IACjB,IAAI,GAAS,eAAI,CAAC,IAAI,CAAA;IAEtB,KAAK,GAAW,EAAE,CAAA;IAClB,OAAO,GAAmC,IAAI,GAAG,EAAE,CAAA;IACnD,KAAK,GAAmC,IAAI,GAAG,EAAE,CAAA;IAEjD,aAAa,CAAC,EAAS,IAAS,CAAC;IACjC,aAAa,CAAC,EAAS,IAAS,CAAC;IAEjC,MAAM,CAAC,IAAU;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,IAAI,GAAG,EAAE,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;IAClB,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,IAAY,EAAE,CAAS,EAAE,CAAS,EAAE,KAAY;QACxD,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACP,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACP,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,aAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAM;QACR,CAAC;QAED,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACpE,OAAM;QACR,CAAC;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;YACxB,IAAI,IAAI,EAAE,IAAI,KAAK,cAAO,EAAE,CAAC;gBAC3B,MAAM,EAAC,UAAU,EAAE,UAAU,EAAC,GAAG,IAAI,CAAC,KAAK,CAAA;gBAC3C,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACnC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,CAAA;gBACnC,CAAC;gBACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;oBACnC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,EAAC,UAAU,EAAC,CAAC,CAAA;gBACnC,CAAC;YACH,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;YAChC,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;gBACrC,+DAA+D;gBAC/D,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAC,CAAC,CAAA;gBAE7D,kEAAkE;gBAClE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAA;gBACnD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACpB,CAAC;gBAED,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAA;gBAC9B,IAAI,MAAM,EAAE,CAAC;oBACX,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAA;gBACzB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gCAAgC;gBAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAA;gBACjC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACpB,CAAC;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBAC5B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBACxB,4EAA4E;oBAC5E,aAAa;oBACb,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,EAAC,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAC,CAAC,CAAA;gBAC/C,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,CAAA;YAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,GAAW;QACnB,IAAI,CAAC,KAAK,IAAI,GAAG,CAAA;IACnB,CAAC;IAED,KAAK,CAAC,QAAqB;QACzB,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QAED,IAAI,SAAS,GAAG,aAAK,CAAC,IAAI,CAAA;QAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,EAAgB,CAAA;YAC3D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,EAAgB,CAAA;YAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;YAE3B,IAAI,QAAQ,GAAG,KAAK,CAAA;YACpB,IAAI,EAAE,GAAG,CAAC,CAAA;YACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,aAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,EAAC,CAAA;gBACvE,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;gBAChC,EAAE,GAAG,OAAO,CAAC,KAAK,CAAA;gBAElB,IAAI,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,CAAC;oBAC/C,QAAQ,GAAG,KAAK,CAAA;oBAChB,SAAQ;gBACV,CAAC;gBAED,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAA;oBACf,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;gBACrB,CAAC;gBAED,IAAI,EAAC,IAAI,EAAE,KAAK,EAAC,GAAG,OAAO,CAAA;gBAC3B,IAAI,IAAI,KAAK,cAAO,EAAE,CAAC;oBACrB,IAAI,GAAG,GAAG,CAAA;gBACZ,CAAC;gBAED,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBAC9B,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA;oBACtC,SAAS,GAAG,KAAK,CAAA;gBACnB,CAAC;gBACD,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBACpB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;gBACxB,IAAI,OAAO,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;oBACxB,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,SAAS,KAAK,aAAK,CAAC,IAAI,EAAE,CAAC;YAC7B,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;QAC3B,CAAC;QACD,QAAQ,CAAC,KAAK,EAAE,CAAA;QAEhB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;IAC1B,CAAC;CACF;AAjJD,wBAiJC;AAED,SAAS,WAAW,CAAC,GAAS,EAAE,GAAS;IACvC,OAAO,CACL,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;QACrB,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;QACvB,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAC7B,CAAA;AACH,CAAC"}
|
package/.dist/Color.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type Color = 'default' | 'black' | 'red' | 'green' | 'yellow' | 'blue' | 'magenta' | 'cyan' | 'white' | 'gray' | 'grey' | 'brightRed' | 'brightGreen' | 'brightYellow' | 'brightBlue' | 'brightMagenta' | 'brightCyan' | 'brightWhite' | {
|
|
2
|
+
sgr: string | number;
|
|
3
|
+
} | {
|
|
4
|
+
grayscale: number;
|
|
5
|
+
} | [r: number, g: number, b: number] | `#${string}`;
|
|
6
|
+
export declare function colorToHex(color: Color): `#${string}`;
|
|
7
|
+
export declare function colorToSGR(color: Color, fgbg: 'fg' | 'bg'): string;
|
package/.dist/Color.js
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.colorToHex = colorToHex;
|
|
4
|
+
exports.colorToSGR = colorToSGR;
|
|
5
|
+
const sys_1 = require("./sys");
|
|
6
|
+
function colorToHex(color) {
|
|
7
|
+
if (Array.isArray(color)) {
|
|
8
|
+
return sys_1.colors.RGBtoHex(color);
|
|
9
|
+
}
|
|
10
|
+
else if (typeof color === 'string' && color.startsWith('#')) {
|
|
11
|
+
return color;
|
|
12
|
+
}
|
|
13
|
+
else if (typeof color === 'object' && 'sgr' in color) {
|
|
14
|
+
return sys_1.colors.indexToHex(+color.sgr);
|
|
15
|
+
}
|
|
16
|
+
else if (typeof color === 'object' && 'grayscale' in color) {
|
|
17
|
+
return sys_1.colors.RGBtoHex(color.grayscale, color.grayscale, color.grayscale);
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
const index = sys_1.colors.nameToIndex(color);
|
|
21
|
+
return index === -1 ? '#ffffff' : sys_1.colors.indexToHex(index);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function colorToSGR(color, fgbg) {
|
|
25
|
+
if (typeof color === 'object' && 'sgr' in color) {
|
|
26
|
+
return `${color.sgr} ${fgbg}`;
|
|
27
|
+
}
|
|
28
|
+
else if (Array.isArray(color)) {
|
|
29
|
+
return `${colorToHex(color)} ${fgbg}`;
|
|
30
|
+
}
|
|
31
|
+
else if (typeof color === 'object' && 'grayscale' in color) {
|
|
32
|
+
const gray = 232 + Math.round((color.grayscale / 255) * 23);
|
|
33
|
+
return `${colorToHex(color)}(${gray}) ${fgbg}`;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
return `${color} ${fgbg}`;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=Color.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Color.js","sourceRoot":"","sources":["../lib/Color.ts"],"names":[],"mappings":";;AAuCA,gCAaC;AAED,gCAWC;AAjED,+BAAqC;AAuCrC,SAAgB,UAAU,CAAC,KAAY;IACrC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,YAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC/B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC9D,OAAO,KAAqB,CAAA;IAC9B,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QACvD,OAAO,YAAM,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QAC7D,OAAO,YAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3E,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,YAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACvC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;IAC5D,CAAC;AACH,CAAC;AAED,SAAgB,UAAU,CAAC,KAAY,EAAE,IAAiB;IACxD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;QAChD,OAAO,GAAG,KAAK,CAAC,GAAG,IAAI,IAAI,EAAE,CAAA;IAC/B,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAA;IACvC,CAAC;SAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;QAC7D,MAAM,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,CAAC,CAAA;QAC3D,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAA;IAChD,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,KAAK,IAAI,IAAI,EAAE,CAAA;IAC3B,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Size } from './geometry';
|
|
2
|
+
import type { Viewport } from './Viewport';
|
|
3
|
+
import { type Props as ViewProps, View } from './View';
|
|
4
|
+
import { Screen } from './Screen';
|
|
5
|
+
export interface Props extends ViewProps {
|
|
6
|
+
child?: View;
|
|
7
|
+
children?: View[];
|
|
8
|
+
}
|
|
9
|
+
export declare abstract class Container extends View {
|
|
10
|
+
#private;
|
|
11
|
+
constructor({ child, children, ...viewProps }?: Props);
|
|
12
|
+
get children(): View[];
|
|
13
|
+
update(props: Props): void;
|
|
14
|
+
naturalSize(available: Size): Size;
|
|
15
|
+
render(viewport: Viewport): void;
|
|
16
|
+
renderChildren(viewport: Viewport): void;
|
|
17
|
+
add(child: View, at?: number): void;
|
|
18
|
+
removeAllChildren(): void;
|
|
19
|
+
removeChild(child: View): void;
|
|
20
|
+
moveToScreen(screen: Screen | undefined): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Container = void 0;
|
|
4
|
+
const geometry_1 = require("./geometry");
|
|
5
|
+
const View_1 = require("./View");
|
|
6
|
+
const util_1 = require("./util");
|
|
7
|
+
class Container extends View_1.View {
|
|
8
|
+
#children = [];
|
|
9
|
+
constructor({ child, children, ...viewProps } = {}) {
|
|
10
|
+
super(viewProps);
|
|
11
|
+
(0, util_1.define)(this, 'children', { enumerable: true });
|
|
12
|
+
if (child) {
|
|
13
|
+
this.add(child);
|
|
14
|
+
}
|
|
15
|
+
else if (children) {
|
|
16
|
+
for (const child of children) {
|
|
17
|
+
this.add(child);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
get children() {
|
|
22
|
+
return this.#children;
|
|
23
|
+
}
|
|
24
|
+
update(props) {
|
|
25
|
+
this.#update(props);
|
|
26
|
+
super.update(props);
|
|
27
|
+
}
|
|
28
|
+
#update({ child, children }) {
|
|
29
|
+
// Stack recreates this logic
|
|
30
|
+
if (child !== undefined) {
|
|
31
|
+
children = (children ?? []).concat([child]);
|
|
32
|
+
}
|
|
33
|
+
if (children === undefined) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (children.length) {
|
|
37
|
+
const childrenSet = new Set(children);
|
|
38
|
+
for (const child of this.#children) {
|
|
39
|
+
if (!childrenSet.has(child)) {
|
|
40
|
+
this.#removeChild(child);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const child of children) {
|
|
44
|
+
this.add(child);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
this.removeAllChildren();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
naturalSize(available) {
|
|
52
|
+
let width = 0;
|
|
53
|
+
let height = 0;
|
|
54
|
+
for (const child of this.#children) {
|
|
55
|
+
if (!child.isVisible) {
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
const naturalSize = child.naturalSize(available);
|
|
59
|
+
width = Math.max(width, naturalSize.width);
|
|
60
|
+
height = Math.max(height, naturalSize.height);
|
|
61
|
+
}
|
|
62
|
+
return new geometry_1.Size(width, height);
|
|
63
|
+
}
|
|
64
|
+
render(viewport) {
|
|
65
|
+
this.renderChildren(viewport);
|
|
66
|
+
}
|
|
67
|
+
renderChildren(viewport) {
|
|
68
|
+
for (const child of this.#children) {
|
|
69
|
+
if (!child.isVisible) {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
child.render(viewport);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
add(child, at) {
|
|
76
|
+
// early exit for adding child at its current index
|
|
77
|
+
if (this.#children.length &&
|
|
78
|
+
this.#children[at ?? this.#children.length - 1] === child) {
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
if (child.parent === this) {
|
|
82
|
+
// only changing the order - remove it from this.#children, and add it back
|
|
83
|
+
// below at the correct index
|
|
84
|
+
this.#children = this.#children.filter(view => view !== child);
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
child.willMoveTo(this);
|
|
88
|
+
if (child.parent && child.parent instanceof Container) {
|
|
89
|
+
const index = child.parent.#children.indexOf(child);
|
|
90
|
+
if (~index) {
|
|
91
|
+
child.parent.#children.splice(index, 1);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.#children.splice(at ?? this.#children.length, 0, child);
|
|
96
|
+
if (child.parent !== this) {
|
|
97
|
+
const parent = child.parent;
|
|
98
|
+
child.parent = this;
|
|
99
|
+
if (parent) {
|
|
100
|
+
child.didMoveFrom(parent);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// in theory we could call 'didReorder' in the else clause
|
|
104
|
+
// takes care of didMount, noop if screen == this.screen
|
|
105
|
+
child.moveToScreen(this.screen);
|
|
106
|
+
this.invalidateSize();
|
|
107
|
+
}
|
|
108
|
+
#removeChild(child) {
|
|
109
|
+
child.parent = undefined;
|
|
110
|
+
child.didMoveFrom(this);
|
|
111
|
+
// takes care of didUnmount
|
|
112
|
+
child.moveToScreen(undefined);
|
|
113
|
+
}
|
|
114
|
+
removeAllChildren() {
|
|
115
|
+
for (const child of this.#children) {
|
|
116
|
+
this.removeChild(child);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
removeChild(child) {
|
|
120
|
+
if (child.parent !== this) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
const index = this.#children.indexOf(child);
|
|
124
|
+
if (~index && index >= 0 && index < this.#children.length) {
|
|
125
|
+
const child = this.#children[index];
|
|
126
|
+
this.#children.splice(index, 1);
|
|
127
|
+
this.#removeChild(child);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
moveToScreen(screen) {
|
|
131
|
+
super.moveToScreen(screen);
|
|
132
|
+
for (const child of this.#children) {
|
|
133
|
+
child.moveToScreen(this.screen);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
exports.Container = Container;
|
|
138
|
+
//# sourceMappingURL=Container.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Container.js","sourceRoot":"","sources":["../lib/Container.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import type { BlessedProgram } from './sys';
|
|
2
|
+
import type { SGRTerminal } from './terminal';
|
|
3
|
+
import type { Rect, Point } from './geometry';
|
|
4
|
+
import { View } from './View';
|
|
5
|
+
import type { HotKeyDef, KeyEvent, MouseEventListenerName, SystemEvent, SystemMouseEvent } from './events';
|
|
6
|
+
import { Window } from './components/Window';
|
|
7
|
+
type ViewConstructor<T extends View> = (program: BlessedProgram) => T | Promise<T>;
|
|
8
|
+
export declare class Screen {
|
|
9
|
+
#private;
|
|
10
|
+
rootView: View;
|
|
11
|
+
static reset(): void;
|
|
12
|
+
static start(): Promise<[Screen, BlessedProgram, Window]>;
|
|
13
|
+
static start<T extends View>(viewConstructor: T | ViewConstructor<T>, opts: {
|
|
14
|
+
quitChar?: 'c' | 'q' | '' | undefined | false;
|
|
15
|
+
}): Promise<[Screen, BlessedProgram, T]>;
|
|
16
|
+
static start<T extends View>(viewConstructor: T | ViewConstructor<T>): Promise<[Screen, BlessedProgram, T]>;
|
|
17
|
+
constructor(program: SGRTerminal, rootView: View);
|
|
18
|
+
onExit(callback: () => void): void;
|
|
19
|
+
start(): void;
|
|
20
|
+
exit(): void;
|
|
21
|
+
trigger(event: SystemEvent): void;
|
|
22
|
+
/**
|
|
23
|
+
* Requests a modal. A modal will be created if:
|
|
24
|
+
* (a) no modal is already displayed
|
|
25
|
+
* or
|
|
26
|
+
* (b) a modal is requesting a nested modal
|
|
27
|
+
*/
|
|
28
|
+
requestModal(parent: View, modal: View, onClose: () => void, rect: Rect): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* @return boolean Whether the current view has focus
|
|
31
|
+
*/
|
|
32
|
+
registerFocus(view: View): boolean;
|
|
33
|
+
registerHotKey(view: View, key: HotKeyDef): void;
|
|
34
|
+
requestFocus(view: View): boolean;
|
|
35
|
+
nextFocus(): void;
|
|
36
|
+
prevFocus(): void;
|
|
37
|
+
triggerKeyboard(event: KeyEvent): void;
|
|
38
|
+
/**
|
|
39
|
+
* @see MouseManager.registerMouse
|
|
40
|
+
*/
|
|
41
|
+
registerMouse(view: View, offset: Point, point: Point, eventNames: MouseEventListenerName[]): void;
|
|
42
|
+
checkMouse(view: View, x: number, y: number): void;
|
|
43
|
+
triggerMouse(systemEvent: SystemMouseEvent): void;
|
|
44
|
+
registerTick(view: View): void;
|
|
45
|
+
triggerTick(dt: number): void;
|
|
46
|
+
preRender(view: View): void;
|
|
47
|
+
/**
|
|
48
|
+
* @return boolean Whether or not to rerender the view due to focus or mouse change
|
|
49
|
+
*/
|
|
50
|
+
commit(): boolean;
|
|
51
|
+
needsRender(): void;
|
|
52
|
+
render(): void;
|
|
53
|
+
}
|
|
54
|
+
export {};
|