@jrichman/ink 6.5.0 → 6.5.1-beta.1

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 (125) hide show
  1. package/build/components/App.js +0 -3
  2. package/build/components/App.js.map +1 -1
  3. package/build/components/AppContext.js +0 -1
  4. package/build/components/AppContext.js.map +1 -1
  5. package/build/components/FocusContext.js +0 -1
  6. package/build/components/FocusContext.js.map +1 -1
  7. package/build/components/Static.js +2 -2
  8. package/build/components/Static.js.map +1 -1
  9. package/build/components/StaticRender.js +16 -1
  10. package/build/components/StaticRender.js.map +1 -1
  11. package/build/components/StderrContext.js +0 -1
  12. package/build/components/StderrContext.js.map +1 -1
  13. package/build/components/StdinContext.js +0 -3
  14. package/build/components/StdinContext.js.map +1 -1
  15. package/build/components/StdoutContext.js +0 -1
  16. package/build/components/StdoutContext.js.map +1 -1
  17. package/build/data-limited-lru-map.d.ts +1 -0
  18. package/build/data-limited-lru-map.js +4 -0
  19. package/build/data-limited-lru-map.js.map +1 -1
  20. package/build/devtools.js +0 -1
  21. package/build/devtools.js.map +1 -1
  22. package/build/dom.d.ts +7 -5
  23. package/build/dom.js +6 -2
  24. package/build/dom.js.map +1 -1
  25. package/build/hooks/use-input.js +0 -1
  26. package/build/hooks/use-input.js.map +1 -1
  27. package/build/index.d.ts +1 -1
  28. package/build/ink.d.ts +3 -1
  29. package/build/ink.js +12 -0
  30. package/build/ink.js.map +1 -1
  31. package/build/log-update.d.ts +1 -1
  32. package/build/log-update.js +3 -2
  33. package/build/log-update.js.map +1 -1
  34. package/build/measure-element.js +5 -5
  35. package/build/measure-element.js.map +1 -1
  36. package/build/measure-text.d.ts +3 -1
  37. package/build/measure-text.js +39 -25
  38. package/build/measure-text.js.map +1 -1
  39. package/build/output.d.ts +13 -6
  40. package/build/output.js +46 -54
  41. package/build/output.js.map +1 -1
  42. package/build/reconciler.js +23 -7
  43. package/build/reconciler.js.map +1 -1
  44. package/build/render-cached.d.ts +2 -1
  45. package/build/render-cached.js +3 -3
  46. package/build/render-cached.js.map +1 -1
  47. package/build/render-container.d.ts +2 -1
  48. package/build/render-container.js +4 -1
  49. package/build/render-container.js.map +1 -1
  50. package/build/render-node-to-output.d.ts +3 -1
  51. package/build/render-node-to-output.js +10 -2
  52. package/build/render-node-to-output.js.map +1 -1
  53. package/build/render-scrollbar.d.ts +1 -1
  54. package/build/render-scrollbar.js +4 -6
  55. package/build/render-scrollbar.js.map +1 -1
  56. package/build/render-sticky.d.ts +5 -3
  57. package/build/render-sticky.js +4 -1
  58. package/build/render-sticky.js.map +1 -1
  59. package/build/render-text-node.d.ts +2 -1
  60. package/build/render-text-node.js +4 -8
  61. package/build/render-text-node.js.map +1 -1
  62. package/build/render-worker.d.ts +25 -0
  63. package/build/render-worker.js +370 -0
  64. package/build/render-worker.js.map +1 -0
  65. package/build/render.d.ts +3 -1
  66. package/build/render.js.map +1 -1
  67. package/build/renderer.d.ts +2 -1
  68. package/build/renderer.js +7 -3
  69. package/build/renderer.js.map +1 -1
  70. package/build/replay.d.ts +1 -2
  71. package/build/replay.js +29 -27
  72. package/build/replay.js.map +1 -1
  73. package/build/selection.d.ts +1 -1
  74. package/build/selection.js +7 -23
  75. package/build/selection.js.map +1 -1
  76. package/build/serialization.d.ts +5 -5
  77. package/build/serialization.js +59 -73
  78. package/build/serialization.js.map +1 -1
  79. package/build/styled-lines.d.ts +29 -0
  80. package/build/styled-lines.js +110 -0
  81. package/build/styled-lines.js.map +1 -0
  82. package/build/styles.js.map +1 -1
  83. package/build/terminal-buffer.d.ts +6 -2
  84. package/build/terminal-buffer.js +47 -10
  85. package/build/terminal-buffer.js.map +1 -1
  86. package/build/terminal-writer.d.ts +69 -0
  87. package/build/terminal-writer.js +546 -0
  88. package/build/terminal-writer.js.map +1 -0
  89. package/build/text-wrap.d.ts +1 -1
  90. package/build/text-wrap.js +10 -13
  91. package/build/text-wrap.js.map +1 -1
  92. package/build/tokenize.d.ts +77 -0
  93. package/build/tokenize.js +520 -0
  94. package/build/tokenize.js.map +1 -0
  95. package/build/web/ansi-to-css.d.ts +16 -0
  96. package/build/web/ansi-to-css.js +147 -0
  97. package/build/web/ansi-to-css.js.map +1 -0
  98. package/build/web/client.d.ts +51 -0
  99. package/build/web/client.js +315 -0
  100. package/build/web/client.js.map +1 -0
  101. package/build/web/server.d.ts +1 -0
  102. package/build/web/server.js +179 -0
  103. package/build/web/server.js.map +1 -0
  104. package/build/worker/canvas.d.ts +1 -1
  105. package/build/worker/canvas.js +2 -6
  106. package/build/worker/canvas.js.map +1 -1
  107. package/build/worker/compositor.js +15 -13
  108. package/build/worker/compositor.js.map +1 -1
  109. package/build/worker/dump-replay.d.ts +1 -0
  110. package/build/worker/dump-replay.js +15 -0
  111. package/build/worker/dump-replay.js.map +1 -0
  112. package/build/worker/render-worker.js +27 -13
  113. package/build/worker/render-worker.js.map +1 -1
  114. package/build/worker/replay.d.ts +55 -0
  115. package/build/worker/replay.js +133 -0
  116. package/build/worker/replay.js.map +1 -0
  117. package/build/worker/scene-manager.js +16 -7
  118. package/build/worker/scene-manager.js.map +1 -1
  119. package/build/worker/terminal-writer.d.ts +3 -3
  120. package/build/worker/terminal-writer.js +36 -20
  121. package/build/worker/terminal-writer.js.map +1 -1
  122. package/build/wrap-text.d.ts +6 -0
  123. package/build/wrap-text.js +120 -0
  124. package/build/wrap-text.js.map +1 -0
  125. package/package.json +16 -5
@@ -0,0 +1,370 @@
1
+ import process from 'node:process';
2
+ import { Buffer } from 'node:buffer';
3
+ import ansiEscapes from 'ansi-escapes';
4
+ import { Deserializer } from './serialization.js';
5
+ import { debugLog } from './debug-log.js';
6
+ import { TerminalWriter, rainbowColors, } from './terminal-writer.js';
7
+ import { calculateScrollbarThumb } from './measure-element.js';
8
+ const clearOnDirtyRender = false;
9
+ export class TerminalBufferWorker {
10
+ columns;
11
+ rows;
12
+ // Local state of regions
13
+ regions = new Map();
14
+ root;
15
+ // Tracking for scroll optimization
16
+ lastRootScrollTop = 0;
17
+ backbufferDirty = false;
18
+ backbufferDirtyCurrentFrame = false;
19
+ fullRenderTimeout;
20
+ frameIndex = 0;
21
+ debugRainbowEnabled = false;
22
+ // Ground truth on what lines should be rendered (composed frame)
23
+ lines = [];
24
+ terminalWriter;
25
+ constructor(columns, rows, options) {
26
+ this.columns = columns;
27
+ this.rows = rows;
28
+ const stdout = options?.stdout ?? process.stdout;
29
+ this.terminalWriter = new TerminalWriter(columns, rows, stdout);
30
+ stdout.write(ansiEscapes.cursorHide);
31
+ if (options?.debugRainbowEnabled) {
32
+ this.debugRainbowEnabled = true;
33
+ }
34
+ }
35
+ update(tree, updates) {
36
+ this.root = tree;
37
+ for (const update of updates) {
38
+ let region = this.regions.get(update.id);
39
+ if (!region) {
40
+ // Initialize new region
41
+ region = {
42
+ id: update.id,
43
+ x: 0, y: 0, width: 0, height: 0,
44
+ lines: [],
45
+ isScrollable: false,
46
+ stickyHeaders: [],
47
+ children: []
48
+ };
49
+ this.regions.set(update.id, region);
50
+ }
51
+ // Apply properties
52
+ if (update.x !== undefined)
53
+ region.x = update.x;
54
+ if (update.y !== undefined)
55
+ region.y = update.y;
56
+ if (update.width !== undefined)
57
+ region.width = update.width;
58
+ if (update.height !== undefined)
59
+ region.height = update.height;
60
+ if (update.scrollTop !== undefined)
61
+ region.scrollTop = update.scrollTop;
62
+ if (update.scrollLeft !== undefined)
63
+ region.scrollLeft = update.scrollLeft;
64
+ if (update.scrollHeight !== undefined)
65
+ region.scrollHeight = update.scrollHeight;
66
+ if (update.scrollWidth !== undefined)
67
+ region.scrollWidth = update.scrollWidth;
68
+ if (update.isScrollable !== undefined)
69
+ region.isScrollable = update.isScrollable;
70
+ if (update.stickyHeaders !== undefined)
71
+ region.stickyHeaders = update.stickyHeaders;
72
+ // Apply line updates
73
+ if (update.lines) {
74
+ while (region.lines.length < update.lines.totalLength) {
75
+ region.lines.push([]);
76
+ }
77
+ if (region.lines.length > update.lines.totalLength) {
78
+ region.lines.length = update.lines.totalLength;
79
+ }
80
+ for (const chunk of update.lines.updates) {
81
+ const deserializer = new Deserializer(Buffer.from(chunk.data));
82
+ const chunkLines = deserializer.deserialize();
83
+ for (let i = 0; i < chunkLines.length; i++) {
84
+ region.lines[chunk.start + i] = chunkLines[i];
85
+ }
86
+ }
87
+ }
88
+ }
89
+ this.backbufferDirtyCurrentFrame = true;
90
+ }
91
+ resize(columns, rows) {
92
+ if (this.columns === columns && this.rows === rows) {
93
+ return;
94
+ }
95
+ this.columns = columns;
96
+ this.rows = rows;
97
+ debugLog(`XXXXX [RENDER-WORKER] Resize to ${columns}x${rows}\n`);
98
+ this.terminalWriter.resize(columns, rows);
99
+ this.backbufferDirtyCurrentFrame = true;
100
+ void this.render();
101
+ }
102
+ fullRender() {
103
+ debugLog(`XXXXX [RENDER-WORKER] Full render triggered\n`);
104
+ if (this.fullRenderTimeout) {
105
+ clearTimeout(this.fullRenderTimeout);
106
+ }
107
+ if (!this.backbufferDirty) {
108
+ void this.render();
109
+ return;
110
+ }
111
+ this.backbufferDirty = false;
112
+ this.backbufferDirtyCurrentFrame = false;
113
+ this.terminalWriter.clear();
114
+ this.terminalWriter.writeLines(this.lines);
115
+ this.terminalWriter.validateLinesConsistent(this.lines);
116
+ }
117
+ async render() {
118
+ debugLog(`XXXXX [RENDER-WORKER] Render\n`);
119
+ if (!this.backbufferDirtyCurrentFrame || !this.root) {
120
+ return;
121
+ }
122
+ // 1. Detect Scroll (Optimization)
123
+ const rootRegion = this.regions.get(this.root.id);
124
+ if (rootRegion && rootRegion.isScrollable) {
125
+ const scrollTop = rootRegion.scrollTop ?? 0;
126
+ const diff = scrollTop - this.lastRootScrollTop;
127
+ if (diff !== 0) {
128
+ const linesToScroll = Math.abs(diff);
129
+ const direction = diff > 0 ? 'up' : 'down';
130
+ const visibleHeight = Math.min(rootRegion.height, this.rows);
131
+ const linesForScroll = [];
132
+ if (direction === 'up') {
133
+ const startRowIndex = scrollTop + visibleHeight - linesToScroll;
134
+ for (let i = 0; i < linesToScroll; i++) {
135
+ const lineIdx = startRowIndex + i;
136
+ const chars = rootRegion.lines[lineIdx] ?? [];
137
+ linesForScroll.push(this.terminalWriter.clampLine(chars, this.columns));
138
+ }
139
+ this.terminalWriter.scrollLines({
140
+ start: 0,
141
+ end: visibleHeight,
142
+ linesToScroll,
143
+ lines: linesForScroll,
144
+ direction,
145
+ scrollToBackbuffer: true
146
+ });
147
+ }
148
+ else {
149
+ for (let i = 0; i < linesToScroll; i++) {
150
+ const lineIdx = scrollTop + i;
151
+ const chars = rootRegion.lines[lineIdx] ?? [];
152
+ linesForScroll.push(this.terminalWriter.clampLine(chars, this.columns));
153
+ }
154
+ this.terminalWriter.scrollLines({
155
+ start: 0,
156
+ end: visibleHeight,
157
+ linesToScroll,
158
+ lines: linesForScroll,
159
+ direction,
160
+ scrollToBackbuffer: false
161
+ });
162
+ }
163
+ this.lastRootScrollTop = scrollTop;
164
+ }
165
+ }
166
+ else if (rootRegion) {
167
+ this.lastRootScrollTop = rootRegion.scrollTop ?? 0;
168
+ }
169
+ // 2. Compose Frame
170
+ this.lines = [];
171
+ for (let i = 0; i < this.rows; i++) {
172
+ this.lines.push({
173
+ styledChars: [],
174
+ text: '',
175
+ length: 0,
176
+ tainted: false
177
+ });
178
+ }
179
+ this.composeNode(this.root, null);
180
+ if (this.debugRainbowEnabled) {
181
+ this.frameIndex++;
182
+ }
183
+ const debugRainbowColor = this.debugRainbowEnabled
184
+ ? rainbowColors[this.frameIndex % rainbowColors.length]
185
+ : undefined;
186
+ this.terminalWriter.debugRainbowColor = debugRainbowColor;
187
+ if (this.backbufferDirtyCurrentFrame && clearOnDirtyRender) {
188
+ this.terminalWriter.clear();
189
+ }
190
+ if (this.terminalWriter.isFirstRender) {
191
+ this.terminalWriter.writeLines(this.lines);
192
+ this.terminalWriter.flush();
193
+ this.backbufferDirtyCurrentFrame = false;
194
+ return;
195
+ }
196
+ // 3. Sync
197
+ for (let row = 0; row < this.rows; row++) {
198
+ this.terminalWriter.syncLine(this.lines[row], row);
199
+ }
200
+ await this.terminalWriter.slowFlush();
201
+ if (this.backbufferDirtyCurrentFrame) {
202
+ this.backbufferDirty = true;
203
+ if (this.fullRenderTimeout) {
204
+ clearTimeout(this.fullRenderTimeout);
205
+ }
206
+ this.fullRenderTimeout = setTimeout(() => {
207
+ this.fullRender();
208
+ }, 1000);
209
+ }
210
+ this.backbufferDirtyCurrentFrame = false;
211
+ }
212
+ composeNode(node, clip) {
213
+ const region = this.regions.get(node.id);
214
+ if (!region)
215
+ return;
216
+ const absX = region.x;
217
+ const absY = region.y;
218
+ let myClip = {
219
+ x: absX,
220
+ y: absY,
221
+ w: region.width,
222
+ h: region.height
223
+ };
224
+ if (clip) {
225
+ const x1 = Math.max(myClip.x, clip.x);
226
+ const y1 = Math.max(myClip.y, clip.y);
227
+ const x2 = Math.min(myClip.x + myClip.w, clip.x + clip.w);
228
+ const y2 = Math.min(myClip.y + myClip.h, clip.y + clip.h);
229
+ if (x2 <= x1 || y2 <= y1) {
230
+ return;
231
+ }
232
+ myClip = { x: x1, y: y1, w: x2 - x1, h: y2 - y1 };
233
+ }
234
+ const scrollTop = region.scrollTop ?? 0;
235
+ const scrollLeft = region.scrollLeft ?? 0;
236
+ for (let sy = myClip.y; sy < myClip.y + myClip.h; sy++) {
237
+ if (sy < 0 || sy >= this.rows)
238
+ continue;
239
+ const dy = sy - absY;
240
+ const contentY = scrollTop + dy;
241
+ const line = region.lines[contentY];
242
+ if (!line)
243
+ continue;
244
+ const targetLine = this.lines[sy];
245
+ if (!targetLine)
246
+ continue;
247
+ const startSx = myClip.x;
248
+ const endSx = myClip.x + myClip.w;
249
+ while (targetLine.styledChars.length < this.columns) {
250
+ targetLine.styledChars.push({ type: 'char', value: ' ', fullWidth: false, styles: [] });
251
+ }
252
+ for (let sx = startSx; sx < endSx; sx++) {
253
+ if (sx < 0 || sx >= this.columns)
254
+ continue;
255
+ const dx = sx - absX;
256
+ const contentX = scrollLeft + dx;
257
+ const char = line[contentX];
258
+ if (char) {
259
+ targetLine.styledChars[sx] = char;
260
+ }
261
+ }
262
+ }
263
+ for (const child of node.children) {
264
+ this.composeNode(child, myClip);
265
+ }
266
+ for (const header of region.stickyHeaders) {
267
+ const headerY = header.y;
268
+ const headerH = header.lines.length;
269
+ for (let i = 0; i < headerH; i++) {
270
+ const sy = headerY + i;
271
+ if (sy < myClip.y || sy >= myClip.y + myClip.h)
272
+ continue;
273
+ if (sy < 0 || sy >= this.rows)
274
+ continue;
275
+ const line = header.lines[i];
276
+ if (!line)
277
+ continue;
278
+ const targetLine = this.lines[sy];
279
+ if (!targetLine)
280
+ continue;
281
+ const headerX = header.x;
282
+ const headerW = line.length;
283
+ const hx1 = Math.max(headerX, myClip.x);
284
+ const hx2 = Math.min(headerX + headerW, myClip.x + myClip.w);
285
+ for (let sx = hx1; sx < hx2; sx++) {
286
+ if (sx < 0 || sx >= this.columns)
287
+ continue;
288
+ const cx = sx - headerX;
289
+ const char = line[cx];
290
+ if (char) {
291
+ targetLine.styledChars[sx] = char;
292
+ }
293
+ }
294
+ }
295
+ }
296
+ if (region.isScrollable) {
297
+ const scrollHeight = region.scrollHeight ?? 0;
298
+ if (scrollHeight > region.height) {
299
+ const { startIndex, endIndex } = calculateScrollbarThumb({
300
+ scrollbarDimension: region.height,
301
+ clientDimension: region.height,
302
+ scrollDimension: scrollHeight,
303
+ scrollPosition: scrollTop,
304
+ axis: 'vertical',
305
+ });
306
+ const barX = absX + region.width - 1;
307
+ const char = '█';
308
+ for (let i = startIndex; i < endIndex; i++) {
309
+ const sy = absY + i;
310
+ if (sy >= myClip.y && sy < myClip.y + myClip.h && sy >= 0 && sy < this.rows && barX >= 0 && barX < this.columns) {
311
+ const targetLine = this.lines[sy];
312
+ if (targetLine) {
313
+ while (targetLine.styledChars.length <= barX) {
314
+ targetLine.styledChars.push({ type: 'char', value: ' ', fullWidth: false, styles: [] });
315
+ }
316
+ targetLine.styledChars[barX] = {
317
+ type: 'char', value: char, fullWidth: false, styles: []
318
+ };
319
+ }
320
+ }
321
+ }
322
+ }
323
+ }
324
+ }
325
+ }
326
+ let buffer;
327
+ const main = () => {
328
+ process.on('message', (message) => {
329
+ switch (message.type) {
330
+ case 'init': {
331
+ const columns = (process.stdout.columns || message.columns);
332
+ const rows = (process.stdout.rows || message.rows);
333
+ buffer = new TerminalBufferWorker(columns, rows, {
334
+ debugRainbowEnabled: message.debugRainbowEnabled,
335
+ });
336
+ break;
337
+ }
338
+ case 'edits': {
339
+ if (buffer) {
340
+ buffer.update(message.tree, message.updates);
341
+ }
342
+ break;
343
+ }
344
+ case 'fullRender': {
345
+ if (buffer) {
346
+ buffer.fullRender();
347
+ }
348
+ break;
349
+ }
350
+ case 'render': {
351
+ if (buffer) {
352
+ void buffer.render();
353
+ }
354
+ break;
355
+ }
356
+ default: {
357
+ break;
358
+ }
359
+ }
360
+ });
361
+ process.stdout.on('resize', () => {
362
+ if (buffer && process.stdout.columns && process.stdout.rows) {
363
+ buffer.resize(process.stdout.columns, process.stdout.rows);
364
+ }
365
+ });
366
+ };
367
+ if (process.env['INK_WORKER'] === 'true') {
368
+ main();
369
+ }
370
+ //# sourceMappingURL=render-worker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-worker.js","sourceRoot":"","sources":["../src/render-worker.ts"],"names":[],"mappings":"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"}
package/build/render.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import type { ReactNode } from 'react';
2
- import { type StyledChar } from '@alcalzone/ansi-tokenize';
2
+ import { type StyledChar } from './tokenize.js';
3
3
  import Ink, { type RenderMetrics } from './ink.js';
4
4
  import { type Selection } from './selection.js';
5
5
  import { type DOMElement } from './dom.js';
@@ -118,6 +118,8 @@ export type RenderOptions = {
118
118
  * @default false
119
119
  */
120
120
  stickyHeadersInBackbuffer?: boolean;
121
+ cacheToStyledCharacters?: boolean;
122
+ trackSelection?: boolean;
121
123
  };
122
124
  export type Instance = {
123
125
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AAGnC,OAAO,GAAqD,MAAM,UAAU,CAAC;AAC7E,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAgMvC;;EAEE;AACF,MAAM,MAAM,GAAG,CACd,IAAe,EACf,OAA4C,EACjC,EAAE;IACb,MAAM,UAAU,GAAe;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,KAAK;QACtB,4BAA4B,EAAE,KAAK;QACnC,oBAAoB,EAAE,KAAK;QAC3B,yBAAyB,EAAE,KAAK;QAChC,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,KAAK;QACrB,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,CAAC;IAEF,MAAM,QAAQ,GAAQ,WAAW,CAChC,UAAU,CAAC,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CACzB,CAAC;IAEF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,OAAO;YACN,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAClD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC3B,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC;AAEtB,MAAM,UAAU,GAAG,CAClB,SAAyD,EAAE,EAC3C,EAAE;IAClB,IAAI,MAAM,YAAY,MAAM,EAAE,CAAC;QAC9B,OAAO;YACN,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;SACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CACnB,MAA0B,EAC1B,cAAyB,EACnB,EAAE;IACR,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,aAAa,CAAC;AACnC,OAAO,OAAO,MAAM,cAAc,CAAC;AAGnC,OAAO,GAAqD,MAAM,UAAU,CAAC;AAC7E,OAAO,SAAS,MAAM,gBAAgB,CAAC;AAkMvC;;EAEE;AACF,MAAM,MAAM,GAAG,CACd,IAAe,EACf,OAA4C,EACjC,EAAE;IACb,MAAM,UAAU,GAAe;QAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,IAAI;QACjB,YAAY,EAAE,IAAI;QAClB,MAAM,EAAE,EAAE;QACV,eAAe,EAAE,KAAK;QACtB,4BAA4B,EAAE,KAAK;QACnC,oBAAoB,EAAE,KAAK;QAC3B,yBAAyB,EAAE,KAAK;QAChC,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,KAAK;QACrB,GAAG,UAAU,CAAC,OAAO,CAAC;KACtB,CAAC;IAEF,MAAM,QAAQ,GAAQ,WAAW,CAChC,UAAU,CAAC,MAAM,EACjB,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CACzB,CAAC;IAEF,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAEtB,OAAO;QACN,QAAQ,EAAE,QAAQ,CAAC,MAAM;QACzB,OAAO;YACN,QAAQ,CAAC,OAAO,EAAE,CAAC;QACpB,CAAC;QACD,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;QAClD,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;QAC3C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC3B,CAAC;AACH,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC;AAEtB,MAAM,UAAU,GAAG,CAClB,SAAyD,EAAE,EAC3C,EAAE;IAClB,IAAI,MAAM,YAAY,MAAM,EAAE,CAAC;QAC9B,OAAO;YACN,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,KAAK;SACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CACnB,MAA0B,EAC1B,cAAyB,EACnB,EAAE;IACR,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,QAAQ,GAAG,cAAc,EAAE,CAAC;QAC5B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACjC,CAAC;IAED,OAAO,QAAQ,CAAC;AACjB,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type StyledChar } from '@alcalzone/ansi-tokenize';
1
+ import { type StyledChar } from './tokenize.js';
2
2
  import { type Region } from './output.js';
3
3
  import { type DOMElement, type StickyHeader } from './dom.js';
4
4
  import { type Selection } from './selection.js';
@@ -19,5 +19,6 @@ declare const renderer: (node: DOMElement, options: {
19
19
  selection?: Selection;
20
20
  selectionStyle?: (char: StyledChar) => StyledChar;
21
21
  skipScrollbars?: boolean;
22
+ trackSelection?: boolean;
22
23
  }) => Result;
23
24
  export default renderer;
package/build/renderer.js CHANGED
@@ -1,4 +1,4 @@
1
- import { styledCharsToString } from '@alcalzone/ansi-tokenize';
1
+ import { styledCharsToString } from './tokenize.js';
2
2
  import renderNodeToOutput from './render-node-to-output.js';
3
3
  import { renderNodeToScreenReaderOutput } from './render-screen-reader.js';
4
4
  import Output, { flattenRegion, clampCursorColumn, } from './output.js';
@@ -175,10 +175,10 @@ const calculateSelectionMap = (root, selection) => {
175
175
  return map;
176
176
  };
177
177
  const renderer = (node, options) => {
178
- const { isScreenReaderEnabled, selection, selectionStyle, skipScrollbars } = options;
178
+ const { isScreenReaderEnabled, selection, selectionStyle, skipScrollbars, trackSelection, } = options;
179
179
  const callBeforeRender = (n) => {
180
180
  if (typeof n.internalOnBeforeRender === 'function') {
181
- n.internalOnBeforeRender(n);
181
+ n.internalOnBeforeRender(n, { trackSelection });
182
182
  }
183
183
  for (const child of n.childNodes) {
184
184
  if (child.nodeName !== '#text') {
@@ -211,6 +211,7 @@ const renderer = (node, options) => {
211
211
  width: node.yogaNode.getComputedWidth(),
212
212
  height: node.yogaNode.getComputedHeight(),
213
213
  node,
214
+ trackSelection,
214
215
  });
215
216
  const selectionMap = selection
216
217
  ? calculateSelectionMap(node, selection)
@@ -219,6 +220,7 @@ const renderer = (node, options) => {
219
220
  skipStaticElements: true,
220
221
  selectionStyle,
221
222
  selectionMap,
223
+ trackSelection,
222
224
  });
223
225
  let staticOutput;
224
226
  if (node.staticNode?.yogaNode) {
@@ -227,6 +229,7 @@ const renderer = (node, options) => {
227
229
  height: node.staticNode.yogaNode.getComputedHeight(),
228
230
  node: node.staticNode,
229
231
  id: node.staticNode.internalId,
232
+ trackSelection,
230
233
  });
231
234
  renderNodeToOutput(node.staticNode, staticOutput, {
232
235
  skipStaticElements: false,
@@ -234,6 +237,7 @@ const renderer = (node, options) => {
234
237
  selectionMap: selection
235
238
  ? calculateSelectionMap(node.staticNode, selection)
236
239
  : undefined,
240
+ trackSelection,
237
241
  });
238
242
  }
239
243
  const rootRegion = output.get();
@@ -1 +1 @@
1
- {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../src/renderer.ts"],"names":[],"mappings":"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"}
package/build/replay.d.ts CHANGED
@@ -4,7 +4,6 @@
4
4
  * SPDX-License-Identifier: Apache-2.0
5
5
  */
6
6
  import { type RegionNode, type RegionUpdate } from './output.js';
7
- import { type Serializer } from './serialization.js';
8
7
  import { type StickyHeader } from './dom.js';
9
8
  export type ReplayData = {
10
9
  type: 'single' | 'sequence';
@@ -38,7 +37,7 @@ export type ReplayStickyHeader = Omit<StickyHeader, 'node' | 'anchor' | 'lines'
38
37
  stuckLines?: string;
39
38
  styledOutput: string;
40
39
  };
41
- export declare function serializeReplayUpdate(update: RegionUpdate, serializer: Serializer): ReplayRegionUpdate;
40
+ export declare function serializeReplayUpdate(update: RegionUpdate): ReplayRegionUpdate;
42
41
  export declare function deserializeReplayUpdate(update: ReplayRegionUpdate): RegionUpdate;
43
42
  export declare function saveReplay(data: ReplayData, filename: string): void;
44
43
  export type LoadedReplayData = {
package/build/replay.js CHANGED
@@ -6,7 +6,7 @@
6
6
  import fs from 'node:fs';
7
7
  import { Buffer } from 'node:buffer';
8
8
  import { Deserializer } from './serialization.js';
9
- export function serializeReplayUpdate(update, serializer) {
9
+ export function serializeReplayUpdate(update) {
10
10
  const { lines, stickyHeaders, ...rest } = update;
11
11
  const result = {
12
12
  ...rest,
@@ -25,12 +25,11 @@ export function serializeReplayUpdate(update, serializer) {
25
25
  if (stickyHeaders) {
26
26
  result.stickyHeaders = stickyHeaders.map(h => ({
27
27
  ...h,
28
- node: undefined,
29
- lines: Buffer.from(serializer.serialize(h.lines ?? [])).toString('base64'),
28
+ lines: Buffer.from(h.lines).toString('base64'),
30
29
  stuckLines: h.stuckLines
31
- ? Buffer.from(serializer.serialize(h.stuckLines)).toString('base64')
30
+ ? Buffer.from(h.stuckLines).toString('base64')
32
31
  : undefined,
33
- styledOutput: Buffer.from(serializer.serialize(h.styledOutput ?? [])).toString('base64'),
32
+ styledOutput: Buffer.from(h.styledOutput).toString('base64'),
34
33
  }));
35
34
  }
36
35
  return result;
@@ -52,19 +51,14 @@ export function deserializeReplayUpdate(update) {
52
51
  };
53
52
  }
54
53
  if (stickyHeaders) {
55
- result.stickyHeaders = stickyHeaders.map(h => {
56
- const header = {
57
- ...h,
58
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
59
- node: undefined,
60
- lines: new Deserializer(Buffer.from(h.lines, 'base64')).deserialize(),
61
- stuckLines: h.stuckLines
62
- ? new Deserializer(Buffer.from(h.stuckLines, 'base64')).deserialize()
63
- : undefined,
64
- styledOutput: new Deserializer(Buffer.from(h.styledOutput, 'base64')).deserialize(),
65
- };
66
- return header;
67
- });
54
+ result.stickyHeaders = stickyHeaders.map(h => ({
55
+ ...h,
56
+ lines: Buffer.from(h.lines, 'base64'),
57
+ stuckLines: h.stuckLines
58
+ ? Buffer.from(h.stuckLines, 'base64')
59
+ : undefined,
60
+ styledOutput: Buffer.from(h.styledOutput, 'base64'),
61
+ }));
68
62
  }
69
63
  return result;
70
64
  }
@@ -104,7 +98,7 @@ export function createHumanReadableDump(data) {
104
98
  start: u.start,
105
99
  end: u.end,
106
100
  text: lines.map(line => line
107
- .map(c => c.value)
101
+ .map(c => c.getValue())
108
102
  .join('')
109
103
  .trimEnd()),
110
104
  };
@@ -114,16 +108,24 @@ export function createHumanReadableDump(data) {
114
108
  if (update.stickyHeaders) {
115
109
  dumpUpdate['stickyHeaders'] = update.stickyHeaders.map(h => ({
116
110
  ...h,
117
- lines: (h.lines ?? []).map(line => line
118
- .map(c => c.value)
119
- .join('')
120
- .trimEnd()),
121
- stuckLines: h.stuckLines?.map(line => line
122
- .map(c => c.value)
111
+ lines: new Deserializer(Buffer.from(h.lines))
112
+ .deserialize()
113
+ .map(line => line
114
+ .map(c => c.getValue())
123
115
  .join('')
124
116
  .trimEnd()),
125
- styledOutput: (h.styledOutput ?? []).map(line => line
126
- .map(c => c.value)
117
+ stuckLines: h.stuckLines
118
+ ? new Deserializer(Buffer.from(h.stuckLines))
119
+ .deserialize()
120
+ .map(line => line
121
+ .map(c => c.getValue())
122
+ .join('')
123
+ .trimEnd())
124
+ : undefined,
125
+ styledOutput: new Deserializer(Buffer.from(h.styledOutput))
126
+ .deserialize()
127
+ .map(line => line
128
+ .map(c => c.getValue())
127
129
  .join('')
128
130
  .trimEnd()),
129
131
  node: undefined,