@orz/ui-ansi 0.0.0-stage → 0.0.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 (100) hide show
  1. package/LICENSE +29 -0
  2. package/README.md +232 -2
  3. package/dist/content.d.ts +20 -0
  4. package/dist/content.d.ts.map +1 -0
  5. package/dist/content.js +90 -0
  6. package/dist/content.js.map +1 -0
  7. package/dist/index.d.ts +5 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +3 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/parse/index.d.ts +6 -0
  12. package/dist/parse/index.d.ts.map +1 -0
  13. package/dist/parse/index.js +5 -0
  14. package/dist/parse/index.js.map +1 -0
  15. package/dist/parse/level-tracker.d.ts +14 -0
  16. package/dist/parse/level-tracker.d.ts.map +1 -0
  17. package/dist/parse/level-tracker.js +87 -0
  18. package/dist/parse/level-tracker.js.map +1 -0
  19. package/dist/parse/levels.d.ts +19 -0
  20. package/dist/parse/levels.d.ts.map +1 -0
  21. package/dist/parse/levels.js +167 -0
  22. package/dist/parse/levels.js.map +1 -0
  23. package/dist/parse/line.d.ts +49 -0
  24. package/dist/parse/line.d.ts.map +1 -0
  25. package/dist/parse/line.js +289 -0
  26. package/dist/parse/line.js.map +1 -0
  27. package/dist/parse/palette.d.ts +12 -0
  28. package/dist/parse/palette.d.ts.map +1 -0
  29. package/dist/parse/palette.js +40 -0
  30. package/dist/parse/palette.js.map +1 -0
  31. package/dist/parse/parser.d.ts +18 -0
  32. package/dist/parse/parser.d.ts.map +1 -0
  33. package/dist/parse/parser.js +178 -0
  34. package/dist/parse/parser.js.map +1 -0
  35. package/dist/parse/sgr.d.ts +7 -0
  36. package/dist/parse/sgr.d.ts.map +1 -0
  37. package/dist/parse/sgr.js +179 -0
  38. package/dist/parse/sgr.js.map +1 -0
  39. package/dist/parse/styles.d.ts +15 -0
  40. package/dist/parse/styles.d.ts.map +1 -0
  41. package/dist/parse/styles.js +75 -0
  42. package/dist/parse/styles.js.map +1 -0
  43. package/dist/parse/tokenizer.d.ts +36 -0
  44. package/dist/parse/tokenizer.d.ts.map +1 -0
  45. package/dist/parse/tokenizer.js +287 -0
  46. package/dist/parse/tokenizer.js.map +1 -0
  47. package/dist/parse/types.d.ts +50 -0
  48. package/dist/parse/types.d.ts.map +1 -0
  49. package/dist/parse/types.js +2 -0
  50. package/dist/parse/types.js.map +1 -0
  51. package/dist/view/ansi-view.d.ts +27 -0
  52. package/dist/view/ansi-view.d.ts.map +1 -0
  53. package/dist/view/ansi-view.js +675 -0
  54. package/dist/view/ansi-view.js.map +1 -0
  55. package/dist/view/geometry.d.ts +30 -0
  56. package/dist/view/geometry.d.ts.map +1 -0
  57. package/dist/view/geometry.js +125 -0
  58. package/dist/view/geometry.js.map +1 -0
  59. package/dist/view/metrics.d.ts +17 -0
  60. package/dist/view/metrics.d.ts.map +1 -0
  61. package/dist/view/metrics.js +69 -0
  62. package/dist/view/metrics.js.map +1 -0
  63. package/dist/view/row.d.ts +41 -0
  64. package/dist/view/row.d.ts.map +1 -0
  65. package/dist/view/row.js +113 -0
  66. package/dist/view/row.js.map +1 -0
  67. package/dist/view/run-style.d.ts +11 -0
  68. package/dist/view/run-style.d.ts.map +1 -0
  69. package/dist/view/run-style.js +87 -0
  70. package/dist/view/run-style.js.map +1 -0
  71. package/dist/view/search.d.ts +28 -0
  72. package/dist/view/search.d.ts.map +1 -0
  73. package/dist/view/search.js +76 -0
  74. package/dist/view/search.js.map +1 -0
  75. package/dist/view/shown-lines.d.ts +15 -0
  76. package/dist/view/shown-lines.d.ts.map +1 -0
  77. package/dist/view/shown-lines.js +50 -0
  78. package/dist/view/shown-lines.js.map +1 -0
  79. package/dist/view/time-slices.d.ts +9 -0
  80. package/dist/view/time-slices.d.ts.map +1 -0
  81. package/dist/view/time-slices.js +35 -0
  82. package/dist/view/time-slices.js.map +1 -0
  83. package/dist/view/toolbar.d.ts +47 -0
  84. package/dist/view/toolbar.d.ts.map +1 -0
  85. package/dist/view/toolbar.js +58 -0
  86. package/dist/view/toolbar.js.map +1 -0
  87. package/dist/view/use-ansi-lines.d.ts +28 -0
  88. package/dist/view/use-ansi-lines.d.ts.map +1 -0
  89. package/dist/view/use-ansi-lines.js +103 -0
  90. package/dist/view/use-ansi-lines.js.map +1 -0
  91. package/dist/view/use-search.d.ts +37 -0
  92. package/dist/view/use-search.d.ts.map +1 -0
  93. package/dist/view/use-search.js +205 -0
  94. package/dist/view/use-search.js.map +1 -0
  95. package/dist/view/virtual-rows.d.ts +36 -0
  96. package/dist/view/virtual-rows.d.ts.map +1 -0
  97. package/dist/view/virtual-rows.js +156 -0
  98. package/dist/view/virtual-rows.js.map +1 -0
  99. package/package.json +58 -3
  100. package/styles.css +110 -0
@@ -0,0 +1,287 @@
1
+ import { codePointCells } from "./line.js";
2
+ /** How long an OSC or DCS/SOS/PM/APC body may grow before it is abandoned. */
3
+ export const STRING_MAX = 4096;
4
+ /** How long CSI parameters may grow before the sequence is dropped. */
5
+ export const CSI_PARAMS_MAX = 256;
6
+ const State = {
7
+ Ground: 0,
8
+ Escape: 1,
9
+ EscapeIntermediate: 2,
10
+ Csi: 3,
11
+ Osc: 4,
12
+ OscEscape: 5,
13
+ /** DCS, SOS, PM or APC: dropped, so only its length is kept. */
14
+ Str: 6,
15
+ StrEscape: 7,
16
+ };
17
+ const BEL = 0x07;
18
+ const ESC = 0x1b;
19
+ const CAN = 0x18;
20
+ const SUB = 0x1a;
21
+ function isExecuted(c) {
22
+ return c === 0x0a || c === 0x0d || c === 0x08 || c === 0x09;
23
+ }
24
+ /**
25
+ * A VT500-style escape-sequence state machine. Its state survives between
26
+ * `push` calls, so the input may be split anywhere, even inside a surrogate
27
+ * pair.
28
+ */
29
+ export class Tokenizer {
30
+ state = State.Ground;
31
+ params = "";
32
+ csiDropped = false;
33
+ body = "";
34
+ bodyLength = 0;
35
+ highSurrogate = "";
36
+ sink;
37
+ constructor(sink) {
38
+ this.sink = sink;
39
+ }
40
+ push(input) {
41
+ let chunk = input;
42
+ if (this.highSurrogate !== "") {
43
+ chunk = this.highSurrogate + chunk;
44
+ this.highSurrogate = "";
45
+ }
46
+ const len = chunk.length;
47
+ const sink = this.sink;
48
+ let i = 0;
49
+ while (i < len) {
50
+ const c = chunk.charCodeAt(i);
51
+ switch (this.state) {
52
+ case State.Ground: {
53
+ const start = i;
54
+ let cells = 0;
55
+ while (i < len) {
56
+ const d = chunk.charCodeAt(i);
57
+ if ((d >= 0x20 && d < 0x7f) || (d >= 0xa0 && d < 0x300)) {
58
+ cells++;
59
+ i++;
60
+ }
61
+ else if (d < 0x20 || (d >= 0x7f && d < 0xa0)) {
62
+ break;
63
+ }
64
+ else if (d >= 0xd800 && d <= 0xdbff) {
65
+ if (i + 1 === len)
66
+ break;
67
+ const e = chunk.charCodeAt(i + 1);
68
+ if (e >= 0xdc00 && e <= 0xdfff) {
69
+ cells += codePointCells(((d - 0xd800) << 10) + (e - 0xdc00) + 0x10000);
70
+ i += 2;
71
+ }
72
+ else {
73
+ cells++;
74
+ i++;
75
+ }
76
+ }
77
+ else {
78
+ cells += codePointCells(d);
79
+ i++;
80
+ }
81
+ }
82
+ if (i > start)
83
+ sink.print(chunk, start, i, cells);
84
+ if (i === len)
85
+ break;
86
+ const d = chunk.charCodeAt(i);
87
+ if (d >= 0xd800 && d <= 0xdbff) {
88
+ // A high surrogate at the very end: its pair is in the next push.
89
+ this.highSurrogate = chunk[i];
90
+ i++;
91
+ }
92
+ else {
93
+ if (d === ESC)
94
+ this.state = State.Escape;
95
+ else if (isExecuted(d))
96
+ sink.control(d);
97
+ i++;
98
+ }
99
+ break;
100
+ }
101
+ case State.Escape:
102
+ i = this.escape(c, i);
103
+ break;
104
+ case State.EscapeIntermediate:
105
+ if (c >= 0x20 && c <= 0x2f)
106
+ i++;
107
+ else if (c >= 0x30 && c <= 0x7e) {
108
+ this.state = State.Ground;
109
+ i++;
110
+ }
111
+ else if (c === ESC) {
112
+ this.state = State.Escape;
113
+ i++;
114
+ }
115
+ else
116
+ this.state = State.Ground;
117
+ break;
118
+ case State.Csi:
119
+ if (c >= 0x30 && c <= 0x3f) {
120
+ if (c >= 0x3c)
121
+ this.csiDropped = true;
122
+ else if (this.params.length >= CSI_PARAMS_MAX)
123
+ this.csiDropped = true;
124
+ else if (!this.csiDropped)
125
+ this.params += chunk[i];
126
+ i++;
127
+ }
128
+ else if (c >= 0x20 && c <= 0x2f) {
129
+ this.csiDropped = true;
130
+ i++;
131
+ }
132
+ else if (c >= 0x40 && c <= 0x7e) {
133
+ this.state = State.Ground;
134
+ if (!this.csiDropped)
135
+ sink.csi(this.params, c);
136
+ i++;
137
+ }
138
+ else if (c === ESC) {
139
+ this.state = State.Escape;
140
+ i++;
141
+ }
142
+ else if (c === CAN || c === SUB) {
143
+ this.state = State.Ground;
144
+ i++;
145
+ }
146
+ else if (c < 0x20) {
147
+ // VT500 runs C0 controls met inside a CSI and carries on with it.
148
+ if (isExecuted(c))
149
+ sink.control(c);
150
+ i++;
151
+ }
152
+ else if (c === 0x7f) {
153
+ i++;
154
+ }
155
+ else {
156
+ this.state = State.Ground;
157
+ }
158
+ break;
159
+ case State.Osc: {
160
+ const start = i;
161
+ const room = STRING_MAX - this.body.length;
162
+ const stop = Math.min(len, i + room);
163
+ while (i < stop) {
164
+ const d = chunk.charCodeAt(i);
165
+ if (d === BEL || d === ESC || d === CAN || d === SUB)
166
+ break;
167
+ i++;
168
+ }
169
+ if (i > start)
170
+ this.body += chunk.slice(start, i);
171
+ if (i === len)
172
+ break;
173
+ const d = chunk.charCodeAt(i);
174
+ if (d === BEL) {
175
+ this.state = State.Ground;
176
+ sink.osc(this.body);
177
+ this.body = "";
178
+ i++;
179
+ }
180
+ else if (d === ESC) {
181
+ this.state = State.OscEscape;
182
+ i++;
183
+ }
184
+ else if (d === CAN || d === SUB) {
185
+ this.state = State.Ground;
186
+ this.body = "";
187
+ i++;
188
+ }
189
+ else {
190
+ // Past STRING_MAX: a stray `ESC ]` must not swallow the rest of a log.
191
+ this.state = State.Ground;
192
+ this.body = "";
193
+ }
194
+ break;
195
+ }
196
+ case State.OscEscape:
197
+ if (c === 0x5c) {
198
+ this.state = State.Ground;
199
+ sink.osc(this.body);
200
+ this.body = "";
201
+ i++;
202
+ }
203
+ else {
204
+ this.body = "";
205
+ i = this.escape(c, i);
206
+ }
207
+ break;
208
+ case State.Str: {
209
+ while (i < len) {
210
+ const d = chunk.charCodeAt(i);
211
+ if (d === ESC || d === CAN || d === SUB)
212
+ break;
213
+ if (this.bodyLength >= STRING_MAX)
214
+ break;
215
+ this.bodyLength++;
216
+ i++;
217
+ }
218
+ if (i === len)
219
+ break;
220
+ const d = chunk.charCodeAt(i);
221
+ if (d === ESC) {
222
+ this.state = State.StrEscape;
223
+ i++;
224
+ }
225
+ else {
226
+ this.state = State.Ground;
227
+ if (d === CAN || d === SUB)
228
+ i++;
229
+ }
230
+ break;
231
+ }
232
+ case State.StrEscape:
233
+ if (c === 0x5c) {
234
+ this.state = State.Ground;
235
+ i++;
236
+ }
237
+ else {
238
+ i = this.escape(c, i);
239
+ }
240
+ break;
241
+ }
242
+ }
243
+ }
244
+ /** Flushes a carried high surrogate and drops an unfinished sequence. */
245
+ end() {
246
+ if (this.highSurrogate !== "") {
247
+ this.sink.print(this.highSurrogate, 0, 1, 1);
248
+ this.highSurrogate = "";
249
+ }
250
+ this.state = State.Ground;
251
+ this.params = "";
252
+ this.body = "";
253
+ }
254
+ /** The character after an ESC; returns the index to read next. */
255
+ escape(c, i) {
256
+ switch (c) {
257
+ case 0x5b:
258
+ this.state = State.Csi;
259
+ this.params = "";
260
+ this.csiDropped = false;
261
+ return i + 1;
262
+ case 0x5d:
263
+ this.state = State.Osc;
264
+ this.body = "";
265
+ return i + 1;
266
+ case 0x50:
267
+ case 0x58:
268
+ case 0x5e:
269
+ case 0x5f:
270
+ this.state = State.Str;
271
+ this.bodyLength = 0;
272
+ return i + 1;
273
+ case ESC:
274
+ this.state = State.Escape;
275
+ return i + 1;
276
+ }
277
+ if (c >= 0x20 && c <= 0x2f) {
278
+ this.state = State.EscapeIntermediate;
279
+ return i + 1;
280
+ }
281
+ this.state = State.Ground;
282
+ // ESC and a final byte is a sequence we do not draw. Anything else ends
283
+ // the lone ESC and is read again as ordinary input.
284
+ return c >= 0x30 && c <= 0x7e ? i + 1 : i;
285
+ }
286
+ }
287
+ //# sourceMappingURL=tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/parse/tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ export type AnsiColor =
2
+ /** 0–15 follow the theme's `--ansi-*`; 16–255 are xterm's fixed values. */
3
+ {
4
+ kind: "palette";
5
+ index: number;
6
+ } | {
7
+ kind: "rgb";
8
+ r: number;
9
+ g: number;
10
+ b: number;
11
+ };
12
+ export type UnderlineStyle = "single" | "double" | "curly" | "dotted" | "dashed";
13
+ export interface AnsiStyle {
14
+ fg?: AnsiColor;
15
+ bg?: AnsiColor;
16
+ underlineColor?: AnsiColor;
17
+ bold?: true;
18
+ dim?: true;
19
+ italic?: true;
20
+ underline?: UnderlineStyle;
21
+ blink?: true;
22
+ inverse?: true;
23
+ hidden?: true;
24
+ strike?: true;
25
+ overline?: true;
26
+ /** An OSC 8 link target, already checked against the scheme allow-list. */
27
+ href?: string;
28
+ }
29
+ export interface AnsiLine {
30
+ /** The line's visible characters, escapes removed. */
31
+ text: string;
32
+ /** Flat `[startOffsetInText, styleId]` pairs, ascending; style 0 is the empty style. */
33
+ runs: Uint32Array;
34
+ /** Display width in terminal cells. */
35
+ cells: number;
36
+ }
37
+ export interface AnsiParse {
38
+ readonly lines: readonly AnsiLine[];
39
+ /** Interned; a run's style id indexes this. */
40
+ readonly styles: readonly AnsiStyle[];
41
+ /** The widest line, for the no-wrap scroll width. */
42
+ readonly maxCells: number;
43
+ }
44
+ export interface AnsiParser extends AnsiParse {
45
+ /** Takes the text split anywhere: an escape cut in half is carried over to the next push. */
46
+ push(chunk: string): void;
47
+ /** Flushes the last line; the text needs no trailing newline. */
48
+ end(): void;
49
+ }
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/parse/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS;AACnB,2EAA2E;AACzE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAErD,MAAM,MAAM,cAAc,GACtB,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,SAAS;IACxB,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,EAAE,CAAC,EAAE,SAAS,CAAC;IACf,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,KAAK,CAAC,EAAE,IAAI,CAAC;IACb,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,MAAM,CAAC,EAAE,IAAI,CAAC;IACd,QAAQ,CAAC,EAAE,IAAI,CAAC;IAChB,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,wFAAwF;IACxF,IAAI,EAAE,WAAW,CAAC;IAClB,uCAAuC;IACvC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,CAAC;IACpC,+CAA+C;IAC/C,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,qDAAqD;IACrD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,6FAA6F;IAC7F,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iEAAiE;IACjE,GAAG,IAAI,IAAI,CAAC;CACb"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/parse/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,27 @@
1
+ import { type LevelDetector } from "../parse/levels.ts";
2
+ export interface AnsiViewProps {
3
+ text: string;
4
+ /** "pane": the terminal pane. "file": header, line numbers, Download. */
5
+ chrome: "pane" | "file";
6
+ /** Shown in the header with chrome="file". */
7
+ filename?: string;
8
+ /** Download link in the header. */
9
+ downloadUrl?: string;
10
+ /** Bold text in palette colours 0–7 is drawn in 8–15. Default false. */
11
+ boldIsBright?: boolean;
12
+ /** Initial wrap state; the Wrap button toggles it. Default false. */
13
+ wrap?: boolean;
14
+ /** How tall the view may grow before it scrolls. Default: grows to fit. */
15
+ maxHeight?: string;
16
+ /**
17
+ * Detects each line's log level, colours rows by it and, with
18
+ * chrome="file", offers a filter by level. `true` uses `detectLevel`; a
19
+ * function replaces it, and should keep its identity across renders, since
20
+ * a new one parses the text again. Default false.
21
+ */
22
+ levels?: boolean | LevelDetector;
23
+ className?: string;
24
+ }
25
+ /** Text with ANSI escapes drawn in the theme's terminal colours. */
26
+ export declare function AnsiView({ text, chrome, filename, downloadUrl, boldIsBright, wrap: initialWrap, maxHeight, levels, className, }: AnsiViewProps): import("react").JSX.Element;
27
+ //# sourceMappingURL=ansi-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-view.d.ts","sourceRoot":"","sources":["../../src/view/ansi-view.tsx"],"names":[],"mappings":"AAkBA,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,oBAAoB,CAAC;AAoB5B,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qEAAqE;IACrE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2EAA2E;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA2PD,oEAAoE;AACpE,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,YAAoB,EACpB,IAAI,EAAE,WAAmB,EACzB,SAAS,EACT,MAAc,EACd,SAAS,GACV,EAAE,aAAa,+BA4pBf"}