@jrichman/ink 6.4.7 → 6.4.9
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/index.d.ts +2 -1
- package/build/index.js +2 -1
- package/build/index.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 +79 -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
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;
|
package/build/log-update.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log-update.js","sourceRoot":"","sources":["../src/log-update.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"log-update.js","sourceRoot":"","sources":["../src/log-update.ts"],"names":[],"mappings":"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"}
|
package/build/measure-text.d.ts
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
import { type StyledChar } from '@alcalzone/ansi-tokenize';
|
|
2
|
+
import { type DOMNode } from './dom.js';
|
|
2
3
|
export type StringWidth = (text: string) => number;
|
|
4
|
+
/**
|
|
5
|
+
* Character offset range within a text sequence.
|
|
6
|
+
* Used for mapping DOM nodes to their character positions.
|
|
7
|
+
*/
|
|
8
|
+
export type CharOffsetRange = {
|
|
9
|
+
start: number;
|
|
10
|
+
end: number;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Maps DOM nodes to their character offset ranges within squashed text.
|
|
14
|
+
* This is the same character counting method used by getPositionAtOffset(),
|
|
15
|
+
* ensuring consistent cursor position calculations across the codebase.
|
|
16
|
+
*/
|
|
17
|
+
export type CharOffsetMap = Map<DOMNode, CharOffsetRange>;
|
|
3
18
|
export declare function setStringWidthFunction(fn: StringWidth): void;
|
|
4
19
|
export declare function clearStringWidthCache(): void;
|
|
5
20
|
export declare function toStyledCharacters(text: string): StyledChar[];
|
|
@@ -12,3 +27,21 @@ export declare function measureStyledChars(styledChars: StyledChar[]): {
|
|
|
12
27
|
width: number;
|
|
13
28
|
height: number;
|
|
14
29
|
};
|
|
30
|
+
/**
|
|
31
|
+
* Calculate row and column position at a given character offset.
|
|
32
|
+
* This is the unified cursor position calculation logic used by both
|
|
33
|
+
* render-node-to-output.ts and output.ts.
|
|
34
|
+
*
|
|
35
|
+
* The character offset counting method matches CharOffsetMap used in
|
|
36
|
+
* selection.ts and squash-text-nodes.ts, ensuring consistent behavior
|
|
37
|
+
* between cursor positioning and text selection.
|
|
38
|
+
*
|
|
39
|
+
* Character counting rules:
|
|
40
|
+
* - Each StyledChar counts by its value.length (handles combining marks)
|
|
41
|
+
* - Newlines ('\n') advance row and reset column
|
|
42
|
+
* - Other characters add their visual width to column
|
|
43
|
+
*/
|
|
44
|
+
export declare function getPositionAtOffset(styledChars: StyledChar[], targetOffset: number): {
|
|
45
|
+
row: number;
|
|
46
|
+
col: number;
|
|
47
|
+
};
|
package/build/measure-text.js
CHANGED
|
@@ -181,4 +181,37 @@ export function measureStyledChars(styledChars) {
|
|
|
181
181
|
const dimensions = { width, height };
|
|
182
182
|
return dimensions;
|
|
183
183
|
}
|
|
184
|
+
/**
|
|
185
|
+
* Calculate row and column position at a given character offset.
|
|
186
|
+
* This is the unified cursor position calculation logic used by both
|
|
187
|
+
* render-node-to-output.ts and output.ts.
|
|
188
|
+
*
|
|
189
|
+
* The character offset counting method matches CharOffsetMap used in
|
|
190
|
+
* selection.ts and squash-text-nodes.ts, ensuring consistent behavior
|
|
191
|
+
* between cursor positioning and text selection.
|
|
192
|
+
*
|
|
193
|
+
* Character counting rules:
|
|
194
|
+
* - Each StyledChar counts by its value.length (handles combining marks)
|
|
195
|
+
* - Newlines ('\n') advance row and reset column
|
|
196
|
+
* - Other characters add their visual width to column
|
|
197
|
+
*/
|
|
198
|
+
export function getPositionAtOffset(styledChars, targetOffset) {
|
|
199
|
+
let row = 0;
|
|
200
|
+
let col = 0;
|
|
201
|
+
let charCount = 0;
|
|
202
|
+
for (const char of styledChars) {
|
|
203
|
+
if (charCount >= targetOffset) {
|
|
204
|
+
break;
|
|
205
|
+
}
|
|
206
|
+
if (char.value === '\n') {
|
|
207
|
+
row++;
|
|
208
|
+
col = 0;
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
col += inkCharacterWidth(char.value);
|
|
212
|
+
}
|
|
213
|
+
charCount += char.value.length;
|
|
214
|
+
}
|
|
215
|
+
return { row, col };
|
|
216
|
+
}
|
|
184
217
|
//# sourceMappingURL=measure-text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EACN,QAAQ,EACR,qBAAqB,GAErB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAC,iBAAiB,EAAC,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"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"}
|
package/build/output.d.ts
CHANGED
|
@@ -21,6 +21,7 @@ export default class Output {
|
|
|
21
21
|
width: number;
|
|
22
22
|
height: number;
|
|
23
23
|
private readonly operations;
|
|
24
|
+
private cursorFocusInfo;
|
|
24
25
|
private readonly clips;
|
|
25
26
|
constructor(options: Options);
|
|
26
27
|
getCurrentClip(): Clip | undefined;
|
|
@@ -28,6 +29,8 @@ export default class Output {
|
|
|
28
29
|
transformers: OutputTransformer[];
|
|
29
30
|
lineIndex?: number;
|
|
30
31
|
preserveBackgroundColor?: boolean;
|
|
32
|
+
isTerminalCursorFocused?: boolean;
|
|
33
|
+
terminalCursorPosition?: number;
|
|
31
34
|
}): void;
|
|
32
35
|
clip(clip: Clip): void;
|
|
33
36
|
unclip(): void;
|
|
@@ -35,6 +38,10 @@ export default class Output {
|
|
|
35
38
|
output: string;
|
|
36
39
|
height: number;
|
|
37
40
|
styledOutput: StyledChar[][];
|
|
41
|
+
cursorPosition?: {
|
|
42
|
+
row: number;
|
|
43
|
+
col: number;
|
|
44
|
+
};
|
|
38
45
|
};
|
|
39
46
|
private clearRange;
|
|
40
47
|
private applyWriteOperation;
|
package/build/output.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { styledCharsToString } from '@alcalzone/ansi-tokenize';
|
|
2
|
-
import { toStyledCharacters, inkCharacterWidth, styledCharsWidth, } from './measure-text.js';
|
|
2
|
+
import { toStyledCharacters, inkCharacterWidth, styledCharsWidth, splitStyledCharsByNewline, getPositionAtOffset, } from './measure-text.js';
|
|
3
3
|
export default class Output {
|
|
4
4
|
width;
|
|
5
5
|
height;
|
|
6
6
|
operations = [];
|
|
7
|
+
cursorFocusInfo = undefined;
|
|
7
8
|
clips = [];
|
|
8
9
|
constructor(options) {
|
|
9
10
|
const { width, height } = options;
|
|
@@ -14,7 +15,17 @@ export default class Output {
|
|
|
14
15
|
return this.clips.at(-1);
|
|
15
16
|
}
|
|
16
17
|
write(x, y, items, options) {
|
|
17
|
-
const { transformers, lineIndex, preserveBackgroundColor } = options;
|
|
18
|
+
const { transformers, lineIndex, preserveBackgroundColor, isTerminalCursorFocused, terminalCursorPosition, } = options;
|
|
19
|
+
// Track cursor target position for terminal cursor synchronization
|
|
20
|
+
if (isTerminalCursorFocused) {
|
|
21
|
+
const styledChars = typeof items === 'string' ? toStyledCharacters(items) : items;
|
|
22
|
+
this.cursorFocusInfo = {
|
|
23
|
+
x,
|
|
24
|
+
y,
|
|
25
|
+
styledChars,
|
|
26
|
+
terminalCursorPosition,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
18
29
|
if (items.length === 0) {
|
|
19
30
|
return;
|
|
20
31
|
}
|
|
@@ -126,6 +137,31 @@ export default class Output {
|
|
|
126
137
|
this.applyWriteOperation(output, clips, operation);
|
|
127
138
|
}
|
|
128
139
|
}
|
|
140
|
+
// Calculate cursor position from cursor target (if exists)
|
|
141
|
+
let cursorPosition;
|
|
142
|
+
if (this.cursorFocusInfo) {
|
|
143
|
+
const { x, y, styledChars, terminalCursorPosition: charIndex, } = this.cursorFocusInfo;
|
|
144
|
+
if (charIndex === undefined) {
|
|
145
|
+
// Use text end (backward compatible)
|
|
146
|
+
const lines = splitStyledCharsByNewline(styledChars);
|
|
147
|
+
const lastLineIndex = lines.length - 1;
|
|
148
|
+
const lastLine = lines[lastLineIndex] ?? [];
|
|
149
|
+
cursorPosition = {
|
|
150
|
+
row: y + lastLineIndex,
|
|
151
|
+
col: lastLineIndex === 0
|
|
152
|
+
? x + styledCharsWidth(lastLine)
|
|
153
|
+
: styledCharsWidth(lastLine),
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
// Use character index to calculate cursor position using StyledChar[]
|
|
158
|
+
const { row, col } = getPositionAtOffset(styledChars, charIndex);
|
|
159
|
+
cursorPosition = {
|
|
160
|
+
row: y + row,
|
|
161
|
+
col: x + col,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
}
|
|
129
165
|
const generatedOutput = output
|
|
130
166
|
.map(line => {
|
|
131
167
|
// See https://github.com/vadimdemedes/ink/pull/564#issuecomment-1637022742
|
|
@@ -133,10 +169,21 @@ export default class Output {
|
|
|
133
169
|
return styledCharsToString(lineWithoutEmptyItems).trimEnd();
|
|
134
170
|
})
|
|
135
171
|
.join('\n');
|
|
172
|
+
// Adjust cursor position based on actual output (after trimEnd)
|
|
173
|
+
if (cursorPosition) {
|
|
174
|
+
const lines = generatedOutput.split('\n');
|
|
175
|
+
const cursorLine = lines[cursorPosition.row];
|
|
176
|
+
if (cursorLine !== undefined) {
|
|
177
|
+
const actualLineWidth = styledCharsWidth(toStyledCharacters(cursorLine));
|
|
178
|
+
// Cursor should not go beyond the actual trimmed line width
|
|
179
|
+
cursorPosition.col = Math.min(cursorPosition.col, actualLineWidth);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
136
182
|
return {
|
|
137
183
|
output: generatedOutput,
|
|
138
184
|
height: output.length,
|
|
139
185
|
styledOutput: output,
|
|
186
|
+
cursorPosition,
|
|
140
187
|
};
|
|
141
188
|
}
|
|
142
189
|
clearRange(currentLine, range, styles, value = ' ') {
|