@jrichman/ink 6.5.1-beta.1 → 6.5.1-beta.2

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 (74) hide show
  1. package/build/components/Static.js +1 -1
  2. package/build/components/Static.js.map +1 -1
  3. package/build/components/StaticRender.js +0 -7
  4. package/build/components/StaticRender.js.map +1 -1
  5. package/build/devtools.js +0 -2
  6. package/build/devtools.js.map +1 -1
  7. package/build/dom.d.ts +4 -4
  8. package/build/index.d.ts +1 -1
  9. package/build/index.js +1 -0
  10. package/build/index.js.map +1 -1
  11. package/build/ink.d.ts +1 -1
  12. package/build/ink.js +0 -4
  13. package/build/ink.js.map +1 -1
  14. package/build/log-update.d.ts +2 -2
  15. package/build/log-update.js +4 -5
  16. package/build/log-update.js.map +1 -1
  17. package/build/measure-element.js +16 -46
  18. package/build/measure-element.js.map +1 -1
  19. package/build/measure-text.d.ts +9 -23
  20. package/build/measure-text.js +94 -132
  21. package/build/measure-text.js.map +1 -1
  22. package/build/output.d.ts +6 -12
  23. package/build/output.js +35 -51
  24. package/build/output.js.map +1 -1
  25. package/build/render-cached.d.ts +1 -1
  26. package/build/render-cached.js +8 -5
  27. package/build/render-cached.js.map +1 -1
  28. package/build/render-container.d.ts +1 -1
  29. package/build/render-node-to-output.d.ts +1 -1
  30. package/build/render-scrollbar.d.ts +5 -3
  31. package/build/render-scrollbar.js +8 -7
  32. package/build/render-scrollbar.js.map +1 -1
  33. package/build/render-sticky.d.ts +3 -8
  34. package/build/render-sticky.js.map +1 -1
  35. package/build/render-text-node.d.ts +3 -8
  36. package/build/render-text-node.js +62 -40
  37. package/build/render-text-node.js.map +1 -1
  38. package/build/render.d.ts +1 -1
  39. package/build/renderer.d.ts +2 -2
  40. package/build/renderer.js +1 -3
  41. package/build/renderer.js.map +1 -1
  42. package/build/replay.js +4 -16
  43. package/build/replay.js.map +1 -1
  44. package/build/selection.d.ts +3 -3
  45. package/build/selection.js +27 -18
  46. package/build/selection.js.map +1 -1
  47. package/build/serialization.d.ts +2 -5
  48. package/build/serialization.js +55 -86
  49. package/build/serialization.js.map +1 -1
  50. package/build/styled-line.d.ts +73 -0
  51. package/build/styled-line.js +412 -0
  52. package/build/styled-line.js.map +1 -0
  53. package/build/terminal-buffer.d.ts +2 -2
  54. package/build/terminal-buffer.js +3 -2
  55. package/build/terminal-buffer.js.map +1 -1
  56. package/build/text-wrap.d.ts +6 -6
  57. package/build/text-wrap.js +65 -46
  58. package/build/text-wrap.js.map +1 -1
  59. package/build/tokenize.d.ts +3 -33
  60. package/build/tokenize.js +14 -115
  61. package/build/tokenize.js.map +1 -1
  62. package/build/worker/canvas.d.ts +6 -16
  63. package/build/worker/canvas.js +10 -21
  64. package/build/worker/canvas.js.map +1 -1
  65. package/build/worker/compositor.js +15 -9
  66. package/build/worker/compositor.js.map +1 -1
  67. package/build/worker/render-worker.js +2 -8
  68. package/build/worker/render-worker.js.map +1 -1
  69. package/build/worker/scene-manager.js +2 -1
  70. package/build/worker/scene-manager.js.map +1 -1
  71. package/build/worker/terminal-writer.d.ts +4 -4
  72. package/build/worker/terminal-writer.js +34 -64
  73. package/build/worker/terminal-writer.js.map +1 -1
  74. package/package.json +11 -11
@@ -1,4 +1,4 @@
1
- import { type StyledChar } from './tokenize.js';
1
+ import { StyledLine } from './styled-line.js';
2
2
  import { type DOMNode } from './dom.js';
3
3
  export type StringWidth = (text: string) => number;
4
4
  /**
@@ -19,32 +19,18 @@ export declare function setEnableToStyledCharactersCache(enabled: boolean): void
19
19
  export declare function setStringWidthFunction(fn: StringWidth): void;
20
20
  export declare function clearStringWidthCache(): void;
21
21
  export declare function clearToStyledCharactersCache(): void;
22
- export declare function toStyledCharacters(text: string): StyledChar[];
23
- export declare function styledCharsWidth(styledChars: StyledChar[]): number;
22
+ export declare function toStyledCharacters(text: string): StyledLine;
23
+ export declare function styledCharsWidth(line: StyledLine): number;
24
24
  export declare function inkCharacterWidth(text: string): number;
25
- export declare function wordBreakStyledChars(styledChars: StyledChar[]): StyledChar[][];
26
- export declare function splitStyledCharsByNewline(styledChars: StyledChar[]): StyledChar[][];
27
- export declare function widestLineFromStyledChars(lines: StyledChar[][]): number;
28
- export declare function styledCharsToString(styledChars: StyledChar[]): string;
29
- export declare function measureStyledChars(styledChars: StyledChar[]): {
25
+ export declare function wordBreakStyledChars(line: StyledLine): StyledLine[];
26
+ export declare function splitStyledCharsByNewline(line: StyledLine): StyledLine[];
27
+ export declare function widestLineFromStyledChars(lines: StyledLine[]): number;
28
+ export declare function styledCharsToString(line: StyledLine): string;
29
+ export declare function measureStyledChars(line: StyledLine): {
30
30
  width: number;
31
31
  height: number;
32
32
  };
33
- /**
34
- * Calculate row and column position at a given character offset.
35
- * This is the unified cursor position calculation logic used by both
36
- * render-node-to-output.ts and output.ts.
37
- *
38
- * The character offset counting method matches CharOffsetMap used in
39
- * selection.ts and squash-text-nodes.ts, ensuring consistent behavior
40
- * between cursor positioning and text selection.
41
- *
42
- * Character counting rules:
43
- * - Each StyledChar counts by its value.length (handles combining marks)
44
- * - Newlines ('\n') advance row and reset column
45
- * - Other characters add their visual width to column
46
- */
47
- export declare function getPositionAtOffset(styledChars: StyledChar[], targetOffset: number): {
33
+ export declare function getPositionAtOffset(line: StyledLine, targetOffset: number): {
48
34
  row: number;
49
35
  col: number;
50
36
  };
@@ -1,17 +1,12 @@
1
1
  import stringWidth from 'string-width';
2
- import { tokenize, styledCharsFromTokens } from './tokenize.js';
2
+ import { tokenize, styledLineFromTokens } from './tokenize.js';
3
+ import { StyledLine } from './styled-line.js';
3
4
  import { DataLimitedLruMap } from './data-limited-lru-map.js';
4
5
  const defaultStringWidth = stringWidth;
5
6
  let currentStringWidth = defaultStringWidth;
6
7
  // This cache must be cleared each time the string width function is changed.
7
- // The strings passed as input are single characters so there is no need to
8
- // limit the size of the cache as there are only a limited number of valid
9
- // characters.
10
8
  const widthCache = new Map();
11
9
  // This cache can persist for the lifetime of the application.
12
- // The keys for this cache can be very large so we need to limit the size
13
- // of the data cached as well as the number of keys cached to prevent
14
- // memory issues.
15
10
  const toStyledCharactersCache = new DataLimitedLruMap(2000, 100_000);
16
11
  let toStyledCharactersCacheEnabled = true;
17
12
  export function setEnableToStyledCharactersCache(enabled) {
@@ -22,7 +17,6 @@ export function setEnableToStyledCharactersCache(enabled) {
22
17
  }
23
18
  export function setStringWidthFunction(fn) {
24
19
  currentStringWidth = fn;
25
- // Clear the width cache to avoid stale values.
26
20
  clearStringWidthCache();
27
21
  }
28
22
  export function clearStringWidthCache() {
@@ -39,102 +33,83 @@ export function toStyledCharacters(text) {
39
33
  }
40
34
  }
41
35
  const tokens = tokenize(text);
42
- const characters = styledCharsFromTokens(tokens);
43
- const combinedCharacters = [];
36
+ const characters = styledLineFromTokens(tokens);
37
+ const combinedLine = new StyledLine();
44
38
  for (let i = 0; i < characters.length; i++) {
45
- const character = characters[i];
46
- if (!character) {
47
- continue;
48
- }
49
- if (character.getValue() === '\t') {
50
- const spaceCharacter = character.copyWith({ value: ' ' });
51
- combinedCharacters.push(spaceCharacter, spaceCharacter, spaceCharacter, spaceCharacter);
39
+ const value = characters.getValue(i);
40
+ const formatFlags = characters.getFormatFlags(i);
41
+ const fgColor = characters.getFgColor(i);
42
+ const bgColor = characters.getBgColor(i);
43
+ const link = characters.getLink(i);
44
+ if (value === '\t') {
45
+ for (let j = 0; j < 4; j++) {
46
+ combinedLine.pushChar(' ', formatFlags, fgColor, bgColor, link);
47
+ }
52
48
  continue;
53
49
  }
54
- if (character.getValue() === '\b') {
50
+ if (value === '\b') {
55
51
  continue;
56
52
  }
57
- let value = character.getValue();
53
+ let combinedValue = value;
58
54
  let isCombined = false;
59
- const firstCodePoint = value.codePointAt(0);
55
+ const firstCodePoint = combinedValue.codePointAt(0);
60
56
  // 1. Regional Indicators (Flags)
61
- // These combine in pairs.
62
- // See: https://en.wikipedia.org/wiki/Regional_indicator_symbol
63
57
  if (firstCodePoint &&
64
58
  firstCodePoint >= 0x1_f1_e6 &&
65
59
  firstCodePoint <= 0x1_f1_ff &&
66
60
  i + 1 < characters.length) {
67
- const nextCharacter = characters[i + 1];
68
- if (nextCharacter) {
69
- const nextFirstCodePoint = nextCharacter.getValue().codePointAt(0);
70
- if (nextFirstCodePoint &&
71
- nextFirstCodePoint >= 0x1_f1_e6 &&
72
- nextFirstCodePoint <= 0x1_f1_ff) {
73
- value += nextCharacter.getValue();
74
- i++;
75
- combinedCharacters.push(character.copyWith({ value }));
76
- continue;
77
- }
61
+ const nextValue = characters.getValue(i + 1);
62
+ const nextFirstCodePoint = nextValue.codePointAt(0);
63
+ if (nextFirstCodePoint &&
64
+ nextFirstCodePoint >= 0x1_f1_e6 &&
65
+ nextFirstCodePoint <= 0x1_f1_ff) {
66
+ combinedValue += nextValue;
67
+ i++;
68
+ isCombined = true;
78
69
  }
79
70
  }
80
- // 2. Other combining characters
81
- // See: https://en.wikipedia.org/wiki/Combining_character
82
- while (i + 1 < characters.length) {
83
- const nextCharacter = characters[i + 1];
84
- if (!nextCharacter) {
85
- break;
86
- }
87
- const codePoints = [...nextCharacter.getValue()].map(char => char.codePointAt(0));
88
- const nextFirstCodePoint = codePoints[0];
89
- if (!nextFirstCodePoint) {
90
- break;
91
- }
92
- // Unicode Mark category includes:
93
- // - Combining Diacritical Marks (U+0300-036F)
94
- // - Thai combining characters (U+0E31-0E3A, U+0E47-0E4E)
95
- // - Variation selectors (U+FE00-FE0F)
96
- // - Combining enclosing keycap (U+20E3)
97
- // - And many other combining marks across Unicode
98
- const isUnicodeMark = /\p{Mark}/u.test(nextCharacter.getValue());
99
- // Skin tone modifiers (emoji modifiers, not in Mark category)
100
- const isSkinToneModifier = nextFirstCodePoint >= 0x1_f3_fb && nextFirstCodePoint <= 0x1_f3_ff;
101
- // Zero-width joiner (used in emoji sequences)
102
- const isZeroWidthJoiner = nextFirstCodePoint === 0x20_0d;
103
- // Tags block (U+E0000 - U+E007F, used for flag emoji)
104
- const isTagsBlock = nextFirstCodePoint >= 0xe_00_00 && nextFirstCodePoint <= 0xe_00_7f;
105
- const isCombining = isUnicodeMark || isSkinToneModifier || isZeroWidthJoiner || isTagsBlock;
106
- if (!isCombining) {
107
- break;
108
- }
109
- // Merge with previous character
110
- value += nextCharacter.getValue();
111
- i++; // Consume next character.
112
- isCombined = true;
113
- // If it was a ZWJ, also consume the character after it.
114
- if (isZeroWidthJoiner && i + 1 < characters.length) {
115
- const characterAfterZwj = characters[i + 1];
116
- if (characterAfterZwj) {
117
- value += characterAfterZwj.getValue();
118
- i++; // Consume character after ZWJ.
71
+ if (!isCombined) {
72
+ // 2. Other combining characters
73
+ while (i + 1 < characters.length) {
74
+ const nextValue = characters.getValue(i + 1);
75
+ if (!nextValue)
76
+ break;
77
+ const nextFirstCodePoint = nextValue.codePointAt(0);
78
+ if (!nextFirstCodePoint)
79
+ break;
80
+ const isUnicodeMark = /\p{Mark}/u.test(nextValue);
81
+ const isSkinToneModifier = nextFirstCodePoint >= 0x1_f3_fb && nextFirstCodePoint <= 0x1_f3_ff;
82
+ const isZeroWidthJoiner = nextFirstCodePoint === 0x20_0d;
83
+ const isTagsBlock = nextFirstCodePoint >= 0xe_00_00 && nextFirstCodePoint <= 0xe_00_7f;
84
+ const isCombining = isUnicodeMark ||
85
+ isSkinToneModifier ||
86
+ isZeroWidthJoiner ||
87
+ isTagsBlock;
88
+ if (!isCombining) {
89
+ break;
90
+ }
91
+ combinedValue += nextValue;
92
+ i++;
93
+ if (isZeroWidthJoiner && i + 1 < characters.length) {
94
+ const characterAfterZwj = characters.getValue(i + 1);
95
+ if (characterAfterZwj) {
96
+ combinedValue += characterAfterZwj;
97
+ i++;
98
+ }
119
99
  }
120
100
  }
121
101
  }
122
- if (isCombined) {
123
- combinedCharacters.push(character.copyWith({ value }));
124
- }
125
- else {
126
- combinedCharacters.push(character);
127
- }
102
+ combinedLine.pushChar(combinedValue, formatFlags, fgColor, bgColor, link);
128
103
  }
129
104
  if (toStyledCharactersCacheEnabled) {
130
- toStyledCharactersCache.set(text, combinedCharacters);
105
+ toStyledCharactersCache.set(text, combinedLine);
131
106
  }
132
- return combinedCharacters;
107
+ return combinedLine;
133
108
  }
134
- export function styledCharsWidth(styledChars) {
109
+ export function styledCharsWidth(line) {
135
110
  let length = 0;
136
- for (const char of styledChars) {
137
- length += inkCharacterWidth(char.getValue());
111
+ for (let i = 0; i < line.length; i++) {
112
+ length += inkCharacterWidth(line.getValue(i));
138
113
  }
139
114
  return length;
140
115
  }
@@ -148,27 +123,32 @@ export function inkCharacterWidth(text) {
148
123
  calculatedWidth = currentStringWidth(text);
149
124
  }
150
125
  catch {
151
- // Ignore errors and use default width of 1.
152
- // We catch this result to avoid throwing exceptions repeatedly.
153
126
  calculatedWidth = 1;
154
127
  console.warn(`Failed to calculate string width for ${JSON.stringify(text)}`);
155
128
  }
156
129
  widthCache.set(text, calculatedWidth);
157
130
  return calculatedWidth;
158
131
  }
159
- export function wordBreakStyledChars(styledChars) {
132
+ export function wordBreakStyledChars(line) {
160
133
  const words = [];
161
- let currentWord = [];
162
- for (const char of styledChars) {
163
- if (char.getValue() === '\n' || char.getValue() === ' ') {
134
+ let currentWord = new StyledLine();
135
+ for (let i = 0; i < line.length; i++) {
136
+ const val = line.getValue(i);
137
+ const flags = line.getFormatFlags(i);
138
+ const fg = line.getFgColor(i);
139
+ const bg = line.getBgColor(i);
140
+ const link = line.getLink(i);
141
+ if (val === '\n' || val === ' ') {
164
142
  if (currentWord.length > 0) {
165
143
  words.push(currentWord);
166
144
  }
167
- currentWord = [];
168
- words.push([char]);
145
+ currentWord = new StyledLine();
146
+ const spaceLine = new StyledLine();
147
+ spaceLine.pushChar(val, flags, fg, bg, link);
148
+ words.push(spaceLine);
169
149
  }
170
150
  else {
171
- currentWord.push(char);
151
+ currentWord.pushChar(val, flags, fg, bg, link);
172
152
  }
173
153
  }
174
154
  if (currentWord.length > 0) {
@@ -176,14 +156,17 @@ export function wordBreakStyledChars(styledChars) {
176
156
  }
177
157
  return words;
178
158
  }
179
- export function splitStyledCharsByNewline(styledChars) {
180
- const lines = [[]];
181
- for (const char of styledChars) {
182
- if (char.getValue() === '\n') {
183
- lines.push([]);
159
+ export function splitStyledCharsByNewline(line) {
160
+ const lines = [new StyledLine()];
161
+ for (let i = 0; i < line.length; i++) {
162
+ const val = line.getValue(i);
163
+ if (val === '\n') {
164
+ lines.push(new StyledLine());
184
165
  }
185
166
  else {
186
- lines.at(-1).push(char);
167
+ lines
168
+ .at(-1)
169
+ .pushChar(val, line.getFormatFlags(i), line.getFgColor(i), line.getBgColor(i), line.getLink(i));
187
170
  }
188
171
  }
189
172
  return lines;
@@ -195,56 +178,35 @@ export function widestLineFromStyledChars(lines) {
195
178
  }
196
179
  return maxWidth;
197
180
  }
198
- export function styledCharsToString(styledChars) {
199
- let result = '';
200
- for (const char of styledChars) {
201
- result += char.getValue();
202
- }
203
- return result;
181
+ export function styledCharsToString(line) {
182
+ return line.getValues().join('');
204
183
  }
205
- export function measureStyledChars(styledChars) {
206
- if (styledChars.length === 0) {
207
- return {
208
- width: 0,
209
- height: 0,
210
- };
184
+ export function measureStyledChars(line) {
185
+ if (line.length === 0) {
186
+ return { width: 0, height: 0 };
211
187
  }
212
- const lines = splitStyledCharsByNewline(styledChars);
188
+ const lines = splitStyledCharsByNewline(line);
213
189
  const width = widestLineFromStyledChars(lines);
214
190
  const height = lines.length;
215
- const dimensions = { width, height };
216
- return dimensions;
191
+ return { width, height };
217
192
  }
218
- /**
219
- * Calculate row and column position at a given character offset.
220
- * This is the unified cursor position calculation logic used by both
221
- * render-node-to-output.ts and output.ts.
222
- *
223
- * The character offset counting method matches CharOffsetMap used in
224
- * selection.ts and squash-text-nodes.ts, ensuring consistent behavior
225
- * between cursor positioning and text selection.
226
- *
227
- * Character counting rules:
228
- * - Each StyledChar counts by its value.length (handles combining marks)
229
- * - Newlines ('\n') advance row and reset column
230
- * - Other characters add their visual width to column
231
- */
232
- export function getPositionAtOffset(styledChars, targetOffset) {
193
+ export function getPositionAtOffset(line, targetOffset) {
233
194
  let row = 0;
234
195
  let col = 0;
235
196
  let charCount = 0;
236
- for (const char of styledChars) {
197
+ for (let i = 0; i < line.length; i++) {
237
198
  if (charCount >= targetOffset) {
238
199
  break;
239
200
  }
240
- if (char.getValue() === '\n') {
201
+ const val = line.getValue(i);
202
+ if (val === '\n') {
241
203
  row++;
242
204
  col = 0;
243
205
  }
244
206
  else {
245
- col += inkCharacterWidth(char.getValue());
207
+ col += inkCharacterWidth(val);
246
208
  }
247
- charCount += char.getValue().length;
209
+ charCount += val.length;
248
210
  }
249
211
  return { row, col };
250
212
  }
@@ -1 +1 @@
1
- {"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"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"}
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
@@ -1,4 +1,3 @@
1
- import { type StyledChar } from './tokenize.js';
2
1
  import { type OutputTransformer } from './render-node-to-output.js';
3
2
  import { type CursorPosition } from './log-update.js';
4
3
  import { type StickyHeader, type DOMElement } from './dom.js';
@@ -9,7 +8,8 @@ Handles the positioning and saving of the output of each node in the tree. Also
9
8
 
10
9
  Used to generate the final output of all nodes before writing it to actual output stream (e.g. stdout)
11
10
  */
12
- export declare function clampCursorColumn(line: readonly StyledChar[], col: number): number;
11
+ import { StyledLine } from './styled-line.js';
12
+ export declare function clampCursorColumn(line: StyledLine, col: number): number;
13
13
  type Options = {
14
14
  width: number;
15
15
  height: number;
@@ -55,8 +55,8 @@ export type Region = {
55
55
  y: number;
56
56
  width: number;
57
57
  height: number;
58
- readonly lines: ReadonlyArray<readonly StyledChar[]>;
59
- readonly styledOutput: ReadonlyArray<readonly StyledChar[]>;
58
+ readonly lines: readonly StyledLine[];
59
+ readonly styledOutput: readonly StyledLine[];
60
60
  isScrollable: boolean;
61
61
  isVerticallyScrollable?: boolean;
62
62
  isHorizontallyScrollable?: boolean;
@@ -198,7 +198,7 @@ export default class Output {
198
198
  }): void;
199
199
  endChildRegion(): void;
200
200
  addStickyHeader(header: StickyHeader): void;
201
- write(x: number, y: number, items: string | StyledChar[], options: {
201
+ write(x: number, y: number, items: string | StyledLine, options: {
202
202
  transformers: OutputTransformer[];
203
203
  lineIndex?: number;
204
204
  preserveBackgroundColor?: boolean;
@@ -217,12 +217,6 @@ export default class Output {
217
217
  private clearRange;
218
218
  private clipChars;
219
219
  }
220
- /**
221
- * Flattens a hierarchy of nested regions into a single 2D array of styled characters
222
- * that represents the final visual output to be written to the terminal.
223
- * This effectively renders the nested region tree (much like compositing layers
224
- * in a web browser) into a single screen buffer.
225
- */
226
220
  export declare function flattenRegion(root: Region, options?: {
227
221
  context?: {
228
222
  cursorPosition?: {
@@ -232,7 +226,7 @@ export declare function flattenRegion(root: Region, options?: {
232
226
  };
233
227
  skipScrollbars?: boolean;
234
228
  skipStickyHeaders?: boolean;
235
- }): StyledChar[][];
229
+ }): StyledLine[];
236
230
  export declare const extractSelectableText: (spans: Array<{
237
231
  y: number;
238
232
  startX: number;