@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
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { inkCharacterWidth, styledCharsWidth } from './measure-text.js';
|
|
2
|
+
export const sliceStyledChars = (styledChars, begin, end) => {
|
|
3
|
+
let width = 0;
|
|
4
|
+
const result = [];
|
|
5
|
+
for (const char of styledChars) {
|
|
6
|
+
const charWidth = inkCharacterWidth(char.value);
|
|
7
|
+
const charStart = width;
|
|
8
|
+
const charEnd = width + charWidth;
|
|
9
|
+
if (end !== undefined && charEnd > end) {
|
|
10
|
+
break;
|
|
11
|
+
}
|
|
12
|
+
if (charStart >= begin) {
|
|
13
|
+
result.push(char);
|
|
14
|
+
}
|
|
15
|
+
width += charWidth;
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
export const truncateStyledChars = (styledChars, columns, options = {}) => {
|
|
20
|
+
const { position = 'end' } = options;
|
|
21
|
+
const truncationCharacter = '…';
|
|
22
|
+
const truncationStyledChar = {
|
|
23
|
+
type: 'char',
|
|
24
|
+
value: truncationCharacter,
|
|
25
|
+
fullWidth: false,
|
|
26
|
+
styles: [],
|
|
27
|
+
};
|
|
28
|
+
if (columns < 1) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
if (columns === 1) {
|
|
32
|
+
return [truncationStyledChar];
|
|
33
|
+
}
|
|
34
|
+
const textWidth = styledCharsWidth(styledChars);
|
|
35
|
+
if (textWidth <= columns) {
|
|
36
|
+
return styledChars;
|
|
37
|
+
}
|
|
38
|
+
const truncationWidth = inkCharacterWidth(truncationCharacter);
|
|
39
|
+
if (position === 'start') {
|
|
40
|
+
const right = sliceStyledChars(styledChars, textWidth - columns + truncationWidth, textWidth);
|
|
41
|
+
return [truncationStyledChar, ...right];
|
|
42
|
+
}
|
|
43
|
+
if (position === 'middle') {
|
|
44
|
+
const leftWidth = Math.ceil(columns / 2);
|
|
45
|
+
const rightWidth = columns - leftWidth;
|
|
46
|
+
const left = sliceStyledChars(styledChars, 0, leftWidth - truncationWidth);
|
|
47
|
+
const right = sliceStyledChars(styledChars, textWidth - rightWidth, textWidth);
|
|
48
|
+
return [...left, truncationStyledChar, ...right];
|
|
49
|
+
}
|
|
50
|
+
const left = sliceStyledChars(styledChars, 0, columns - truncationWidth);
|
|
51
|
+
return [...left, truncationStyledChar];
|
|
52
|
+
};
|
|
53
|
+
const wrapWord = (rows, word, columns) => {
|
|
54
|
+
let currentLine = rows.at(-1);
|
|
55
|
+
let visible = styledCharsWidth(currentLine);
|
|
56
|
+
for (const character of word) {
|
|
57
|
+
const characterLength = inkCharacterWidth(character.value);
|
|
58
|
+
if (visible + characterLength > columns && visible > 0) {
|
|
59
|
+
rows.push([]);
|
|
60
|
+
currentLine = rows.at(-1);
|
|
61
|
+
visible = 0;
|
|
62
|
+
}
|
|
63
|
+
currentLine.push(character);
|
|
64
|
+
visible += characterLength;
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export const wrapStyledChars = (styledChars, columns) => {
|
|
68
|
+
const rows = [[]];
|
|
69
|
+
const words = [];
|
|
70
|
+
let currentWord = [];
|
|
71
|
+
for (const char of styledChars) {
|
|
72
|
+
if (char.value === ' ') {
|
|
73
|
+
if (currentWord.length > 0) {
|
|
74
|
+
words.push(currentWord);
|
|
75
|
+
}
|
|
76
|
+
currentWord = [];
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
currentWord.push(char);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
if (currentWord.length > 0) {
|
|
83
|
+
words.push(currentWord);
|
|
84
|
+
}
|
|
85
|
+
const space = {
|
|
86
|
+
type: 'char',
|
|
87
|
+
value: ' ',
|
|
88
|
+
fullWidth: false,
|
|
89
|
+
styles: [],
|
|
90
|
+
};
|
|
91
|
+
for (const [index, word] of words.entries()) {
|
|
92
|
+
const wordWidth = styledCharsWidth(word);
|
|
93
|
+
let rowWidth = styledCharsWidth(rows.at(-1));
|
|
94
|
+
if (index > 0) {
|
|
95
|
+
rows.at(-1).push(space);
|
|
96
|
+
rowWidth++;
|
|
97
|
+
}
|
|
98
|
+
if (wordWidth > columns) {
|
|
99
|
+
if (index > 0) {
|
|
100
|
+
rows[rows.length - 1] = rows.at(-1).slice(0, -1);
|
|
101
|
+
if (rows.at(-1).length > 0) {
|
|
102
|
+
rows.push([]);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
wrapWord(rows, word, columns);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
if (rowWidth + wordWidth > columns && rowWidth > 0) {
|
|
109
|
+
if (index > 0) {
|
|
110
|
+
rows[rows.length - 1] = rows.at(-1).slice(0, -1);
|
|
111
|
+
}
|
|
112
|
+
rows.push(word);
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
rows.at(-1).push(...word);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return rows;
|
|
119
|
+
};
|
|
120
|
+
//# sourceMappingURL=wrap-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wrap-text.js","sourceRoot":"","sources":["../src/wrap-text.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jrichman/ink",
|
|
3
|
-
"version": "6.4.
|
|
3
|
+
"version": "6.4.9",
|
|
4
4
|
"description": "React for CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": "jacob314/ink",
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
"@types/stack-utils": "^2.0.2",
|
|
81
81
|
"@types/ws": "^8.18.1",
|
|
82
82
|
"@vdemedes/prettier-config": "^2.0.1",
|
|
83
|
+
"@xterm/headless": "^5.5.0",
|
|
83
84
|
"ava": "^5.1.1",
|
|
84
85
|
"boxen": "^8.0.1",
|
|
85
86
|
"delay": "^6.0.0",
|