linecraft 0.1.0 → 0.2.0

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 (283) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +313 -64
  3. package/lib/api/color.d.ts +6 -0
  4. package/lib/api/color.d.ts.map +1 -0
  5. package/lib/api/color.js +9 -0
  6. package/lib/api/color.js.map +1 -0
  7. package/lib/api/color.test.d.ts +2 -0
  8. package/lib/api/color.test.d.ts.map +1 -0
  9. package/lib/api/color.test.js +23 -0
  10. package/lib/api/color.test.js.map +1 -0
  11. package/lib/api/flex.d.ts +55 -0
  12. package/lib/api/flex.d.ts.map +1 -0
  13. package/lib/api/flex.js +86 -0
  14. package/lib/api/flex.js.map +1 -0
  15. package/lib/api/flex.test.d.ts +2 -0
  16. package/lib/api/flex.test.d.ts.map +1 -0
  17. package/lib/api/flex.test.js +82 -0
  18. package/lib/api/flex.test.js.map +1 -0
  19. package/lib/api/grid.d.ts +22 -0
  20. package/lib/api/grid.d.ts.map +1 -0
  21. package/lib/api/grid.js +65 -0
  22. package/lib/api/grid.js.map +1 -0
  23. package/lib/api/grid.test.d.ts +2 -0
  24. package/lib/api/grid.test.d.ts.map +1 -0
  25. package/lib/api/grid.test.js +48 -0
  26. package/lib/api/grid.test.js.map +1 -0
  27. package/lib/components/base.d.ts +53 -0
  28. package/lib/components/base.d.ts.map +1 -0
  29. package/lib/components/base.js +47 -0
  30. package/lib/components/base.js.map +1 -0
  31. package/lib/components/col.d.ts +35 -0
  32. package/lib/components/col.d.ts.map +1 -0
  33. package/lib/components/col.js +168 -0
  34. package/lib/components/col.js.map +1 -0
  35. package/lib/components/col.test.d.ts +2 -0
  36. package/lib/components/col.test.d.ts.map +1 -0
  37. package/lib/components/col.test.js +96 -0
  38. package/lib/components/col.test.js.map +1 -0
  39. package/lib/components/index.d.ts +3 -0
  40. package/lib/components/index.d.ts.map +1 -0
  41. package/lib/components/index.js +5 -0
  42. package/lib/components/index.js.map +1 -0
  43. package/lib/components/progress-bar-grid.d.ts +20 -0
  44. package/lib/components/progress-bar-grid.d.ts.map +1 -0
  45. package/lib/components/progress-bar-grid.js +44 -0
  46. package/lib/components/progress-bar-grid.js.map +1 -0
  47. package/lib/components/progress-bar-grid.test.d.ts +2 -0
  48. package/lib/components/progress-bar-grid.test.d.ts.map +1 -0
  49. package/lib/components/progress-bar-grid.test.js +101 -0
  50. package/lib/components/progress-bar-grid.test.js.map +1 -0
  51. package/lib/components/progress-bar.d.ts +26 -3
  52. package/lib/components/progress-bar.d.ts.map +1 -1
  53. package/lib/components/progress-bar.js +62 -6
  54. package/lib/components/progress-bar.js.map +1 -1
  55. package/lib/components/progress-bar.test.d.ts +2 -0
  56. package/lib/components/progress-bar.test.d.ts.map +1 -0
  57. package/lib/components/progress-bar.test.js +153 -0
  58. package/lib/components/progress-bar.test.js.map +1 -0
  59. package/lib/components/prompt.d.ts +14 -0
  60. package/lib/components/prompt.d.ts.map +1 -0
  61. package/lib/components/prompt.js +77 -0
  62. package/lib/components/prompt.js.map +1 -0
  63. package/lib/components/renderable.d.ts +42 -0
  64. package/lib/components/renderable.d.ts.map +1 -0
  65. package/lib/components/renderable.js +225 -0
  66. package/lib/components/renderable.js.map +1 -0
  67. package/lib/components/spinner.d.ts +2 -2
  68. package/lib/components/spinner.d.ts.map +1 -1
  69. package/lib/components/spinner.js +3 -1
  70. package/lib/components/spinner.js.map +1 -1
  71. package/lib/components/spinner.test.d.ts +2 -0
  72. package/lib/components/spinner.test.d.ts.map +1 -0
  73. package/lib/components/spinner.test.js +168 -0
  74. package/lib/components/spinner.test.js.map +1 -0
  75. package/lib/components/style.d.ts +16 -0
  76. package/lib/components/style.d.ts.map +1 -0
  77. package/lib/components/style.js +72 -0
  78. package/lib/components/style.js.map +1 -0
  79. package/lib/components/style.test.d.ts +2 -0
  80. package/lib/components/style.test.d.ts.map +1 -0
  81. package/lib/components/style.test.js +135 -0
  82. package/lib/components/style.test.js.map +1 -0
  83. package/lib/components/text.d.ts +24 -0
  84. package/lib/components/text.d.ts.map +1 -0
  85. package/lib/components/text.js +65 -0
  86. package/lib/components/text.js.map +1 -0
  87. package/lib/drawing/boxes.d.ts +33 -0
  88. package/lib/drawing/boxes.d.ts.map +1 -0
  89. package/lib/drawing/boxes.js +76 -0
  90. package/lib/drawing/boxes.js.map +1 -0
  91. package/lib/index.d.ts +18 -11
  92. package/lib/index.d.ts.map +1 -1
  93. package/lib/index.js +21 -10
  94. package/lib/index.js.map +1 -1
  95. package/lib/index.test.d.ts +2 -0
  96. package/lib/index.test.d.ts.map +1 -0
  97. package/lib/index.test.js +80 -0
  98. package/lib/index.test.js.map +1 -0
  99. package/lib/layout/flex.d.ts +39 -0
  100. package/lib/layout/flex.d.ts.map +1 -0
  101. package/lib/layout/flex.js +300 -0
  102. package/lib/layout/flex.js.map +1 -0
  103. package/lib/layout/flex.test.d.ts +2 -0
  104. package/lib/layout/flex.test.d.ts.map +1 -0
  105. package/lib/layout/flex.test.js +206 -0
  106. package/lib/layout/flex.test.js.map +1 -0
  107. package/lib/layout/grid.d.ts +53 -0
  108. package/lib/layout/grid.d.ts.map +1 -0
  109. package/lib/layout/grid.js +421 -0
  110. package/lib/layout/grid.js.map +1 -0
  111. package/lib/layout/grid.test.d.ts +2 -0
  112. package/lib/layout/grid.test.d.ts.map +1 -0
  113. package/lib/layout/grid.test.js +139 -0
  114. package/lib/layout/grid.test.js.map +1 -0
  115. package/lib/native/ansi.d.ts +104 -0
  116. package/lib/native/ansi.d.ts.map +1 -0
  117. package/lib/native/ansi.js +120 -0
  118. package/lib/native/ansi.js.map +1 -0
  119. package/lib/native/ansi.test.d.ts +2 -0
  120. package/lib/native/ansi.test.d.ts.map +1 -0
  121. package/lib/native/ansi.test.js +57 -0
  122. package/lib/native/ansi.test.js.map +1 -0
  123. package/lib/native/buffer.d.ts +32 -0
  124. package/lib/native/buffer.d.ts.map +1 -0
  125. package/lib/native/buffer.js +49 -0
  126. package/lib/native/buffer.js.map +1 -0
  127. package/lib/native/buffer.test.d.ts +2 -0
  128. package/lib/native/buffer.test.d.ts.map +1 -0
  129. package/lib/native/buffer.test.js +64 -0
  130. package/lib/native/buffer.test.js.map +1 -0
  131. package/lib/native/diff.d.ts +20 -0
  132. package/lib/native/diff.d.ts.map +1 -0
  133. package/lib/native/diff.js +33 -0
  134. package/lib/native/diff.js.map +1 -0
  135. package/lib/native/diff.test.d.ts +2 -0
  136. package/lib/native/diff.test.d.ts.map +1 -0
  137. package/lib/native/diff.test.js +106 -0
  138. package/lib/native/diff.test.js.map +1 -0
  139. package/lib/native/region-old.d.ts +117 -0
  140. package/lib/native/region-old.d.ts.map +1 -0
  141. package/lib/native/region-old.js +539 -0
  142. package/lib/native/region-old.js.map +1 -0
  143. package/lib/native/region-renderer.d.ts +167 -0
  144. package/lib/native/region-renderer.d.ts.map +1 -0
  145. package/lib/native/region-renderer.js +1238 -0
  146. package/lib/native/region-renderer.js.map +1 -0
  147. package/lib/native/region-simple.d.ts +44 -0
  148. package/lib/native/region-simple.d.ts.map +1 -0
  149. package/lib/native/region-simple.js +290 -0
  150. package/lib/native/region-simple.js.map +1 -0
  151. package/lib/native/region.d.ts +53 -0
  152. package/lib/native/region.d.ts.map +1 -0
  153. package/lib/native/region.js +426 -0
  154. package/lib/native/region.js.map +1 -0
  155. package/lib/native/region.test.d.ts +2 -0
  156. package/lib/native/region.test.d.ts.map +1 -0
  157. package/lib/native/region.test.js +248 -0
  158. package/lib/native/region.test.js.map +1 -0
  159. package/lib/native/throttle.d.ts +29 -0
  160. package/lib/native/throttle.d.ts.map +1 -0
  161. package/lib/native/throttle.js +57 -0
  162. package/lib/native/throttle.js.map +1 -0
  163. package/lib/native/throttle.test.d.ts +2 -0
  164. package/lib/native/throttle.test.d.ts.map +1 -0
  165. package/lib/native/throttle.test.js +86 -0
  166. package/lib/native/throttle.test.js.map +1 -0
  167. package/lib/native.d.ts +5 -11
  168. package/lib/native.d.ts.map +1 -1
  169. package/lib/native.js +8 -64
  170. package/lib/native.js.map +1 -1
  171. package/lib/region.d.ts +48 -5
  172. package/lib/region.d.ts.map +1 -1
  173. package/lib/region.js +474 -36
  174. package/lib/region.js.map +1 -1
  175. package/lib/region.test.d.ts +2 -0
  176. package/lib/region.test.d.ts.map +1 -0
  177. package/lib/region.test.js +227 -0
  178. package/lib/region.test.js.map +1 -0
  179. package/lib/region.visual.test.d.ts +2 -0
  180. package/lib/region.visual.test.d.ts.map +1 -0
  181. package/lib/region.visual.test.js +55 -0
  182. package/lib/region.visual.test.js.map +1 -0
  183. package/lib/test-helpers/capturable-terminal.d.ts +61 -0
  184. package/lib/test-helpers/capturable-terminal.d.ts.map +1 -0
  185. package/lib/test-helpers/capturable-terminal.js +113 -0
  186. package/lib/test-helpers/capturable-terminal.js.map +1 -0
  187. package/lib/test-helpers/capturable-terminal.test.d.ts +2 -0
  188. package/lib/test-helpers/capturable-terminal.test.d.ts.map +1 -0
  189. package/lib/test-helpers/capturable-terminal.test.js +45 -0
  190. package/lib/test-helpers/capturable-terminal.test.js.map +1 -0
  191. package/lib/test-helpers/mock-region.d.ts +21 -0
  192. package/lib/test-helpers/mock-region.d.ts.map +1 -0
  193. package/lib/test-helpers/mock-region.js +37 -0
  194. package/lib/test-helpers/mock-region.js.map +1 -0
  195. package/lib/test-helpers/virtual-terminal-diff-reflow.test.d.ts +2 -0
  196. package/lib/test-helpers/virtual-terminal-diff-reflow.test.d.ts.map +1 -0
  197. package/lib/test-helpers/virtual-terminal-diff-reflow.test.js +256 -0
  198. package/lib/test-helpers/virtual-terminal-diff-reflow.test.js.map +1 -0
  199. package/lib/test-helpers/virtual-terminal-flex-resize.test.d.ts +2 -0
  200. package/lib/test-helpers/virtual-terminal-flex-resize.test.d.ts.map +1 -0
  201. package/lib/test-helpers/virtual-terminal-flex-resize.test.js +438 -0
  202. package/lib/test-helpers/virtual-terminal-flex-resize.test.js.map +1 -0
  203. package/lib/test-helpers/virtual-terminal.d.ts +176 -0
  204. package/lib/test-helpers/virtual-terminal.d.ts.map +1 -0
  205. package/lib/test-helpers/virtual-terminal.js +492 -0
  206. package/lib/test-helpers/virtual-terminal.js.map +1 -0
  207. package/lib/test-helpers/virtual-terminal.test.d.ts +2 -0
  208. package/lib/test-helpers/virtual-terminal.test.d.ts.map +1 -0
  209. package/lib/test-helpers/virtual-terminal.test.js +219 -0
  210. package/lib/test-helpers/virtual-terminal.test.js.map +1 -0
  211. package/lib/ts/components/spinner.test.d.ts +2 -0
  212. package/lib/ts/components/spinner.test.d.ts.map +1 -0
  213. package/lib/ts/components/spinner.test.js +168 -0
  214. package/lib/ts/components/spinner.test.js.map +1 -0
  215. package/lib/ts/utils/colors.test.d.ts +2 -0
  216. package/lib/ts/utils/colors.test.d.ts.map +1 -0
  217. package/lib/ts/utils/colors.test.js +87 -0
  218. package/lib/ts/utils/colors.test.js.map +1 -0
  219. package/lib/types.d.ts +8 -2
  220. package/lib/types.d.ts.map +1 -1
  221. package/lib/types.js.map +1 -1
  222. package/lib/utils/colors-simple.d.ts +51 -0
  223. package/lib/utils/colors-simple.d.ts.map +1 -0
  224. package/lib/utils/colors-simple.js +59 -0
  225. package/lib/utils/colors-simple.js.map +1 -0
  226. package/lib/utils/colors.d.ts +1 -1
  227. package/lib/utils/colors.d.ts.map +1 -1
  228. package/lib/utils/colors.js.map +1 -1
  229. package/lib/utils/colors.test.d.ts +2 -0
  230. package/lib/utils/colors.test.d.ts.map +1 -0
  231. package/lib/utils/colors.test.js +87 -0
  232. package/lib/utils/colors.test.js.map +1 -0
  233. package/lib/utils/cursor-position.d.ts +22 -0
  234. package/lib/utils/cursor-position.d.ts.map +1 -0
  235. package/lib/utils/cursor-position.js +139 -0
  236. package/lib/utils/cursor-position.js.map +1 -0
  237. package/lib/utils/debug-log.d.ts +2 -0
  238. package/lib/utils/debug-log.d.ts.map +1 -0
  239. package/lib/utils/debug-log.js +36 -0
  240. package/lib/utils/debug-log.js.map +1 -0
  241. package/lib/utils/terminal.d.ts +27 -0
  242. package/lib/utils/terminal.d.ts.map +1 -0
  243. package/lib/utils/terminal.js +116 -0
  244. package/lib/utils/terminal.js.map +1 -0
  245. package/lib/utils/text.d.ts +21 -0
  246. package/lib/utils/text.d.ts.map +1 -0
  247. package/lib/utils/text.js +82 -0
  248. package/lib/utils/text.js.map +1 -0
  249. package/lib/utils/wait-for-spacebar.d.ts +10 -0
  250. package/lib/utils/wait-for-spacebar.d.ts.map +1 -0
  251. package/lib/utils/wait-for-spacebar.js +71 -0
  252. package/lib/utils/wait-for-spacebar.js.map +1 -0
  253. package/package.json +31 -28
  254. package/.cursor/plan.md +0 -952
  255. package/TESTING.md +0 -102
  256. package/build.zig +0 -100
  257. package/examples/basic-progress.ts +0 -21
  258. package/examples/multi-lane.ts +0 -29
  259. package/examples/spinner.ts +0 -20
  260. package/examples/test-basic.ts +0 -23
  261. package/src/ts/components/progress-bar.ts +0 -53
  262. package/src/ts/components/spinner.ts +0 -56
  263. package/src/ts/index.ts +0 -37
  264. package/src/ts/native.ts +0 -86
  265. package/src/ts/region.ts +0 -89
  266. package/src/ts/types/ffi-napi.d.ts +0 -11
  267. package/src/ts/types/ref-napi.d.ts +0 -5
  268. package/src/ts/types.ts +0 -53
  269. package/src/ts/utils/colors.ts +0 -72
  270. package/src/zig/ansi.zig +0 -21
  271. package/src/zig/buffer.zig +0 -37
  272. package/src/zig/diff.zig +0 -43
  273. package/src/zig/region.zig +0 -292
  274. package/src/zig/renderer.zig +0 -92
  275. package/src/zig/test_ansi.zig +0 -66
  276. package/src/zig/test_buffer.zig +0 -82
  277. package/src/zig/test_diff.zig +0 -220
  278. package/src/zig/test_integration.zig +0 -76
  279. package/src/zig/test_region.zig +0 -191
  280. package/src/zig/test_runner.zig +0 -27
  281. package/src/zig/test_throttle.zig +0 -59
  282. package/src/zig/throttle.zig +0 -38
  283. package/tsconfig.json +0 -21
@@ -0,0 +1,256 @@
1
+ /**
2
+ * Tests for diffing and reflowing behavior
3
+ *
4
+ * Validates:
5
+ * 1. Library only writes what changed (diffs lines)
6
+ * 2. Correctly reflows content on resize
7
+ * 3. Non-wrapping content (like right-pinned elements) behavior
8
+ */
9
+ import { describe, it, expect, beforeEach, vi } from 'vitest';
10
+ import { VirtualTerminal } from './virtual-terminal.js';
11
+ import { flex, col } from '../api/flex.js';
12
+ import { TerminalRegion } from '../region.js';
13
+ describe('VirtualTerminal - Diff and Reflow Behavior', () => {
14
+ let terminal;
15
+ let region;
16
+ let writeSpy;
17
+ beforeEach(() => {
18
+ terminal = new VirtualTerminal({ width: 80, height: 24 });
19
+ const writeStream = terminal.createWriteStream();
20
+ // Spy on write calls to track what's being written
21
+ writeSpy = vi.fn();
22
+ const originalWrite = writeStream.write.bind(writeStream);
23
+ writeStream.write = (chunk, encoding, callback) => {
24
+ writeSpy(chunk);
25
+ return originalWrite(chunk, encoding, callback);
26
+ };
27
+ region = new TerminalRegion({
28
+ height: 10,
29
+ stdout: writeStream,
30
+ disableRendering: false,
31
+ });
32
+ });
33
+ describe('Diffing behavior - minimal writes', () => {
34
+ it('should only write changed lines on update', () => {
35
+ // Initial render
36
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Label:'), col({ flex: 1 }, 'Value1')));
37
+ region.flush();
38
+ const initialWrites = writeSpy.mock.calls.length;
39
+ writeSpy.mockClear();
40
+ // Update only one column
41
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Label:'), col({ flex: 1 }, 'Value2') // Changed
42
+ ));
43
+ region.flush();
44
+ // Should write less than initial render (only changed parts)
45
+ const updateWrites = writeSpy.mock.calls.length;
46
+ // The diff should minimize writes - exact count depends on implementation
47
+ expect(updateWrites).toBeGreaterThan(0);
48
+ });
49
+ it('should not rewrite unchanged lines', () => {
50
+ // Render multiple lines
51
+ region.set(flex({ gap: 0, direction: 'column' }, col({}, 'Line 1'), col({}, 'Line 2'), col({}, 'Line 3')));
52
+ region.flush();
53
+ writeSpy.mockClear();
54
+ // Update only middle line
55
+ region.set(flex({ gap: 0, direction: 'column' }, col({}, 'Line 1'), // Unchanged
56
+ col({}, 'Line 2 Updated'), // Changed
57
+ col({}, 'Line 3') // Unchanged
58
+ ));
59
+ region.flush();
60
+ // Should only write the changed line (plus cursor movements)
61
+ // Exact count depends on diff implementation, but should be minimal
62
+ expect(writeSpy.mock.calls.length).toBeGreaterThan(0);
63
+ });
64
+ it('should handle partial line updates efficiently', () => {
65
+ // Initial render
66
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Status:'), col({ flex: 1 }, 'Idle')));
67
+ region.flush();
68
+ writeSpy.mockClear();
69
+ // Update just the value part
70
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Status:'), // Unchanged
71
+ col({ flex: 1 }, 'Active') // Changed
72
+ ));
73
+ region.flush();
74
+ // Should only update the changed portion of the line
75
+ const writes = writeSpy.mock.calls.map(call => call[0]).join('');
76
+ // Should contain the update
77
+ expect(writes).toContain('Active');
78
+ // Should not rewrite the entire line unnecessarily
79
+ });
80
+ });
81
+ describe('Reflowing behavior on resize', () => {
82
+ it('should correctly reflow flex layout when terminal resizes', () => {
83
+ // Initial render at 80 columns
84
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Label:'), col({ flex: 1 }, 'This is a long value that will need to reflow')));
85
+ region.flush();
86
+ const initialLine1 = terminal.getLine(1);
87
+ const initialLabelPos = initialLine1.indexOf('Label:');
88
+ const initialValuePos = initialLine1.indexOf('This is');
89
+ // Resize to 40 columns
90
+ terminal.simulateResize(40, 24);
91
+ expect(region.width).toBe(40);
92
+ // Re-render (should reflow)
93
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Label:'), col({ flex: 1 }, 'This is a long value that will need to reflow')));
94
+ region.flush();
95
+ // Layout should adapt to new width
96
+ const afterLine1 = terminal.getLine(1);
97
+ expect(afterLine1).toContain('Label:');
98
+ // Value might wrap or truncate depending on overflow setting
99
+ const allLines = terminal.getAllLines();
100
+ const allContent = allLines.join(' ');
101
+ expect(allContent).toContain('This is');
102
+ });
103
+ it('should reflow multiple columns correctly on resize', () => {
104
+ // Initial render
105
+ region.set(flex({ gap: 2 }, col({ flex: 1 }, 'Column 1'), col({ flex: 1 }, 'Column 2'), col({ flex: 1 }, 'Column 3')));
106
+ region.flush();
107
+ const initialLine1 = terminal.getLine(1);
108
+ const col1Pos = initialLine1.indexOf('Column 1');
109
+ const col2Pos = initialLine1.indexOf('Column 2');
110
+ const col3Pos = initialLine1.indexOf('Column 3');
111
+ // Verify all on same line
112
+ expect(col1Pos).toBeGreaterThan(-1);
113
+ expect(col2Pos).toBeGreaterThan(col1Pos);
114
+ expect(col3Pos).toBeGreaterThan(col2Pos);
115
+ // Resize narrower
116
+ terminal.simulateResize(30, 24);
117
+ expect(region.width).toBe(30);
118
+ // Re-render
119
+ region.set(flex({ gap: 2 }, col({ flex: 1 }, 'Column 1'), col({ flex: 1 }, 'Column 2'), col({ flex: 1 }, 'Column 3')));
120
+ region.flush();
121
+ // Should still be on same line (flex redistributes)
122
+ const afterLine1 = terminal.getLine(1);
123
+ expect(afterLine1).toContain('Column 1');
124
+ expect(afterLine1).toContain('Column 2');
125
+ expect(afterLine1).toContain('Column 3');
126
+ });
127
+ it('should handle resize with wrapping content', () => {
128
+ const longText = 'This is a very long line that should wrap when the terminal is resized. '.repeat(2);
129
+ region.set(flex({ gap: 0 }, col({ overflow: 'wrap' }, longText)));
130
+ region.flush();
131
+ const initialLines = terminal.getAllLines();
132
+ const initialNonEmpty = initialLines.filter(line => line.trim().length > 0);
133
+ // Resize narrower
134
+ terminal.simulateResize(30, 24);
135
+ expect(region.width).toBe(30);
136
+ // Re-render
137
+ region.set(flex({ gap: 0 }, col({ overflow: 'wrap' }, longText)));
138
+ region.flush();
139
+ // Should have more lines after resize
140
+ const afterLines = terminal.getAllLines();
141
+ const afterNonEmpty = afterLines.filter(line => line.trim().length > 0);
142
+ expect(afterNonEmpty.length).toBeGreaterThanOrEqual(initialNonEmpty.length);
143
+ });
144
+ });
145
+ describe('Non-wrapping content (right-pinned elements)', () => {
146
+ it('should handle content that goes off-screen without wrapping', () => {
147
+ // Simulate a right-pinned element (like OhMyZsh prompt)
148
+ // This content should NOT wrap, just get cut off
149
+ const rightPinnedContent = 'Right-aligned status that should not wrap';
150
+ region.set(flex({ gap: 0, justifyContent: 'end' }, col({}, rightPinnedContent)));
151
+ region.flush();
152
+ const initialLine1 = terminal.getLine(1);
153
+ expect(initialLine1).toContain('Right-aligned');
154
+ // Resize narrower - content should be cut off, not wrapped
155
+ terminal.simulateResize(20, 24);
156
+ expect(region.width).toBe(20);
157
+ // Re-render
158
+ region.set(flex({ gap: 0, justifyContent: 'end' }, col({}, rightPinnedContent)));
159
+ region.flush();
160
+ // Content should be truncated/cut off, not wrapped to next line
161
+ const afterLine1 = terminal.getLine(1);
162
+ // Should still be on line 1 (not wrapped)
163
+ expect(afterLine1.length).toBeLessThanOrEqual(20);
164
+ // Check that it didn't wrap to line 2
165
+ const line2 = terminal.getLine(2);
166
+ expect(line2.trim()).toBe('');
167
+ });
168
+ it('should handle fixed-width columns that go off-screen', () => {
169
+ // A fixed-width column that exceeds terminal width
170
+ region.set(flex({ gap: 2 }, col({ min: 50, max: 50 }, 'Fixed width column'), col({ flex: 1 }, 'Flexible')));
171
+ region.flush();
172
+ // Resize to narrower than the fixed width
173
+ terminal.simulateResize(30, 24);
174
+ expect(region.width).toBe(30);
175
+ // Re-render
176
+ region.set(flex({ gap: 2 }, col({ min: 50, max: 50 }, 'Fixed width column'), col({ flex: 1 }, 'Flexible')));
177
+ region.flush();
178
+ // The fixed column should be truncated (not wrapped)
179
+ const line1 = terminal.getLine(1);
180
+ expect(line1.length).toBeLessThanOrEqual(30);
181
+ // Should not wrap to line 2
182
+ const line2 = terminal.getLine(2);
183
+ expect(line2.trim()).toBe('');
184
+ });
185
+ it('should handle ellipsis for content that exceeds width', () => {
186
+ const longText = 'A'.repeat(100);
187
+ region.set(flex({ gap: 0 }, col({ overflow: 'ellipsis-end', max: 50 }, longText)));
188
+ region.flush();
189
+ const initialLine1 = terminal.getLine(1);
190
+ expect(initialLine1).toContain('...');
191
+ expect(initialLine1.length).toBeLessThanOrEqual(50);
192
+ // Resize narrower
193
+ terminal.simulateResize(20, 24);
194
+ expect(region.width).toBe(20);
195
+ // Re-render
196
+ region.set(flex({ gap: 0 }, col({ overflow: 'ellipsis-end', max: 20 }, longText)));
197
+ region.flush();
198
+ // Should still be ellipsized, not wrapped
199
+ const afterLine1 = terminal.getLine(1);
200
+ expect(afterLine1).toContain('...');
201
+ expect(afterLine1.length).toBeLessThanOrEqual(20);
202
+ // Should not wrap
203
+ const line2 = terminal.getLine(2);
204
+ expect(line2.trim()).toBe('');
205
+ });
206
+ });
207
+ describe('Combined: diffing + reflowing', () => {
208
+ it('should efficiently update after resize (diff + reflow)', () => {
209
+ // Initial render
210
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Status:'), col({ flex: 1 }, 'Idle')));
211
+ region.flush();
212
+ writeSpy.mockClear();
213
+ // Resize
214
+ terminal.simulateResize(40, 24);
215
+ expect(region.width).toBe(40);
216
+ // Update content AND reflow
217
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Status:'), col({ flex: 1 }, 'Active') // Changed
218
+ ));
219
+ region.flush();
220
+ // Should write efficiently (diff) while handling reflow
221
+ expect(writeSpy.mock.calls.length).toBeGreaterThan(0);
222
+ // Content should be correct
223
+ const line1 = terminal.getLine(1);
224
+ expect(line1).toContain('Status:');
225
+ expect(line1).toContain('Active');
226
+ });
227
+ it('should handle progressive updates with resize efficiently', () => {
228
+ // Start narrow
229
+ terminal.simulateResize(30, 24);
230
+ expect(region.width).toBe(30);
231
+ let progress = 0;
232
+ for (let i = 0; i < 5; i++) {
233
+ progress = i * 25;
234
+ writeSpy.mockClear();
235
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Progress:'), col({ flex: 1 }, `${progress}%`)));
236
+ region.flush();
237
+ // Each update should be efficient (only write what changed)
238
+ expect(writeSpy.mock.calls.length).toBeGreaterThan(0);
239
+ // Verify content
240
+ const line1 = terminal.getLine(1);
241
+ expect(line1).toContain(`${progress}%`);
242
+ }
243
+ // Resize in middle of updates
244
+ terminal.simulateResize(50, 24);
245
+ expect(region.width).toBe(50);
246
+ writeSpy.mockClear();
247
+ region.set(flex({ gap: 2 }, col({ min: 10, max: 10 }, 'Progress:'), col({ flex: 1 }, '100%')));
248
+ region.flush();
249
+ // Should handle resize and update efficiently
250
+ expect(writeSpy.mock.calls.length).toBeGreaterThan(0);
251
+ const line1 = terminal.getLine(1);
252
+ expect(line1).toContain('100%');
253
+ });
254
+ });
255
+ });
256
+ //# sourceMappingURL=virtual-terminal-diff-reflow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-terminal-diff-reflow.test.js","sourceRoot":"","sources":["../../src/ts/test-helpers/virtual-terminal-diff-reflow.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=virtual-terminal-flex-resize.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtual-terminal-flex-resize.test.d.ts","sourceRoot":"","sources":["../../src/ts/test-helpers/virtual-terminal-flex-resize.test.ts"],"names":[],"mappings":""}