@nuvin/ink 7.6.0-alpha → 7.7.0-alpha
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/build/allocated-seek.d.ts +21 -0
- package/build/allocated-seek.js +273 -0
- package/build/allocated-seek.js.map +1 -0
- package/build/components/App.d.ts +5 -1
- package/build/components/App.js +48 -10
- package/build/components/App.js.map +1 -1
- package/build/explicit-width-detection.d.ts +45 -0
- package/build/explicit-width-detection.js +172 -0
- package/build/explicit-width-detection.js.map +1 -0
- package/build/explicit-width.d.ts +1 -0
- package/build/explicit-width.js +114 -0
- package/build/explicit-width.js.map +1 -0
- package/build/ink.d.ts +43 -1
- package/build/ink.js +651 -143
- package/build/ink.js.map +1 -1
- package/build/input-parser.d.ts +14 -1
- package/build/input-parser.js +74 -4
- package/build/input-parser.js.map +1 -1
- package/build/log-update.d.ts +16 -8
- package/build/log-update.js +313 -33
- package/build/log-update.js.map +1 -1
- package/build/output.js +66 -34
- package/build/output.js.map +1 -1
- package/build/render.d.ts +11 -0
- package/build/render.js.map +1 -1
- package/build/terminal-control.d.ts +6 -0
- package/build/terminal-control.js +124 -0
- package/build/terminal-control.js.map +1 -0
- package/build/terminal-paint.d.ts +38 -0
- package/build/terminal-paint.js +47 -0
- package/build/terminal-paint.js.map +1 -0
- package/package.json +2 -1
- package/readme.md +50 -0
package/build/output.js
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import sliceAnsi from 'slice-ansi';
|
|
2
1
|
import stringWidth from 'string-width';
|
|
3
2
|
import { styledCharsFromTokens, styledCharsToString, tokenize, } from '@alcalzone/ansi-tokenize';
|
|
4
3
|
const maxDefined = (first, second) => {
|
|
@@ -55,9 +54,15 @@ const trimTrailingSpaces = (line, width) => {
|
|
|
55
54
|
};
|
|
56
55
|
class OutputCaches {
|
|
57
56
|
widths = new Map();
|
|
58
|
-
blockWidths = new Map();
|
|
59
57
|
styledChars = new Map();
|
|
60
|
-
|
|
58
|
+
completeLineWidths = new Map();
|
|
59
|
+
getStyledChars(line, maxWidth) {
|
|
60
|
+
if (maxWidth !== undefined) {
|
|
61
|
+
// The tokenizer counts at most two columns per grapheme, while the
|
|
62
|
+
// grid writes at least one. Include one extra glyph to detect overflow
|
|
63
|
+
// without trusting the tokenizer's widths or scanning the hidden tail.
|
|
64
|
+
return styledCharsFromTokens(tokenize(line, (maxWidth + 1) * 2));
|
|
65
|
+
}
|
|
61
66
|
let cached = this.styledChars.get(line);
|
|
62
67
|
if (cached === undefined) {
|
|
63
68
|
cached = styledCharsFromTokens(tokenize(line));
|
|
@@ -73,17 +78,19 @@ class OutputCaches {
|
|
|
73
78
|
}
|
|
74
79
|
return cached;
|
|
75
80
|
}
|
|
76
|
-
getWidestLine(text) {
|
|
77
|
-
let
|
|
78
|
-
|
|
79
|
-
let
|
|
80
|
-
for (const
|
|
81
|
-
|
|
81
|
+
getWidestLine(text, maxWidth) {
|
|
82
|
+
let widest = 0;
|
|
83
|
+
for (const line of text.split('\n')) {
|
|
84
|
+
let width = 0;
|
|
85
|
+
for (const character of this.getStyledChars(line, maxWidth)) {
|
|
86
|
+
width += Math.max(1, this.getStringWidth(character.value));
|
|
87
|
+
if (width >= maxWidth) {
|
|
88
|
+
return maxWidth;
|
|
89
|
+
}
|
|
82
90
|
}
|
|
83
|
-
|
|
84
|
-
this.blockWidths.set(text, cached);
|
|
91
|
+
widest = Math.max(widest, width);
|
|
85
92
|
}
|
|
86
|
-
return
|
|
93
|
+
return widest;
|
|
87
94
|
}
|
|
88
95
|
}
|
|
89
96
|
export default class Output {
|
|
@@ -151,8 +158,8 @@ export default class Output {
|
|
|
151
158
|
clips.pop();
|
|
152
159
|
}
|
|
153
160
|
if (operation.type === 'write') {
|
|
154
|
-
const { text, transformers, selectable } = operation;
|
|
155
|
-
let {
|
|
161
|
+
const { text, transformers, selectable, x } = operation;
|
|
162
|
+
let { y } = operation;
|
|
156
163
|
let lines = text.split('\n');
|
|
157
164
|
const clip = intersectClips(clips);
|
|
158
165
|
if (clip) {
|
|
@@ -161,8 +168,9 @@ export default class Output {
|
|
|
161
168
|
// If text is positioned outside of clipping area altogether,
|
|
162
169
|
// skip to the next operation to avoid unnecessary calculations
|
|
163
170
|
if (clipHorizontally) {
|
|
164
|
-
|
|
165
|
-
|
|
171
|
+
if (x > clip.x2 ||
|
|
172
|
+
(x < clip.x1 &&
|
|
173
|
+
this.caches.getWidestLine(text, clip.x1 - x) < clip.x1 - x)) {
|
|
166
174
|
continue;
|
|
167
175
|
}
|
|
168
176
|
}
|
|
@@ -172,23 +180,6 @@ export default class Output {
|
|
|
172
180
|
continue;
|
|
173
181
|
}
|
|
174
182
|
}
|
|
175
|
-
if (clipHorizontally) {
|
|
176
|
-
lines = lines.map(line => {
|
|
177
|
-
const from = x < clip.x1 ? clip.x1 - x : 0;
|
|
178
|
-
const width = this.caches.getStringWidth(line);
|
|
179
|
-
const to = x + width > clip.x2 ? clip.x2 - x : width;
|
|
180
|
-
// Fully-inside writes are the common case for culled VLBox
|
|
181
|
-
// rows. slice-ansi still tokenizes the whole string, which
|
|
182
|
-
// dominates paint of truecolor modal/transcript frames.
|
|
183
|
-
if (width > 0 && from === 0 && to === width) {
|
|
184
|
-
return line;
|
|
185
|
-
}
|
|
186
|
-
return sliceAnsi(line, from, to);
|
|
187
|
-
});
|
|
188
|
-
if (x < clip.x1) {
|
|
189
|
-
x = clip.x1;
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
183
|
if (clipVertically) {
|
|
193
184
|
const from = y < clip.y1 ? clip.y1 - y : 0;
|
|
194
185
|
const height = lines.length;
|
|
@@ -207,11 +198,52 @@ export default class Output {
|
|
|
207
198
|
if (!currentLine || !currentMaskLine) {
|
|
208
199
|
continue;
|
|
209
200
|
}
|
|
201
|
+
let offsetX = x;
|
|
202
|
+
if (typeof clip?.x1 === 'number' && typeof clip?.x2 === 'number') {
|
|
203
|
+
const { x1, x2 } = clip;
|
|
204
|
+
const width = this.caches.completeLineWidths.get(line);
|
|
205
|
+
if (width === undefined || x < x1 || x + width > x2) {
|
|
206
|
+
const characters = this.caches.getStyledChars(line, x2 - x);
|
|
207
|
+
const visibleCharacters = [];
|
|
208
|
+
let column = x;
|
|
209
|
+
let clipped = characters.length === 0;
|
|
210
|
+
// Transformers can add content even when no source glyph survives.
|
|
211
|
+
offsetX = Math.max(x, x1);
|
|
212
|
+
for (const character of characters) {
|
|
213
|
+
if (column >= x2) {
|
|
214
|
+
clipped = true;
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
const end = column +
|
|
218
|
+
Math.max(1, this.caches.getStringWidth(character.value));
|
|
219
|
+
if (column >= x1 && end <= x2) {
|
|
220
|
+
// Keep the first surviving glyph at its original column.
|
|
221
|
+
if (visibleCharacters.length === 0) {
|
|
222
|
+
offsetX = column;
|
|
223
|
+
}
|
|
224
|
+
visibleCharacters.push(character);
|
|
225
|
+
}
|
|
226
|
+
else {
|
|
227
|
+
clipped = true;
|
|
228
|
+
}
|
|
229
|
+
column = end;
|
|
230
|
+
}
|
|
231
|
+
// Keep fully-inside lines untouched, including their ANSI bytes.
|
|
232
|
+
if (clipped) {
|
|
233
|
+
line = styledCharsToString(visibleCharacters);
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
// The bounded lookahead proved this is the complete line.
|
|
237
|
+
// Reuse its geometry and styles, never a clipped prefix.
|
|
238
|
+
this.caches.completeLineWidths.set(line, column - x);
|
|
239
|
+
this.caches.styledChars.set(line, characters);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
210
243
|
for (const transformer of transformers) {
|
|
211
244
|
line = transformer(line, index);
|
|
212
245
|
}
|
|
213
246
|
const characters = this.caches.getStyledChars(line);
|
|
214
|
-
let offsetX = x;
|
|
215
247
|
// Nothing to write (e.g. line was clipped away).
|
|
216
248
|
if (characters.length === 0) {
|
|
217
249
|
offsetY++;
|
package/build/output.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../src/output.ts"],"names":[],"mappings":"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"}
|
package/build/render.d.ts
CHANGED
|
@@ -64,6 +64,8 @@ export type RenderOptions = {
|
|
|
64
64
|
Enable incremental rendering mode which only updates changed lines instead of redrawing the entire output.
|
|
65
65
|
This can reduce flickering and improve performance for frequently updating UIs.
|
|
66
66
|
|
|
67
|
+
When OSC 66 is unavailable, fullscreen incremental frames (dynamic height equal to the terminal row count) may use allocated seek painting instead of raw output. Inline frames, Static output, and non-fullscreen heights keep the existing raw path. See `explicitWidth`.
|
|
68
|
+
|
|
67
69
|
@default false
|
|
68
70
|
*/
|
|
69
71
|
incrementalRendering?: boolean;
|
|
@@ -89,6 +91,15 @@ export type RenderOptions = {
|
|
|
89
91
|
*/
|
|
90
92
|
kittyKeyboard?: KittyKeyboardOptions;
|
|
91
93
|
/**
|
|
94
|
+
Automatically negotiate OSC 66 explicit text widths for eligible interactive terminals.
|
|
95
|
+
Set to `disabled` to skip detection and override the manual environment switch.
|
|
96
|
+
|
|
97
|
+
When OSC 66 is not confirmed, eligible fullscreen incremental frames may use an allocated seek row writer instead of raw output. `explicitWidth: 'disabled'` and `INK_EXPLICIT_WIDTH=0` disable that fallback too. `INK_EXPLICIT_WIDTH=1` still forces OSC 66 encoding without a probe.
|
|
98
|
+
|
|
99
|
+
@default 'auto'
|
|
100
|
+
*/
|
|
101
|
+
explicitWidth?: 'auto' | 'disabled';
|
|
102
|
+
/**
|
|
92
103
|
Override automatic interactive mode detection.
|
|
93
104
|
|
|
94
105
|
By default, Ink detects whether the environment is interactive based on CI detection (via [`is-in-ci`](https://github.com/sindresorhus/is-in-ci)) and `stdout.isTTY`. Most users should not need to set this.
|
package/build/render.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,GAAqD,MAAM,UAAU,CAAC;AAC7E,OAAO,SAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AAEnC,OAAO,GAAqD,MAAM,UAAU,CAAC;AAC7E,OAAO,SAAS,MAAM,gBAAgB,CAAC;AA2MvC;;EAEE;AACF,MAAM,MAAM,GAAG,CACd,IAAe,EACf,OAA4C,EACjC,EAAE;IACb,MAAM,UAAU,GAAe;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE;QACV,oBAAoB,EAAE,KAAK;QAC3B,UAAU,EAAE,KAAK;QACjB,eAAe,EAAE,KAAK;QACtB,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,CAAC;IAEF,MAAM,QAAQ,GAAQ,WAAW,CAChC,UAAU,CAAC,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CACzB,CAAC;IACF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,OAAO;YACN,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,oBAAoB,EAAE,QAAQ,CAAC,oBAAoB;QACnD,OAAO;YACN,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,KAAK,EAAE,QAAQ,CAAC,KAAK;KACrB,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC;AAEtB,MAAM,UAAU,GAAG,CAClB,SAAyD,EAAE,EAC3C,EAAE;IAClB,IAAI,MAAM,YAAY,MAAM,EAAE,CAAC;QAC9B,OAAO;YACN,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;SACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CACnB,MAA0B,EAC1B,cAAyB,EACnB,EAAE;IACR,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;QACrC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC;IACpB,CAAC;IAED,0EAA0E;IAC1E,0EAA0E;IAC1E,2EAA2E;IAC3E,4EAA4E;IAC5E,+BAA+B;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,8LAA8L,CAC9L,CAAC;IAEF,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
const consumeCsiBody = (text, start) => {
|
|
2
|
+
let index = start;
|
|
3
|
+
while (index < text.length) {
|
|
4
|
+
const code = text.charCodeAt(index);
|
|
5
|
+
if (code < 0x30 || code > 0x3f) {
|
|
6
|
+
break;
|
|
7
|
+
}
|
|
8
|
+
index++;
|
|
9
|
+
}
|
|
10
|
+
while (index < text.length) {
|
|
11
|
+
const code = text.charCodeAt(index);
|
|
12
|
+
if (code < 0x20 || code > 0x2f) {
|
|
13
|
+
break;
|
|
14
|
+
}
|
|
15
|
+
index++;
|
|
16
|
+
}
|
|
17
|
+
if (index >= text.length) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
const final = text.charCodeAt(index);
|
|
21
|
+
if (final < 0x40 || final > 0x7e) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
return index - start + 1;
|
|
25
|
+
};
|
|
26
|
+
const consumeString = (text, start, isOsc, c1Introducer) => {
|
|
27
|
+
let index = start + (c1Introducer ? 1 : 2);
|
|
28
|
+
while (index < text.length) {
|
|
29
|
+
const code = text.charCodeAt(index);
|
|
30
|
+
if (isOsc && code === 0x07) {
|
|
31
|
+
return index - start + 1;
|
|
32
|
+
}
|
|
33
|
+
if (code === 0x9c) {
|
|
34
|
+
return index - start + 1;
|
|
35
|
+
}
|
|
36
|
+
if (code === 0x1b &&
|
|
37
|
+
index + 1 < text.length &&
|
|
38
|
+
text.charCodeAt(index + 1) === 0x5c) {
|
|
39
|
+
return index - start + 2;
|
|
40
|
+
}
|
|
41
|
+
index++;
|
|
42
|
+
}
|
|
43
|
+
return undefined;
|
|
44
|
+
};
|
|
45
|
+
const consumeEsc = (text, start) => {
|
|
46
|
+
if (start + 1 >= text.length) {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
const next = text.charCodeAt(start + 1);
|
|
50
|
+
if (next === 0x5b) {
|
|
51
|
+
const body = consumeCsiBody(text, start + 2);
|
|
52
|
+
return body === undefined ? undefined : 2 + body;
|
|
53
|
+
}
|
|
54
|
+
if (next === 0x5d) {
|
|
55
|
+
return consumeString(text, start, true, false);
|
|
56
|
+
}
|
|
57
|
+
if (next === 0x50 || next === 0x5f || next === 0x5e || next === 0x58) {
|
|
58
|
+
return consumeString(text, start, false, false);
|
|
59
|
+
}
|
|
60
|
+
let index = start + 1;
|
|
61
|
+
while (index < text.length) {
|
|
62
|
+
const code = text.charCodeAt(index);
|
|
63
|
+
if (code >= 0x20 && code <= 0x2f) {
|
|
64
|
+
index++;
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
if (code >= 0x30 && code <= 0x7e) {
|
|
68
|
+
return index - start + 1;
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
};
|
|
74
|
+
const token = (kind, text, start, length) => ({
|
|
75
|
+
kind,
|
|
76
|
+
raw: text.slice(start, start + length),
|
|
77
|
+
end: start + length,
|
|
78
|
+
});
|
|
79
|
+
export function readTerminalControl(text, start) {
|
|
80
|
+
if (start >= text.length) {
|
|
81
|
+
return undefined;
|
|
82
|
+
}
|
|
83
|
+
const code = text.charCodeAt(start);
|
|
84
|
+
if (code === 0x1b) {
|
|
85
|
+
const length = consumeEsc(text, start);
|
|
86
|
+
if (length === undefined) {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
const next = text.charCodeAt(start + 1);
|
|
90
|
+
if (next === 0x5b) {
|
|
91
|
+
return token('csi', text, start, length);
|
|
92
|
+
}
|
|
93
|
+
if (next === 0x5d) {
|
|
94
|
+
return token('osc', text, start, length);
|
|
95
|
+
}
|
|
96
|
+
if (next === 0x50 || next === 0x5f || next === 0x5e || next === 0x58) {
|
|
97
|
+
return token('string', text, start, length);
|
|
98
|
+
}
|
|
99
|
+
return token('esc', text, start, length);
|
|
100
|
+
}
|
|
101
|
+
if (code === 0x9b) {
|
|
102
|
+
const body = consumeCsiBody(text, start + 1);
|
|
103
|
+
if (body === undefined) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
return token('csi', text, start, 1 + body);
|
|
107
|
+
}
|
|
108
|
+
if (code === 0x9d ||
|
|
109
|
+
code === 0x90 ||
|
|
110
|
+
code === 0x9f ||
|
|
111
|
+
code === 0x9e ||
|
|
112
|
+
code === 0x98) {
|
|
113
|
+
const length = consumeString(text, start, code === 0x9d, true);
|
|
114
|
+
if (length === undefined) {
|
|
115
|
+
return undefined;
|
|
116
|
+
}
|
|
117
|
+
return token(code === 0x9d ? 'osc' : 'string', text, start, length);
|
|
118
|
+
}
|
|
119
|
+
if (code <= 0x1f || code === 0x7f || (code >= 0x80 && code <= 0x9f)) {
|
|
120
|
+
return token('c0', text, start, 1);
|
|
121
|
+
}
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=terminal-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-control.js","sourceRoot":"","sources":["../src/terminal-control.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type CursorPosition } from './cursor-helpers.js';
|
|
2
|
+
import { type PreparedSeekRow } from './allocated-seek.js';
|
|
3
|
+
export type PaintContext = {
|
|
4
|
+
strategy: 'raw' | 'osc66' | 'seek-viewport';
|
|
5
|
+
columns: number;
|
|
6
|
+
rows: number;
|
|
7
|
+
};
|
|
8
|
+
export declare function selectPaintStrategy(input: {
|
|
9
|
+
eligible: boolean;
|
|
10
|
+
capability: 'raw' | 'osc66' | 'fallback';
|
|
11
|
+
incremental: boolean;
|
|
12
|
+
outputHeight: number;
|
|
13
|
+
rows: number;
|
|
14
|
+
}): PaintContext['strategy'];
|
|
15
|
+
export type PhysicalFrame = {
|
|
16
|
+
context: PaintContext;
|
|
17
|
+
ownsViewport: boolean;
|
|
18
|
+
valid: boolean;
|
|
19
|
+
logicalRows: readonly string[];
|
|
20
|
+
allocatedWidths: readonly number[];
|
|
21
|
+
cursor: {
|
|
22
|
+
x: number;
|
|
23
|
+
y: number;
|
|
24
|
+
} | undefined;
|
|
25
|
+
};
|
|
26
|
+
export declare const decawmOff = "\u001B[?7l";
|
|
27
|
+
export declare const decawmOn = "\u001B[?7h";
|
|
28
|
+
export declare const eraseDisplayHome = "\u001B[2J\u001B[H";
|
|
29
|
+
export declare const hyperlinkClose = "\u001B]8;;\u001B\\";
|
|
30
|
+
export declare const sgrReset = "\u001B[0m";
|
|
31
|
+
export declare const seekViewportReset = "\u001B]8;;\u001B\\\u001B[0m\u001B[2J\u001B[H";
|
|
32
|
+
export declare const isSeekViewport: (context: PaintContext | undefined) => context is PaintContext;
|
|
33
|
+
export declare const isSeekPhysicalFrame: (frame: PhysicalFrame | undefined) => frame is PhysicalFrame;
|
|
34
|
+
export declare const isOwnedSeekViewport: (frame: PhysicalFrame | undefined) => frame is PhysicalFrame;
|
|
35
|
+
export declare const clampSeekCursor: (cursor: CursorPosition | undefined, columns: number, rows: number) => CursorPosition | undefined;
|
|
36
|
+
export declare const buildSeekCursorSequence: (cursor: CursorPosition | undefined, columns: number, rows: number, cursorWasShown: boolean) => string;
|
|
37
|
+
export declare const encodeSeekRows: (prepared: readonly PreparedSeekRow[], indexes: readonly number[], columns: number) => string;
|
|
38
|
+
export declare const wrapSeekPaint: (payload: string) => string;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { hideCursorEscape, showCursorEscape, } from './cursor-helpers.js';
|
|
2
|
+
import { encodeSeekRow } from './allocated-seek.js';
|
|
3
|
+
export function selectPaintStrategy(input) {
|
|
4
|
+
if (!input.eligible || input.capability === 'raw')
|
|
5
|
+
return 'raw';
|
|
6
|
+
if (input.capability === 'osc66')
|
|
7
|
+
return 'osc66';
|
|
8
|
+
return input.incremental && input.outputHeight === input.rows
|
|
9
|
+
? 'seek-viewport'
|
|
10
|
+
: 'raw';
|
|
11
|
+
}
|
|
12
|
+
export const decawmOff = '\u001B[?7l';
|
|
13
|
+
export const decawmOn = '\u001B[?7h';
|
|
14
|
+
export const eraseDisplayHome = '\u001B[2J\u001B[H';
|
|
15
|
+
export const hyperlinkClose = '\u001B]8;;\u001B\\';
|
|
16
|
+
export const sgrReset = '\u001B[0m';
|
|
17
|
+
export const seekViewportReset = `${hyperlinkClose}${sgrReset}${eraseDisplayHome}`;
|
|
18
|
+
export const isSeekViewport = (context) => context?.strategy === 'seek-viewport';
|
|
19
|
+
export const isSeekPhysicalFrame = (frame) => isSeekViewport(frame?.context);
|
|
20
|
+
export const isOwnedSeekViewport = (frame) => Boolean(frame?.valid && frame.ownsViewport && isSeekViewport(frame.context));
|
|
21
|
+
export const clampSeekCursor = (cursor, columns, rows) => {
|
|
22
|
+
if (cursor === undefined || columns < 1 || rows < 1) {
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
return {
|
|
26
|
+
x: Math.min(Math.max(cursor.x, 0), columns - 1),
|
|
27
|
+
y: Math.min(Math.max(cursor.y, 0), rows - 1),
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
const cup = (x, y) => `\u001B[${y + 1};${x + 1}H`;
|
|
31
|
+
export const buildSeekCursorSequence = (cursor, columns, rows, cursorWasShown) => {
|
|
32
|
+
const clamped = clampSeekCursor(cursor, columns, rows);
|
|
33
|
+
const hide = cursorWasShown || clamped === undefined ? hideCursorEscape : '';
|
|
34
|
+
if (clamped === undefined) {
|
|
35
|
+
return hide + cup(0, Math.max(0, rows - 1));
|
|
36
|
+
}
|
|
37
|
+
return hide + cup(clamped.x, clamped.y) + showCursorEscape;
|
|
38
|
+
};
|
|
39
|
+
export const encodeSeekRows = (prepared, indexes, columns) => {
|
|
40
|
+
let output = '';
|
|
41
|
+
for (const index of indexes) {
|
|
42
|
+
output += encodeSeekRow(prepared[index], index, columns);
|
|
43
|
+
}
|
|
44
|
+
return output;
|
|
45
|
+
};
|
|
46
|
+
export const wrapSeekPaint = (payload) => payload.length === 0 ? '' : `${decawmOff}${payload}${decawmOn}`;
|
|
47
|
+
//# sourceMappingURL=terminal-paint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-paint.js","sourceRoot":"","sources":["../src/terminal-paint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nuvin/ink",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.7.0-alpha",
|
|
4
4
|
"description": "React for CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "marschhuynh/ink",
|
|
@@ -88,6 +88,7 @@
|
|
|
88
88
|
"@types/stack-utils": "^2.0.3",
|
|
89
89
|
"@types/ws": "^8.18.1",
|
|
90
90
|
"@vdemedes/prettier-config": "^2.0.1",
|
|
91
|
+
"@xterm/headless": "6.0.0",
|
|
91
92
|
"ava": "^7.0.0",
|
|
92
93
|
"boxen": "^8.0.1",
|
|
93
94
|
"delay": "^7.0.0",
|
package/readme.md
CHANGED
|
@@ -3053,6 +3053,56 @@ You can even inspect and change the props of components, and see the results imm
|
|
|
3053
3053
|
> [!NOTE]
|
|
3054
3054
|
> You must manually quit your CLI via <kbd>Ctrl</kbd>+<kbd>C</kbd> after you're done testing.
|
|
3055
3055
|
|
|
3056
|
+
## Explicit terminal widths
|
|
3057
|
+
|
|
3058
|
+
Ink automatically negotiates [OSC 66 explicit grapheme widths](https://sw.kovidgoyal.net/kitty/text-sizing-protocol/) for eligible interactive terminals. When supported, Ink tells the terminal how many cells each eligible original grapheme occupies. Layout, wrapping, selection, and copy text remain unchanged.
|
|
3059
|
+
|
|
3060
|
+
Detection requires TTY output and a readable, raw-capable TTY input owned by an Ink input hook. A single 200 ms window starts with the first nonempty frame, including time spent waiting for raw-input readiness. Ink asks for private cursor-position reports, verifies column 1, and draws only in a cell reserved for its first frame. It does not home the cursor or add a probe newline. No reply, unsupported OSC 66, an unsafe initial position, or interrupted startup leaves OSC 66 unused. Eligible fullscreen incremental frames then use the allocated seek fallback below; other frames keep ordinary output. A terminal that ignores private cursor reports also skips OSC 66, even if it otherwise supports it.
|
|
3061
|
+
|
|
3062
|
+
During that window, dynamic updates coalesce to the latest pending frame; Static additions are retained in order. Disable explicit-width negotiation when every intermediate startup frame must be emitted immediately.
|
|
3063
|
+
|
|
3064
|
+
Redirected, noninteractive, debug, and screen-reader output skip detection and encoding. External stdout/stderr writes are not encoded. Ink-managed external writes, resize, clear, raw-input release, and unmount cancel pending detection safely. Use exclusive terminal-stream ownership during negotiation; unrelated direct writes or other consumers of physical stdin are outside Ink's input/output ownership. A fresh Ink instance negotiates again; there is no separate suspend/resume negotiation API.
|
|
3065
|
+
|
|
3066
|
+
To disable detection, OSC 66 encoding, and the seek fallback:
|
|
3067
|
+
|
|
3068
|
+
```jsx
|
|
3069
|
+
render(<MyApp />, {explicitWidth: 'disabled'});
|
|
3070
|
+
```
|
|
3071
|
+
|
|
3072
|
+
The default is `explicitWidth: 'auto'`. Environment overrides are captured once per instance:
|
|
3073
|
+
|
|
3074
|
+
```sh
|
|
3075
|
+
INK_EXPLICIT_WIDTH=0 my-cli # Disable detection, OSC 66 encoding, and the seek fallback
|
|
3076
|
+
INK_EXPLICIT_WIDTH=1 my-cli # Force OSC 66 encoding without a probe (verified terminals only)
|
|
3077
|
+
```
|
|
3078
|
+
|
|
3079
|
+
An explicit `explicitWidth: 'disabled'` option overrides both environment settings. With the variable unset (or another value), automatic detection is used. Force-on and force-off precedence is unchanged: `INK_EXPLICIT_WIDTH=1` still selects OSC 66 on an eligible TTY, and both the option and `INK_EXPLICIT_WIDTH=0` skip the new path too.
|
|
3080
|
+
|
|
3081
|
+
**Forcing `1` does not detect terminal support. Unsupported terminals may hide wrapped non-ASCII text.** Automatic OSC 66 fallback avoids that risk. It does not by itself fix width disagreements; the seek path below is a separate, bounded fallback.
|
|
3082
|
+
|
|
3083
|
+
### Allocated seek fallback
|
|
3084
|
+
|
|
3085
|
+
When OSC 66 is not confirmed, Ink can keep fullscreen incremental frames on their allocated cell grid by seeking to each changed row and prefilling non-ASCII graphemes. Layout, wrapping, Ink-managed selection, and original copy text remain unchanged.
|
|
3086
|
+
|
|
3087
|
+
Seek painting is used only when all of the following hold at actual write time:
|
|
3088
|
+
|
|
3089
|
+
- `incrementalRendering: true`
|
|
3090
|
+
- interactive TTY output
|
|
3091
|
+
- debug and screen-reader modes are off
|
|
3092
|
+
- the dynamic frame height equals the current terminal row count
|
|
3093
|
+
|
|
3094
|
+
Inline incremental frames, frames shorter or taller than the viewport, Static output, redirected/noninteractive/debug/screen-reader output, and ordinary stdout/stderr writes keep the existing raw path. OSC 66 success and `INK_EXPLICIT_WIDTH=1` still take precedence on eligible TTYs.
|
|
3095
|
+
|
|
3096
|
+
Seeking can restore allocated cursor positions and overwrite excess paint. It cannot make an unsupported terminal shape a ZWJ sequence into one glyph. Split, clipped, incomplete, or erased portions of that glyph are accepted limits; damage to neighboring content or unintended row movement is not. Ink-managed copy still reads original grid text. Native terminal copy reads cells that may have been overwritten, so exact native copy is not guaranteed.
|
|
3097
|
+
|
|
3098
|
+
Seek frames skip the existing scroll-region shift optimization. Unchanged rows are still skipped. Extra absolute seeks, styled prefills, and full-viewport resize repaints are intentional costs, not a performance claim.
|
|
3099
|
+
|
|
3100
|
+
Before restoring a fullscreen seek frame after ordinary or Static output, Ink advances a blank viewport so that output can move into primary-screen history rather than being immediately overwritten at home. That conservative first version may add extra blank lines to primary-screen history around external output.
|
|
3101
|
+
|
|
3102
|
+
Physical terminal acceptance for this fallback is still pending. Completing source tests does not qualify a terminal. A failed OSC 66 probe does not by itself establish seek support.
|
|
3103
|
+
|
|
3104
|
+
Automated negotiation, parser, and seek-fallback tests use synthetic streams and a headless terminal model. Passing them does not prove physical glyph width, overwrite, resize, or copy behavior in a terminal emulator. Validate rendering in a real foreground terminal before treating a terminal as supported.
|
|
3105
|
+
|
|
3056
3106
|
## Screen Reader Support
|
|
3057
3107
|
|
|
3058
3108
|
Ink has basic support for screen readers.
|