@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.
Files changed (58) hide show
  1. package/.dist/ansi.d.ts +45 -0
  2. package/.dist/ansi.d.ts.map +1 -0
  3. package/.dist/ansi.js +254 -0
  4. package/.dist/ansi.js.map +1 -0
  5. package/.dist/buffer.d.ts +27 -0
  6. package/.dist/buffer.d.ts.map +1 -0
  7. package/.dist/buffer.js +112 -0
  8. package/.dist/buffer.js.map +1 -0
  9. package/.dist/colors.d.ts +31 -0
  10. package/.dist/colors.d.ts.map +1 -0
  11. package/.dist/colors.js +260 -0
  12. package/.dist/colors.js.map +1 -0
  13. package/.dist/cursor.d.ts +20 -0
  14. package/.dist/cursor.d.ts.map +1 -0
  15. package/.dist/cursor.js +64 -0
  16. package/.dist/cursor.js.map +1 -0
  17. package/.dist/image.d.ts +5 -0
  18. package/.dist/image.d.ts.map +1 -0
  19. package/.dist/image.js +49 -0
  20. package/.dist/image.js.map +1 -0
  21. package/.dist/index.d.ts +17 -0
  22. package/.dist/index.d.ts.map +1 -0
  23. package/.dist/index.js +27 -0
  24. package/.dist/index.js.map +1 -0
  25. package/.dist/input.d.ts +11 -0
  26. package/.dist/input.d.ts.map +1 -0
  27. package/.dist/input.js +287 -0
  28. package/.dist/input.js.map +1 -0
  29. package/.dist/modern.d.ts +14 -0
  30. package/.dist/modern.d.ts.map +1 -0
  31. package/.dist/modern.js +83 -0
  32. package/.dist/modern.js.map +1 -0
  33. package/.dist/screen.d.ts +17 -0
  34. package/.dist/screen.d.ts.map +1 -0
  35. package/.dist/screen.js +82 -0
  36. package/.dist/screen.js.map +1 -0
  37. package/.dist/sgr.d.ts +25 -0
  38. package/.dist/sgr.d.ts.map +1 -0
  39. package/.dist/sgr.js +160 -0
  40. package/.dist/sgr.js.map +1 -0
  41. package/.dist/style.d.ts +25 -0
  42. package/.dist/style.d.ts.map +1 -0
  43. package/.dist/style.js +53 -0
  44. package/.dist/style.js.map +1 -0
  45. package/.dist/terminal.d.ts +84 -0
  46. package/.dist/terminal.d.ts.map +1 -0
  47. package/.dist/terminal.js +325 -0
  48. package/.dist/terminal.js.map +1 -0
  49. package/.dist/types.d.ts +80 -0
  50. package/.dist/types.d.ts.map +1 -0
  51. package/.dist/types.js +15 -0
  52. package/.dist/types.js.map +1 -0
  53. package/.dist/unicode.d.ts +65 -0
  54. package/.dist/unicode.d.ts.map +1 -0
  55. package/.dist/unicode.js +574 -0
  56. package/.dist/unicode.js.map +1 -0
  57. package/LICENSE +24 -0
  58. package/package.json +36 -0
@@ -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"}
@@ -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"}