@jrichman/ink 6.4.7 → 6.4.8
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/components/Text.d.ts +9 -1
- package/build/components/Text.js +2 -2
- package/build/components/Text.js.map +1 -1
- package/build/dom.d.ts +2 -0
- package/build/dom.js.map +1 -1
- package/build/ink.d.ts +1 -0
- package/build/ink.js +25 -8
- package/build/ink.js.map +1 -1
- package/build/log-update.d.ts +11 -2
- package/build/log-update.js +187 -35
- package/build/log-update.js.map +1 -1
- package/build/measure-text.d.ts +33 -0
- package/build/measure-text.js +33 -0
- package/build/measure-text.js.map +1 -1
- package/build/output.d.ts +7 -0
- package/build/output.js +49 -2
- package/build/output.js.map +1 -1
- package/build/reconciler.js +16 -0
- package/build/reconciler.js.map +1 -1
- package/build/render-node-to-output.js +60 -9
- package/build/render-node-to-output.js.map +1 -1
- package/build/renderer.d.ts +4 -0
- package/build/renderer.js +2 -1
- package/build/renderer.js.map +1 -1
- package/build/selection.js +2 -31
- package/build/selection.js.map +1 -1
- package/build/squash-text-nodes.d.ts +13 -0
- package/build/squash-text-nodes.js +24 -1
- package/build/squash-text-nodes.js.map +1 -1
- package/build/wrap-text.d.ts +6 -0
- package/build/wrap-text.js +120 -0
- package/build/wrap-text.js.map +1 -0
- package/package.json +2 -1
|
@@ -47,9 +47,17 @@ export type Props = {
|
|
|
47
47
|
This property tells Ink to wrap or truncate text if its width is larger than the container. If `wrap` is passed (the default), Ink will wrap text and split it into multiple lines. If `truncate-*` is passed, Ink will truncate text instead, resulting in one line of text with the rest cut off.
|
|
48
48
|
*/
|
|
49
49
|
readonly wrap?: Styles['textWrap'];
|
|
50
|
+
/**
|
|
51
|
+
When enabled, the terminal cursor will be positioned at the end of this Text component's content. Useful for input fields where IME (Input Method Editor) cursor synchronization is needed.
|
|
52
|
+
*/
|
|
53
|
+
readonly terminalCursorFocus?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
Specifies the cursor position within the text content (character index). Only works when `terminalCursorFocus` is true. If not specified, the cursor will be positioned at the end of the text (default behavior).
|
|
56
|
+
*/
|
|
57
|
+
readonly terminalCursorPosition?: number;
|
|
50
58
|
readonly children?: ReactNode;
|
|
51
59
|
};
|
|
52
60
|
/**
|
|
53
61
|
This component can display text and change its style to make it bold, underlined, italic, or strikethrough.
|
|
54
62
|
*/
|
|
55
|
-
export default function Text({ color, backgroundColor, dimColor, bold, italic, underline, strikethrough, inverse, wrap, children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden, }: Props): React.JSX.Element | null;
|
|
63
|
+
export default function Text({ color, backgroundColor, dimColor, bold, italic, underline, strikethrough, inverse, wrap, terminalCursorFocus, terminalCursorPosition, children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden, }: Props): React.JSX.Element | null;
|
package/build/components/Text.js
CHANGED
|
@@ -6,7 +6,7 @@ import { backgroundContext } from './BackgroundContext.js';
|
|
|
6
6
|
/**
|
|
7
7
|
This component can display text and change its style to make it bold, underlined, italic, or strikethrough.
|
|
8
8
|
*/
|
|
9
|
-
export default function Text({ color, backgroundColor, dimColor = false, bold = false, italic = false, underline = false, strikethrough = false, inverse = false, wrap = 'wrap', children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden = false, }) {
|
|
9
|
+
export default function Text({ color, backgroundColor, dimColor = false, bold = false, italic = false, underline = false, strikethrough = false, inverse = false, wrap = 'wrap', terminalCursorFocus = false, terminalCursorPosition, children, 'aria-label': ariaLabel, 'aria-hidden': ariaHidden = false, }) {
|
|
10
10
|
const { isScreenReaderEnabled } = useContext(accessibilityContext);
|
|
11
11
|
const inheritedBackgroundColor = useContext(backgroundContext);
|
|
12
12
|
const childrenOrAriaLabel = isScreenReaderEnabled && ariaLabel ? ariaLabel : children;
|
|
@@ -45,6 +45,6 @@ export default function Text({ color, backgroundColor, dimColor = false, bold =
|
|
|
45
45
|
if (isScreenReaderEnabled && ariaHidden) {
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
48
|
-
return (React.createElement("ink-text", { style: { flexGrow: 0, flexShrink: 1, flexDirection: 'row', textWrap: wrap }, internal_transform: transform }, isScreenReaderEnabled && ariaLabel ? ariaLabel : children));
|
|
48
|
+
return (React.createElement("ink-text", { style: { flexGrow: 0, flexShrink: 1, flexDirection: 'row', textWrap: wrap }, internal_transform: transform, internal_terminalCursorFocus: terminalCursorFocus, internal_terminalCursorPosition: terminalCursorPosition }, isScreenReaderEnabled && ariaLabel ? ariaLabel : children));
|
|
49
49
|
}
|
|
50
50
|
//# sourceMappingURL=Text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAC,UAAU,EAAiB,MAAM,OAAO,CAAC;AACxD,OAAO,KAAiC,MAAM,OAAO,CAAC;AAEtD,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,EAAC,oBAAoB,EAAC,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"Text.js","sourceRoot":"","sources":["../../src/components/Text.tsx"],"names":[],"mappings":"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"}
|
package/build/dom.d.ts
CHANGED
|
@@ -16,6 +16,8 @@ export type DOMElement = {
|
|
|
16
16
|
attributes: Record<string, DOMNodeAttribute>;
|
|
17
17
|
childNodes: DOMNode[];
|
|
18
18
|
internal_transform?: OutputTransformer;
|
|
19
|
+
internal_terminalCursorFocus?: boolean;
|
|
20
|
+
internal_terminalCursorPosition?: number;
|
|
19
21
|
internal_accessibility?: {
|
|
20
22
|
role?: 'button' | 'checkbox' | 'combobox' | 'list' | 'listbox' | 'listitem' | 'menu' | 'menuitem' | 'option' | 'progressbar' | 'radio' | 'radiogroup' | 'tab' | 'tablist' | 'table' | 'textbox' | 'timer' | 'toolbar';
|
|
21
23
|
state?: {
|
package/build/dom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"AAAA,OAAO,IAA6B,MAAM,aAAa,CAAC;AACxD,OAAO,EACN,kBAAkB,EAClB,kBAAkB,EAClB,yBAAyB,GACzB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAC,yBAAyB,EAAC,MAAM,gBAAgB,CAAC;AACzD,OAAO,eAAe,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"dom.js","sourceRoot":"","sources":["../src/dom.ts"],"names":[],"mappings":"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"}
|
package/build/ink.d.ts
CHANGED
package/build/ink.js
CHANGED
|
@@ -12,7 +12,7 @@ import wrapAnsi from 'wrap-ansi';
|
|
|
12
12
|
import reconciler from './reconciler.js';
|
|
13
13
|
import render from './renderer.js';
|
|
14
14
|
import * as dom from './dom.js';
|
|
15
|
-
import logUpdate from './log-update.js';
|
|
15
|
+
import logUpdate, { positionImeCursor } from './log-update.js';
|
|
16
16
|
import instances from './instances.js';
|
|
17
17
|
import App from './components/App.js';
|
|
18
18
|
import { accessibilityContext as AccessibilityContext } from './components/AccessibilityContext.js';
|
|
@@ -48,6 +48,7 @@ export default class Ink {
|
|
|
48
48
|
isUnmounted;
|
|
49
49
|
lastOutput;
|
|
50
50
|
lastOutputHeight;
|
|
51
|
+
lastCursorPosition;
|
|
51
52
|
container;
|
|
52
53
|
rootNode;
|
|
53
54
|
// This variable is used only in debug mode to store full static output
|
|
@@ -205,7 +206,7 @@ export default class Ink {
|
|
|
205
206
|
debugRainbowColor = rainbowColors[this.frameIndex % rainbowColors.length];
|
|
206
207
|
this.frameIndex++;
|
|
207
208
|
}
|
|
208
|
-
const { output, outputHeight, staticOutput, styledOutput } = render(this.rootNode, this.isScreenReaderEnabled, this.selection, this.options.selectionStyle);
|
|
209
|
+
const { output, outputHeight, staticOutput, styledOutput, cursorPosition } = render(this.rootNode, this.isScreenReaderEnabled, this.selection, this.options.selectionStyle);
|
|
209
210
|
this.options.onRender?.({ renderTime: performance.now() - startTime });
|
|
210
211
|
// If <Static> output isn't empty, it means new children have been added to it
|
|
211
212
|
const hasStaticOutput = staticOutput && staticOutput !== '\n';
|
|
@@ -228,7 +229,7 @@ export default class Ink {
|
|
|
228
229
|
if (hasStaticOutput) {
|
|
229
230
|
this.fullStaticOutput += staticOutput;
|
|
230
231
|
}
|
|
231
|
-
this.log(this.fullStaticOutput + output, styledOutput, debugRainbowColor);
|
|
232
|
+
this.log(this.fullStaticOutput + output, styledOutput, debugRainbowColor, cursorPosition);
|
|
232
233
|
this.lastOutput = output;
|
|
233
234
|
return;
|
|
234
235
|
}
|
|
@@ -269,23 +270,39 @@ export default class Ink {
|
|
|
269
270
|
this.fullStaticOutput += staticOutput;
|
|
270
271
|
}
|
|
271
272
|
if (this.lastOutputHeight >= this.options.stdout.rows) {
|
|
272
|
-
|
|
273
|
+
// Build a single buffer for all operations
|
|
274
|
+
let buffer = '';
|
|
275
|
+
buffer += ansiEscapes.clearTerminal + this.fullStaticOutput + output;
|
|
276
|
+
// Position cursor after screen clear if requested by a component
|
|
277
|
+
if (cursorPosition) {
|
|
278
|
+
const lineCount = output.split('\n').length;
|
|
279
|
+
buffer += positionImeCursor(lineCount, cursorPosition);
|
|
280
|
+
}
|
|
281
|
+
this.options.stdout.write(buffer);
|
|
273
282
|
this.lastOutput = output;
|
|
274
283
|
this.lastOutputHeight = outputHeight;
|
|
275
|
-
this.
|
|
284
|
+
this.lastCursorPosition = cursorPosition;
|
|
285
|
+
this.log.sync(output, cursorPosition);
|
|
276
286
|
return;
|
|
277
287
|
}
|
|
278
288
|
// To ensure static output is cleanly rendered before main output, clear main output first
|
|
279
289
|
if (hasStaticOutput) {
|
|
280
290
|
this.log.clear();
|
|
281
291
|
this.options.stdout.write(staticOutput);
|
|
282
|
-
this.log(output, styledOutput, debugRainbowColor);
|
|
292
|
+
this.log(output, styledOutput, debugRainbowColor, cursorPosition);
|
|
283
293
|
}
|
|
284
|
-
|
|
285
|
-
|
|
294
|
+
const outputChanged = output !== this.lastOutput;
|
|
295
|
+
const cursorChanged = cursorPosition !== this.lastCursorPosition &&
|
|
296
|
+
(!cursorPosition ||
|
|
297
|
+
!this.lastCursorPosition ||
|
|
298
|
+
cursorPosition.row !== this.lastCursorPosition.row ||
|
|
299
|
+
cursorPosition.col !== this.lastCursorPosition.col);
|
|
300
|
+
if (!hasStaticOutput && (outputChanged || cursorChanged)) {
|
|
301
|
+
this.throttledLog(output, styledOutput, debugRainbowColor, cursorPosition);
|
|
286
302
|
}
|
|
287
303
|
this.lastOutput = output;
|
|
288
304
|
this.lastOutputHeight = outputHeight;
|
|
305
|
+
this.lastCursorPosition = cursorPosition;
|
|
289
306
|
};
|
|
290
307
|
recalculateLayout() {
|
|
291
308
|
this.markAllTextNodesDirty(this.rootNode);
|
package/build/ink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ink.js","sourceRoot":"","sources":["../src/ink.tsx"],"names":[],"mappings":"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"}
|
package/build/log-update.d.ts
CHANGED
|
@@ -1,10 +1,19 @@
|
|
|
1
1
|
import { type Writable } from 'node:stream';
|
|
2
2
|
import { type StyledChar } from '@alcalzone/ansi-tokenize';
|
|
3
|
+
export type CursorPosition = {
|
|
4
|
+
row: number;
|
|
5
|
+
col: number;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Position terminal cursor for IME support.
|
|
9
|
+
* Calculates relative distance from the end of output to the cursor position.
|
|
10
|
+
*/
|
|
11
|
+
export declare function positionImeCursor(lineCount: number, cursorPosition: CursorPosition): string;
|
|
3
12
|
export type LogUpdate = {
|
|
4
13
|
clear: () => void;
|
|
5
14
|
done: () => void;
|
|
6
|
-
sync: (str: string) => void;
|
|
7
|
-
(str: string, styledOutput: StyledChar[][], debugRainbowColor?: string): void;
|
|
15
|
+
sync: (str: string, cursorPosition?: CursorPosition) => void;
|
|
16
|
+
(str: string, styledOutput: StyledChar[][], debugRainbowColor?: string, cursorPosition?: CursorPosition): void;
|
|
8
17
|
};
|
|
9
18
|
declare const logUpdate: {
|
|
10
19
|
create: (stream: Writable, { showCursor, alternateBuffer, alternateBufferAlreadyActive, incremental, getRows, getColumns, }?: {
|
package/build/log-update.js
CHANGED
|
@@ -6,6 +6,37 @@ import colorize from './colorize.js';
|
|
|
6
6
|
const enableSynchronizedOutput = true;
|
|
7
7
|
const enterSynchronizedOutput = '\u001B[?2026h';
|
|
8
8
|
const exitSynchronizedOutput = '\u001B[?2026l';
|
|
9
|
+
/**
|
|
10
|
+
* Build cursor movement sequence to move from currentRow to targetRow and targetCol.
|
|
11
|
+
* Uses safe pattern: go to line start → move rows → set column
|
|
12
|
+
* This avoids issues with intermediate lines being shorter than cursor position.
|
|
13
|
+
*/
|
|
14
|
+
function buildCursorMovement(currentRow, targetRow, targetCol) {
|
|
15
|
+
let buffer = '';
|
|
16
|
+
buffer += ansiEscapes.cursorTo(0);
|
|
17
|
+
const rowDiff = targetRow - currentRow;
|
|
18
|
+
if (rowDiff > 0) {
|
|
19
|
+
buffer += ansiEscapes.cursorDown(rowDiff);
|
|
20
|
+
}
|
|
21
|
+
else if (rowDiff < 0) {
|
|
22
|
+
buffer += ansiEscapes.cursorUp(-rowDiff);
|
|
23
|
+
}
|
|
24
|
+
buffer += ansiEscapes.cursorTo(targetCol);
|
|
25
|
+
return buffer;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Position terminal cursor for IME support.
|
|
29
|
+
* Calculates relative distance from the end of output to the cursor position.
|
|
30
|
+
*/
|
|
31
|
+
export function positionImeCursor(lineCount, cursorPosition) {
|
|
32
|
+
let buffer = '';
|
|
33
|
+
const moveUp = lineCount - 1 - cursorPosition.row;
|
|
34
|
+
if (moveUp > 0) {
|
|
35
|
+
buffer += ansiEscapes.cursorUp(moveUp);
|
|
36
|
+
}
|
|
37
|
+
buffer += ansiEscapes.cursorTo(cursorPosition.col);
|
|
38
|
+
return buffer;
|
|
39
|
+
}
|
|
9
40
|
const enterAlternateBuffer = (stream, alreadyActive) => {
|
|
10
41
|
if (!alreadyActive) {
|
|
11
42
|
stream.write(ansiEscapes.enterAlternativeScreen);
|
|
@@ -39,6 +70,21 @@ const ensureCursorShown = (showCursor, stream) => {
|
|
|
39
70
|
cliCursor.show(stream);
|
|
40
71
|
}
|
|
41
72
|
};
|
|
73
|
+
const isCursorPositionEqual = (a, b) => {
|
|
74
|
+
const posA = a ?? { row: 0, col: 0 };
|
|
75
|
+
const posB = b ?? { row: 0, col: 0 };
|
|
76
|
+
return posA.row === posB.row && posA.col === posB.col;
|
|
77
|
+
};
|
|
78
|
+
/**
|
|
79
|
+
* Get cursor position sequence for Alternate Buffer.
|
|
80
|
+
* Alternate Buffer has no scroll, so we can use absolute coordinates directly.
|
|
81
|
+
*/
|
|
82
|
+
const getAlternateBufferCursorSequence = (cursorPosition) => {
|
|
83
|
+
if (!cursorPosition) {
|
|
84
|
+
return '';
|
|
85
|
+
}
|
|
86
|
+
return ansiEscapes.cursorTo(cursorPosition.col, cursorPosition.row);
|
|
87
|
+
};
|
|
42
88
|
const moveCursorDown = (buffer, skippedLines) => {
|
|
43
89
|
if (skippedLines > 0) {
|
|
44
90
|
if (skippedLines === 1) {
|
|
@@ -50,6 +96,21 @@ const moveCursorDown = (buffer, skippedLines) => {
|
|
|
50
96
|
}
|
|
51
97
|
return 0;
|
|
52
98
|
};
|
|
99
|
+
const getLineLength = (styledChars) => {
|
|
100
|
+
if (styledChars === undefined) {
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
for (let j = styledChars.length - 1; j >= 0; j--) {
|
|
104
|
+
const char = styledChars[j];
|
|
105
|
+
if (char === undefined) {
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if ((char.value !== ' ' && char.value !== '') || char.styles.length > 0) {
|
|
109
|
+
return j + (char.fullWidth ? 2 : 1);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return 0;
|
|
113
|
+
};
|
|
53
114
|
const createStandard = (stream, { showCursor = false, alternateBuffer = false, alternateBufferAlreadyActive = false, getRows = () => 0, getColumns = () => 0, } = {}) => {
|
|
54
115
|
let previousLineCount = 0;
|
|
55
116
|
let previousOutput = '';
|
|
@@ -59,11 +120,15 @@ const createStandard = (stream, { showCursor = false, alternateBuffer = false, a
|
|
|
59
120
|
let previousRows = 0;
|
|
60
121
|
let previousColumns = 0;
|
|
61
122
|
let hasHiddenCursor = false;
|
|
123
|
+
let isFirstRender = true;
|
|
124
|
+
let previousCursorPosition;
|
|
62
125
|
if (alternateBuffer) {
|
|
63
126
|
enterAlternateBuffer(stream, alternateBufferAlreadyActive);
|
|
64
127
|
}
|
|
65
|
-
const render = (str, _styledOutput, debugRainbowColor) => {
|
|
66
|
-
|
|
128
|
+
const render = (str, _styledOutput, debugRainbowColor, cursorPosition) => {
|
|
129
|
+
if (!showCursor) {
|
|
130
|
+
hasHiddenCursor = ensureCursorHidden(showCursor, hasHiddenCursor, stream);
|
|
131
|
+
}
|
|
67
132
|
const output = str + '\n';
|
|
68
133
|
if (alternateBuffer) {
|
|
69
134
|
let alternateBufferOutput = output;
|
|
@@ -85,7 +150,8 @@ const createStandard = (stream, { showCursor = false, alternateBuffer = false, a
|
|
|
85
150
|
// if the entire output string has not changed.
|
|
86
151
|
if (alternateBufferOutput !== previousOutputAlternateBuffer ||
|
|
87
152
|
rows !== previousRows ||
|
|
88
|
-
columns !== previousColumns
|
|
153
|
+
columns !== previousColumns ||
|
|
154
|
+
!isCursorPositionEqual(cursorPosition, previousCursorPosition)) {
|
|
89
155
|
// Unfortunately, eraseScreen does not work correctly in iTerm2 so we
|
|
90
156
|
// have to use clearTerminal instead.
|
|
91
157
|
const eraseOperation = process.env['TERM_PROGRAM'] === 'iTerm.app'
|
|
@@ -95,28 +161,57 @@ const createStandard = (stream, { showCursor = false, alternateBuffer = false, a
|
|
|
95
161
|
outputToWrite = debugRainbowColor
|
|
96
162
|
? colorize(outputToWrite, debugRainbowColor, 'background')
|
|
97
163
|
: outputToWrite;
|
|
164
|
+
const cursorSequence = getAlternateBufferCursorSequence(cursorPosition);
|
|
98
165
|
stream.write((enableSynchronizedOutput ? enterSynchronizedOutput : '') +
|
|
99
166
|
ansiEscapes.cursorTo(0, 0) +
|
|
100
167
|
eraseOperation +
|
|
101
168
|
outputToWrite +
|
|
169
|
+
cursorSequence +
|
|
102
170
|
(enableSynchronizedOutput ? exitSynchronizedOutput : ''));
|
|
103
171
|
previousOutputAlternateBuffer = alternateBufferOutput;
|
|
104
172
|
previousRows = rows;
|
|
105
173
|
previousColumns = columns;
|
|
174
|
+
previousCursorPosition = cursorPosition ?? { row: 0, col: 0 };
|
|
106
175
|
}
|
|
107
176
|
previousOutput = output;
|
|
108
177
|
return;
|
|
109
178
|
}
|
|
179
|
+
const cursorChanged = !isCursorPositionEqual(cursorPosition, previousCursorPosition);
|
|
110
180
|
if (output === previousOutput) {
|
|
181
|
+
// Output is the same, but cursor position may have changed
|
|
182
|
+
if (cursorChanged && cursorPosition && previousCursorPosition) {
|
|
183
|
+
const buffer = buildCursorMovement(previousCursorPosition.row, cursorPosition.row, cursorPosition.col);
|
|
184
|
+
previousCursorPosition = cursorPosition;
|
|
185
|
+
stream.write(buffer);
|
|
186
|
+
}
|
|
111
187
|
return;
|
|
112
188
|
}
|
|
189
|
+
const lineCount = output.split('\n').length;
|
|
190
|
+
let buffer = '';
|
|
191
|
+
// Move cursor to end of previous output before erasing (only if we have previous cursor position)
|
|
192
|
+
if (!isFirstRender && previousCursorPosition) {
|
|
193
|
+
const moveDown = previousLineCount - 1 - previousCursorPosition.row;
|
|
194
|
+
if (moveDown > 0) {
|
|
195
|
+
buffer += ansiEscapes.cursorDown(moveDown);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
// Always erase previous lines
|
|
199
|
+
buffer += ansiEscapes.eraseLines(previousLineCount);
|
|
200
|
+
buffer += output;
|
|
201
|
+
isFirstRender = false;
|
|
202
|
+
if (cursorPosition) {
|
|
203
|
+
buffer += positionImeCursor(lineCount, cursorPosition);
|
|
204
|
+
}
|
|
205
|
+
previousCursorPosition = cursorPosition;
|
|
113
206
|
previousOutput = output;
|
|
114
|
-
|
|
115
|
-
outputToWrite =
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
207
|
+
previousLineCount = lineCount;
|
|
208
|
+
let outputToWrite = buffer;
|
|
209
|
+
if (debugRainbowColor) {
|
|
210
|
+
outputToWrite =
|
|
211
|
+
ansiEscapes.eraseLines(previousLineCount) +
|
|
212
|
+
colorize(output, debugRainbowColor, 'background');
|
|
213
|
+
}
|
|
214
|
+
stream.write(outputToWrite);
|
|
120
215
|
};
|
|
121
216
|
render.clear = () => {
|
|
122
217
|
hasHiddenCursor = false;
|
|
@@ -126,7 +221,14 @@ const createStandard = (stream, { showCursor = false, alternateBuffer = false, a
|
|
|
126
221
|
previousOutputAlternateBuffer = '';
|
|
127
222
|
return;
|
|
128
223
|
}
|
|
129
|
-
|
|
224
|
+
let buffer = '';
|
|
225
|
+
if (previousCursorPosition) {
|
|
226
|
+
const moveDown = previousLineCount - 1 - previousCursorPosition.row;
|
|
227
|
+
if (moveDown > 0) {
|
|
228
|
+
buffer += ansiEscapes.cursorDown(moveDown);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
stream.write(buffer + ansiEscapes.eraseLines(previousLineCount));
|
|
130
232
|
previousOutput = '';
|
|
131
233
|
previousLineCount = 0;
|
|
132
234
|
};
|
|
@@ -134,13 +236,15 @@ const createStandard = (stream, { showCursor = false, alternateBuffer = false, a
|
|
|
134
236
|
const lastFrame = previousOutput;
|
|
135
237
|
previousOutput = '';
|
|
136
238
|
previousLineCount = 0;
|
|
137
|
-
|
|
138
|
-
|
|
239
|
+
if (!showCursor) {
|
|
240
|
+
ensureCursorShown(showCursor, stream);
|
|
241
|
+
hasHiddenCursor = false;
|
|
242
|
+
}
|
|
139
243
|
if (alternateBuffer) {
|
|
140
244
|
exitAlternateBuffer(stream, lastFrame);
|
|
141
245
|
}
|
|
142
246
|
};
|
|
143
|
-
render.sync = (str) => {
|
|
247
|
+
render.sync = (str, _cursorPosition) => {
|
|
144
248
|
if (alternateBuffer) {
|
|
145
249
|
previousOutput = str;
|
|
146
250
|
return;
|
|
@@ -159,11 +263,14 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
159
263
|
let previousColumns = 0;
|
|
160
264
|
let hasHiddenCursor = false;
|
|
161
265
|
let alternateBufferStyledOutput = [];
|
|
266
|
+
let previousCursorPosition;
|
|
162
267
|
if (alternateBuffer) {
|
|
163
268
|
enterAlternateBuffer(stream, alternateBufferAlreadyActive);
|
|
164
269
|
}
|
|
165
|
-
const render = (str, styledOutput, debugRainbowColor) => {
|
|
166
|
-
|
|
270
|
+
const render = (str, styledOutput, debugRainbowColor, cursorPosition) => {
|
|
271
|
+
if (!showCursor) {
|
|
272
|
+
hasHiddenCursor = ensureCursorHidden(showCursor, hasHiddenCursor, stream);
|
|
273
|
+
}
|
|
167
274
|
const output = str + '\n';
|
|
168
275
|
if (alternateBuffer) {
|
|
169
276
|
let alternateBufferOutput = output;
|
|
@@ -190,8 +297,10 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
190
297
|
// if the entire output string has not changed.
|
|
191
298
|
if (alternateBufferOutput !== previousOutputAlternateBuffer ||
|
|
192
299
|
rows !== previousRows ||
|
|
193
|
-
columns !== previousColumns
|
|
300
|
+
columns !== previousColumns ||
|
|
301
|
+
!isCursorPositionEqual(cursorPosition, previousCursorPosition)) {
|
|
194
302
|
const nextLines = alternateBufferOutput.split('\n');
|
|
303
|
+
const cursorSequence = getAlternateBufferCursorSequence(cursorPosition);
|
|
195
304
|
if (rows === previousRows && columns === previousColumns) {
|
|
196
305
|
const buffer = [];
|
|
197
306
|
if (enableSynchronizedOutput) {
|
|
@@ -206,19 +315,7 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
206
315
|
}
|
|
207
316
|
skippedLines = moveCursorDown(buffer, skippedLines);
|
|
208
317
|
let lineToWrite = nextLines[i] ?? '';
|
|
209
|
-
|
|
210
|
-
const styledOutput = alternateBufferStyledOutput[i];
|
|
211
|
-
if (styledOutput !== undefined) {
|
|
212
|
-
for (let j = styledOutput.length - 1; j >= 0; j--) {
|
|
213
|
-
const char = styledOutput[j];
|
|
214
|
-
if (char === undefined)
|
|
215
|
-
continue;
|
|
216
|
-
if (char.value !== ' ' && char.value !== '') {
|
|
217
|
-
lineLength = j + (char.fullWidth ? 2 : 1);
|
|
218
|
-
break;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
}
|
|
318
|
+
const lineLength = getLineLength(alternateBufferStyledOutput[i]);
|
|
222
319
|
lineToWrite = debugRainbowColor
|
|
223
320
|
? colorize(lineToWrite, debugRainbowColor, 'background')
|
|
224
321
|
: lineToWrite;
|
|
@@ -242,6 +339,7 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
242
339
|
buffer.push(ansiEscapes.eraseLine + ansiEscapes.cursorNextLine);
|
|
243
340
|
}
|
|
244
341
|
}
|
|
342
|
+
buffer.push(cursorSequence);
|
|
245
343
|
if (enableSynchronizedOutput) {
|
|
246
344
|
buffer.push(exitSynchronizedOutput);
|
|
247
345
|
}
|
|
@@ -257,27 +355,72 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
257
355
|
outputToWrite = debugRainbowColor
|
|
258
356
|
? colorize(outputToWrite, debugRainbowColor, 'background')
|
|
259
357
|
: outputToWrite;
|
|
260
|
-
stream.write(enterSynchronizedOutput +
|
|
358
|
+
stream.write((enableSynchronizedOutput ? enterSynchronizedOutput : '') +
|
|
261
359
|
ansiEscapes.cursorTo(0, 0) +
|
|
262
360
|
eraseOperation +
|
|
263
361
|
outputToWrite +
|
|
264
|
-
|
|
362
|
+
cursorSequence +
|
|
363
|
+
(enableSynchronizedOutput ? exitSynchronizedOutput : ''));
|
|
265
364
|
previousRows = rows;
|
|
266
365
|
previousColumns = columns;
|
|
267
366
|
}
|
|
268
367
|
previousOutputAlternateBuffer = alternateBufferOutput;
|
|
269
368
|
previousLines = nextLines;
|
|
369
|
+
previousCursorPosition = cursorPosition ?? { row: 0, col: 0 };
|
|
270
370
|
}
|
|
271
371
|
previousOutput = output;
|
|
272
372
|
return;
|
|
273
373
|
}
|
|
274
374
|
if (output === previousOutput) {
|
|
375
|
+
if (!isCursorPositionEqual(cursorPosition, previousCursorPosition) &&
|
|
376
|
+
cursorPosition &&
|
|
377
|
+
previousCursorPosition) {
|
|
378
|
+
const buffer = buildCursorMovement(previousCursorPosition.row, cursorPosition.row, cursorPosition.col);
|
|
379
|
+
previousCursorPosition = cursorPosition;
|
|
380
|
+
stream.write(buffer);
|
|
381
|
+
}
|
|
275
382
|
return;
|
|
276
383
|
}
|
|
277
384
|
const previousCount = previousLines.length;
|
|
278
385
|
const nextLines = output.split('\n');
|
|
279
386
|
const nextCount = nextLines.length;
|
|
280
387
|
const visibleCount = nextCount - 1;
|
|
388
|
+
if (cursorPosition !== undefined || previousCursorPosition !== undefined) {
|
|
389
|
+
let buffer = '';
|
|
390
|
+
if (output === '\n' || previousOutput.length === 0) {
|
|
391
|
+
// First rendering
|
|
392
|
+
buffer += output;
|
|
393
|
+
buffer += ansiEscapes.cursorSavePosition;
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
// Incremental rendering after cursor restore
|
|
397
|
+
buffer += ansiEscapes.cursorRestorePosition;
|
|
398
|
+
if (nextCount < previousCount) {
|
|
399
|
+
buffer += ansiEscapes.eraseLines(previousCount - nextCount + 1);
|
|
400
|
+
buffer += ansiEscapes.cursorUp(visibleCount);
|
|
401
|
+
}
|
|
402
|
+
else {
|
|
403
|
+
buffer += ansiEscapes.cursorUp(previousCount - 1);
|
|
404
|
+
}
|
|
405
|
+
for (let i = 0; i < visibleCount; i++) {
|
|
406
|
+
if (nextLines[i] === previousLines[i]) {
|
|
407
|
+
buffer += ansiEscapes.cursorNextLine;
|
|
408
|
+
continue;
|
|
409
|
+
}
|
|
410
|
+
buffer += ansiEscapes.eraseLine + nextLines[i] + '\n';
|
|
411
|
+
}
|
|
412
|
+
buffer += ansiEscapes.cursorSavePosition;
|
|
413
|
+
}
|
|
414
|
+
if (cursorPosition) {
|
|
415
|
+
// Move cursor to specified position
|
|
416
|
+
buffer += buildCursorMovement(visibleCount, cursorPosition.row, cursorPosition.col);
|
|
417
|
+
}
|
|
418
|
+
stream.write(buffer);
|
|
419
|
+
previousOutput = output;
|
|
420
|
+
previousLines = nextLines;
|
|
421
|
+
previousCursorPosition = cursorPosition;
|
|
422
|
+
return;
|
|
423
|
+
}
|
|
281
424
|
if (output === '\n' || previousOutput.length === 0) {
|
|
282
425
|
let outputToWrite = output;
|
|
283
426
|
outputToWrite = debugRainbowColor
|
|
@@ -329,7 +472,14 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
329
472
|
previousLines = [];
|
|
330
473
|
return;
|
|
331
474
|
}
|
|
332
|
-
|
|
475
|
+
let buffer = '';
|
|
476
|
+
if (previousCursorPosition) {
|
|
477
|
+
const moveDown = previousLines.length - 1 - previousCursorPosition.row;
|
|
478
|
+
if (moveDown > 0) {
|
|
479
|
+
buffer += ansiEscapes.cursorDown(moveDown);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
stream.write(buffer + ansiEscapes.eraseLines(previousLines.length));
|
|
333
483
|
previousOutput = '';
|
|
334
484
|
previousLines = [];
|
|
335
485
|
};
|
|
@@ -337,13 +487,15 @@ const createIncremental = (stream, { showCursor = false, alternateBuffer = false
|
|
|
337
487
|
const lastFrame = previousOutput;
|
|
338
488
|
previousOutput = '';
|
|
339
489
|
previousLines = [];
|
|
340
|
-
|
|
341
|
-
|
|
490
|
+
if (!showCursor) {
|
|
491
|
+
ensureCursorShown(showCursor, stream);
|
|
492
|
+
hasHiddenCursor = false;
|
|
493
|
+
}
|
|
342
494
|
if (alternateBuffer) {
|
|
343
495
|
exitAlternateBuffer(stream, lastFrame);
|
|
344
496
|
}
|
|
345
497
|
};
|
|
346
|
-
render.sync = (str) => {
|
|
498
|
+
render.sync = (str, _cursorPosition) => {
|
|
347
499
|
if (alternateBuffer) {
|
|
348
500
|
previousOutput = str;
|
|
349
501
|
return;
|