@nuvin/ink 6.6.7 → 7.0.1-alpha

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 (216) hide show
  1. package/build/ansi-tokenizer.d.ts +38 -0
  2. package/build/ansi-tokenizer.d.ts.map +1 -0
  3. package/build/ansi-tokenizer.js +316 -0
  4. package/build/ansi-tokenizer.js.map +1 -0
  5. package/build/colorize.d.ts.map +1 -0
  6. package/build/components/AccessibilityContext.d.ts.map +1 -0
  7. package/build/components/AnimationContext.d.ts +9 -0
  8. package/build/components/AnimationContext.d.ts.map +1 -0
  9. package/build/components/AnimationContext.js +13 -0
  10. package/build/components/AnimationContext.js.map +1 -0
  11. package/build/components/App.d.ts +11 -49
  12. package/build/components/App.d.ts.map +1 -0
  13. package/build/components/App.js +412 -227
  14. package/build/components/App.js.map +1 -1
  15. package/build/components/AppContext.d.ts +33 -3
  16. package/build/components/AppContext.d.ts.map +1 -0
  17. package/build/components/AppContext.js +2 -1
  18. package/build/components/AppContext.js.map +1 -1
  19. package/build/components/BackgroundContext.d.ts.map +1 -0
  20. package/build/components/Box.d.ts +15 -8
  21. package/build/components/Box.d.ts.map +1 -0
  22. package/build/components/Box.js +12 -10
  23. package/build/components/Box.js.map +1 -1
  24. package/build/components/CursorContext.d.ts +11 -0
  25. package/build/components/CursorContext.d.ts.map +1 -0
  26. package/build/components/CursorContext.js +8 -0
  27. package/build/components/CursorContext.js.map +1 -0
  28. package/build/components/ErrorBoundary.d.ts +18 -0
  29. package/build/components/ErrorBoundary.d.ts.map +1 -0
  30. package/build/components/ErrorBoundary.js +23 -0
  31. package/build/components/ErrorBoundary.js.map +1 -0
  32. package/build/components/ErrorOverview.d.ts.map +1 -0
  33. package/build/components/ErrorOverview.js +6 -6
  34. package/build/components/ErrorOverview.js.map +1 -1
  35. package/build/components/FocusContext.d.ts.map +1 -0
  36. package/build/components/Newline.d.ts.map +1 -0
  37. package/build/components/Spacer.d.ts.map +1 -0
  38. package/build/components/Static.d.ts.map +1 -0
  39. package/build/components/Static.js.map +1 -1
  40. package/build/components/StderrContext.d.ts.map +1 -0
  41. package/build/components/StdinContext.d.ts +7 -1
  42. package/build/components/StdinContext.d.ts.map +1 -0
  43. package/build/components/StdinContext.js +1 -0
  44. package/build/components/StdinContext.js.map +1 -1
  45. package/build/components/StdoutContext.d.ts.map +1 -0
  46. package/build/components/Text.d.ts +1 -1
  47. package/build/components/Text.d.ts.map +1 -0
  48. package/build/components/Text.js +1 -1
  49. package/build/components/Text.js.map +1 -1
  50. package/build/components/Transform.d.ts +1 -1
  51. package/build/components/Transform.d.ts.map +1 -0
  52. package/build/cursor-helpers.d.ts +38 -0
  53. package/build/cursor-helpers.d.ts.map +1 -0
  54. package/build/cursor-helpers.js +56 -0
  55. package/build/cursor-helpers.js.map +1 -0
  56. package/build/devtools-window-polyfill.d.ts.map +1 -0
  57. package/build/devtools-window-polyfill.js +7 -4
  58. package/build/devtools-window-polyfill.js.map +1 -1
  59. package/build/devtools.d.ts.map +1 -0
  60. package/build/devtools.js +31 -6
  61. package/build/devtools.js.map +1 -1
  62. package/build/diagnostics.d.ts +5 -0
  63. package/build/diagnostics.d.ts.map +1 -0
  64. package/build/diagnostics.js +7 -0
  65. package/build/diagnostics.js.map +1 -0
  66. package/build/dom.d.ts +5 -1
  67. package/build/dom.d.ts.map +1 -0
  68. package/build/dom.js +20 -1
  69. package/build/dom.js.map +1 -1
  70. package/build/get-max-width.d.ts.map +1 -0
  71. package/build/hooks/use-animation.d.ts +49 -0
  72. package/build/hooks/use-animation.d.ts.map +1 -0
  73. package/build/hooks/use-animation.js +87 -0
  74. package/build/hooks/use-animation.js.map +1 -0
  75. package/build/hooks/use-app.d.ts +5 -2
  76. package/build/hooks/use-app.d.ts.map +1 -0
  77. package/build/hooks/use-app.js +1 -1
  78. package/build/hooks/use-box-metrics.d.ts +59 -0
  79. package/build/hooks/use-box-metrics.d.ts.map +1 -0
  80. package/build/hooks/use-box-metrics.js +88 -0
  81. package/build/hooks/use-box-metrics.js.map +1 -0
  82. package/build/hooks/use-cursor.d.ts +12 -0
  83. package/build/hooks/use-cursor.d.ts.map +1 -0
  84. package/build/hooks/use-cursor.js +29 -0
  85. package/build/hooks/use-cursor.js.map +1 -0
  86. package/build/hooks/use-focus-manager.d.ts +17 -2
  87. package/build/hooks/use-focus-manager.d.ts.map +1 -0
  88. package/build/hooks/use-focus-manager.js +2 -1
  89. package/build/hooks/use-focus-manager.js.map +1 -1
  90. package/build/hooks/use-focus.d.ts +2 -1
  91. package/build/hooks/use-focus.d.ts.map +1 -0
  92. package/build/hooks/use-focus.js +5 -4
  93. package/build/hooks/use-focus.js.map +1 -1
  94. package/build/hooks/use-input.d.ts +40 -1
  95. package/build/hooks/use-input.d.ts.map +1 -0
  96. package/build/hooks/use-input.js +65 -25
  97. package/build/hooks/use-input.js.map +1 -1
  98. package/build/hooks/use-is-screen-reader-enabled.d.ts +2 -1
  99. package/build/hooks/use-is-screen-reader-enabled.d.ts.map +1 -0
  100. package/build/hooks/use-is-screen-reader-enabled.js +2 -1
  101. package/build/hooks/use-is-screen-reader-enabled.js.map +1 -1
  102. package/build/hooks/use-paste.d.ts +35 -0
  103. package/build/hooks/use-paste.d.ts.map +1 -0
  104. package/build/hooks/use-paste.js +66 -0
  105. package/build/hooks/use-paste.js.map +1 -0
  106. package/build/hooks/use-stderr.d.ts +1 -1
  107. package/build/hooks/use-stderr.d.ts.map +1 -0
  108. package/build/hooks/use-stderr.js +1 -1
  109. package/build/hooks/use-stdin.d.ts +4 -2
  110. package/build/hooks/use-stdin.d.ts.map +1 -0
  111. package/build/hooks/use-stdin.js +2 -1
  112. package/build/hooks/use-stdin.js.map +1 -1
  113. package/build/hooks/use-stdout.d.ts +1 -1
  114. package/build/hooks/use-stdout.d.ts.map +1 -0
  115. package/build/hooks/use-stdout.js +1 -1
  116. package/build/hooks/use-window-size.d.ts +18 -0
  117. package/build/hooks/use-window-size.d.ts.map +1 -0
  118. package/build/hooks/use-window-size.js +22 -0
  119. package/build/hooks/use-window-size.js.map +1 -0
  120. package/build/index.d.ts +16 -1
  121. package/build/index.d.ts.map +1 -0
  122. package/build/index.js +8 -0
  123. package/build/index.js.map +1 -1
  124. package/build/ink.d.ts +94 -5
  125. package/build/ink.d.ts.map +1 -0
  126. package/build/ink.js +586 -81
  127. package/build/ink.js.map +1 -1
  128. package/build/input-parser.d.ts +10 -0
  129. package/build/input-parser.d.ts.map +1 -0
  130. package/build/input-parser.js +194 -0
  131. package/build/input-parser.js.map +1 -0
  132. package/build/instances.d.ts.map +1 -0
  133. package/build/kitty-keyboard.d.ts +23 -0
  134. package/build/kitty-keyboard.d.ts.map +1 -0
  135. package/build/kitty-keyboard.js +32 -0
  136. package/build/kitty-keyboard.js.map +1 -0
  137. package/build/log-update.d.ts +7 -1
  138. package/build/log-update.d.ts.map +1 -0
  139. package/build/log-update.js +181 -56
  140. package/build/log-update.js.map +1 -1
  141. package/build/measure-element.d.ts +15 -3
  142. package/build/measure-element.d.ts.map +1 -0
  143. package/build/measure-element.js +31 -5
  144. package/build/measure-element.js.map +1 -1
  145. package/build/measure-text.d.ts +2 -0
  146. package/build/measure-text.d.ts.map +1 -0
  147. package/build/measure-text.js +13 -11
  148. package/build/measure-text.js.map +1 -1
  149. package/build/output.d.ts +2 -1
  150. package/build/output.d.ts.map +1 -0
  151. package/build/output.js +62 -58
  152. package/build/output.js.map +1 -1
  153. package/build/parse-keypress.d.ts +9 -3
  154. package/build/parse-keypress.d.ts.map +1 -0
  155. package/build/parse-keypress.js +283 -13
  156. package/build/parse-keypress.js.map +1 -1
  157. package/build/reconciler.d.ts.map +1 -0
  158. package/build/reconciler.js +57 -37
  159. package/build/reconciler.js.map +1 -1
  160. package/build/render-background.d.ts.map +1 -0
  161. package/build/render-background.js +2 -0
  162. package/build/render-background.js.map +1 -1
  163. package/build/render-border.d.ts +1 -1
  164. package/build/render-border.d.ts.map +1 -0
  165. package/build/render-border.js +35 -24
  166. package/build/render-border.js.map +1 -1
  167. package/build/render-node-to-output.d.ts +1 -1
  168. package/build/render-node-to-output.d.ts.map +1 -0
  169. package/build/render-node-to-output.js +35 -18
  170. package/build/render-node-to-output.js.map +1 -1
  171. package/build/render-to-string.d.ts +38 -0
  172. package/build/render-to-string.d.ts.map +1 -0
  173. package/build/render-to-string.js +116 -0
  174. package/build/render-to-string.js.map +1 -0
  175. package/build/render.d.ts +91 -3
  176. package/build/render.d.ts.map +1 -0
  177. package/build/render.js +17 -5
  178. package/build/render.js.map +1 -1
  179. package/build/renderer.d.ts.map +1 -0
  180. package/build/sanitize-ansi.d.ts +2 -0
  181. package/build/sanitize-ansi.d.ts.map +1 -0
  182. package/build/sanitize-ansi.js +27 -0
  183. package/build/sanitize-ansi.js.map +1 -0
  184. package/build/squash-text-nodes.d.ts.map +1 -0
  185. package/build/squash-text-nodes.js +18 -1
  186. package/build/squash-text-nodes.js.map +1 -1
  187. package/build/styles.d.ts +75 -37
  188. package/build/styles.d.ts.map +1 -0
  189. package/build/styles.js +87 -44
  190. package/build/styles.js.map +1 -1
  191. package/build/utils.d.ts +9 -2
  192. package/build/utils.d.ts.map +1 -0
  193. package/build/utils.js +18 -3
  194. package/build/utils.js.map +1 -1
  195. package/build/wrap-text.d.ts +2 -0
  196. package/build/wrap-text.d.ts.map +1 -0
  197. package/build/wrap-text.js +21 -18
  198. package/build/wrap-text.js.map +1 -1
  199. package/build/write-synchronized.d.ts +4 -0
  200. package/build/write-synchronized.d.ts.map +1 -0
  201. package/build/write-synchronized.js +9 -0
  202. package/build/write-synchronized.js.map +1 -0
  203. package/package.json +46 -106
  204. package/readme.md +850 -64
  205. package/build/components/FixedLayout.d.ts +0 -12
  206. package/build/components/FixedLayout.js +0 -19
  207. package/build/components/FixedLayout.js.map +0 -1
  208. package/build/components/VirtualizedList.d.ts +0 -21
  209. package/build/components/VirtualizedList.js +0 -55
  210. package/build/components/VirtualizedList.js.map +0 -1
  211. package/build/hooks/use-mouse.d.ts +0 -15
  212. package/build/hooks/use-mouse.js +0 -121
  213. package/build/hooks/use-mouse.js.map +0 -1
  214. package/build/hooks/use-virtualization.d.ts +0 -19
  215. package/build/hooks/use-virtualization.js +0 -56
  216. package/build/hooks/use-virtualization.js.map +0 -1
@@ -0,0 +1,38 @@
1
+ type ControlStringType = 'osc' | 'dcs' | 'pm' | 'apc' | 'sos';
2
+ type CsiToken = {
3
+ readonly type: 'csi';
4
+ readonly value: string;
5
+ readonly parameterString: string;
6
+ readonly intermediateString: string;
7
+ readonly finalCharacter: string;
8
+ };
9
+ type EscToken = {
10
+ readonly type: 'esc';
11
+ readonly value: string;
12
+ readonly intermediateString: string;
13
+ readonly finalCharacter: string;
14
+ };
15
+ type ControlStringToken = {
16
+ readonly type: ControlStringType;
17
+ readonly value: string;
18
+ };
19
+ type TextToken = {
20
+ readonly type: 'text';
21
+ readonly value: string;
22
+ };
23
+ type StToken = {
24
+ readonly type: 'st';
25
+ readonly value: string;
26
+ };
27
+ type C1Token = {
28
+ readonly type: 'c1';
29
+ readonly value: string;
30
+ };
31
+ type InvalidToken = {
32
+ readonly type: 'invalid';
33
+ readonly value: string;
34
+ };
35
+ export type AnsiToken = TextToken | CsiToken | EscToken | ControlStringToken | StToken | C1Token | InvalidToken;
36
+ export declare const hasAnsiControlCharacters: (text: string) => boolean;
37
+ export declare const tokenizeAnsi: (text: string) => AnsiToken[];
38
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-tokenizer.d.ts","sourceRoot":"","sources":["../src/ansi-tokenizer.ts"],"names":[],"mappings":"AAUA,KAAK,iBAAiB,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D,KAAK,QAAQ,GAAG;IACf,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,QAAQ,GAAG;IACf,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACzB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,SAAS,GAAG;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,OAAO,GAAG;IACd,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,OAAO,GAAG;IACd,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,YAAY,GAAG;IACnB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,SAAS,GAClB,SAAS,GACT,QAAQ,GACR,QAAQ,GACR,kBAAkB,GAClB,OAAO,GACP,OAAO,GACP,YAAY,CAAC;AA0OhB,eAAO,MAAM,wBAAwB,GAAI,MAAM,MAAM,KAAG,OAYvD,CAAC;AAkBF,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,SAAS,EAyLpD,CAAC"}
@@ -0,0 +1,316 @@
1
+ const bellCharacter = '\u0007';
2
+ const escapeCharacter = '\u001B';
3
+ const stringTerminatorCharacter = '\u009C';
4
+ const csiCharacter = '\u009B';
5
+ const oscCharacter = '\u009D';
6
+ const dcsCharacter = '\u0090';
7
+ const pmCharacter = '\u009E';
8
+ const apcCharacter = '\u009F';
9
+ const sosCharacter = '\u0098';
10
+ const isCsiParameterCharacter = (character) => {
11
+ const codePoint = character.codePointAt(0);
12
+ return codePoint !== undefined && codePoint >= 0x30 && codePoint <= 0x3f;
13
+ };
14
+ const isCsiIntermediateCharacter = (character) => {
15
+ const codePoint = character.codePointAt(0);
16
+ return codePoint !== undefined && codePoint >= 0x20 && codePoint <= 0x2f;
17
+ };
18
+ const isCsiFinalCharacter = (character) => {
19
+ const codePoint = character.codePointAt(0);
20
+ return codePoint !== undefined && codePoint >= 0x40 && codePoint <= 0x7e;
21
+ };
22
+ const isEscapeIntermediateCharacter = (character) => {
23
+ const codePoint = character.codePointAt(0);
24
+ return codePoint !== undefined && codePoint >= 0x20 && codePoint <= 0x2f;
25
+ };
26
+ const isEscapeFinalCharacter = (character) => {
27
+ const codePoint = character.codePointAt(0);
28
+ return codePoint !== undefined && codePoint >= 0x30 && codePoint <= 0x7e;
29
+ };
30
+ const isC1ControlCharacter = (character) => {
31
+ const codePoint = character.codePointAt(0);
32
+ return codePoint !== undefined && codePoint >= 0x80 && codePoint <= 0x9f;
33
+ };
34
+ // Standards references:
35
+ // ECMA-48 control functions and CSI byte classes: https://ecma-international.org/publications-and-standards/standards/ecma-48/
36
+ // xterm CSI parameter/intermediate/final format notes: https://invisible-island.net/xterm/ecma-48-parameter-format.html
37
+ // xterm/OSC BEL termination behavior: https://davidrg.github.io/ckwin/dev/ctlseqs.html
38
+ const readCsiSequence = (text, fromIndex) => {
39
+ let index = fromIndex;
40
+ while (index < text.length) {
41
+ const character = text[index];
42
+ if (!isCsiParameterCharacter(character)) {
43
+ break;
44
+ }
45
+ index++;
46
+ }
47
+ const parameterString = text.slice(fromIndex, index);
48
+ const intermediateStartIndex = index;
49
+ while (index < text.length) {
50
+ const character = text[index];
51
+ if (!isCsiIntermediateCharacter(character)) {
52
+ break;
53
+ }
54
+ index++;
55
+ }
56
+ const intermediateString = text.slice(intermediateStartIndex, index);
57
+ const finalCharacter = text[index];
58
+ if (finalCharacter === undefined || !isCsiFinalCharacter(finalCharacter)) {
59
+ return undefined;
60
+ }
61
+ return {
62
+ endIndex: index + 1,
63
+ parameterString,
64
+ intermediateString,
65
+ finalCharacter,
66
+ };
67
+ };
68
+ const findControlStringTerminatorIndex = (text, fromIndex, allowBellTerminator) => {
69
+ for (let index = fromIndex; index < text.length; index++) {
70
+ const character = text[index];
71
+ if (allowBellTerminator && character === bellCharacter) {
72
+ return index + 1;
73
+ }
74
+ if (character === stringTerminatorCharacter) {
75
+ return index + 1;
76
+ }
77
+ if (character === escapeCharacter) {
78
+ const followingCharacter = text[index + 1];
79
+ // Tmux escapes ESC bytes in payload as ESC ESC.
80
+ if (followingCharacter === escapeCharacter) {
81
+ index++;
82
+ continue;
83
+ }
84
+ if (followingCharacter === '\\') {
85
+ return index + 2;
86
+ }
87
+ }
88
+ }
89
+ return undefined;
90
+ };
91
+ const readEscapeSequence = (text, fromIndex) => {
92
+ let index = fromIndex;
93
+ while (index < text.length) {
94
+ const character = text[index];
95
+ if (!isEscapeIntermediateCharacter(character)) {
96
+ break;
97
+ }
98
+ index++;
99
+ }
100
+ const intermediateString = text.slice(fromIndex, index);
101
+ const finalCharacter = text[index];
102
+ if (finalCharacter === undefined || !isEscapeFinalCharacter(finalCharacter)) {
103
+ return undefined;
104
+ }
105
+ return {
106
+ endIndex: index + 1,
107
+ intermediateString,
108
+ finalCharacter,
109
+ };
110
+ };
111
+ // Centralize control-string rules so ESC and C1 paths do not diverge.
112
+ const getControlStringFromEscapeIntroducer = (character) => {
113
+ switch (character) {
114
+ case ']': {
115
+ return { type: 'osc', allowBellTerminator: true };
116
+ }
117
+ case 'P': {
118
+ return { type: 'dcs', allowBellTerminator: false };
119
+ }
120
+ case '^': {
121
+ return { type: 'pm', allowBellTerminator: false };
122
+ }
123
+ case '_': {
124
+ return { type: 'apc', allowBellTerminator: false };
125
+ }
126
+ case 'X': {
127
+ return { type: 'sos', allowBellTerminator: false };
128
+ }
129
+ default: {
130
+ return undefined;
131
+ }
132
+ }
133
+ };
134
+ const getControlStringFromC1Introducer = (character) => {
135
+ switch (character) {
136
+ case oscCharacter: {
137
+ return { type: 'osc', allowBellTerminator: true };
138
+ }
139
+ case dcsCharacter: {
140
+ return { type: 'dcs', allowBellTerminator: false };
141
+ }
142
+ case pmCharacter: {
143
+ return { type: 'pm', allowBellTerminator: false };
144
+ }
145
+ case apcCharacter: {
146
+ return { type: 'apc', allowBellTerminator: false };
147
+ }
148
+ case sosCharacter: {
149
+ return { type: 'sos', allowBellTerminator: false };
150
+ }
151
+ default: {
152
+ return undefined;
153
+ }
154
+ }
155
+ };
156
+ export const hasAnsiControlCharacters = (text) => {
157
+ if (text.includes(escapeCharacter)) {
158
+ return true;
159
+ }
160
+ for (const character of text) {
161
+ if (isC1ControlCharacter(character)) {
162
+ return true;
163
+ }
164
+ }
165
+ return false;
166
+ };
167
+ const malformedFromIndex = (tokens, text, textStartIndex, fromIndex) => {
168
+ if (fromIndex > textStartIndex) {
169
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, fromIndex) });
170
+ }
171
+ // Treat the remainder as invalid so callers can drop it as one unsafe unit.
172
+ tokens.push({ type: 'invalid', value: text.slice(fromIndex) });
173
+ return tokens;
174
+ };
175
+ export const tokenizeAnsi = (text) => {
176
+ if (!hasAnsiControlCharacters(text)) {
177
+ return [{ type: 'text', value: text }];
178
+ }
179
+ const tokens = [];
180
+ let textStartIndex = 0;
181
+ for (let index = 0; index < text.length;) {
182
+ const character = text[index];
183
+ if (character === undefined) {
184
+ break;
185
+ }
186
+ if (character === escapeCharacter) {
187
+ const followingCharacter = text[index + 1];
188
+ if (followingCharacter === undefined) {
189
+ return malformedFromIndex(tokens, text, textStartIndex, index);
190
+ }
191
+ if (followingCharacter === '[') {
192
+ const csiSequence = readCsiSequence(text, index + 2);
193
+ if (csiSequence === undefined) {
194
+ return malformedFromIndex(tokens, text, textStartIndex, index);
195
+ }
196
+ if (index > textStartIndex) {
197
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
198
+ }
199
+ tokens.push({
200
+ type: 'csi',
201
+ value: text.slice(index, csiSequence.endIndex),
202
+ parameterString: csiSequence.parameterString,
203
+ intermediateString: csiSequence.intermediateString,
204
+ finalCharacter: csiSequence.finalCharacter,
205
+ });
206
+ index = csiSequence.endIndex;
207
+ textStartIndex = index;
208
+ continue;
209
+ }
210
+ const escapeControlString = getControlStringFromEscapeIntroducer(followingCharacter);
211
+ if (escapeControlString !== undefined) {
212
+ const controlStringTerminatorIndex = findControlStringTerminatorIndex(text, index + 2, escapeControlString.allowBellTerminator);
213
+ if (controlStringTerminatorIndex === undefined) {
214
+ return malformedFromIndex(tokens, text, textStartIndex, index);
215
+ }
216
+ if (index > textStartIndex) {
217
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
218
+ }
219
+ tokens.push({
220
+ type: escapeControlString.type,
221
+ value: text.slice(index, controlStringTerminatorIndex),
222
+ });
223
+ index = controlStringTerminatorIndex;
224
+ textStartIndex = index;
225
+ continue;
226
+ }
227
+ const escapeSequence = readEscapeSequence(text, index + 1);
228
+ if (escapeSequence === undefined) {
229
+ // Incomplete escape sequences with intermediates are malformed control strings.
230
+ if (isEscapeIntermediateCharacter(followingCharacter)) {
231
+ return malformedFromIndex(tokens, text, textStartIndex, index);
232
+ }
233
+ if (index > textStartIndex) {
234
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
235
+ }
236
+ // Ignore lone ESC and continue tokenizing the rest.
237
+ index++;
238
+ textStartIndex = index;
239
+ continue;
240
+ }
241
+ if (index > textStartIndex) {
242
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
243
+ }
244
+ tokens.push({
245
+ type: 'esc',
246
+ value: text.slice(index, escapeSequence.endIndex),
247
+ intermediateString: escapeSequence.intermediateString,
248
+ finalCharacter: escapeSequence.finalCharacter,
249
+ });
250
+ index = escapeSequence.endIndex;
251
+ textStartIndex = index;
252
+ continue;
253
+ }
254
+ if (character === csiCharacter) {
255
+ const csiSequence = readCsiSequence(text, index + 1);
256
+ if (csiSequence === undefined) {
257
+ return malformedFromIndex(tokens, text, textStartIndex, index);
258
+ }
259
+ if (index > textStartIndex) {
260
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
261
+ }
262
+ tokens.push({
263
+ type: 'csi',
264
+ value: text.slice(index, csiSequence.endIndex),
265
+ parameterString: csiSequence.parameterString,
266
+ intermediateString: csiSequence.intermediateString,
267
+ finalCharacter: csiSequence.finalCharacter,
268
+ });
269
+ index = csiSequence.endIndex;
270
+ textStartIndex = index;
271
+ continue;
272
+ }
273
+ const c1ControlString = getControlStringFromC1Introducer(character);
274
+ if (c1ControlString !== undefined) {
275
+ const controlStringTerminatorIndex = findControlStringTerminatorIndex(text, index + 1, c1ControlString.allowBellTerminator);
276
+ if (controlStringTerminatorIndex === undefined) {
277
+ return malformedFromIndex(tokens, text, textStartIndex, index);
278
+ }
279
+ if (index > textStartIndex) {
280
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
281
+ }
282
+ tokens.push({
283
+ type: c1ControlString.type,
284
+ value: text.slice(index, controlStringTerminatorIndex),
285
+ });
286
+ index = controlStringTerminatorIndex;
287
+ textStartIndex = index;
288
+ continue;
289
+ }
290
+ if (character === stringTerminatorCharacter) {
291
+ if (index > textStartIndex) {
292
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
293
+ }
294
+ tokens.push({ type: 'st', value: character });
295
+ index++;
296
+ textStartIndex = index;
297
+ continue;
298
+ }
299
+ // Strip remaining C1 controls as standalone functions.
300
+ if (isC1ControlCharacter(character)) {
301
+ if (index > textStartIndex) {
302
+ tokens.push({ type: 'text', value: text.slice(textStartIndex, index) });
303
+ }
304
+ tokens.push({ type: 'c1', value: character });
305
+ index++;
306
+ textStartIndex = index;
307
+ continue;
308
+ }
309
+ index++;
310
+ }
311
+ if (textStartIndex < text.length) {
312
+ tokens.push({ type: 'text', value: text.slice(textStartIndex) });
313
+ }
314
+ return tokens;
315
+ };
316
+ //# sourceMappingURL=ansi-tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ansi-tokenizer.js","sourceRoot":"","sources":["../src/ansi-tokenizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colorize.d.ts","sourceRoot":"","sources":["../src/colorize.ts"],"names":[],"mappings":"AAEA,KAAK,SAAS,GAAG,YAAY,GAAG,YAAY,CAAC;AAS7C,QAAA,MAAM,QAAQ,GACb,KAAK,MAAM,EACX,OAAO,MAAM,GAAG,SAAS,EACzB,MAAM,SAAS,KACb,MAsDF,CAAC;AAEF,eAAe,QAAQ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccessibilityContext.d.ts","sourceRoot":"","sources":["../../src/components/AccessibilityContext.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,oBAAoB;;EAE/B,CAAC"}
@@ -0,0 +1,9 @@
1
+ type AnimationContextValue = {
2
+ readonly renderThrottleMs: number;
3
+ readonly subscribe: (callback: (currentTime: number) => void, interval: number) => {
4
+ readonly startTime: number;
5
+ readonly unsubscribe: () => void;
6
+ };
7
+ };
8
+ declare const animationContext: import("react").Context<AnimationContextValue>;
9
+ export default animationContext;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationContext.d.ts","sourceRoot":"","sources":["../../src/components/AnimationContext.ts"],"names":[],"mappings":"AAEA,KAAK,qBAAqB,GAAG;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,CACnB,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,EACvC,QAAQ,EAAE,MAAM,KACZ;QACJ,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;KACjC,CAAC;CACF,CAAC;AAEF,QAAA,MAAM,gBAAgB,gDAQpB,CAAC;AAIH,eAAe,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { createContext } from 'react';
2
+ const animationContext = createContext({
3
+ renderThrottleMs: 0,
4
+ subscribe() {
5
+ return {
6
+ startTime: 0,
7
+ unsubscribe() { },
8
+ };
9
+ },
10
+ });
11
+ animationContext.displayName = 'InternalAnimationContext';
12
+ export default animationContext;
13
+ //# sourceMappingURL=AnimationContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AnimationContext.js","sourceRoot":"","sources":["../../src/components/AnimationContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,OAAO,CAAC;AAapC,MAAM,gBAAgB,GAAG,aAAa,CAAwB;IAC7D,gBAAgB,EAAE,CAAC;IACnB,SAAS;QACR,OAAO;YACN,SAAS,EAAE,CAAC;YACZ,WAAW,KAAI,CAAC;SAChB,CAAC;IACH,CAAC;CACD,CAAC,CAAC;AAEH,gBAAgB,CAAC,WAAW,GAAG,0BAA0B,CAAC;AAE1D,eAAe,gBAAgB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { EventEmitter } from 'node:events';
2
- import React, { PureComponent, type ReactNode } from 'react';
1
+ import React, { type ReactNode } from 'react';
2
+ import { type CursorPosition } from '../log-update.js';
3
3
  type Props = {
4
4
  readonly children: ReactNode;
5
5
  readonly stdin: NodeJS.ReadStream;
@@ -8,52 +8,14 @@ type Props = {
8
8
  readonly writeToStdout: (data: string) => void;
9
9
  readonly writeToStderr: (data: string) => void;
10
10
  readonly exitOnCtrlC: boolean;
11
- readonly onExit: (error?: Error) => void;
11
+ readonly onExit: (errorOrResult?: unknown) => void;
12
+ readonly onWaitUntilRenderFlush: () => Promise<void>;
13
+ readonly setCursorPosition: (position: CursorPosition | undefined) => void;
14
+ readonly interactive: boolean;
15
+ readonly renderThrottleMs: number;
12
16
  };
13
- type State = {
14
- readonly isFocusEnabled: boolean;
15
- readonly activeFocusId?: string;
16
- readonly focusables: Focusable[];
17
- readonly error?: Error;
18
- };
19
- type Focusable = {
20
- readonly id: string;
21
- readonly isActive: boolean;
22
- };
23
- export default class App extends PureComponent<Props, State> {
24
- static displayName: string;
25
- static getDerivedStateFromError(error: Error): {
26
- error: Error;
27
- };
28
- state: {
29
- isFocusEnabled: boolean;
30
- activeFocusId: undefined;
31
- focusables: never[];
32
- error: undefined;
33
- };
34
- rawModeEnabledCount: number;
35
- internal_eventEmitter: EventEmitter<[never]>;
36
- isRawModeSupported(): boolean;
37
- render(): React.JSX.Element;
38
- componentDidMount(): void;
39
- componentWillUnmount(): void;
40
- componentDidCatch(error: Error): void;
41
- handleSetRawMode: (isEnabled: boolean) => void;
42
- handleReadable: () => void;
43
- handleInput: (input: string) => void;
44
- handleExit: (error?: Error) => void;
45
- enableFocus: () => void;
46
- disableFocus: () => void;
47
- focus: (id: string) => void;
48
- focusNext: () => void;
49
- focusPrevious: () => void;
50
- addFocusable: (id: string, { autoFocus }: {
51
- autoFocus: boolean;
52
- }) => void;
53
- removeFocusable: (id: string) => void;
54
- activateFocusable: (id: string) => void;
55
- deactivateFocusable: (id: string) => void;
56
- findNextFocusable: (state: State) => string | undefined;
57
- findPreviousFocusable: (state: State) => string | undefined;
17
+ declare function App({ children, stdin, stdout, stderr, writeToStdout, writeToStderr, exitOnCtrlC, onExit, onWaitUntilRenderFlush, setCursorPosition, interactive, renderThrottleMs, }: Props): React.ReactNode;
18
+ declare namespace App {
19
+ var displayName: string;
58
20
  }
59
- export {};
21
+ export default App;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/components/App.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EACb,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAEf,OAAO,EAAC,KAAK,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAsBrD,KAAK,KAAK,GAAG;IACZ,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;IACpC,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,CAAC,aAAa,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,QAAQ,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;IAC3E,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAClC,CAAC;AAUF,iBAAS,GAAG,CAAC,EACZ,QAAQ,EACR,KAAK,EACL,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,EACb,WAAW,EACX,MAAM,EACN,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,gBAAgB,GAChB,EAAE,KAAK,GAAG,KAAK,CAAC,SAAS,CAwnBzB;kBAroBQ,GAAG;;;AAyoBZ,eAAe,GAAG,CAAC"}