@teaui/term 0.1.0
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/ansi.d.ts +45 -0
- package/.dist/ansi.d.ts.map +1 -0
- package/.dist/ansi.js +254 -0
- package/.dist/ansi.js.map +1 -0
- package/.dist/buffer.d.ts +27 -0
- package/.dist/buffer.d.ts.map +1 -0
- package/.dist/buffer.js +112 -0
- package/.dist/buffer.js.map +1 -0
- package/.dist/colors.d.ts +31 -0
- package/.dist/colors.d.ts.map +1 -0
- package/.dist/colors.js +260 -0
- package/.dist/colors.js.map +1 -0
- package/.dist/cursor.d.ts +20 -0
- package/.dist/cursor.d.ts.map +1 -0
- package/.dist/cursor.js +64 -0
- package/.dist/cursor.js.map +1 -0
- package/.dist/image.d.ts +5 -0
- package/.dist/image.d.ts.map +1 -0
- package/.dist/image.js +49 -0
- package/.dist/image.js.map +1 -0
- package/.dist/index.d.ts +17 -0
- package/.dist/index.d.ts.map +1 -0
- package/.dist/index.js +27 -0
- package/.dist/index.js.map +1 -0
- package/.dist/input.d.ts +11 -0
- package/.dist/input.d.ts.map +1 -0
- package/.dist/input.js +287 -0
- package/.dist/input.js.map +1 -0
- package/.dist/modern.d.ts +14 -0
- package/.dist/modern.d.ts.map +1 -0
- package/.dist/modern.js +83 -0
- package/.dist/modern.js.map +1 -0
- package/.dist/screen.d.ts +17 -0
- package/.dist/screen.d.ts.map +1 -0
- package/.dist/screen.js +82 -0
- package/.dist/screen.js.map +1 -0
- package/.dist/sgr.d.ts +25 -0
- package/.dist/sgr.d.ts.map +1 -0
- package/.dist/sgr.js +160 -0
- package/.dist/sgr.js.map +1 -0
- package/.dist/style.d.ts +25 -0
- package/.dist/style.d.ts.map +1 -0
- package/.dist/style.js +53 -0
- package/.dist/style.js.map +1 -0
- package/.dist/terminal.d.ts +84 -0
- package/.dist/terminal.d.ts.map +1 -0
- package/.dist/terminal.js +325 -0
- package/.dist/terminal.js.map +1 -0
- package/.dist/types.d.ts +80 -0
- package/.dist/types.d.ts.map +1 -0
- package/.dist/types.js +15 -0
- package/.dist/types.js.map +1 -0
- package/.dist/unicode.d.ts +65 -0
- package/.dist/unicode.d.ts.map +1 -0
- package/.dist/unicode.js +574 -0
- package/.dist/unicode.js.map +1 -0
- package/LICENSE +24 -0
- package/package.json +36 -0
package/.dist/ansi.d.ts
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { Color, TextAttribute, CursorShape } from './types.js';
|
|
2
|
+
export declare const ESC = "\u001B";
|
|
3
|
+
export declare const CSI = "\u001B[";
|
|
4
|
+
export declare const OSC = "\u001B]";
|
|
5
|
+
export declare const ST = "\u001B\\";
|
|
6
|
+
export declare function cursorTo(x: number, y: number): string;
|
|
7
|
+
export declare function cursorMove(dx: number, dy: number): string;
|
|
8
|
+
export declare function cursorUp(n: number): string;
|
|
9
|
+
export declare function cursorDown(n: number): string;
|
|
10
|
+
export declare function cursorForward(n: number): string;
|
|
11
|
+
export declare function cursorBack(n: number): string;
|
|
12
|
+
export declare function cursorNextLine(n: number): string;
|
|
13
|
+
export declare function cursorPrevLine(n: number): string;
|
|
14
|
+
export declare function cursorColumn(x: number): string;
|
|
15
|
+
export declare function cursorSave(): string;
|
|
16
|
+
export declare function cursorRestore(): string;
|
|
17
|
+
export declare function cursorShow(): string;
|
|
18
|
+
export declare function cursorHide(): string;
|
|
19
|
+
export declare function cursorShape(shape: CursorShape): string;
|
|
20
|
+
export declare function eraseScreen(): string;
|
|
21
|
+
export declare function eraseDown(): string;
|
|
22
|
+
export declare function eraseUp(): string;
|
|
23
|
+
export declare function eraseLine(): string;
|
|
24
|
+
export declare function eraseLineEnd(): string;
|
|
25
|
+
export declare function eraseLineStart(): string;
|
|
26
|
+
/** Erase n characters at cursor position (does not move cursor). */
|
|
27
|
+
export declare function eraseChars(n?: number): string;
|
|
28
|
+
export declare function scrollUp(n: number): string;
|
|
29
|
+
export declare function scrollDown(n: number): string;
|
|
30
|
+
/** Convert HSL (h: 0–360, s: 0–100, l: 0–100) to RGB (0–255 each). */
|
|
31
|
+
export declare function hslToRgb(h: number, s: number, l: number): [number, number, number];
|
|
32
|
+
export declare function fgReset(): string;
|
|
33
|
+
export declare function bgReset(): string;
|
|
34
|
+
export declare function fgColor(color: Color): string;
|
|
35
|
+
export declare function bgColor(color: Color): string;
|
|
36
|
+
export declare function textAttr(attr: TextAttribute): string;
|
|
37
|
+
export declare function textAttrOff(attr: TextAttribute): string;
|
|
38
|
+
export declare function resetAll(): string;
|
|
39
|
+
export declare function alternateBufferEnter(): string;
|
|
40
|
+
export declare function alternateBufferExit(): string;
|
|
41
|
+
export declare function focusEventsEnable(): string;
|
|
42
|
+
export declare function focusEventsDisable(): string;
|
|
43
|
+
export declare function mouseEnable(): string;
|
|
44
|
+
export declare function mouseDisable(): string;
|
|
45
|
+
//# sourceMappingURL=ansi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.d.ts","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EAKL,aAAa,EACb,WAAW,EACZ,MAAM,YAAY,CAAA;AAEnB,eAAO,MAAM,GAAG,WAAS,CAAA;AACzB,eAAO,MAAM,GAAG,YAAY,CAAA;AAC5B,eAAO,MAAM,GAAG,YAAY,CAAA;AAC5B,eAAO,MAAM,EAAE,aAAa,CAAA;AAI5B,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAOzD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAWD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAEtD;AAID,wBAAgB,WAAW,IAAI,MAAM,CAEpC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,CAAC,GAAE,MAAU,GAAG,MAAM,CAEhD;AAID,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE1C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE5C;AAsDD,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAYlF;AAWD,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAY5C;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAY5C;AA0BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEpD;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAEvD;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAEjC;AAID,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAID,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAID,wBAAgB,WAAW,IAAI,MAAM,CAOpC;AAED,wBAAgB,YAAY,IAAI,MAAM,CAOrC"}
|
package/.dist/ansi.js
ADDED
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
export const ESC = '\x1b';
|
|
2
|
+
export const CSI = `${ESC}[`;
|
|
3
|
+
export const OSC = `${ESC}]`;
|
|
4
|
+
export const ST = `${ESC}\\`;
|
|
5
|
+
// --- Cursor Movement ---
|
|
6
|
+
export function cursorTo(x, y) {
|
|
7
|
+
return `${CSI}${y + 1};${x + 1}H`;
|
|
8
|
+
}
|
|
9
|
+
export function cursorMove(dx, dy) {
|
|
10
|
+
let seq = '';
|
|
11
|
+
if (dy > 0)
|
|
12
|
+
seq += cursorDown(dy);
|
|
13
|
+
else if (dy < 0)
|
|
14
|
+
seq += cursorUp(-dy);
|
|
15
|
+
if (dx > 0)
|
|
16
|
+
seq += cursorForward(dx);
|
|
17
|
+
else if (dx < 0)
|
|
18
|
+
seq += cursorBack(-dx);
|
|
19
|
+
return seq;
|
|
20
|
+
}
|
|
21
|
+
export function cursorUp(n) {
|
|
22
|
+
return `${CSI}${n}A`;
|
|
23
|
+
}
|
|
24
|
+
export function cursorDown(n) {
|
|
25
|
+
return `${CSI}${n}B`;
|
|
26
|
+
}
|
|
27
|
+
export function cursorForward(n) {
|
|
28
|
+
return `${CSI}${n}C`;
|
|
29
|
+
}
|
|
30
|
+
export function cursorBack(n) {
|
|
31
|
+
return `${CSI}${n}D`;
|
|
32
|
+
}
|
|
33
|
+
export function cursorNextLine(n) {
|
|
34
|
+
return `${CSI}${n}E`;
|
|
35
|
+
}
|
|
36
|
+
export function cursorPrevLine(n) {
|
|
37
|
+
return `${CSI}${n}F`;
|
|
38
|
+
}
|
|
39
|
+
export function cursorColumn(x) {
|
|
40
|
+
return `${CSI}${x + 1}G`;
|
|
41
|
+
}
|
|
42
|
+
export function cursorSave() {
|
|
43
|
+
return `${ESC}7`;
|
|
44
|
+
}
|
|
45
|
+
export function cursorRestore() {
|
|
46
|
+
return `${ESC}8`;
|
|
47
|
+
}
|
|
48
|
+
export function cursorShow() {
|
|
49
|
+
return `${CSI}?25h`;
|
|
50
|
+
}
|
|
51
|
+
export function cursorHide() {
|
|
52
|
+
return `${CSI}?25l`;
|
|
53
|
+
}
|
|
54
|
+
const cursorShapeMap = {
|
|
55
|
+
blinkingBlock: 1,
|
|
56
|
+
block: 2,
|
|
57
|
+
blinkingUnderline: 3,
|
|
58
|
+
underline: 4,
|
|
59
|
+
blinkingBar: 5,
|
|
60
|
+
bar: 6,
|
|
61
|
+
};
|
|
62
|
+
export function cursorShape(shape) {
|
|
63
|
+
return `${CSI}${cursorShapeMap[shape]} q`;
|
|
64
|
+
}
|
|
65
|
+
// --- Erase ---
|
|
66
|
+
export function eraseScreen() {
|
|
67
|
+
return `${CSI}2J`;
|
|
68
|
+
}
|
|
69
|
+
export function eraseDown() {
|
|
70
|
+
return `${CSI}0J`;
|
|
71
|
+
}
|
|
72
|
+
export function eraseUp() {
|
|
73
|
+
return `${CSI}1J`;
|
|
74
|
+
}
|
|
75
|
+
export function eraseLine() {
|
|
76
|
+
return `${CSI}2K`;
|
|
77
|
+
}
|
|
78
|
+
export function eraseLineEnd() {
|
|
79
|
+
return `${CSI}0K`;
|
|
80
|
+
}
|
|
81
|
+
export function eraseLineStart() {
|
|
82
|
+
return `${CSI}1K`;
|
|
83
|
+
}
|
|
84
|
+
/** Erase n characters at cursor position (does not move cursor). */
|
|
85
|
+
export function eraseChars(n = 1) {
|
|
86
|
+
return `${CSI}${n}X`;
|
|
87
|
+
}
|
|
88
|
+
// --- Scroll ---
|
|
89
|
+
export function scrollUp(n) {
|
|
90
|
+
return `${CSI}${n}S`;
|
|
91
|
+
}
|
|
92
|
+
export function scrollDown(n) {
|
|
93
|
+
return `${CSI}${n}T`;
|
|
94
|
+
}
|
|
95
|
+
// --- Colors ---
|
|
96
|
+
const namedFgMap = {
|
|
97
|
+
black: 30,
|
|
98
|
+
red: 31,
|
|
99
|
+
green: 32,
|
|
100
|
+
yellow: 33,
|
|
101
|
+
blue: 34,
|
|
102
|
+
magenta: 35,
|
|
103
|
+
cyan: 36,
|
|
104
|
+
white: 37,
|
|
105
|
+
brightBlack: 90,
|
|
106
|
+
brightRed: 91,
|
|
107
|
+
brightGreen: 92,
|
|
108
|
+
brightYellow: 93,
|
|
109
|
+
brightBlue: 94,
|
|
110
|
+
brightMagenta: 95,
|
|
111
|
+
brightCyan: 96,
|
|
112
|
+
brightWhite: 97,
|
|
113
|
+
};
|
|
114
|
+
const namedBgMap = {
|
|
115
|
+
black: 40,
|
|
116
|
+
red: 41,
|
|
117
|
+
green: 42,
|
|
118
|
+
yellow: 43,
|
|
119
|
+
blue: 44,
|
|
120
|
+
magenta: 45,
|
|
121
|
+
cyan: 46,
|
|
122
|
+
white: 47,
|
|
123
|
+
brightBlack: 100,
|
|
124
|
+
brightRed: 101,
|
|
125
|
+
brightGreen: 102,
|
|
126
|
+
brightYellow: 103,
|
|
127
|
+
brightBlue: 104,
|
|
128
|
+
brightMagenta: 105,
|
|
129
|
+
brightCyan: 106,
|
|
130
|
+
brightWhite: 107,
|
|
131
|
+
};
|
|
132
|
+
function isRGB(c) {
|
|
133
|
+
return typeof c === 'object' && 'r' in c;
|
|
134
|
+
}
|
|
135
|
+
function isHSL(c) {
|
|
136
|
+
return typeof c === 'object' && 'h' in c;
|
|
137
|
+
}
|
|
138
|
+
function is256(c) {
|
|
139
|
+
return typeof c === 'object' && 'index' in c;
|
|
140
|
+
}
|
|
141
|
+
/** Convert HSL (h: 0–360, s: 0–100, l: 0–100) to RGB (0–255 each). */
|
|
142
|
+
export function hslToRgb(h, s, l) {
|
|
143
|
+
s /= 100;
|
|
144
|
+
l /= 100;
|
|
145
|
+
const k = (n) => (n + h / 30) % 12;
|
|
146
|
+
const a = s * Math.min(l, 1 - l);
|
|
147
|
+
const f = (n) => l - a * Math.max(-1, Math.min(k(n) - 3, Math.min(9 - k(n), 1)));
|
|
148
|
+
return [
|
|
149
|
+
Math.round(f(0) * 255),
|
|
150
|
+
Math.round(f(8) * 255),
|
|
151
|
+
Math.round(f(4) * 255),
|
|
152
|
+
];
|
|
153
|
+
}
|
|
154
|
+
function resolveToRgb(color) {
|
|
155
|
+
if (isRGB(color))
|
|
156
|
+
return color;
|
|
157
|
+
if (isHSL(color)) {
|
|
158
|
+
const [r, g, b] = hslToRgb(color.h, color.s, color.l);
|
|
159
|
+
return { r, g, b };
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
export function fgReset() {
|
|
164
|
+
return `${CSI}39m`;
|
|
165
|
+
}
|
|
166
|
+
export function bgReset() {
|
|
167
|
+
return `${CSI}49m`;
|
|
168
|
+
}
|
|
169
|
+
export function fgColor(color) {
|
|
170
|
+
if (typeof color === 'string') {
|
|
171
|
+
return `${CSI}${namedFgMap[color]}m`;
|
|
172
|
+
}
|
|
173
|
+
const rgb = resolveToRgb(color);
|
|
174
|
+
if (rgb) {
|
|
175
|
+
return `${CSI}38;2;${rgb.r};${rgb.g};${rgb.b}m`;
|
|
176
|
+
}
|
|
177
|
+
if (is256(color)) {
|
|
178
|
+
return `${CSI}38;5;${color.index}m`;
|
|
179
|
+
}
|
|
180
|
+
return '';
|
|
181
|
+
}
|
|
182
|
+
export function bgColor(color) {
|
|
183
|
+
if (typeof color === 'string') {
|
|
184
|
+
return `${CSI}${namedBgMap[color]}m`;
|
|
185
|
+
}
|
|
186
|
+
const rgb = resolveToRgb(color);
|
|
187
|
+
if (rgb) {
|
|
188
|
+
return `${CSI}48;2;${rgb.r};${rgb.g};${rgb.b}m`;
|
|
189
|
+
}
|
|
190
|
+
if (is256(color)) {
|
|
191
|
+
return `${CSI}48;5;${color.index}m`;
|
|
192
|
+
}
|
|
193
|
+
return '';
|
|
194
|
+
}
|
|
195
|
+
// --- Text Attributes ---
|
|
196
|
+
const attrOnMap = {
|
|
197
|
+
bold: 1,
|
|
198
|
+
dim: 2,
|
|
199
|
+
italic: 3,
|
|
200
|
+
underline: 4,
|
|
201
|
+
blink: 5,
|
|
202
|
+
inverse: 7,
|
|
203
|
+
hidden: 8,
|
|
204
|
+
strikethrough: 9,
|
|
205
|
+
};
|
|
206
|
+
const attrOffMap = {
|
|
207
|
+
bold: 22,
|
|
208
|
+
dim: 22,
|
|
209
|
+
italic: 23,
|
|
210
|
+
underline: 24,
|
|
211
|
+
blink: 25,
|
|
212
|
+
inverse: 27,
|
|
213
|
+
hidden: 28,
|
|
214
|
+
strikethrough: 29,
|
|
215
|
+
};
|
|
216
|
+
export function textAttr(attr) {
|
|
217
|
+
return `${CSI}${attrOnMap[attr]}m`;
|
|
218
|
+
}
|
|
219
|
+
export function textAttrOff(attr) {
|
|
220
|
+
return `${CSI}${attrOffMap[attr]}m`;
|
|
221
|
+
}
|
|
222
|
+
export function resetAll() {
|
|
223
|
+
return `${CSI}0m`;
|
|
224
|
+
}
|
|
225
|
+
// --- Alternate Buffer ---
|
|
226
|
+
export function alternateBufferEnter() {
|
|
227
|
+
return `${CSI}?1049h`;
|
|
228
|
+
}
|
|
229
|
+
export function alternateBufferExit() {
|
|
230
|
+
return `${CSI}?1049l`;
|
|
231
|
+
}
|
|
232
|
+
// --- Focus Event Reporting ---
|
|
233
|
+
export function focusEventsEnable() {
|
|
234
|
+
return `${CSI}?1004h`;
|
|
235
|
+
}
|
|
236
|
+
export function focusEventsDisable() {
|
|
237
|
+
return `${CSI}?1004l`;
|
|
238
|
+
}
|
|
239
|
+
// --- Mouse Tracking (SGR mode) ---
|
|
240
|
+
export function mouseEnable() {
|
|
241
|
+
return (`${CSI}?1000h` + // button tracking
|
|
242
|
+
`${CSI}?1002h` + // button-event tracking
|
|
243
|
+
`${CSI}?1003h` + // any-event tracking
|
|
244
|
+
`${CSI}?1006h` // SGR encoding
|
|
245
|
+
);
|
|
246
|
+
}
|
|
247
|
+
export function mouseDisable() {
|
|
248
|
+
return (`${CSI}?1006l` + // SGR encoding off
|
|
249
|
+
`${CSI}?1003l` + // any-event tracking off
|
|
250
|
+
`${CSI}?1002l` + // button-event tracking off
|
|
251
|
+
`${CSI}?1000l` // button tracking off
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
//# sourceMappingURL=ansi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ansi.js","sourceRoot":"","sources":["../src/ansi.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface Cell {
|
|
2
|
+
char: string;
|
|
3
|
+
style: string;
|
|
4
|
+
}
|
|
5
|
+
export declare class ScreenBuffer {
|
|
6
|
+
private width;
|
|
7
|
+
private height;
|
|
8
|
+
private front;
|
|
9
|
+
private back;
|
|
10
|
+
private _cursorX;
|
|
11
|
+
private _cursorY;
|
|
12
|
+
get cursorX(): number;
|
|
13
|
+
get cursorY(): number;
|
|
14
|
+
constructor(width: number, height: number);
|
|
15
|
+
private createGrid;
|
|
16
|
+
moveTo(x: number, y: number): void;
|
|
17
|
+
write(text: string, style: string): void;
|
|
18
|
+
clear(): void;
|
|
19
|
+
resize(width: number, height: number): void;
|
|
20
|
+
/**
|
|
21
|
+
* Diff the back buffer against the front buffer and write only
|
|
22
|
+
* the changed cells to output. Uses synchronized output to prevent
|
|
23
|
+
* tearing. After flush, the front buffer matches the back buffer.
|
|
24
|
+
*/
|
|
25
|
+
flush(output: (s: string) => void): void;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.d.ts","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;CACd;AAKD,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,KAAK,CAAU;IACvB,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,QAAQ,CAAY;IAC5B,OAAO,CAAC,QAAQ,CAAY;IAE5B,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;gBAEW,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAOzC,OAAO,CAAC,UAAU;IASlB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI;IAKlC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAoBxC,KAAK,IAAI,IAAI;IAUb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAS3C;;;;OAIG;IACH,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;CA+CzC"}
|
package/.dist/buffer.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { cursorTo, resetAll } from './ansi.js';
|
|
2
|
+
import { syncStart, syncEnd } from './modern.js';
|
|
3
|
+
const EMPTY_CHAR = ' ';
|
|
4
|
+
const EMPTY_STYLE = '';
|
|
5
|
+
export class ScreenBuffer {
|
|
6
|
+
width;
|
|
7
|
+
height;
|
|
8
|
+
front;
|
|
9
|
+
back;
|
|
10
|
+
_cursorX = 0;
|
|
11
|
+
_cursorY = 0;
|
|
12
|
+
get cursorX() {
|
|
13
|
+
return this._cursorX;
|
|
14
|
+
}
|
|
15
|
+
get cursorY() {
|
|
16
|
+
return this._cursorY;
|
|
17
|
+
}
|
|
18
|
+
constructor(width, height) {
|
|
19
|
+
this.width = width;
|
|
20
|
+
this.height = height;
|
|
21
|
+
this.front = this.createGrid();
|
|
22
|
+
this.back = this.createGrid();
|
|
23
|
+
}
|
|
24
|
+
createGrid() {
|
|
25
|
+
return Array.from({ length: this.height }, () => Array.from({ length: this.width }, () => ({
|
|
26
|
+
char: EMPTY_CHAR,
|
|
27
|
+
style: EMPTY_STYLE,
|
|
28
|
+
})));
|
|
29
|
+
}
|
|
30
|
+
moveTo(x, y) {
|
|
31
|
+
this._cursorX = x;
|
|
32
|
+
this._cursorY = y;
|
|
33
|
+
}
|
|
34
|
+
write(text, style) {
|
|
35
|
+
for (const char of text) {
|
|
36
|
+
if (char === '\n') {
|
|
37
|
+
this._cursorX = 0;
|
|
38
|
+
this._cursorY++;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
if (this._cursorX >= 0 &&
|
|
42
|
+
this._cursorX < this.width &&
|
|
43
|
+
this._cursorY >= 0 &&
|
|
44
|
+
this._cursorY < this.height) {
|
|
45
|
+
this.back[this._cursorY][this._cursorX] = { char, style };
|
|
46
|
+
}
|
|
47
|
+
this._cursorX++;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
clear() {
|
|
51
|
+
for (let y = 0; y < this.height; y++) {
|
|
52
|
+
for (let x = 0; x < this.width; x++) {
|
|
53
|
+
this.back[y][x] = { char: EMPTY_CHAR, style: EMPTY_STYLE };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
this._cursorX = 0;
|
|
57
|
+
this._cursorY = 0;
|
|
58
|
+
}
|
|
59
|
+
resize(width, height) {
|
|
60
|
+
this.width = width;
|
|
61
|
+
this.height = height;
|
|
62
|
+
this.front = this.createGrid();
|
|
63
|
+
this.back = this.createGrid();
|
|
64
|
+
this._cursorX = 0;
|
|
65
|
+
this._cursorY = 0;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Diff the back buffer against the front buffer and write only
|
|
69
|
+
* the changed cells to output. Uses synchronized output to prevent
|
|
70
|
+
* tearing. After flush, the front buffer matches the back buffer.
|
|
71
|
+
*/
|
|
72
|
+
flush(output) {
|
|
73
|
+
const parts = [];
|
|
74
|
+
let currentStyle = null;
|
|
75
|
+
for (let y = 0; y < this.height; y++) {
|
|
76
|
+
let consecutive = false;
|
|
77
|
+
for (let x = 0; x < this.width; x++) {
|
|
78
|
+
const f = this.front[y][x];
|
|
79
|
+
const b = this.back[y][x];
|
|
80
|
+
if (f.char === b.char && f.style === b.style) {
|
|
81
|
+
consecutive = false;
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
// Dirty cell — position cursor if not consecutive
|
|
85
|
+
if (!consecutive) {
|
|
86
|
+
parts.push(cursorTo(x, y));
|
|
87
|
+
}
|
|
88
|
+
consecutive = true;
|
|
89
|
+
// Emit style change if needed
|
|
90
|
+
if (b.style !== currentStyle) {
|
|
91
|
+
if (currentStyle !== null && currentStyle !== EMPTY_STYLE) {
|
|
92
|
+
parts.push(resetAll());
|
|
93
|
+
}
|
|
94
|
+
if (b.style !== EMPTY_STYLE) {
|
|
95
|
+
parts.push(b.style);
|
|
96
|
+
}
|
|
97
|
+
currentStyle = b.style;
|
|
98
|
+
}
|
|
99
|
+
parts.push(b.char);
|
|
100
|
+
// Sync front to back
|
|
101
|
+
this.front[y][x] = { char: b.char, style: b.style };
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (parts.length > 0) {
|
|
105
|
+
if (currentStyle !== null && currentStyle !== EMPTY_STYLE) {
|
|
106
|
+
parts.push(resetAll());
|
|
107
|
+
}
|
|
108
|
+
output(syncStart() + parts.join('') + syncEnd());
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=buffer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"buffer.js","sourceRoot":"","sources":["../src/buffer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Color utility functions for terminal 256-color palette.
|
|
3
|
+
* Ported from blessed's colors.js.
|
|
4
|
+
*/
|
|
5
|
+
export declare function nameToIndex(name: string): number;
|
|
6
|
+
export declare function toHex(n: number): string;
|
|
7
|
+
export declare function indexToRGB(index: number): [number, number, number];
|
|
8
|
+
export declare function indexToHex(index: number): `#${string}`;
|
|
9
|
+
/**
|
|
10
|
+
* Find the closest 256-color index for a given color.
|
|
11
|
+
* Accepts: hex string (#rrggbb), color name, r/g/b numbers, or [r,g,b] array.
|
|
12
|
+
*/
|
|
13
|
+
export declare function match(r1: string): number;
|
|
14
|
+
export declare function match(r1: number, g1: number, b1: number): number;
|
|
15
|
+
export declare function match(r1: [number, number, number]): number;
|
|
16
|
+
export declare function match(r1: string | number | [number, number, number], g1?: any, b1?: any, lookup?: [number, number, number][]): number;
|
|
17
|
+
export declare function RGBtoHex(r: number, g: number, b: number): `#${string}`;
|
|
18
|
+
export declare function RGBtoHex(rgb: [number, number, number]): `#${string}`;
|
|
19
|
+
/**
|
|
20
|
+
* RGB (0–255) to HSB (0–1 each).
|
|
21
|
+
*/
|
|
22
|
+
export declare function RGBtoHSB(r: number, g: number, b: number): [number, number, number];
|
|
23
|
+
export declare function RGBtoHSB(rgb: [number, number, number]): [number, number, number];
|
|
24
|
+
/**
|
|
25
|
+
* HSB (0–1 each) to RGB (0–255).
|
|
26
|
+
*/
|
|
27
|
+
export declare function HSBtoRGB(h: number, s: number, v: number): [number, number, number];
|
|
28
|
+
export declare function HSBtoRGB(hsv: [number, number, number]): [number, number, number];
|
|
29
|
+
export declare function hexToRGB(hex: string): [number, number, number];
|
|
30
|
+
export declare function reduce(color: number, total: number): number;
|
|
31
|
+
//# sourceMappingURL=colors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../src/colors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAyBH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAGvC;AA2CD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAElE;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAEtD;AAMD;;;GAGG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;AACzC,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;AACjE,wBAAgB,KAAK,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAA;AAC3D,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,MAAM,CAAA;AAiFtI,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAA;AACvE,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,MAAM,EAAE,CAAA;AAYrE;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AAqCjF;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACnF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AA8BjF,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAY9D;AAqBD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAU3D"}
|