@kingkoo1985/ink 6.6.6

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 (225) hide show
  1. package/build/colorize.d.ts +4 -0
  2. package/build/colorize.js +59 -0
  3. package/build/colorize.js.map +1 -0
  4. package/build/components/AccessibilityContext.d.ts +3 -0
  5. package/build/components/AccessibilityContext.js +5 -0
  6. package/build/components/AccessibilityContext.js.map +1 -0
  7. package/build/components/App.d.ts +68 -0
  8. package/build/components/App.js +290 -0
  9. package/build/components/App.js.map +1 -0
  10. package/build/components/AppContext.d.ts +52 -0
  11. package/build/components/AppContext.js +16 -0
  12. package/build/components/AppContext.js.map +1 -0
  13. package/build/components/BackgroundContext.d.ts +4 -0
  14. package/build/components/BackgroundContext.js +3 -0
  15. package/build/components/BackgroundContext.js.map +1 -0
  16. package/build/components/Box.d.ts +171 -0
  17. package/build/components/Box.js +40 -0
  18. package/build/components/Box.js.map +1 -0
  19. package/build/components/ErrorOverview.d.ts +6 -0
  20. package/build/components/ErrorOverview.js +84 -0
  21. package/build/components/ErrorOverview.js.map +1 -0
  22. package/build/components/FocusContext.d.ts +16 -0
  23. package/build/components/FocusContext.js +16 -0
  24. package/build/components/FocusContext.js.map +1 -0
  25. package/build/components/Newline.d.ts +13 -0
  26. package/build/components/Newline.js +8 -0
  27. package/build/components/Newline.js.map +1 -0
  28. package/build/components/Spacer.d.ts +7 -0
  29. package/build/components/Spacer.js +11 -0
  30. package/build/components/Spacer.js.map +1 -0
  31. package/build/components/Static.d.ts +24 -0
  32. package/build/components/Static.js +29 -0
  33. package/build/components/Static.js.map +1 -0
  34. package/build/components/StaticRender.d.ts +8 -0
  35. package/build/components/StaticRender.js +19 -0
  36. package/build/components/StaticRender.js.map +1 -0
  37. package/build/components/StderrContext.d.ts +15 -0
  38. package/build/components/StderrContext.js +12 -0
  39. package/build/components/StderrContext.js.map +1 -0
  40. package/build/components/StdinContext.d.ts +22 -0
  41. package/build/components/StdinContext.js +16 -0
  42. package/build/components/StdinContext.js.map +1 -0
  43. package/build/components/StdoutContext.d.ts +15 -0
  44. package/build/components/StdoutContext.js +12 -0
  45. package/build/components/StdoutContext.js.map +1 -0
  46. package/build/components/Text.d.ts +63 -0
  47. package/build/components/Text.js +50 -0
  48. package/build/components/Text.js.map +1 -0
  49. package/build/components/Transform.d.ts +16 -0
  50. package/build/components/Transform.js +15 -0
  51. package/build/components/Transform.js.map +1 -0
  52. package/build/data-limited-lru-map.d.ts +20 -0
  53. package/build/data-limited-lru-map.js +65 -0
  54. package/build/data-limited-lru-map.js.map +1 -0
  55. package/build/debug-log.d.ts +2 -0
  56. package/build/debug-log.js +44 -0
  57. package/build/debug-log.js.map +1 -0
  58. package/build/devtools-window-polyfill.d.ts +1 -0
  59. package/build/devtools-window-polyfill.js +65 -0
  60. package/build/devtools-window-polyfill.js.map +1 -0
  61. package/build/devtools.d.ts +1 -0
  62. package/build/devtools.js +8 -0
  63. package/build/devtools.js.map +1 -0
  64. package/build/dom.d.ts +114 -0
  65. package/build/dom.js +169 -0
  66. package/build/dom.js.map +1 -0
  67. package/build/get-max-width.d.ts +3 -0
  68. package/build/get-max-width.js +10 -0
  69. package/build/get-max-width.js.map +1 -0
  70. package/build/hooks/use-app.d.ts +5 -0
  71. package/build/hooks/use-app.js +8 -0
  72. package/build/hooks/use-app.js.map +1 -0
  73. package/build/hooks/use-focus-manager.d.ts +28 -0
  74. package/build/hooks/use-focus-manager.js +17 -0
  75. package/build/hooks/use-focus-manager.js.map +1 -0
  76. package/build/hooks/use-focus.d.ts +29 -0
  77. package/build/hooks/use-focus.js +42 -0
  78. package/build/hooks/use-focus.js.map +1 -0
  79. package/build/hooks/use-input.d.ts +93 -0
  80. package/build/hooks/use-input.js +92 -0
  81. package/build/hooks/use-input.js.map +1 -0
  82. package/build/hooks/use-is-screen-reader-enabled.d.ts +5 -0
  83. package/build/hooks/use-is-screen-reader-enabled.js +11 -0
  84. package/build/hooks/use-is-screen-reader-enabled.js.map +1 -0
  85. package/build/hooks/use-stderr.d.ts +5 -0
  86. package/build/hooks/use-stderr.js +8 -0
  87. package/build/hooks/use-stderr.js.map +1 -0
  88. package/build/hooks/use-stdin.d.ts +5 -0
  89. package/build/hooks/use-stdin.js +8 -0
  90. package/build/hooks/use-stdin.js.map +1 -0
  91. package/build/hooks/use-stdout.d.ts +5 -0
  92. package/build/hooks/use-stdout.js +8 -0
  93. package/build/hooks/use-stdout.js.map +1 -0
  94. package/build/index.d.ts +38 -0
  95. package/build/index.js +27 -0
  96. package/build/index.js.map +1 -0
  97. package/build/ink.d.ts +110 -0
  98. package/build/ink.js +576 -0
  99. package/build/ink.js.map +1 -0
  100. package/build/instances.d.ts +3 -0
  101. package/build/instances.js +8 -0
  102. package/build/instances.js.map +1 -0
  103. package/build/layout.d.ts +18 -0
  104. package/build/layout.js +54 -0
  105. package/build/layout.js.map +1 -0
  106. package/build/log-update.d.ts +28 -0
  107. package/build/log-update.js +529 -0
  108. package/build/log-update.js.map +1 -0
  109. package/build/measure-element.d.ts +119 -0
  110. package/build/measure-element.js +825 -0
  111. package/build/measure-element.js.map +1 -0
  112. package/build/measure-text.d.ts +50 -0
  113. package/build/measure-text.js +237 -0
  114. package/build/measure-text.js.map +1 -0
  115. package/build/output.d.ts +242 -0
  116. package/build/output.js +607 -0
  117. package/build/output.js.map +1 -0
  118. package/build/parse-keypress.d.ts +14 -0
  119. package/build/parse-keypress.js +225 -0
  120. package/build/parse-keypress.js.map +1 -0
  121. package/build/reconciler.d.ts +4 -0
  122. package/build/reconciler.js +326 -0
  123. package/build/reconciler.js.map +1 -0
  124. package/build/render-background.d.ts +4 -0
  125. package/build/render-background.js +37 -0
  126. package/build/render-background.js.map +1 -0
  127. package/build/render-border.d.ts +4 -0
  128. package/build/render-border.js +81 -0
  129. package/build/render-border.js.map +1 -0
  130. package/build/render-cached.d.ts +18 -0
  131. package/build/render-cached.js +66 -0
  132. package/build/render-cached.js.map +1 -0
  133. package/build/render-container.d.ts +27 -0
  134. package/build/render-container.js +169 -0
  135. package/build/render-container.js.map +1 -0
  136. package/build/render-node-to-output.d.ts +32 -0
  137. package/build/render-node-to-output.js +177 -0
  138. package/build/render-node-to-output.js.map +1 -0
  139. package/build/render-screen-reader.d.ts +5 -0
  140. package/build/render-screen-reader.js +54 -0
  141. package/build/render-screen-reader.js.map +1 -0
  142. package/build/render-scrollbar.d.ts +23 -0
  143. package/build/render-scrollbar.js +70 -0
  144. package/build/render-scrollbar.js.map +1 -0
  145. package/build/render-sticky.d.ts +53 -0
  146. package/build/render-sticky.js +317 -0
  147. package/build/render-sticky.js.map +1 -0
  148. package/build/render-text-node.d.ts +20 -0
  149. package/build/render-text-node.js +155 -0
  150. package/build/render-text-node.js.map +1 -0
  151. package/build/render.d.ts +165 -0
  152. package/build/render.js +60 -0
  153. package/build/render.js.map +1 -0
  154. package/build/renderer.d.ts +24 -0
  155. package/build/renderer.js +292 -0
  156. package/build/renderer.js.map +1 -0
  157. package/build/replay.d.ts +59 -0
  158. package/build/replay.js +128 -0
  159. package/build/replay.js.map +1 -0
  160. package/build/resize-observer.d.ts +24 -0
  161. package/build/resize-observer.js +102 -0
  162. package/build/resize-observer.js.map +1 -0
  163. package/build/scroll.d.ts +11 -0
  164. package/build/scroll.js +123 -0
  165. package/build/scroll.js.map +1 -0
  166. package/build/selection.d.ts +52 -0
  167. package/build/selection.js +359 -0
  168. package/build/selection.js.map +1 -0
  169. package/build/serialization.d.ts +25 -0
  170. package/build/serialization.js +224 -0
  171. package/build/serialization.js.map +1 -0
  172. package/build/squash-text-nodes.d.ts +16 -0
  173. package/build/squash-text-nodes.js +58 -0
  174. package/build/squash-text-nodes.js.map +1 -0
  175. package/build/styled-line.d.ts +58 -0
  176. package/build/styled-line.js +629 -0
  177. package/build/styled-line.js.map +1 -0
  178. package/build/styles.d.ts +286 -0
  179. package/build/styles.js +257 -0
  180. package/build/styles.js.map +1 -0
  181. package/build/terminal-buffer.d.ts +57 -0
  182. package/build/terminal-buffer.js +507 -0
  183. package/build/terminal-buffer.js.map +1 -0
  184. package/build/text-wrap.d.ts +12 -0
  185. package/build/text-wrap.js +154 -0
  186. package/build/text-wrap.js.map +1 -0
  187. package/build/tokenize.d.ts +47 -0
  188. package/build/tokenize.js +419 -0
  189. package/build/tokenize.js.map +1 -0
  190. package/build/vertical-gap.d.ts +17 -0
  191. package/build/vertical-gap.js +20 -0
  192. package/build/vertical-gap.js.map +1 -0
  193. package/build/worker/animation-controller.d.ts +72 -0
  194. package/build/worker/animation-controller.js +128 -0
  195. package/build/worker/animation-controller.js.map +1 -0
  196. package/build/worker/ansi-utils.d.ts +16 -0
  197. package/build/worker/ansi-utils.js +40 -0
  198. package/build/worker/ansi-utils.js.map +1 -0
  199. package/build/worker/canvas.d.ts +49 -0
  200. package/build/worker/canvas.js +90 -0
  201. package/build/worker/canvas.js.map +1 -0
  202. package/build/worker/compositor.d.ts +33 -0
  203. package/build/worker/compositor.js +308 -0
  204. package/build/worker/compositor.js.map +1 -0
  205. package/build/worker/platform.d.ts +15 -0
  206. package/build/worker/platform.js +19 -0
  207. package/build/worker/platform.js.map +1 -0
  208. package/build/worker/render-worker.d.ts +112 -0
  209. package/build/worker/render-worker.js +944 -0
  210. package/build/worker/render-worker.js.map +1 -0
  211. package/build/worker/scene-manager.d.ts +26 -0
  212. package/build/worker/scene-manager.js +109 -0
  213. package/build/worker/scene-manager.js.map +1 -0
  214. package/build/worker/scroll-optimizer.d.ts +32 -0
  215. package/build/worker/scroll-optimizer.js +110 -0
  216. package/build/worker/scroll-optimizer.js.map +1 -0
  217. package/build/worker/terminal-writer.d.ts +116 -0
  218. package/build/worker/terminal-writer.js +708 -0
  219. package/build/worker/terminal-writer.js.map +1 -0
  220. package/build/worker/worker-entry.d.ts +6 -0
  221. package/build/worker/worker-entry.js +130 -0
  222. package/build/worker/worker-entry.js.map +1 -0
  223. package/license +9 -0
  224. package/package.json +208 -0
  225. package/readme.md +2353 -0
@@ -0,0 +1,154 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { StyledLine } from './styled-line.js';
7
+ import { inkCharacterWidth, styledCharsWidth } from './measure-text.js';
8
+ export const sliceStyledChars = (line, begin, end) => {
9
+ let width = 0;
10
+ let startIndex = -1;
11
+ let endIndex = line.length;
12
+ for (let i = 0; i < line.length; i++) {
13
+ const charWidth = inkCharacterWidth(line.getValue(i));
14
+ const charStart = width;
15
+ const charEnd = width + charWidth;
16
+ if (end !== undefined && charEnd > end) {
17
+ endIndex = i;
18
+ break;
19
+ }
20
+ if (charStart >= begin && startIndex === -1) {
21
+ startIndex = i;
22
+ }
23
+ width += charWidth;
24
+ }
25
+ if (startIndex === -1)
26
+ return new StyledLine();
27
+ return line.slice(startIndex, endIndex);
28
+ };
29
+ export const truncateStyledChars = (line, columns, options = {}) => {
30
+ const { position = 'end' } = options;
31
+ const truncationCharacter = '…';
32
+ const truncationStyledLine = new StyledLine();
33
+ truncationStyledLine.pushChar(truncationCharacter, 0);
34
+ if (columns < 1) {
35
+ return new StyledLine();
36
+ }
37
+ if (columns === 1) {
38
+ return truncationStyledLine;
39
+ }
40
+ const textWidth = styledCharsWidth(line);
41
+ if (textWidth <= columns) {
42
+ return line;
43
+ }
44
+ const truncationWidth = inkCharacterWidth(truncationCharacter);
45
+ if (position === 'start') {
46
+ const right = sliceStyledChars(line, textWidth - columns + truncationWidth, textWidth);
47
+ return truncationStyledLine.combine(right);
48
+ }
49
+ if (position === 'middle') {
50
+ const leftWidth = Math.ceil(columns / 2);
51
+ const rightWidth = columns - leftWidth;
52
+ const left = sliceStyledChars(line, 0, leftWidth - truncationWidth);
53
+ const right = sliceStyledChars(line, textWidth - rightWidth, textWidth);
54
+ return left.combine(truncationStyledLine).combine(right);
55
+ }
56
+ const left = sliceStyledChars(line, 0, columns - truncationWidth);
57
+ return left.combine(truncationStyledLine);
58
+ };
59
+ export const wrapStyledChars = (line, columns) => {
60
+ const rows = [];
61
+ let currentRowStart = 0;
62
+ let currentRowWidth = 0;
63
+ let isAtStartOfLogicalLine = true;
64
+ let i = 0;
65
+ while (i < line.length) {
66
+ const firstVal = line.getValue(i);
67
+ if (firstVal === '\n') {
68
+ rows.push(line.slice(currentRowStart, i));
69
+ currentRowStart = i + 1;
70
+ currentRowWidth = 0;
71
+ isAtStartOfLogicalLine = true;
72
+ i++;
73
+ continue;
74
+ }
75
+ // Find word/delimiter boundary
76
+ let j = i;
77
+ let wordWidth = 0;
78
+ if (firstVal === ' ') {
79
+ wordWidth = inkCharacterWidth(' ');
80
+ j = i + 1;
81
+ }
82
+ else {
83
+ while (j < line.length &&
84
+ line.getValue(j) !== ' ' &&
85
+ line.getValue(j) !== '\n') {
86
+ wordWidth += inkCharacterWidth(line.getValue(j));
87
+ j++;
88
+ }
89
+ }
90
+ // Word/space is [i, j)
91
+ if (currentRowWidth + wordWidth > columns && currentRowWidth > 0) {
92
+ if (firstVal === ' ' && !isAtStartOfLogicalLine) {
93
+ // Drop space that causes wrap
94
+ i = j;
95
+ continue;
96
+ }
97
+ // Wrap: finish previous row
98
+ let trimEnd = i;
99
+ while (trimEnd > currentRowStart && line.getValue(trimEnd - 1) === ' ') {
100
+ trimEnd--;
101
+ }
102
+ rows.push(line.slice(currentRowStart, trimEnd));
103
+ currentRowStart = i;
104
+ currentRowWidth = 0;
105
+ // Note: isAtStartOfLogicalLine remains unchanged as we just wrapped.
106
+ // It ensures that subsequent spaces on the new row are also dropped if needed.
107
+ continue;
108
+ }
109
+ if (currentRowWidth === 0 && wordWidth > columns) {
110
+ // Hard wrap long word
111
+ let k = i;
112
+ let chunkWidth = 0;
113
+ while (k < j) {
114
+ const cw = inkCharacterWidth(line.getValue(k));
115
+ if (chunkWidth + cw > columns && chunkWidth > 0) {
116
+ rows.push(line.slice(currentRowStart, k));
117
+ currentRowStart = k;
118
+ chunkWidth = 0;
119
+ }
120
+ chunkWidth += cw;
121
+ k++;
122
+ }
123
+ currentRowWidth = chunkWidth;
124
+ i = j;
125
+ isAtStartOfLogicalLine = false;
126
+ }
127
+ else {
128
+ // Fit
129
+ currentRowWidth += wordWidth;
130
+ i = j;
131
+ if (firstVal !== ' ') {
132
+ isAtStartOfLogicalLine = false;
133
+ }
134
+ }
135
+ }
136
+ if (currentRowStart < line.length || rows.length === 0) {
137
+ rows.push(line.slice(currentRowStart));
138
+ }
139
+ return rows;
140
+ };
141
+ export const wrapOrTruncateStyledChars = (line, maxWidth, textWrap = 'wrap') => {
142
+ if (textWrap.startsWith('truncate')) {
143
+ let position = 'end';
144
+ if (textWrap === 'truncate-middle') {
145
+ position = 'middle';
146
+ }
147
+ else if (textWrap === 'truncate-start') {
148
+ position = 'start';
149
+ }
150
+ return [truncateStyledChars(line, maxWidth, { position })];
151
+ }
152
+ return wrapStyledChars(line, maxWidth);
153
+ };
154
+ //# sourceMappingURL=text-wrap.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text-wrap.js","sourceRoot":"","sources":["../src/text-wrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ import { StyledLine } from './styled-line.js';
2
+ export declare const CC_BEL: number;
3
+ export declare const CC_ESC: number;
4
+ export declare const CC_BACKSLASH: number;
5
+ export declare const CC_CSI: number;
6
+ export declare const CC_OSC: number;
7
+ export declare const CC_C1_ST: number;
8
+ export declare const CC_0: number;
9
+ export declare const CC_9: number;
10
+ export declare const CC_SEMI: number;
11
+ export declare const CC_M: number;
12
+ export declare const ESCAPES: Set<number>;
13
+ export declare const linkCodePrefix = "\u001B]8;";
14
+ export declare const linkCodePrefixCharCodes: number[];
15
+ export declare const linkCodeSuffix = "\u0007";
16
+ export declare const linkEndCode = "\u001B]8;;\u0007";
17
+ export declare const linkEndCodeST = "\u001B]8;;\u001B\\";
18
+ export declare const linkEndCodeC1ST = "\u001B]8;;\u009C";
19
+ export declare const endCodesSet: Set<string>;
20
+ export declare function getEndCode(code: string): string;
21
+ export declare function isIntensityCode(code: AnsiCode): boolean;
22
+ export type AnsiCode = {
23
+ type: 'ansi';
24
+ code: string;
25
+ endCode: string;
26
+ };
27
+ export type ControlCode = {
28
+ type: 'control';
29
+ code: string;
30
+ };
31
+ export type Char = {
32
+ type: 'char';
33
+ value: string;
34
+ fullWidth: boolean;
35
+ };
36
+ export type Token = AnsiCode | ControlCode | Char;
37
+ export declare function tokenize(str: string, endChar?: number): Token[];
38
+ export declare const BOLD_MASK = 1;
39
+ export declare const DIM_MASK: number;
40
+ export declare const ITALIC_MASK: number;
41
+ export declare const UNDERLINE_MASK: number;
42
+ export declare const STRIKETHROUGH_MASK: number;
43
+ export declare const INVERSE_MASK: number;
44
+ export declare const HIDDEN_MASK: number;
45
+ export declare const FULL_WIDTH_MASK: number;
46
+ export declare function styledLineFromTokens(tokens: Token[]): StyledLine;
47
+ export declare function styledLineToString(line: StyledLine): string;
@@ -0,0 +1,419 @@
1
+ import isFullwidthCodePoint from 'is-fullwidth-code-point';
2
+ import ansiStyles from 'ansi-styles';
3
+ import { StyledLine } from './styled-line.js';
4
+ // --- consts.ts ---
5
+ const BEL = '\u0007';
6
+ const ESC = '\u001B';
7
+ const BACKSLASH = '\\';
8
+ const CSI = '[';
9
+ const OSC = ']';
10
+ const C1_ST = '\u009C';
11
+ export const CC_BEL = BEL.charCodeAt(0);
12
+ export const CC_ESC = ESC.charCodeAt(0);
13
+ export const CC_BACKSLASH = BACKSLASH.charCodeAt(0);
14
+ export const CC_CSI = CSI.charCodeAt(0);
15
+ export const CC_OSC = OSC.charCodeAt(0);
16
+ export const CC_C1_ST = C1_ST.charCodeAt(0);
17
+ export const CC_0 = '0'.charCodeAt(0);
18
+ export const CC_9 = '9'.charCodeAt(0);
19
+ export const CC_SEMI = ';'.charCodeAt(0);
20
+ export const CC_M = 'm'.charCodeAt(0);
21
+ export const ESCAPES = new Set([CC_ESC, 0x9b]);
22
+ export const linkCodePrefix = `${ESC}${OSC}8;`;
23
+ export const linkCodePrefixCharCodes = [...linkCodePrefix].map(char => char.charCodeAt(0));
24
+ export const linkCodeSuffix = BEL;
25
+ export const linkEndCode = `${ESC}${OSC}8;;${BEL}`;
26
+ export const linkEndCodeST = `${ESC}${OSC}8;;${ESC}${BACKSLASH}`;
27
+ export const linkEndCodeC1ST = `${ESC}${OSC}8;;${C1_ST}`;
28
+ // --- ansiCodes.ts ---
29
+ export const endCodesSet = new Set();
30
+ const endCodesMap = new Map();
31
+ for (const [start, end] of ansiStyles.codes) {
32
+ endCodesSet.add(ansiStyles.color.ansi(end));
33
+ endCodesMap.set(ansiStyles.color.ansi(start), ansiStyles.color.ansi(end));
34
+ }
35
+ export function getEndCode(code) {
36
+ if (endCodesSet.has(code))
37
+ return code;
38
+ if (endCodesMap.has(code))
39
+ return endCodesMap.get(code);
40
+ if (code.startsWith(linkCodePrefix)) {
41
+ if (code.endsWith('\u001B\\'))
42
+ return linkEndCodeST;
43
+ if (code.endsWith('\u009C'))
44
+ return linkEndCodeC1ST;
45
+ return linkEndCode;
46
+ }
47
+ code = code.slice(2);
48
+ if (code.startsWith('38')) {
49
+ return ansiStyles.color.close;
50
+ }
51
+ if (code.startsWith('48')) {
52
+ return ansiStyles.bgColor.close;
53
+ }
54
+ const ret = ansiStyles.codes.get(Number.parseInt(code, 10));
55
+ if (ret) {
56
+ return ansiStyles.color.ansi(ret);
57
+ }
58
+ return ansiStyles.reset.open;
59
+ }
60
+ export function isIntensityCode(code) {
61
+ return (code.code === ansiStyles.bold.open || code.code === ansiStyles.dim.open);
62
+ }
63
+ function findOSCTerminatorIndex(string, startIndex) {
64
+ for (let i = startIndex; i < string.length; i++) {
65
+ const ch = string.charCodeAt(i);
66
+ if (ch === CC_BEL)
67
+ return i;
68
+ if (ch === CC_C1_ST)
69
+ return i;
70
+ if (ch === CC_ESC &&
71
+ i + 1 < string.length &&
72
+ string.charCodeAt(i + 1) === CC_BACKSLASH) {
73
+ return i + 1;
74
+ }
75
+ }
76
+ return -1;
77
+ }
78
+ function parseLinkCode(string, offset) {
79
+ string = string.slice(offset);
80
+ for (let index = 1; index < linkCodePrefixCharCodes.length; index++) {
81
+ if (string.charCodeAt(index) !== linkCodePrefixCharCodes[index]) {
82
+ return undefined;
83
+ }
84
+ }
85
+ const paramsEndIndex = string.indexOf(';', linkCodePrefix.length);
86
+ if (paramsEndIndex === -1)
87
+ return undefined;
88
+ const endIndex = findOSCTerminatorIndex(string, paramsEndIndex + 1);
89
+ if (endIndex === -1)
90
+ return undefined;
91
+ return string.slice(0, endIndex + 1);
92
+ }
93
+ function parseOSCSequence(string, offset) {
94
+ string = string.slice(offset);
95
+ const endIndex = findOSCTerminatorIndex(string, 2);
96
+ if (endIndex === -1)
97
+ return undefined;
98
+ return string.slice(0, endIndex + 1);
99
+ }
100
+ function findSGRSequenceEndIndex(str) {
101
+ for (let index = 2; index < str.length; index++) {
102
+ const charCode = str.charCodeAt(index);
103
+ if (charCode === CC_M)
104
+ return index;
105
+ if (charCode === CC_SEMI)
106
+ continue;
107
+ if (charCode >= CC_0 && charCode <= CC_9)
108
+ continue;
109
+ break;
110
+ }
111
+ return -1;
112
+ }
113
+ function parseSGRSequence(string, offset) {
114
+ string = string.slice(offset);
115
+ const endIndex = findSGRSequenceEndIndex(string);
116
+ if (endIndex === -1)
117
+ return;
118
+ return string.slice(0, endIndex + 1);
119
+ }
120
+ function splitCompoundSGRSequences(code) {
121
+ if (!code.includes(';')) {
122
+ return [code];
123
+ }
124
+ const codeParts = code.slice(2, -1).split(';');
125
+ const ret = [];
126
+ for (let i = 0; i < codeParts.length; i++) {
127
+ const rawCode = codeParts[i];
128
+ if (rawCode === '38' || rawCode === '48') {
129
+ if (i + 2 < codeParts.length && codeParts[i + 1] === '5') {
130
+ ret.push(codeParts.slice(i, i + 3).join(';'));
131
+ i += 2;
132
+ continue;
133
+ }
134
+ else if (i + 4 < codeParts.length && codeParts[i + 1] === '2') {
135
+ ret.push(codeParts.slice(i, i + 5).join(';'));
136
+ i += 4;
137
+ continue;
138
+ }
139
+ }
140
+ ret.push(rawCode);
141
+ }
142
+ return ret.map(part => `\u001B[${part}m`);
143
+ }
144
+ export function tokenize(str, endChar = Number.POSITIVE_INFINITY) {
145
+ const ret = [];
146
+ let visible = 0;
147
+ let i = 0;
148
+ while (i < str.length) {
149
+ // Determine the next code point / surrogate pair string
150
+ const codePoint = str.codePointAt(i);
151
+ // If it's a surrogate pair, it will be 2 characters long
152
+ const charLength = codePoint > 0xff_ff ? 2 : 1;
153
+ const charStr = str.slice(i, i + charLength);
154
+ if (ESCAPES.has(codePoint)) {
155
+ let code;
156
+ const nextCodePoint = str.codePointAt(i + 1);
157
+ if (nextCodePoint === CC_OSC) {
158
+ code = parseLinkCode(str, i);
159
+ if (code) {
160
+ ret.push({
161
+ type: 'ansi',
162
+ code,
163
+ endCode: getEndCode(code),
164
+ });
165
+ }
166
+ else {
167
+ code = parseOSCSequence(str, i);
168
+ if (code) {
169
+ ret.push({
170
+ type: 'control',
171
+ code,
172
+ });
173
+ }
174
+ }
175
+ }
176
+ else if (nextCodePoint === CC_CSI) {
177
+ code = parseSGRSequence(str, i);
178
+ if (code) {
179
+ const codes = splitCompoundSGRSequences(code);
180
+ for (const individualCode of codes) {
181
+ ret.push({
182
+ type: 'ansi',
183
+ code: individualCode,
184
+ endCode: getEndCode(individualCode),
185
+ });
186
+ }
187
+ }
188
+ }
189
+ if (code) {
190
+ i += code.length;
191
+ continue;
192
+ }
193
+ }
194
+ // Variation Selector 16 forces emoji presentation (2 columns wide)
195
+ const isVariationSelector = charStr.includes('\uFE0F');
196
+ // Regional indicator pairs form flag emoji (2 columns wide)
197
+ const isRegionalIndicator = codePoint >= 0x1_f1_e6 && codePoint <= 0x1_f1_ff;
198
+ const fullWidth = isVariationSelector ||
199
+ isRegionalIndicator ||
200
+ isFullwidthCodePoint(codePoint);
201
+ ret.push({
202
+ type: 'char',
203
+ value: charStr,
204
+ fullWidth,
205
+ });
206
+ visible += fullWidth ? 2 : 1;
207
+ if (visible >= endChar) {
208
+ break;
209
+ }
210
+ i += charLength;
211
+ }
212
+ return ret;
213
+ }
214
+ export const BOLD_MASK = 1;
215
+ export const DIM_MASK = 1 << 1;
216
+ export const ITALIC_MASK = 1 << 2;
217
+ export const UNDERLINE_MASK = 1 << 3;
218
+ export const STRIKETHROUGH_MASK = 1 << 4;
219
+ export const INVERSE_MASK = 1 << 5;
220
+ export const HIDDEN_MASK = 1 << 6;
221
+ export const FULL_WIDTH_MASK = 1 << 7;
222
+ export function styledLineFromTokens(tokens) {
223
+ const line = new StyledLine();
224
+ let formatFlags = 0;
225
+ let fgColor;
226
+ let bgColor;
227
+ let link;
228
+ for (const token of tokens) {
229
+ if (token.type === 'ansi') {
230
+ const { code } = token;
231
+ switch (code) {
232
+ case ansiStyles.reset.open: {
233
+ formatFlags = 0;
234
+ fgColor = undefined;
235
+ bgColor = undefined;
236
+ link = undefined;
237
+ break;
238
+ }
239
+ case ansiStyles.bold.open: {
240
+ formatFlags |= BOLD_MASK;
241
+ break;
242
+ }
243
+ case ansiStyles.dim.open: {
244
+ formatFlags |= DIM_MASK;
245
+ break;
246
+ }
247
+ case ansiStyles.italic.open: {
248
+ formatFlags |= ITALIC_MASK;
249
+ break;
250
+ }
251
+ case ansiStyles.underline.open: {
252
+ formatFlags |= UNDERLINE_MASK;
253
+ break;
254
+ }
255
+ case ansiStyles.strikethrough.open: {
256
+ formatFlags |= STRIKETHROUGH_MASK;
257
+ break;
258
+ }
259
+ case ansiStyles.inverse.open: {
260
+ formatFlags |= INVERSE_MASK;
261
+ break;
262
+ }
263
+ case ansiStyles.hidden.open: {
264
+ formatFlags |= HIDDEN_MASK;
265
+ break;
266
+ }
267
+ case ansiStyles.bold.close:
268
+ case ansiStyles.dim.close: {
269
+ formatFlags &= ~BOLD_MASK;
270
+ formatFlags &= ~DIM_MASK;
271
+ break;
272
+ }
273
+ case ansiStyles.italic.close: {
274
+ formatFlags &= ~ITALIC_MASK;
275
+ break;
276
+ }
277
+ case ansiStyles.underline.close: {
278
+ formatFlags &= ~UNDERLINE_MASK;
279
+ break;
280
+ }
281
+ case ansiStyles.strikethrough.close: {
282
+ formatFlags &= ~STRIKETHROUGH_MASK;
283
+ break;
284
+ }
285
+ case ansiStyles.inverse.close: {
286
+ formatFlags &= ~INVERSE_MASK;
287
+ break;
288
+ }
289
+ case ansiStyles.hidden.close: {
290
+ formatFlags &= ~HIDDEN_MASK;
291
+ break;
292
+ }
293
+ default: {
294
+ if (code.startsWith('\u001B[38;') ||
295
+ (code >= '\u001B[30m' && code <= '\u001B[37m') ||
296
+ (code >= '\u001B[90m' && code <= '\u001B[97m')) {
297
+ fgColor = code;
298
+ }
299
+ else if (code.startsWith('\u001B[48;') ||
300
+ (code >= '\u001B[40m' && code <= '\u001B[47m') ||
301
+ (code >= '\u001B[100m' && code <= '\u001B[107m')) {
302
+ bgColor = code;
303
+ }
304
+ else if (code === ansiStyles.color.close) {
305
+ fgColor = undefined;
306
+ }
307
+ else if (code === ansiStyles.bgColor.close) {
308
+ bgColor = undefined;
309
+ }
310
+ else if (code.startsWith(linkCodePrefix)) {
311
+ link = code;
312
+ }
313
+ else if (code === linkEndCode ||
314
+ code === linkEndCodeST ||
315
+ code === linkEndCodeC1ST) {
316
+ link = undefined;
317
+ }
318
+ }
319
+ }
320
+ }
321
+ else if (token.type === 'char') {
322
+ let finalFlags = formatFlags;
323
+ if (token.fullWidth) {
324
+ finalFlags |= FULL_WIDTH_MASK;
325
+ }
326
+ line.pushChar(token.value, finalFlags, fgColor, bgColor, link);
327
+ }
328
+ }
329
+ return line;
330
+ }
331
+ export function styledLineToString(line) {
332
+ let ret = '';
333
+ let prevFormatFlags = 0;
334
+ let prevFgColor;
335
+ let prevBgColor;
336
+ let prevLink;
337
+ for (const { value, formatFlags, fgColor, bgColor, link } of line) {
338
+ if (formatFlags === prevFormatFlags &&
339
+ fgColor === prevFgColor &&
340
+ bgColor === prevBgColor &&
341
+ link === prevLink) {
342
+ ret += value;
343
+ continue;
344
+ }
345
+ let needResetBoldDim = false;
346
+ if ((prevFormatFlags & BOLD_MASK && !(formatFlags & BOLD_MASK)) ||
347
+ (prevFormatFlags & DIM_MASK && !(formatFlags & DIM_MASK))) {
348
+ needResetBoldDim = true;
349
+ }
350
+ if (needResetBoldDim) {
351
+ ret += ansiStyles.bold.close;
352
+ }
353
+ if ((needResetBoldDim ||
354
+ (formatFlags & BOLD_MASK && !(prevFormatFlags & BOLD_MASK))) &&
355
+ formatFlags & BOLD_MASK)
356
+ ret += ansiStyles.bold.open;
357
+ if ((needResetBoldDim ||
358
+ (formatFlags & DIM_MASK && !(prevFormatFlags & DIM_MASK))) &&
359
+ formatFlags & DIM_MASK)
360
+ ret += ansiStyles.dim.open;
361
+ if (formatFlags & ITALIC_MASK && !(prevFormatFlags & ITALIC_MASK))
362
+ ret += ansiStyles.italic.open;
363
+ if (!(formatFlags & ITALIC_MASK) && prevFormatFlags & ITALIC_MASK)
364
+ ret += ansiStyles.italic.close;
365
+ if (formatFlags & UNDERLINE_MASK && !(prevFormatFlags & UNDERLINE_MASK))
366
+ ret += ansiStyles.underline.open;
367
+ if (!(formatFlags & UNDERLINE_MASK) && prevFormatFlags & UNDERLINE_MASK)
368
+ ret += ansiStyles.underline.close;
369
+ if (formatFlags & STRIKETHROUGH_MASK &&
370
+ !(prevFormatFlags & STRIKETHROUGH_MASK))
371
+ ret += ansiStyles.strikethrough.open;
372
+ if (!(formatFlags & STRIKETHROUGH_MASK) &&
373
+ prevFormatFlags & STRIKETHROUGH_MASK)
374
+ ret += ansiStyles.strikethrough.close;
375
+ if (formatFlags & INVERSE_MASK && !(prevFormatFlags & INVERSE_MASK))
376
+ ret += ansiStyles.inverse.open;
377
+ if (!(formatFlags & INVERSE_MASK) && prevFormatFlags & INVERSE_MASK)
378
+ ret += ansiStyles.inverse.close;
379
+ if (formatFlags & HIDDEN_MASK && !(prevFormatFlags & HIDDEN_MASK))
380
+ ret += ansiStyles.hidden.open;
381
+ if (!(formatFlags & HIDDEN_MASK) && prevFormatFlags & HIDDEN_MASK)
382
+ ret += ansiStyles.hidden.close;
383
+ if (fgColor !== prevFgColor) {
384
+ ret += fgColor === undefined ? ansiStyles.color.close : fgColor;
385
+ }
386
+ if (bgColor !== prevBgColor) {
387
+ ret += bgColor === undefined ? ansiStyles.bgColor.close : bgColor;
388
+ }
389
+ if (link !== prevLink) {
390
+ ret += link === undefined ? linkEndCode : link;
391
+ }
392
+ ret += value;
393
+ prevFormatFlags = formatFlags;
394
+ prevFgColor = fgColor;
395
+ prevBgColor = bgColor;
396
+ prevLink = link;
397
+ }
398
+ // Reset active styles at the end of the string
399
+ if (prevFgColor !== undefined)
400
+ ret += ansiStyles.color.close;
401
+ if (prevBgColor !== undefined)
402
+ ret += ansiStyles.bgColor.close;
403
+ if (prevFormatFlags & (BOLD_MASK | DIM_MASK))
404
+ ret += ansiStyles.bold.close;
405
+ if (prevFormatFlags & ITALIC_MASK)
406
+ ret += ansiStyles.italic.close;
407
+ if (prevFormatFlags & UNDERLINE_MASK)
408
+ ret += ansiStyles.underline.close;
409
+ if (prevFormatFlags & STRIKETHROUGH_MASK)
410
+ ret += ansiStyles.strikethrough.close;
411
+ if (prevFormatFlags & INVERSE_MASK)
412
+ ret += ansiStyles.inverse.close;
413
+ if (prevFormatFlags & HIDDEN_MASK)
414
+ ret += ansiStyles.hidden.close;
415
+ if (prevLink !== undefined)
416
+ ret += linkEndCode;
417
+ return ret;
418
+ }
419
+ //# sourceMappingURL=tokenize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../src/tokenize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Calculates the number of newlines to insert based on a vertical gap.
8
+ *
9
+ * If there was preceding content on a previous line, we output a newline for
10
+ * the line break, plus any empty lines corresponding to the gap. If there was
11
+ * no preceding content, we only output newlines for the gap.
12
+ *
13
+ * @param gap The vertical gap in lines.
14
+ * @param hasPriorContent Whether there was content before this gap.
15
+ * @returns The number of newlines to insert.
16
+ */
17
+ export declare const calculateNewlineCount: (gap: number, hasPriorContent: boolean) => number;