@fairyhunter13/opentui-core 0.1.90 → 0.1.92

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 (571) hide show
  1. package/3d/SpriteResourceManager.d.ts +74 -0
  2. package/3d/SpriteUtils.d.ts +13 -0
  3. package/3d/TextureUtils.d.ts +24 -0
  4. package/3d/ThreeRenderable.d.ts +40 -0
  5. package/3d/WGPURenderer.d.ts +61 -0
  6. package/3d/animation/ExplodingSpriteEffect.d.ts +71 -0
  7. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +76 -0
  8. package/3d/animation/SpriteAnimator.d.ts +124 -0
  9. package/3d/animation/SpriteParticleGenerator.d.ts +62 -0
  10. package/3d/canvas.d.ts +44 -0
  11. package/3d/index.d.ts +12 -0
  12. package/3d/physics/PlanckPhysicsAdapter.d.ts +19 -0
  13. package/3d/physics/RapierPhysicsAdapter.d.ts +19 -0
  14. package/3d/physics/physics-interface.d.ts +27 -0
  15. package/3d.d.ts +2 -0
  16. package/3d.js +34042 -0
  17. package/3d.js.map +155 -0
  18. package/LICENSE +21 -0
  19. package/NativeSpanFeed.d.ts +41 -0
  20. package/README.md +2 -2
  21. package/Renderable.d.ts +334 -0
  22. package/animation/Timeline.d.ts +126 -0
  23. package/ansi.d.ts +13 -0
  24. package/buffer.d.ts +107 -0
  25. package/console.d.ts +143 -0
  26. package/edit-buffer.d.ts +98 -0
  27. package/editor-view.d.ts +73 -0
  28. package/index-e6ec7apq.js +18415 -0
  29. package/index-e6ec7apq.js.map +64 -0
  30. package/index-h066zmrb.js +12619 -0
  31. package/index-h066zmrb.js.map +43 -0
  32. package/index-ynzawt3n.js +113 -0
  33. package/index-ynzawt3n.js.map +10 -0
  34. package/index.d.ts +21 -0
  35. package/index.js +430 -0
  36. package/index.js.map +9 -0
  37. package/lib/KeyHandler.d.ts +61 -0
  38. package/lib/RGBA.d.ts +25 -0
  39. package/lib/ascii.font.d.ts +508 -0
  40. package/lib/border.d.ts +49 -0
  41. package/lib/bunfs.d.ts +7 -0
  42. package/lib/clipboard.d.ts +17 -0
  43. package/lib/clock.d.ts +15 -0
  44. package/lib/data-paths.d.ts +26 -0
  45. package/lib/debounce.d.ts +42 -0
  46. package/lib/detect-links.d.ts +6 -0
  47. package/lib/env.d.ts +42 -0
  48. package/lib/extmarks-history.d.ts +17 -0
  49. package/lib/extmarks.d.ts +89 -0
  50. package/lib/hast-styled-text.d.ts +17 -0
  51. package/lib/index.d.ts +21 -0
  52. package/lib/keymapping.d.ts +25 -0
  53. package/lib/objects-in-viewport.d.ts +24 -0
  54. package/lib/output.capture.d.ts +24 -0
  55. package/lib/parse.keypress-kitty.d.ts +2 -0
  56. package/lib/parse.keypress.d.ts +26 -0
  57. package/lib/parse.mouse.d.ts +30 -0
  58. package/lib/paste.d.ts +7 -0
  59. package/lib/queue.d.ts +15 -0
  60. package/lib/renderable.validations.d.ts +12 -0
  61. package/lib/scroll-acceleration.d.ts +43 -0
  62. package/lib/selection.d.ts +63 -0
  63. package/lib/singleton.d.ts +7 -0
  64. package/lib/stdin-parser.d.ts +76 -0
  65. package/lib/styled-text.d.ts +63 -0
  66. package/lib/terminal-capability-detection.d.ts +30 -0
  67. package/lib/terminal-palette.d.ts +50 -0
  68. package/lib/tree-sitter/assets/update.d.ts +11 -0
  69. package/lib/tree-sitter/client.d.ts +47 -0
  70. package/lib/tree-sitter/default-parsers.d.ts +2 -0
  71. package/lib/tree-sitter/download-utils.d.ts +21 -0
  72. package/lib/tree-sitter/index.d.ts +8 -0
  73. package/lib/tree-sitter/parser.worker.d.ts +1 -0
  74. package/lib/tree-sitter/parsers-config.d.ts +38 -0
  75. package/lib/tree-sitter/resolve-ft.d.ts +2 -0
  76. package/lib/tree-sitter/types.d.ts +81 -0
  77. package/lib/tree-sitter-styled-text.d.ts +14 -0
  78. package/lib/validate-dir-name.d.ts +1 -0
  79. package/lib/yoga.options.d.ts +32 -0
  80. package/package.json +51 -63
  81. package/parser.worker.js +869 -0
  82. package/parser.worker.js.map +12 -0
  83. package/plugins/core-slot.d.ts +72 -0
  84. package/plugins/registry.d.ts +38 -0
  85. package/plugins/types.d.ts +34 -0
  86. package/post/filters.d.ts +105 -0
  87. package/renderables/ASCIIFont.d.ts +52 -0
  88. package/renderables/Box.d.ts +72 -0
  89. package/renderables/Code.d.ts +78 -0
  90. package/renderables/Diff.d.ts +142 -0
  91. package/renderables/EditBufferRenderable.d.ts +162 -0
  92. package/renderables/FrameBuffer.d.ts +16 -0
  93. package/renderables/Input.d.ts +67 -0
  94. package/renderables/LineNumberRenderable.d.ts +74 -0
  95. package/renderables/Markdown.d.ts +173 -0
  96. package/renderables/ScrollBar.d.ts +77 -0
  97. package/renderables/ScrollBox.d.ts +124 -0
  98. package/renderables/Select.d.ts +115 -0
  99. package/renderables/Slider.d.ts +44 -0
  100. package/renderables/TabSelect.d.ts +96 -0
  101. package/renderables/Text.d.ts +36 -0
  102. package/renderables/TextBufferRenderable.d.ts +105 -0
  103. package/renderables/TextNode.d.ts +91 -0
  104. package/renderables/TextTable.d.ts +140 -0
  105. package/renderables/Textarea.d.ts +114 -0
  106. package/renderables/TimeToFirstDraw.d.ts +24 -0
  107. package/renderables/__tests__/renderable-test-utils.d.ts +12 -0
  108. package/renderables/composition/VRenderable.d.ts +16 -0
  109. package/renderables/composition/constructs.d.ts +35 -0
  110. package/renderables/composition/vnode.d.ts +46 -0
  111. package/renderables/index.d.ts +22 -0
  112. package/renderables/markdown-parser.d.ts +10 -0
  113. package/renderer.d.ts +388 -0
  114. package/runtime-plugin-support.d.ts +3 -0
  115. package/runtime-plugin-support.js +29 -0
  116. package/runtime-plugin-support.js.map +10 -0
  117. package/runtime-plugin.d.ts +11 -0
  118. package/runtime-plugin.js +16 -0
  119. package/runtime-plugin.js.map +9 -0
  120. package/syntax-style.d.ts +54 -0
  121. package/testing/manual-clock.d.ts +16 -0
  122. package/testing/mock-keys.d.ts +81 -0
  123. package/testing/mock-mouse.d.ts +38 -0
  124. package/testing/mock-tree-sitter-client.d.ts +23 -0
  125. package/testing/spy.d.ts +7 -0
  126. package/testing/test-recorder.d.ts +61 -0
  127. package/testing/test-renderer.d.ts +23 -0
  128. package/testing.d.ts +6 -0
  129. package/testing.js +675 -0
  130. package/testing.js.map +15 -0
  131. package/text-buffer-view.d.ts +42 -0
  132. package/text-buffer.d.ts +67 -0
  133. package/types.d.ts +131 -0
  134. package/utils.d.ts +14 -0
  135. package/zig-structs.d.ts +155 -0
  136. package/zig.d.ts +351 -0
  137. package/dev/keypress-debug-renderer.ts +0 -148
  138. package/dev/keypress-debug.ts +0 -43
  139. package/dev/print-env-vars.ts +0 -32
  140. package/dev/test-tmux-graphics-334.sh +0 -68
  141. package/dev/thai-debug-test.ts +0 -68
  142. package/docs/development.md +0 -141
  143. package/docs/env-vars.md +0 -140
  144. package/docs/getting-started.md +0 -353
  145. package/docs/renderables-vs-constructs.md +0 -159
  146. package/docs/tree-sitter.md +0 -311
  147. package/scripts/build.ts +0 -400
  148. package/scripts/publish.ts +0 -60
  149. package/src/3d/SpriteResourceManager.ts +0 -286
  150. package/src/3d/SpriteUtils.ts +0 -71
  151. package/src/3d/TextureUtils.ts +0 -196
  152. package/src/3d/ThreeRenderable.ts +0 -197
  153. package/src/3d/WGPURenderer.ts +0 -294
  154. package/src/3d/animation/ExplodingSpriteEffect.ts +0 -513
  155. package/src/3d/animation/PhysicsExplodingSpriteEffect.ts +0 -429
  156. package/src/3d/animation/SpriteAnimator.ts +0 -633
  157. package/src/3d/animation/SpriteParticleGenerator.ts +0 -435
  158. package/src/3d/canvas.ts +0 -464
  159. package/src/3d/index.ts +0 -12
  160. package/src/3d/physics/PlanckPhysicsAdapter.ts +0 -72
  161. package/src/3d/physics/RapierPhysicsAdapter.ts +0 -66
  162. package/src/3d/physics/physics-interface.ts +0 -31
  163. package/src/3d/shaders/supersampling.wgsl +0 -201
  164. package/src/3d.ts +0 -3
  165. package/src/NativeSpanFeed.ts +0 -300
  166. package/src/Renderable.ts +0 -1698
  167. package/src/__snapshots__/buffer.test.ts.snap +0 -28
  168. package/src/animation/Timeline.test.ts +0 -2709
  169. package/src/animation/Timeline.ts +0 -598
  170. package/src/ansi.ts +0 -18
  171. package/src/benchmark/latest-all-bench-run.json +0 -707
  172. package/src/benchmark/latest-async-bench-run.json +0 -336
  173. package/src/benchmark/latest-default-bench-run.json +0 -657
  174. package/src/benchmark/latest-large-bench-run.json +0 -707
  175. package/src/benchmark/latest-quick-bench-run.json +0 -207
  176. package/src/benchmark/markdown-benchmark.ts +0 -1804
  177. package/src/benchmark/native-span-feed-async-benchmark.ts +0 -355
  178. package/src/benchmark/native-span-feed-benchmark.md +0 -56
  179. package/src/benchmark/native-span-feed-benchmark.ts +0 -596
  180. package/src/benchmark/native-span-feed-compare.ts +0 -280
  181. package/src/benchmark/renderer-benchmark.ts +0 -754
  182. package/src/benchmark/text-table-benchmark.ts +0 -947
  183. package/src/buffer.test.ts +0 -291
  184. package/src/buffer.ts +0 -519
  185. package/src/console.test.ts +0 -612
  186. package/src/console.ts +0 -1255
  187. package/src/edit-buffer.test.ts +0 -1769
  188. package/src/edit-buffer.ts +0 -411
  189. package/src/editor-view.test.ts +0 -1032
  190. package/src/editor-view.ts +0 -284
  191. package/src/examples/ascii-font-selection-demo.ts +0 -245
  192. package/src/examples/assets/Water_2_M_Normal.jpg +0 -0
  193. package/src/examples/assets/concrete.png +0 -0
  194. package/src/examples/assets/crate.png +0 -0
  195. package/src/examples/assets/crate_emissive.png +0 -0
  196. package/src/examples/assets/forrest_background.png +0 -0
  197. package/src/examples/assets/hast-example.json +0 -1018
  198. package/src/examples/assets/heart.png +0 -0
  199. package/src/examples/assets/main_char_heavy_attack.png +0 -0
  200. package/src/examples/assets/main_char_idle.png +0 -0
  201. package/src/examples/assets/main_char_jump_end.png +0 -0
  202. package/src/examples/assets/main_char_jump_landing.png +0 -0
  203. package/src/examples/assets/main_char_jump_start.png +0 -0
  204. package/src/examples/assets/main_char_run_loop.png +0 -0
  205. package/src/examples/assets/roughness_map.jpg +0 -0
  206. package/src/examples/build.ts +0 -115
  207. package/src/examples/code-demo.ts +0 -584
  208. package/src/examples/console-demo.ts +0 -358
  209. package/src/examples/core-plugin-slots-demo.ts +0 -759
  210. package/src/examples/diff-demo.ts +0 -699
  211. package/src/examples/draggable-three-demo.ts +0 -259
  212. package/src/examples/editor-demo.ts +0 -322
  213. package/src/examples/extmarks-demo.ts +0 -204
  214. package/src/examples/focus-restore-demo.ts +0 -310
  215. package/src/examples/fonts.ts +0 -245
  216. package/src/examples/fractal-shader-demo.ts +0 -268
  217. package/src/examples/framebuffer-demo.ts +0 -674
  218. package/src/examples/full-unicode-demo.ts +0 -181
  219. package/src/examples/golden-star-demo.ts +0 -933
  220. package/src/examples/grayscale-buffer-demo.ts +0 -249
  221. package/src/examples/hast-syntax-highlighting-demo.ts +0 -129
  222. package/src/examples/index.ts +0 -925
  223. package/src/examples/input-demo.ts +0 -377
  224. package/src/examples/input-select-layout-demo.ts +0 -425
  225. package/src/examples/install.sh +0 -143
  226. package/src/examples/keypress-debug-demo.ts +0 -452
  227. package/src/examples/lib/HexList.ts +0 -122
  228. package/src/examples/lib/PaletteGrid.ts +0 -125
  229. package/src/examples/lib/standalone-keys.ts +0 -25
  230. package/src/examples/lib/tab-controller.ts +0 -243
  231. package/src/examples/lights-phong-demo.ts +0 -290
  232. package/src/examples/link-demo.ts +0 -220
  233. package/src/examples/live-state-demo.ts +0 -480
  234. package/src/examples/markdown-demo.ts +0 -620
  235. package/src/examples/mouse-interaction-demo.ts +0 -428
  236. package/src/examples/nested-zindex-demo.ts +0 -357
  237. package/src/examples/opacity-example.ts +0 -235
  238. package/src/examples/opentui-demo.ts +0 -1057
  239. package/src/examples/physx-planck-2d-demo.ts +0 -507
  240. package/src/examples/physx-rapier-2d-demo.ts +0 -526
  241. package/src/examples/relative-positioning-demo.ts +0 -323
  242. package/src/examples/scroll-example.ts +0 -214
  243. package/src/examples/scrollbox-mouse-test.ts +0 -112
  244. package/src/examples/scrollbox-overlay-hit-test.ts +0 -206
  245. package/src/examples/select-demo.ts +0 -237
  246. package/src/examples/shader-cube-demo.ts +0 -772
  247. package/src/examples/simple-layout-example.ts +0 -591
  248. package/src/examples/slider-demo.ts +0 -617
  249. package/src/examples/split-mode-demo.ts +0 -445
  250. package/src/examples/sprite-animation-demo.ts +0 -443
  251. package/src/examples/sprite-particle-generator-demo.ts +0 -486
  252. package/src/examples/static-sprite-demo.ts +0 -193
  253. package/src/examples/sticky-scroll-example.ts +0 -308
  254. package/src/examples/styled-text-demo.ts +0 -282
  255. package/src/examples/tab-select-demo.ts +0 -219
  256. package/src/examples/terminal-title.ts +0 -29
  257. package/src/examples/terminal.ts +0 -305
  258. package/src/examples/text-node-demo.ts +0 -416
  259. package/src/examples/text-selection-demo.ts +0 -377
  260. package/src/examples/text-table-demo.ts +0 -503
  261. package/src/examples/text-truncation-demo.ts +0 -481
  262. package/src/examples/text-wrap.ts +0 -757
  263. package/src/examples/texture-loading-demo.ts +0 -259
  264. package/src/examples/timeline-example.ts +0 -670
  265. package/src/examples/transparency-demo.ts +0 -241
  266. package/src/examples/vnode-composition-demo.ts +0 -404
  267. package/src/index.ts +0 -22
  268. package/src/lib/KeyHandler.integration.test.ts +0 -292
  269. package/src/lib/KeyHandler.stopPropagation.test.ts +0 -289
  270. package/src/lib/KeyHandler.test.ts +0 -662
  271. package/src/lib/KeyHandler.ts +0 -222
  272. package/src/lib/RGBA.test.ts +0 -984
  273. package/src/lib/RGBA.ts +0 -204
  274. package/src/lib/ascii.font.ts +0 -330
  275. package/src/lib/border.test.ts +0 -83
  276. package/src/lib/border.ts +0 -168
  277. package/src/lib/bunfs.test.ts +0 -27
  278. package/src/lib/bunfs.ts +0 -18
  279. package/src/lib/clipboard.test.ts +0 -41
  280. package/src/lib/clipboard.ts +0 -47
  281. package/src/lib/clock.ts +0 -31
  282. package/src/lib/data-paths.test.ts +0 -133
  283. package/src/lib/data-paths.ts +0 -109
  284. package/src/lib/debounce.ts +0 -106
  285. package/src/lib/detect-links.test.ts +0 -98
  286. package/src/lib/detect-links.ts +0 -56
  287. package/src/lib/env.test.ts +0 -228
  288. package/src/lib/env.ts +0 -209
  289. package/src/lib/extmarks-history.ts +0 -51
  290. package/src/lib/extmarks-multiwidth.test.ts +0 -322
  291. package/src/lib/extmarks.test.ts +0 -3457
  292. package/src/lib/extmarks.ts +0 -843
  293. package/src/lib/fonts/block.json +0 -405
  294. package/src/lib/fonts/grid.json +0 -265
  295. package/src/lib/fonts/huge.json +0 -741
  296. package/src/lib/fonts/pallet.json +0 -314
  297. package/src/lib/fonts/shade.json +0 -591
  298. package/src/lib/fonts/slick.json +0 -321
  299. package/src/lib/fonts/tiny.json +0 -69
  300. package/src/lib/hast-styled-text.ts +0 -59
  301. package/src/lib/index.ts +0 -21
  302. package/src/lib/keymapping.test.ts +0 -280
  303. package/src/lib/keymapping.ts +0 -87
  304. package/src/lib/objects-in-viewport.test.ts +0 -787
  305. package/src/lib/objects-in-viewport.ts +0 -153
  306. package/src/lib/output.capture.ts +0 -58
  307. package/src/lib/parse.keypress-kitty.protocol.test.ts +0 -340
  308. package/src/lib/parse.keypress-kitty.test.ts +0 -663
  309. package/src/lib/parse.keypress-kitty.ts +0 -439
  310. package/src/lib/parse.keypress.test.ts +0 -1849
  311. package/src/lib/parse.keypress.ts +0 -397
  312. package/src/lib/parse.mouse.test.ts +0 -552
  313. package/src/lib/parse.mouse.ts +0 -232
  314. package/src/lib/paste.ts +0 -16
  315. package/src/lib/queue.ts +0 -65
  316. package/src/lib/renderable.validations.test.ts +0 -87
  317. package/src/lib/renderable.validations.ts +0 -83
  318. package/src/lib/scroll-acceleration.ts +0 -98
  319. package/src/lib/selection.ts +0 -240
  320. package/src/lib/singleton.ts +0 -28
  321. package/src/lib/stdin-parser.test.ts +0 -1676
  322. package/src/lib/stdin-parser.ts +0 -1248
  323. package/src/lib/styled-text.ts +0 -178
  324. package/src/lib/terminal-capability-detection.test.ts +0 -202
  325. package/src/lib/terminal-capability-detection.ts +0 -79
  326. package/src/lib/terminal-palette.test.ts +0 -878
  327. package/src/lib/terminal-palette.ts +0 -383
  328. package/src/lib/tree-sitter/assets/README.md +0 -118
  329. package/src/lib/tree-sitter/assets/update.ts +0 -331
  330. package/src/lib/tree-sitter/assets.d.ts +0 -9
  331. package/src/lib/tree-sitter/cache.test.ts +0 -270
  332. package/src/lib/tree-sitter/client.test.ts +0 -1061
  333. package/src/lib/tree-sitter/client.ts +0 -615
  334. package/src/lib/tree-sitter/default-parsers.ts +0 -80
  335. package/src/lib/tree-sitter/download-utils.ts +0 -148
  336. package/src/lib/tree-sitter/index.ts +0 -28
  337. package/src/lib/tree-sitter/parser.worker.ts +0 -1001
  338. package/src/lib/tree-sitter/parsers-config.ts +0 -75
  339. package/src/lib/tree-sitter/resolve-ft.ts +0 -62
  340. package/src/lib/tree-sitter/types.ts +0 -81
  341. package/src/lib/tree-sitter-styled-text.test.ts +0 -1253
  342. package/src/lib/tree-sitter-styled-text.ts +0 -306
  343. package/src/lib/validate-dir-name.ts +0 -55
  344. package/src/lib/yoga.options.test.ts +0 -628
  345. package/src/lib/yoga.options.ts +0 -346
  346. package/src/plugins/core-slot.ts +0 -579
  347. package/src/plugins/registry.ts +0 -377
  348. package/src/plugins/types.ts +0 -46
  349. package/src/post/filters.ts +0 -888
  350. package/src/renderables/ASCIIFont.ts +0 -219
  351. package/src/renderables/Box.test.ts +0 -160
  352. package/src/renderables/Box.ts +0 -295
  353. package/src/renderables/Code.test.ts +0 -2062
  354. package/src/renderables/Code.ts +0 -357
  355. package/src/renderables/Diff.regression.test.ts +0 -226
  356. package/src/renderables/Diff.test.ts +0 -3027
  357. package/src/renderables/Diff.ts +0 -1209
  358. package/src/renderables/EditBufferRenderable.ts +0 -764
  359. package/src/renderables/FrameBuffer.ts +0 -47
  360. package/src/renderables/Input.test.ts +0 -1228
  361. package/src/renderables/Input.ts +0 -245
  362. package/src/renderables/LineNumberRenderable.ts +0 -675
  363. package/src/renderables/Markdown.ts +0 -1106
  364. package/src/renderables/ScrollBar.ts +0 -422
  365. package/src/renderables/ScrollBox.ts +0 -883
  366. package/src/renderables/Select.test.ts +0 -1010
  367. package/src/renderables/Select.ts +0 -523
  368. package/src/renderables/Slider.test.ts +0 -456
  369. package/src/renderables/Slider.ts +0 -347
  370. package/src/renderables/TabSelect.test.ts +0 -197
  371. package/src/renderables/TabSelect.ts +0 -455
  372. package/src/renderables/Text.selection-buffer.test.ts +0 -123
  373. package/src/renderables/Text.test.ts +0 -2660
  374. package/src/renderables/Text.ts +0 -147
  375. package/src/renderables/TextBufferRenderable.ts +0 -518
  376. package/src/renderables/TextNode.test.ts +0 -1058
  377. package/src/renderables/TextNode.ts +0 -325
  378. package/src/renderables/TextTable.test.ts +0 -1421
  379. package/src/renderables/TextTable.ts +0 -1344
  380. package/src/renderables/Textarea.ts +0 -732
  381. package/src/renderables/TimeToFirstDraw.ts +0 -89
  382. package/src/renderables/__snapshots__/Code.test.ts.snap +0 -13
  383. package/src/renderables/__snapshots__/Diff.test.ts.snap +0 -785
  384. package/src/renderables/__snapshots__/Text.test.ts.snap +0 -421
  385. package/src/renderables/__snapshots__/TextTable.test.ts.snap +0 -215
  386. package/src/renderables/__tests__/LineNumberRenderable.scrollbox-simple.test.ts +0 -144
  387. package/src/renderables/__tests__/LineNumberRenderable.scrollbox.test.ts +0 -816
  388. package/src/renderables/__tests__/LineNumberRenderable.test.ts +0 -1787
  389. package/src/renderables/__tests__/LineNumberRenderable.wrapping.test.ts +0 -85
  390. package/src/renderables/__tests__/Markdown.test.ts +0 -2287
  391. package/src/renderables/__tests__/MultiRenderable.selection.test.ts +0 -87
  392. package/src/renderables/__tests__/Textarea.buffer.test.ts +0 -682
  393. package/src/renderables/__tests__/Textarea.destroyed-events.test.ts +0 -675
  394. package/src/renderables/__tests__/Textarea.editing.test.ts +0 -2041
  395. package/src/renderables/__tests__/Textarea.error-handling.test.ts +0 -35
  396. package/src/renderables/__tests__/Textarea.events.test.ts +0 -738
  397. package/src/renderables/__tests__/Textarea.highlights.test.ts +0 -590
  398. package/src/renderables/__tests__/Textarea.keybinding.test.ts +0 -3149
  399. package/src/renderables/__tests__/Textarea.paste.test.ts +0 -357
  400. package/src/renderables/__tests__/Textarea.rendering.test.ts +0 -1864
  401. package/src/renderables/__tests__/Textarea.scroll.test.ts +0 -733
  402. package/src/renderables/__tests__/Textarea.selection.test.ts +0 -1590
  403. package/src/renderables/__tests__/Textarea.stress.test.ts +0 -670
  404. package/src/renderables/__tests__/Textarea.undo-redo.test.ts +0 -383
  405. package/src/renderables/__tests__/Textarea.visual-lines.test.ts +0 -310
  406. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.code.test.ts.snap +0 -221
  407. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox-simple.test.ts.snap +0 -89
  408. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox.test.ts.snap +0 -457
  409. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.test.ts.snap +0 -158
  410. package/src/renderables/__tests__/__snapshots__/Textarea.rendering.test.ts.snap +0 -387
  411. package/src/renderables/__tests__/markdown-parser.test.ts +0 -217
  412. package/src/renderables/__tests__/renderable-test-utils.ts +0 -60
  413. package/src/renderables/composition/README.md +0 -8
  414. package/src/renderables/composition/VRenderable.ts +0 -32
  415. package/src/renderables/composition/constructs.ts +0 -127
  416. package/src/renderables/composition/vnode.ts +0 -289
  417. package/src/renderables/index.ts +0 -22
  418. package/src/renderables/markdown-parser.ts +0 -66
  419. package/src/renderer.ts +0 -2363
  420. package/src/runtime-plugin-support.ts +0 -39
  421. package/src/runtime-plugin.ts +0 -144
  422. package/src/syntax-style.test.ts +0 -841
  423. package/src/syntax-style.ts +0 -264
  424. package/src/testing/README.md +0 -210
  425. package/src/testing/capture-spans.test.ts +0 -194
  426. package/src/testing/integration.test.ts +0 -276
  427. package/src/testing/manual-clock.ts +0 -106
  428. package/src/testing/mock-keys.test.ts +0 -1356
  429. package/src/testing/mock-keys.ts +0 -449
  430. package/src/testing/mock-mouse.test.ts +0 -218
  431. package/src/testing/mock-mouse.ts +0 -247
  432. package/src/testing/mock-tree-sitter-client.ts +0 -73
  433. package/src/testing/spy.ts +0 -13
  434. package/src/testing/test-recorder.test.ts +0 -415
  435. package/src/testing/test-recorder.ts +0 -145
  436. package/src/testing/test-renderer.ts +0 -116
  437. package/src/testing.ts +0 -7
  438. package/src/tests/__snapshots__/absolute-positioning.snapshot.test.ts.snap +0 -481
  439. package/src/tests/__snapshots__/renderable.snapshot.test.ts.snap +0 -19
  440. package/src/tests/__snapshots__/scrollbox.test.ts.snap +0 -29
  441. package/src/tests/absolute-positioning.snapshot.test.ts +0 -638
  442. package/src/tests/allocator-stats.test.ts +0 -38
  443. package/src/tests/destroy-during-render.test.ts +0 -200
  444. package/src/tests/hover-cursor.test.ts +0 -98
  445. package/src/tests/native-span-feed-async.test.ts +0 -173
  446. package/src/tests/native-span-feed-close.test.ts +0 -120
  447. package/src/tests/native-span-feed-coverage.test.ts +0 -227
  448. package/src/tests/native-span-feed-edge-cases.test.ts +0 -352
  449. package/src/tests/native-span-feed-use-after-free.test.ts +0 -45
  450. package/src/tests/opacity.test.ts +0 -123
  451. package/src/tests/renderable.snapshot.test.ts +0 -524
  452. package/src/tests/renderable.test.ts +0 -1281
  453. package/src/tests/renderer.console-startup.test.ts +0 -65
  454. package/src/tests/renderer.control.test.ts +0 -364
  455. package/src/tests/renderer.core-slot-binding.test.ts +0 -952
  456. package/src/tests/renderer.cursor.test.ts +0 -26
  457. package/src/tests/renderer.destroy-during-render.test.ts +0 -110
  458. package/src/tests/renderer.focus-restore.test.ts +0 -228
  459. package/src/tests/renderer.focus.test.ts +0 -251
  460. package/src/tests/renderer.idle.test.ts +0 -219
  461. package/src/tests/renderer.input.test.ts +0 -2145
  462. package/src/tests/renderer.kitty-flags.test.ts +0 -195
  463. package/src/tests/renderer.mouse.test.ts +0 -1269
  464. package/src/tests/renderer.palette.test.ts +0 -629
  465. package/src/tests/renderer.selection.test.ts +0 -49
  466. package/src/tests/renderer.slot-registry.test.ts +0 -649
  467. package/src/tests/renderer.useMouse.test.ts +0 -50
  468. package/src/tests/runtime-plugin-support.fixture.ts +0 -11
  469. package/src/tests/runtime-plugin-support.test.ts +0 -28
  470. package/src/tests/runtime-plugin.fixture.ts +0 -40
  471. package/src/tests/runtime-plugin.test.ts +0 -190
  472. package/src/tests/scrollbox-culling-bug.test.ts +0 -114
  473. package/src/tests/scrollbox-hitgrid-resize.test.ts +0 -136
  474. package/src/tests/scrollbox-hitgrid.test.ts +0 -909
  475. package/src/tests/scrollbox.test.ts +0 -1530
  476. package/src/tests/wrap-resize-perf.test.ts +0 -229
  477. package/src/tests/yoga-setters.test.ts +0 -921
  478. package/src/text-buffer-view.test.ts +0 -705
  479. package/src/text-buffer-view.ts +0 -189
  480. package/src/text-buffer.test.ts +0 -347
  481. package/src/text-buffer.ts +0 -250
  482. package/src/types.ts +0 -152
  483. package/src/utils.ts +0 -88
  484. package/src/zig/ansi.zig +0 -268
  485. package/src/zig/bench/README.md +0 -50
  486. package/src/zig/bench/buffer-draw-text-buffer_bench.zig +0 -887
  487. package/src/zig/bench/edit-buffer_bench.zig +0 -476
  488. package/src/zig/bench/native-span-feed_bench.zig +0 -100
  489. package/src/zig/bench/rope-markers_bench.zig +0 -713
  490. package/src/zig/bench/rope_bench.zig +0 -514
  491. package/src/zig/bench/styled-text_bench.zig +0 -470
  492. package/src/zig/bench/text-buffer-coords_bench.zig +0 -362
  493. package/src/zig/bench/text-buffer-view_bench.zig +0 -459
  494. package/src/zig/bench/text-chunk-graphemes_bench.zig +0 -273
  495. package/src/zig/bench/utf8_bench.zig +0 -799
  496. package/src/zig/bench-utils.zig +0 -431
  497. package/src/zig/bench.zig +0 -217
  498. package/src/zig/buffer.zig +0 -2223
  499. package/src/zig/build.zig +0 -289
  500. package/src/zig/build.zig.zon +0 -16
  501. package/src/zig/edit-buffer.zig +0 -825
  502. package/src/zig/editor-view.zig +0 -802
  503. package/src/zig/event-bus.zig +0 -13
  504. package/src/zig/event-emitter.zig +0 -65
  505. package/src/zig/file-logger.zig +0 -92
  506. package/src/zig/grapheme.zig +0 -599
  507. package/src/zig/lib.zig +0 -1834
  508. package/src/zig/link.zig +0 -333
  509. package/src/zig/logger.zig +0 -43
  510. package/src/zig/mem-registry.zig +0 -125
  511. package/src/zig/native-span-feed-bench-lib.zig +0 -7
  512. package/src/zig/native-span-feed.zig +0 -708
  513. package/src/zig/renderer.zig +0 -1386
  514. package/src/zig/rope.zig +0 -1220
  515. package/src/zig/syntax-style.zig +0 -161
  516. package/src/zig/terminal.zig +0 -975
  517. package/src/zig/test.zig +0 -70
  518. package/src/zig/tests/README.md +0 -18
  519. package/src/zig/tests/buffer_test.zig +0 -2526
  520. package/src/zig/tests/edit-buffer-history_test.zig +0 -271
  521. package/src/zig/tests/edit-buffer_test.zig +0 -1689
  522. package/src/zig/tests/editor-view_test.zig +0 -3299
  523. package/src/zig/tests/event-emitter_test.zig +0 -249
  524. package/src/zig/tests/grapheme_test.zig +0 -1304
  525. package/src/zig/tests/link_test.zig +0 -190
  526. package/src/zig/tests/mem-registry_test.zig +0 -473
  527. package/src/zig/tests/memory_leak_regression_test.zig +0 -159
  528. package/src/zig/tests/native-span-feed_test.zig +0 -1264
  529. package/src/zig/tests/renderer_test.zig +0 -1010
  530. package/src/zig/tests/rope-nested_test.zig +0 -712
  531. package/src/zig/tests/rope_fuzz_test.zig +0 -238
  532. package/src/zig/tests/rope_test.zig +0 -2362
  533. package/src/zig/tests/segment-merge.test.zig +0 -148
  534. package/src/zig/tests/syntax-style_test.zig +0 -557
  535. package/src/zig/tests/terminal_test.zig +0 -719
  536. package/src/zig/tests/text-buffer-drawing_test.zig +0 -3237
  537. package/src/zig/tests/text-buffer-highlights_test.zig +0 -666
  538. package/src/zig/tests/text-buffer-iterators_test.zig +0 -776
  539. package/src/zig/tests/text-buffer-segment_test.zig +0 -320
  540. package/src/zig/tests/text-buffer-selection_test.zig +0 -1035
  541. package/src/zig/tests/text-buffer-selection_viewport_test.zig +0 -358
  542. package/src/zig/tests/text-buffer-view_test.zig +0 -3649
  543. package/src/zig/tests/text-buffer_test.zig +0 -2191
  544. package/src/zig/tests/unicode-width-map.zon +0 -3909
  545. package/src/zig/tests/utf8_no_zwj_test.zig +0 -260
  546. package/src/zig/tests/utf8_test.zig +0 -4057
  547. package/src/zig/tests/utf8_wcwidth_cursor_test.zig +0 -267
  548. package/src/zig/tests/utf8_wcwidth_test.zig +0 -357
  549. package/src/zig/tests/word-wrap-editing_test.zig +0 -498
  550. package/src/zig/tests/wrap-cache-perf_test.zig +0 -113
  551. package/src/zig/text-buffer-iterators.zig +0 -499
  552. package/src/zig/text-buffer-segment.zig +0 -404
  553. package/src/zig/text-buffer-view.zig +0 -1371
  554. package/src/zig/text-buffer.zig +0 -1180
  555. package/src/zig/utf8.zig +0 -1948
  556. package/src/zig/utils.zig +0 -9
  557. package/src/zig-structs.ts +0 -261
  558. package/src/zig.ts +0 -3843
  559. package/tsconfig.build.json +0 -22
  560. package/tsconfig.json +0 -28
  561. /package/{src/lib/tree-sitter/assets → assets}/javascript/highlights.scm +0 -0
  562. /package/{src/lib/tree-sitter/assets → assets}/javascript/tree-sitter-javascript.wasm +0 -0
  563. /package/{src/lib/tree-sitter/assets → assets}/markdown/highlights.scm +0 -0
  564. /package/{src/lib/tree-sitter/assets → assets}/markdown/injections.scm +0 -0
  565. /package/{src/lib/tree-sitter/assets → assets}/markdown/tree-sitter-markdown.wasm +0 -0
  566. /package/{src/lib/tree-sitter/assets → assets}/markdown_inline/highlights.scm +0 -0
  567. /package/{src/lib/tree-sitter/assets → assets}/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  568. /package/{src/lib/tree-sitter/assets → assets}/typescript/highlights.scm +0 -0
  569. /package/{src/lib/tree-sitter/assets → assets}/typescript/tree-sitter-typescript.wasm +0 -0
  570. /package/{src/lib/tree-sitter/assets → assets}/zig/highlights.scm +0 -0
  571. /package/{src/lib/tree-sitter/assets → assets}/zig/tree-sitter-zig.wasm +0 -0
@@ -1,503 +0,0 @@
1
- import {
2
- BoxRenderable,
3
- CliRenderer,
4
- ScrollBoxRenderable,
5
- TextTableRenderable,
6
- TextRenderable,
7
- bold,
8
- createCliRenderer,
9
- fg,
10
- t,
11
- type BorderStyle,
12
- type KeyEvent,
13
- } from "../index"
14
- import type { Selection } from "../lib/selection"
15
- import type { TextTableColumnFitter, TextTableColumnWidthMode, TextTableContent } from "../renderables/TextTable"
16
- import type { TextChunk } from "../text-buffer"
17
- import { setupCommonDemoKeys } from "./lib/standalone-keys"
18
-
19
- let container: BoxRenderable | null = null
20
- let primaryTable: TextTableRenderable | null = null
21
- let unicodeTable: TextTableRenderable | null = null
22
- let controlsText: TextRenderable | null = null
23
- let tableAreaScrollBox: ScrollBoxRenderable | null = null
24
- let selectionStatusText: TextRenderable | null = null
25
- let selectionMetaText: TextRenderable | null = null
26
- let selectionScrollBox: ScrollBoxRenderable | null = null
27
- let keyboardHandler: ((key: KeyEvent) => void) | null = null
28
- let selectionHandler: ((selection: Selection) => void) | null = null
29
-
30
- let contentIndex = 0
31
- let wrapIndex = 1
32
- let borderIndex = 0
33
- let columnWidthModeIndex = 0
34
- let columnFitterIndex = 0
35
- let cellPaddingIndex = 0
36
- let borderEnabled = true
37
- let outerBorderEnabled = true
38
- let showBordersEnabled = true
39
-
40
- const PALETTE = {
41
- bg: "#000000",
42
- panel: "#0d0d0d",
43
- tablePrimaryBg: "transparent",
44
- tableUnicodeBg: "transparent",
45
- text: "#f0f0f0",
46
- muted: "#666666",
47
- soft: "#bbbbbb",
48
- rose: "#e8c97a",
49
- ember: "#b8a0ff",
50
- flame: "#ffffff",
51
- eye: "#00d4aa",
52
- border: "#2a2a2a",
53
- } as const
54
-
55
- const WRAP_MODES: Array<"none" | "word" | "char"> = ["none", "word", "char"]
56
- const BORDER_STYLES: BorderStyle[] = ["single", "rounded", "double", "heavy"]
57
- const COLUMN_WIDTH_MODES: TextTableColumnWidthMode[] = ["content", "full"]
58
- const COLUMN_FITTERS: TextTableColumnFitter[] = ["proportional", "balanced"]
59
- const CELL_PADDING_VALUES: number[] = [0, 1, 2]
60
-
61
- function cell(text: string): TextChunk[] {
62
- return [
63
- {
64
- __isChunk: true,
65
- text,
66
- },
67
- ]
68
- }
69
-
70
- const primaryContentSets: TextTableContent[] = [
71
- [
72
- [[bold("Service")], [bold("Status")], [bold("Notes")]],
73
- [cell("api"), [fg(PALETTE.eye)("OK")], [fg(PALETTE.muted)("latency"), ...cell(" 28ms")]],
74
- [cell("worker"), [fg(PALETTE.ember)("DEGRADED")], cell("queue depth: 124")],
75
- [cell("billing"), [fg(PALETTE.flame)("ERROR")], cell("retrying payment provider")],
76
- ],
77
- [
78
- [[bold("Region")], [bold("Requests")], [bold("Trend")]],
79
- [cell("us-east-1"), cell("1.2M"), [fg(PALETTE.eye)("+12.4%")]],
80
- [cell("eu-west-1"), cell("890K"), [fg(PALETTE.soft)("+5.1%")]],
81
- [cell("ap-south-1"), cell("540K"), [fg(PALETTE.flame)("-2.0%")]],
82
- ],
83
- [
84
- [[bold("Task")], [bold("Owner")], [bold("ETA")]],
85
- [
86
- cell(
87
- "Wrap regression in operational status dashboard with dynamic row heights and constrained layout validation",
88
- ),
89
- cell("core platform and runtime reliability squad"),
90
- [
91
- fg(PALETTE.eye)(
92
- "done after validating none, word, and char wrap modes across narrow, medium, wide, and ultra-wide terminal widths",
93
- ),
94
- ],
95
- ],
96
- [
97
- cell(
98
- "Unicode layout stabilization for mixed Latin, punctuation, symbols, and long identifiers in adjacent columns",
99
- ),
100
- cell("render pipeline maintainers with fallback shaping support"),
101
- cell(
102
- "in review with follow-up checks for border style transitions, cell padding variants, and selection range consistency",
103
- ),
104
- ],
105
- [
106
- cell("Snapshot pass for table rendering in content mode and full mode with heavy and double border combinations"),
107
- cell("qa automation and visual diff triage group"),
108
- cell(
109
- "today pending final baseline updates for oversized fixtures that intentionally stress wrapping behavior on high-resolution terminals",
110
- ),
111
- ],
112
- [
113
- cell(
114
- "Document edge cases where long tokens without spaces force char wrapping and reveal per-cell clipping regressions",
115
- ),
116
- cell("developer experience and docs tooling"),
117
- cell(
118
- "planned for this sprint once final reproducible examples are captured and linked to regression tracking tickets",
119
- ),
120
- ],
121
- [
122
- cell(
123
- "Performance sweep of wrapping algorithm under large datasets to confirm stable frame times during rapid key toggling",
124
- ),
125
- cell("runtime performance task force"),
126
- cell("scheduled after review, with benchmark runs on laptop and desktop terminals at 200-plus column widths"),
127
- ],
128
- ],
129
- ]
130
-
131
- const unicodeContentSets: TextTableContent[] = [
132
- [
133
- [[bold("Locale")], [bold("Sample")]],
134
- [cell("ja-JP"), cell("東京の夜景と絵文字 🌃✨")],
135
- [cell("zh-CN"), cell("你好世界,布局检查中 🚀")],
136
- [cell("ko-KR"), cell("한글과 이모지 조합 테스트 😄")],
137
- ],
138
- [
139
- [[bold("Expression")], [bold("Meaning")]],
140
- [cell("山川异域"), cell("Different lands, shared sky 🌏")],
141
- [cell("꽃길만 걷자"), cell("Walk only flower paths 🌸")],
142
- [cell("加油"), cell("Keep pushing forward 💪")],
143
- ],
144
- [
145
- [[bold("Column")], [bold("Wrapped Text")]],
146
- [
147
- cell("mixed-languages"),
148
- cell(
149
- "CJK and emoji wrapping stress case: こんにちは世界 and 안녕하세요 세계 and 你好,世界 followed by long English prose that keeps flowing to test whether each cell wraps naturally even when the terminal is extremely wide and the row still needs multiple visual lines for readability 🌍🚀",
150
- ),
151
- ],
152
- [
153
- cell("emoji-and-symbols"),
154
- cell(
155
- "Faces 😀😃😄😁😆 plus symbols 🧪📦🛰️🔧📊 mixed with version tags like release-candidate-build-2026-02-very-long-token-without-breaks to ensure char wrapping remains stable and no glyph alignment issues appear at column boundaries",
156
- ),
157
- ],
158
- [
159
- cell("long-cjk-phrase"),
160
- cell(
161
- "長文の日本語テキストと中文段落和한국어문장을連続して配置し、その後に additional English context describing renderer behavior, border intersection handling, and selection extraction so that this single cell remains a reliable wrapping torture test.",
162
- ),
163
- ],
164
- [
165
- cell("mixed-punctuation"),
166
- cell(
167
- "Wrap behavior with punctuation-heavy content: [alpha]{beta}(gamma)<delta>|epsilon| then repeated fragments, commas, semicolons, and slashes to verify token boundaries do not break border drawing logic or spacing consistency in neighboring columns.",
168
- ),
169
- ],
170
- ],
171
- ]
172
-
173
- function currentWrapMode(): "none" | "word" | "char" {
174
- return WRAP_MODES[wrapIndex] ?? "word"
175
- }
176
-
177
- function currentBorderStyle(): BorderStyle {
178
- return BORDER_STYLES[borderIndex] ?? "single"
179
- }
180
-
181
- function currentColumnWidthMode(): TextTableColumnWidthMode {
182
- return COLUMN_WIDTH_MODES[columnWidthModeIndex] ?? "content"
183
- }
184
-
185
- function currentColumnFitter(): TextTableColumnFitter {
186
- return COLUMN_FITTERS[columnFitterIndex] ?? "proportional"
187
- }
188
-
189
- function currentCellPadding(): number {
190
- return CELL_PADDING_VALUES[cellPaddingIndex] ?? 0
191
- }
192
-
193
- function updateControlsText(): void {
194
- if (!controlsText) return
195
-
196
- controlsText.content = t`${bold("TextTable Demo")} ${fg(PALETTE.muted)("1/2/3 dataset • W wrap • B style • M width • F fitter • P padding • N inner • O outer • H draw • drag to select • C clear")}
197
- Current: dataset ${fg(PALETTE.soft)(String(contentIndex + 1))} | wrap ${fg(PALETTE.rose)(currentWrapMode())} | style ${fg(PALETTE.ember)(currentBorderStyle())} | width ${fg(PALETTE.eye)(currentColumnWidthMode())} | fitter ${fg(PALETTE.rose)(currentColumnFitter())} | padding ${fg(PALETTE.soft)(String(currentCellPadding()))} | inner ${fg(PALETTE.rose)(borderEnabled ? "on" : "off")} | outer ${fg(PALETTE.ember)(outerBorderEnabled ? "on" : "off")} | draw ${fg(PALETTE.eye)(showBordersEnabled ? "on" : "off")}`
198
- }
199
-
200
- function clearSelectionStatus(message: string): void {
201
- if (!selectionMetaText || !selectionStatusText) return
202
- selectionMetaText.content = message
203
- selectionStatusText.content = ""
204
- if (selectionScrollBox) {
205
- selectionScrollBox.scrollTop = 0
206
- }
207
- }
208
-
209
- function applyTableState(): void {
210
- if (!primaryTable || !unicodeTable) return
211
-
212
- primaryTable.content = primaryContentSets[contentIndex] ?? primaryContentSets[0]
213
- unicodeTable.content = unicodeContentSets[contentIndex] ?? unicodeContentSets[0]
214
-
215
- primaryTable.wrapMode = currentWrapMode()
216
- unicodeTable.wrapMode = currentWrapMode()
217
-
218
- primaryTable.borderStyle = currentBorderStyle()
219
- unicodeTable.borderStyle = currentBorderStyle()
220
-
221
- primaryTable.columnWidthMode = currentColumnWidthMode()
222
- unicodeTable.columnWidthMode = currentColumnWidthMode()
223
-
224
- primaryTable.columnFitter = currentColumnFitter()
225
- unicodeTable.columnFitter = currentColumnFitter()
226
-
227
- primaryTable.cellPadding = currentCellPadding()
228
- unicodeTable.cellPadding = currentCellPadding()
229
-
230
- primaryTable.border = borderEnabled
231
- unicodeTable.border = borderEnabled
232
-
233
- primaryTable.outerBorder = outerBorderEnabled
234
- unicodeTable.outerBorder = outerBorderEnabled
235
-
236
- primaryTable.showBorders = showBordersEnabled
237
- unicodeTable.showBorders = showBordersEnabled
238
-
239
- updateControlsText()
240
- }
241
-
242
- export function run(renderer: CliRenderer): void {
243
- renderer.setBackgroundColor("transparent")
244
-
245
- container = new BoxRenderable(renderer, {
246
- id: "text-table-demo-container",
247
- width: "100%",
248
- height: "100%",
249
- flexDirection: "column",
250
- padding: 1,
251
- gap: 1,
252
- backgroundColor: "transparent",
253
- })
254
- renderer.root.add(container)
255
-
256
- controlsText = new TextRenderable(renderer, {
257
- id: "text-table-demo-controls",
258
- content: "",
259
- fg: PALETTE.text,
260
- wrapMode: "word",
261
- selectable: false,
262
- })
263
-
264
- tableAreaScrollBox = new ScrollBoxRenderable(renderer, {
265
- id: "text-table-demo-table-area-scroll",
266
- width: "100%",
267
- flexGrow: 1,
268
- flexShrink: 1,
269
- scrollY: true,
270
- scrollX: false,
271
- border: false,
272
- backgroundColor: "transparent",
273
- contentOptions: {
274
- flexDirection: "column",
275
- gap: 1,
276
- },
277
- })
278
-
279
- const primaryLabel = new TextRenderable(renderer, {
280
- id: "text-table-demo-primary-label",
281
- content: t`${bold("Operational Table")}`,
282
- fg: PALETTE.ember,
283
- selectable: false,
284
- })
285
-
286
- primaryTable = new TextTableRenderable(renderer, {
287
- id: "text-table-demo-primary",
288
- width: "100%",
289
- wrapMode: currentWrapMode(),
290
- columnFitter: currentColumnFitter(),
291
- borderStyle: currentBorderStyle(),
292
- borderColor: PALETTE.ember,
293
- fg: PALETTE.text,
294
- bg: PALETTE.tablePrimaryBg,
295
- content: primaryContentSets[contentIndex] ?? primaryContentSets[0],
296
- })
297
-
298
- const unicodeLabel = new TextRenderable(renderer, {
299
- id: "text-table-demo-unicode-label",
300
- content: t`${bold("Unicode/CJK/Emoji Table")}`,
301
- fg: PALETTE.rose,
302
- selectable: false,
303
- })
304
-
305
- unicodeTable = new TextTableRenderable(renderer, {
306
- id: "text-table-demo-unicode",
307
- width: "100%",
308
- wrapMode: currentWrapMode(),
309
- columnFitter: currentColumnFitter(),
310
- borderStyle: currentBorderStyle(),
311
- borderColor: PALETTE.rose,
312
- fg: PALETTE.text,
313
- bg: PALETTE.tableUnicodeBg,
314
- content: unicodeContentSets[contentIndex] ?? unicodeContentSets[0],
315
- })
316
-
317
- const selectionBox = new BoxRenderable(renderer, {
318
- id: "text-table-demo-selection-box",
319
- width: "100%",
320
- height: 10,
321
- flexGrow: 0,
322
- flexShrink: 0,
323
- border: true,
324
- borderStyle: "double",
325
- borderColor: PALETTE.border,
326
- title: "Selected Text",
327
- titleAlignment: "left",
328
- padding: 1,
329
- backgroundColor: PALETTE.panel,
330
- })
331
-
332
- selectionMetaText = new TextRenderable(renderer, {
333
- id: "text-table-demo-selection-meta",
334
- content: "No selection yet",
335
- fg: PALETTE.eye,
336
- selectable: false,
337
- })
338
-
339
- selectionScrollBox = new ScrollBoxRenderable(renderer, {
340
- id: "text-table-demo-selection-scroll",
341
- width: "100%",
342
- flexGrow: 1,
343
- flexShrink: 1,
344
- scrollY: true,
345
- scrollX: false,
346
- border: false,
347
- backgroundColor: "transparent",
348
- })
349
-
350
- tableAreaScrollBox.verticalScrollbarOptions = { visible: false }
351
- selectionScrollBox.verticalScrollbarOptions = { visible: false }
352
-
353
- selectionStatusText = new TextRenderable(renderer, {
354
- id: "text-table-demo-selection-text",
355
- content: "",
356
- fg: PALETTE.text,
357
- wrapMode: "word",
358
- width: "100%",
359
- selectable: false,
360
- })
361
-
362
- selectionBox.add(selectionMetaText)
363
- selectionBox.add(selectionScrollBox)
364
- selectionScrollBox.add(selectionStatusText)
365
-
366
- tableAreaScrollBox.add(controlsText)
367
- tableAreaScrollBox.add(primaryLabel)
368
- tableAreaScrollBox.add(primaryTable)
369
- tableAreaScrollBox.add(unicodeLabel)
370
- tableAreaScrollBox.add(unicodeTable)
371
-
372
- container.add(tableAreaScrollBox)
373
- container.add(selectionBox)
374
-
375
- selectionHandler = (selection: Selection) => {
376
- if (!selectionMetaText || !selectionStatusText) return
377
-
378
- const selectedText = selection.getSelectedText()
379
- if (!selectedText) {
380
- clearSelectionStatus("Empty selection")
381
- return
382
- }
383
-
384
- const lines = selectedText.split("\n").length
385
- const chars = selectedText.length
386
- selectionMetaText.content = `Selected ${lines} line${lines === 1 ? "" : "s"} (${chars} chars)`
387
- selectionStatusText.content = selectedText
388
- if (selectionScrollBox) {
389
- selectionScrollBox.scrollTop = 0
390
- }
391
- }
392
-
393
- renderer.on("selection", selectionHandler)
394
-
395
- keyboardHandler = (key: KeyEvent) => {
396
- if (key.ctrl || key.meta) return
397
-
398
- if (key.name === "1" || key.name === "2" || key.name === "3") {
399
- contentIndex = Number(key.name) - 1
400
- applyTableState()
401
- return
402
- }
403
-
404
- if (key.name === "w") {
405
- wrapIndex = (wrapIndex + 1) % WRAP_MODES.length
406
- applyTableState()
407
- return
408
- }
409
-
410
- if (key.name === "b") {
411
- borderIndex = (borderIndex + 1) % BORDER_STYLES.length
412
- applyTableState()
413
- return
414
- }
415
-
416
- if (key.name === "m") {
417
- columnWidthModeIndex = (columnWidthModeIndex + 1) % COLUMN_WIDTH_MODES.length
418
- applyTableState()
419
- return
420
- }
421
-
422
- if (key.name === "f") {
423
- columnFitterIndex = (columnFitterIndex + 1) % COLUMN_FITTERS.length
424
- applyTableState()
425
- return
426
- }
427
-
428
- if (key.name === "p") {
429
- cellPaddingIndex = (cellPaddingIndex + 1) % CELL_PADDING_VALUES.length
430
- applyTableState()
431
- return
432
- }
433
-
434
- if (key.name === "n") {
435
- borderEnabled = !borderEnabled
436
- applyTableState()
437
- return
438
- }
439
-
440
- if (key.name === "o") {
441
- outerBorderEnabled = !outerBorderEnabled
442
- applyTableState()
443
- return
444
- }
445
-
446
- if (key.name === "h") {
447
- showBordersEnabled = !showBordersEnabled
448
- applyTableState()
449
- return
450
- }
451
-
452
- if (key.name === "c") {
453
- renderer.clearSelection()
454
- clearSelectionStatus("Selection cleared")
455
- }
456
- }
457
-
458
- renderer.keyInput.on("keypress", keyboardHandler)
459
- applyTableState()
460
- }
461
-
462
- export function destroy(renderer: CliRenderer): void {
463
- if (keyboardHandler) {
464
- renderer.keyInput.off("keypress", keyboardHandler)
465
- keyboardHandler = null
466
- }
467
-
468
- if (selectionHandler) {
469
- renderer.off("selection", selectionHandler)
470
- selectionHandler = null
471
- }
472
-
473
- container?.destroyRecursively()
474
- container = null
475
- primaryTable = null
476
- unicodeTable = null
477
- controlsText = null
478
- tableAreaScrollBox = null
479
- selectionStatusText = null
480
- selectionMetaText = null
481
- selectionScrollBox = null
482
-
483
- contentIndex = 0
484
- wrapIndex = 1
485
- borderIndex = 0
486
- columnWidthModeIndex = 0
487
- columnFitterIndex = 0
488
- cellPaddingIndex = 0
489
- borderEnabled = true
490
- outerBorderEnabled = true
491
- showBordersEnabled = true
492
- }
493
-
494
- if (import.meta.main) {
495
- const renderer = await createCliRenderer({
496
- exitOnCtrlC: true,
497
- targetFps: 60,
498
- enableMouseMovement: true,
499
- })
500
-
501
- run(renderer)
502
- setupCommonDemoKeys(renderer)
503
- }