@fairyhunter13/opentui-core 0.1.89 → 0.1.91

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/README.md +2 -2
  2. package/dev/keypress-debug-renderer.ts +148 -0
  3. package/dev/keypress-debug.ts +43 -0
  4. package/dev/print-env-vars.ts +32 -0
  5. package/dev/test-tmux-graphics-334.sh +68 -0
  6. package/dev/thai-debug-test.ts +68 -0
  7. package/docs/development.md +141 -0
  8. package/docs/env-vars.md +140 -0
  9. package/docs/getting-started.md +353 -0
  10. package/docs/renderables-vs-constructs.md +159 -0
  11. package/docs/tree-sitter.md +311 -0
  12. package/package.json +61 -52
  13. package/scripts/build.ts +400 -0
  14. package/scripts/publish.ts +60 -0
  15. package/src/3d/SpriteResourceManager.ts +286 -0
  16. package/src/3d/SpriteUtils.ts +71 -0
  17. package/src/3d/TextureUtils.ts +196 -0
  18. package/src/3d/ThreeRenderable.ts +197 -0
  19. package/src/3d/WGPURenderer.ts +294 -0
  20. package/src/3d/animation/ExplodingSpriteEffect.ts +513 -0
  21. package/src/3d/animation/PhysicsExplodingSpriteEffect.ts +429 -0
  22. package/src/3d/animation/SpriteAnimator.ts +633 -0
  23. package/src/3d/animation/SpriteParticleGenerator.ts +435 -0
  24. package/src/3d/canvas.ts +464 -0
  25. package/src/3d/index.ts +12 -0
  26. package/src/3d/physics/PlanckPhysicsAdapter.ts +72 -0
  27. package/src/3d/physics/RapierPhysicsAdapter.ts +66 -0
  28. package/src/3d/physics/physics-interface.ts +31 -0
  29. package/src/3d/shaders/supersampling.wgsl +201 -0
  30. package/src/3d.ts +3 -0
  31. package/src/NativeSpanFeed.ts +300 -0
  32. package/src/Renderable.ts +1698 -0
  33. package/src/__snapshots__/buffer.test.ts.snap +28 -0
  34. package/src/animation/Timeline.test.ts +2709 -0
  35. package/src/animation/Timeline.ts +598 -0
  36. package/src/ansi.ts +18 -0
  37. package/src/benchmark/latest-all-bench-run.json +707 -0
  38. package/src/benchmark/latest-async-bench-run.json +336 -0
  39. package/src/benchmark/latest-default-bench-run.json +657 -0
  40. package/src/benchmark/latest-large-bench-run.json +707 -0
  41. package/src/benchmark/latest-quick-bench-run.json +207 -0
  42. package/src/benchmark/markdown-benchmark.ts +1804 -0
  43. package/src/benchmark/native-span-feed-async-benchmark.ts +355 -0
  44. package/src/benchmark/native-span-feed-benchmark.md +56 -0
  45. package/src/benchmark/native-span-feed-benchmark.ts +596 -0
  46. package/src/benchmark/native-span-feed-compare.ts +280 -0
  47. package/src/benchmark/renderer-benchmark.ts +754 -0
  48. package/src/benchmark/text-table-benchmark.ts +947 -0
  49. package/src/buffer.test.ts +291 -0
  50. package/src/buffer.ts +519 -0
  51. package/src/console.test.ts +612 -0
  52. package/src/console.ts +1255 -0
  53. package/src/edit-buffer.test.ts +1769 -0
  54. package/src/edit-buffer.ts +411 -0
  55. package/src/editor-view.test.ts +1032 -0
  56. package/src/editor-view.ts +284 -0
  57. package/src/examples/ascii-font-selection-demo.ts +245 -0
  58. package/src/examples/assets/Water_2_M_Normal.jpg +0 -0
  59. package/src/examples/assets/concrete.png +0 -0
  60. package/src/examples/assets/crate.png +0 -0
  61. package/src/examples/assets/crate_emissive.png +0 -0
  62. package/src/examples/assets/forrest_background.png +0 -0
  63. package/src/examples/assets/hast-example.json +1018 -0
  64. package/src/examples/assets/heart.png +0 -0
  65. package/src/examples/assets/main_char_heavy_attack.png +0 -0
  66. package/src/examples/assets/main_char_idle.png +0 -0
  67. package/src/examples/assets/main_char_jump_end.png +0 -0
  68. package/src/examples/assets/main_char_jump_landing.png +0 -0
  69. package/src/examples/assets/main_char_jump_start.png +0 -0
  70. package/src/examples/assets/main_char_run_loop.png +0 -0
  71. package/src/examples/assets/roughness_map.jpg +0 -0
  72. package/src/examples/build.ts +115 -0
  73. package/src/examples/code-demo.ts +584 -0
  74. package/src/examples/console-demo.ts +358 -0
  75. package/src/examples/core-plugin-slots-demo.ts +759 -0
  76. package/src/examples/diff-demo.ts +699 -0
  77. package/src/examples/draggable-three-demo.ts +259 -0
  78. package/src/examples/editor-demo.ts +322 -0
  79. package/src/examples/extmarks-demo.ts +204 -0
  80. package/src/examples/focus-restore-demo.ts +310 -0
  81. package/src/examples/fonts.ts +245 -0
  82. package/src/examples/fractal-shader-demo.ts +268 -0
  83. package/src/examples/framebuffer-demo.ts +674 -0
  84. package/src/examples/full-unicode-demo.ts +181 -0
  85. package/src/examples/golden-star-demo.ts +933 -0
  86. package/src/examples/grayscale-buffer-demo.ts +249 -0
  87. package/src/examples/hast-syntax-highlighting-demo.ts +129 -0
  88. package/src/examples/index.ts +925 -0
  89. package/src/examples/input-demo.ts +377 -0
  90. package/src/examples/input-select-layout-demo.ts +425 -0
  91. package/src/examples/install.sh +143 -0
  92. package/src/examples/keypress-debug-demo.ts +452 -0
  93. package/src/examples/lib/HexList.ts +122 -0
  94. package/src/examples/lib/PaletteGrid.ts +125 -0
  95. package/src/examples/lib/standalone-keys.ts +25 -0
  96. package/src/examples/lib/tab-controller.ts +243 -0
  97. package/src/examples/lights-phong-demo.ts +290 -0
  98. package/src/examples/link-demo.ts +220 -0
  99. package/src/examples/live-state-demo.ts +480 -0
  100. package/src/examples/markdown-demo.ts +620 -0
  101. package/src/examples/mouse-interaction-demo.ts +428 -0
  102. package/src/examples/nested-zindex-demo.ts +357 -0
  103. package/src/examples/opacity-example.ts +235 -0
  104. package/src/examples/opentui-demo.ts +1057 -0
  105. package/src/examples/physx-planck-2d-demo.ts +507 -0
  106. package/src/examples/physx-rapier-2d-demo.ts +526 -0
  107. package/src/examples/relative-positioning-demo.ts +323 -0
  108. package/src/examples/scroll-example.ts +214 -0
  109. package/src/examples/scrollbox-mouse-test.ts +112 -0
  110. package/src/examples/scrollbox-overlay-hit-test.ts +206 -0
  111. package/src/examples/select-demo.ts +237 -0
  112. package/src/examples/shader-cube-demo.ts +772 -0
  113. package/src/examples/simple-layout-example.ts +591 -0
  114. package/src/examples/slider-demo.ts +617 -0
  115. package/src/examples/split-mode-demo.ts +445 -0
  116. package/src/examples/sprite-animation-demo.ts +443 -0
  117. package/src/examples/sprite-particle-generator-demo.ts +486 -0
  118. package/src/examples/static-sprite-demo.ts +193 -0
  119. package/src/examples/sticky-scroll-example.ts +308 -0
  120. package/src/examples/styled-text-demo.ts +282 -0
  121. package/src/examples/tab-select-demo.ts +219 -0
  122. package/src/examples/terminal-title.ts +29 -0
  123. package/src/examples/terminal.ts +305 -0
  124. package/src/examples/text-node-demo.ts +416 -0
  125. package/src/examples/text-selection-demo.ts +377 -0
  126. package/src/examples/text-table-demo.ts +503 -0
  127. package/src/examples/text-truncation-demo.ts +481 -0
  128. package/src/examples/text-wrap.ts +757 -0
  129. package/src/examples/texture-loading-demo.ts +259 -0
  130. package/src/examples/timeline-example.ts +670 -0
  131. package/src/examples/transparency-demo.ts +241 -0
  132. package/src/examples/vnode-composition-demo.ts +404 -0
  133. package/src/index.ts +22 -0
  134. package/src/lib/KeyHandler.integration.test.ts +292 -0
  135. package/src/lib/KeyHandler.stopPropagation.test.ts +289 -0
  136. package/src/lib/KeyHandler.test.ts +662 -0
  137. package/src/lib/KeyHandler.ts +222 -0
  138. package/src/lib/RGBA.test.ts +984 -0
  139. package/src/lib/RGBA.ts +204 -0
  140. package/src/lib/ascii.font.ts +330 -0
  141. package/src/lib/border.test.ts +83 -0
  142. package/src/lib/border.ts +168 -0
  143. package/src/lib/bunfs.test.ts +27 -0
  144. package/src/lib/bunfs.ts +18 -0
  145. package/src/lib/clipboard.test.ts +41 -0
  146. package/src/lib/clipboard.ts +47 -0
  147. package/src/lib/clock.ts +31 -0
  148. package/src/lib/data-paths.test.ts +133 -0
  149. package/src/lib/data-paths.ts +109 -0
  150. package/src/lib/debounce.ts +106 -0
  151. package/src/lib/detect-links.test.ts +98 -0
  152. package/src/lib/detect-links.ts +56 -0
  153. package/src/lib/env.test.ts +228 -0
  154. package/src/lib/env.ts +209 -0
  155. package/src/lib/extmarks-history.ts +51 -0
  156. package/src/lib/extmarks-multiwidth.test.ts +322 -0
  157. package/src/lib/extmarks.test.ts +3457 -0
  158. package/src/lib/extmarks.ts +843 -0
  159. package/src/lib/fonts/block.json +405 -0
  160. package/src/lib/fonts/grid.json +265 -0
  161. package/src/lib/fonts/huge.json +741 -0
  162. package/src/lib/fonts/pallet.json +314 -0
  163. package/src/lib/fonts/shade.json +591 -0
  164. package/src/lib/fonts/slick.json +321 -0
  165. package/src/lib/fonts/tiny.json +69 -0
  166. package/src/lib/hast-styled-text.ts +59 -0
  167. package/src/lib/index.ts +21 -0
  168. package/src/lib/keymapping.test.ts +280 -0
  169. package/src/lib/keymapping.ts +87 -0
  170. package/src/lib/objects-in-viewport.test.ts +787 -0
  171. package/src/lib/objects-in-viewport.ts +153 -0
  172. package/src/lib/output.capture.ts +58 -0
  173. package/src/lib/parse.keypress-kitty.protocol.test.ts +340 -0
  174. package/src/lib/parse.keypress-kitty.test.ts +663 -0
  175. package/src/lib/parse.keypress-kitty.ts +439 -0
  176. package/src/lib/parse.keypress.test.ts +1849 -0
  177. package/src/lib/parse.keypress.ts +397 -0
  178. package/src/lib/parse.mouse.test.ts +552 -0
  179. package/src/lib/parse.mouse.ts +232 -0
  180. package/src/lib/paste.ts +16 -0
  181. package/src/lib/queue.ts +65 -0
  182. package/src/lib/renderable.validations.test.ts +87 -0
  183. package/src/lib/renderable.validations.ts +83 -0
  184. package/src/lib/scroll-acceleration.ts +98 -0
  185. package/src/lib/selection.ts +240 -0
  186. package/src/lib/singleton.ts +28 -0
  187. package/src/lib/stdin-parser.test.ts +1676 -0
  188. package/src/lib/stdin-parser.ts +1248 -0
  189. package/src/lib/styled-text.ts +178 -0
  190. package/src/lib/terminal-capability-detection.test.ts +202 -0
  191. package/src/lib/terminal-capability-detection.ts +79 -0
  192. package/src/lib/terminal-palette.test.ts +878 -0
  193. package/src/lib/terminal-palette.ts +383 -0
  194. package/src/lib/tree-sitter/assets/README.md +118 -0
  195. package/src/lib/tree-sitter/assets/update.ts +331 -0
  196. package/src/lib/tree-sitter/assets.d.ts +9 -0
  197. package/src/lib/tree-sitter/cache.test.ts +270 -0
  198. package/src/lib/tree-sitter/client.test.ts +1061 -0
  199. package/src/lib/tree-sitter/client.ts +615 -0
  200. package/src/lib/tree-sitter/default-parsers.ts +80 -0
  201. package/src/lib/tree-sitter/download-utils.ts +148 -0
  202. package/src/lib/tree-sitter/index.ts +28 -0
  203. package/src/lib/tree-sitter/parser.worker.ts +1001 -0
  204. package/src/lib/tree-sitter/parsers-config.ts +75 -0
  205. package/src/lib/tree-sitter/resolve-ft.ts +62 -0
  206. package/src/lib/tree-sitter/types.ts +81 -0
  207. package/src/lib/tree-sitter-styled-text.test.ts +1253 -0
  208. package/src/lib/tree-sitter-styled-text.ts +306 -0
  209. package/src/lib/validate-dir-name.ts +55 -0
  210. package/src/lib/yoga.options.test.ts +628 -0
  211. package/src/lib/yoga.options.ts +346 -0
  212. package/src/plugins/core-slot.ts +579 -0
  213. package/src/plugins/registry.ts +377 -0
  214. package/src/plugins/types.ts +46 -0
  215. package/src/post/filters.ts +888 -0
  216. package/src/renderables/ASCIIFont.ts +219 -0
  217. package/src/renderables/Box.test.ts +160 -0
  218. package/src/renderables/Box.ts +295 -0
  219. package/src/renderables/Code.test.ts +2062 -0
  220. package/src/renderables/Code.ts +357 -0
  221. package/src/renderables/Diff.regression.test.ts +226 -0
  222. package/src/renderables/Diff.test.ts +3027 -0
  223. package/src/renderables/Diff.ts +1209 -0
  224. package/src/renderables/EditBufferRenderable.ts +764 -0
  225. package/src/renderables/FrameBuffer.ts +47 -0
  226. package/src/renderables/Input.test.ts +1228 -0
  227. package/src/renderables/Input.ts +245 -0
  228. package/src/renderables/LineNumberRenderable.ts +675 -0
  229. package/src/renderables/Markdown.ts +1106 -0
  230. package/src/renderables/ScrollBar.ts +422 -0
  231. package/src/renderables/ScrollBox.ts +883 -0
  232. package/src/renderables/Select.test.ts +1010 -0
  233. package/src/renderables/Select.ts +523 -0
  234. package/src/renderables/Slider.test.ts +456 -0
  235. package/src/renderables/Slider.ts +347 -0
  236. package/src/renderables/TabSelect.test.ts +197 -0
  237. package/src/renderables/TabSelect.ts +455 -0
  238. package/src/renderables/Text.selection-buffer.test.ts +123 -0
  239. package/src/renderables/Text.test.ts +2660 -0
  240. package/src/renderables/Text.ts +147 -0
  241. package/src/renderables/TextBufferRenderable.ts +518 -0
  242. package/src/renderables/TextNode.test.ts +1058 -0
  243. package/src/renderables/TextNode.ts +325 -0
  244. package/src/renderables/TextTable.test.ts +1421 -0
  245. package/src/renderables/TextTable.ts +1344 -0
  246. package/src/renderables/Textarea.ts +732 -0
  247. package/src/renderables/TimeToFirstDraw.ts +89 -0
  248. package/src/renderables/__snapshots__/Code.test.ts.snap +13 -0
  249. package/src/renderables/__snapshots__/Diff.test.ts.snap +785 -0
  250. package/src/renderables/__snapshots__/Text.test.ts.snap +421 -0
  251. package/src/renderables/__snapshots__/TextTable.test.ts.snap +215 -0
  252. package/src/renderables/__tests__/LineNumberRenderable.scrollbox-simple.test.ts +144 -0
  253. package/src/renderables/__tests__/LineNumberRenderable.scrollbox.test.ts +816 -0
  254. package/src/renderables/__tests__/LineNumberRenderable.test.ts +1787 -0
  255. package/src/renderables/__tests__/LineNumberRenderable.wrapping.test.ts +85 -0
  256. package/src/renderables/__tests__/Markdown.test.ts +2287 -0
  257. package/src/renderables/__tests__/MultiRenderable.selection.test.ts +87 -0
  258. package/src/renderables/__tests__/Textarea.buffer.test.ts +682 -0
  259. package/src/renderables/__tests__/Textarea.destroyed-events.test.ts +675 -0
  260. package/src/renderables/__tests__/Textarea.editing.test.ts +2041 -0
  261. package/src/renderables/__tests__/Textarea.error-handling.test.ts +35 -0
  262. package/src/renderables/__tests__/Textarea.events.test.ts +738 -0
  263. package/src/renderables/__tests__/Textarea.highlights.test.ts +590 -0
  264. package/src/renderables/__tests__/Textarea.keybinding.test.ts +3149 -0
  265. package/src/renderables/__tests__/Textarea.paste.test.ts +357 -0
  266. package/src/renderables/__tests__/Textarea.rendering.test.ts +1864 -0
  267. package/src/renderables/__tests__/Textarea.scroll.test.ts +733 -0
  268. package/src/renderables/__tests__/Textarea.selection.test.ts +1590 -0
  269. package/src/renderables/__tests__/Textarea.stress.test.ts +670 -0
  270. package/src/renderables/__tests__/Textarea.undo-redo.test.ts +383 -0
  271. package/src/renderables/__tests__/Textarea.visual-lines.test.ts +310 -0
  272. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.code.test.ts.snap +221 -0
  273. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox-simple.test.ts.snap +89 -0
  274. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox.test.ts.snap +457 -0
  275. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.test.ts.snap +158 -0
  276. package/src/renderables/__tests__/__snapshots__/Textarea.rendering.test.ts.snap +387 -0
  277. package/src/renderables/__tests__/markdown-parser.test.ts +217 -0
  278. package/src/renderables/__tests__/renderable-test-utils.ts +60 -0
  279. package/src/renderables/composition/README.md +8 -0
  280. package/src/renderables/composition/VRenderable.ts +32 -0
  281. package/src/renderables/composition/constructs.ts +127 -0
  282. package/src/renderables/composition/vnode.ts +289 -0
  283. package/src/renderables/index.ts +22 -0
  284. package/src/renderables/markdown-parser.ts +66 -0
  285. package/src/renderer.ts +2363 -0
  286. package/src/runtime-plugin-support.ts +39 -0
  287. package/src/runtime-plugin.ts +144 -0
  288. package/src/syntax-style.test.ts +841 -0
  289. package/src/syntax-style.ts +264 -0
  290. package/src/testing/README.md +210 -0
  291. package/src/testing/capture-spans.test.ts +194 -0
  292. package/src/testing/integration.test.ts +276 -0
  293. package/src/testing/manual-clock.ts +106 -0
  294. package/src/testing/mock-keys.test.ts +1356 -0
  295. package/src/testing/mock-keys.ts +449 -0
  296. package/src/testing/mock-mouse.test.ts +218 -0
  297. package/src/testing/mock-mouse.ts +247 -0
  298. package/src/testing/mock-tree-sitter-client.ts +73 -0
  299. package/src/testing/spy.ts +13 -0
  300. package/src/testing/test-recorder.test.ts +415 -0
  301. package/src/testing/test-recorder.ts +145 -0
  302. package/src/testing/test-renderer.ts +116 -0
  303. package/src/testing.ts +7 -0
  304. package/src/tests/__snapshots__/absolute-positioning.snapshot.test.ts.snap +481 -0
  305. package/src/tests/__snapshots__/renderable.snapshot.test.ts.snap +19 -0
  306. package/src/tests/__snapshots__/scrollbox.test.ts.snap +29 -0
  307. package/src/tests/absolute-positioning.snapshot.test.ts +638 -0
  308. package/src/tests/allocator-stats.test.ts +38 -0
  309. package/src/tests/destroy-during-render.test.ts +200 -0
  310. package/src/tests/hover-cursor.test.ts +98 -0
  311. package/src/tests/native-span-feed-async.test.ts +173 -0
  312. package/src/tests/native-span-feed-close.test.ts +120 -0
  313. package/src/tests/native-span-feed-coverage.test.ts +227 -0
  314. package/src/tests/native-span-feed-edge-cases.test.ts +352 -0
  315. package/src/tests/native-span-feed-use-after-free.test.ts +45 -0
  316. package/src/tests/opacity.test.ts +123 -0
  317. package/src/tests/renderable.snapshot.test.ts +524 -0
  318. package/src/tests/renderable.test.ts +1281 -0
  319. package/src/tests/renderer.console-startup.test.ts +65 -0
  320. package/src/tests/renderer.control.test.ts +364 -0
  321. package/src/tests/renderer.core-slot-binding.test.ts +952 -0
  322. package/src/tests/renderer.cursor.test.ts +26 -0
  323. package/src/tests/renderer.destroy-during-render.test.ts +110 -0
  324. package/src/tests/renderer.focus-restore.test.ts +228 -0
  325. package/src/tests/renderer.focus.test.ts +251 -0
  326. package/src/tests/renderer.idle.test.ts +219 -0
  327. package/src/tests/renderer.input.test.ts +2145 -0
  328. package/src/tests/renderer.kitty-flags.test.ts +195 -0
  329. package/src/tests/renderer.mouse.test.ts +1269 -0
  330. package/src/tests/renderer.palette.test.ts +629 -0
  331. package/src/tests/renderer.selection.test.ts +49 -0
  332. package/src/tests/renderer.slot-registry.test.ts +649 -0
  333. package/src/tests/renderer.useMouse.test.ts +50 -0
  334. package/src/tests/runtime-plugin-support.fixture.ts +11 -0
  335. package/src/tests/runtime-plugin-support.test.ts +28 -0
  336. package/src/tests/runtime-plugin.fixture.ts +40 -0
  337. package/src/tests/runtime-plugin.test.ts +190 -0
  338. package/src/tests/scrollbox-culling-bug.test.ts +114 -0
  339. package/src/tests/scrollbox-hitgrid-resize.test.ts +136 -0
  340. package/src/tests/scrollbox-hitgrid.test.ts +909 -0
  341. package/src/tests/scrollbox.test.ts +1530 -0
  342. package/src/tests/wrap-resize-perf.test.ts +229 -0
  343. package/src/tests/yoga-setters.test.ts +921 -0
  344. package/src/text-buffer-view.test.ts +705 -0
  345. package/src/text-buffer-view.ts +189 -0
  346. package/src/text-buffer.test.ts +347 -0
  347. package/src/text-buffer.ts +250 -0
  348. package/src/types.ts +152 -0
  349. package/src/utils.ts +88 -0
  350. package/src/zig/ansi.zig +268 -0
  351. package/src/zig/bench/README.md +50 -0
  352. package/src/zig/bench/buffer-draw-text-buffer_bench.zig +887 -0
  353. package/src/zig/bench/edit-buffer_bench.zig +476 -0
  354. package/src/zig/bench/native-span-feed_bench.zig +100 -0
  355. package/src/zig/bench/rope-markers_bench.zig +713 -0
  356. package/src/zig/bench/rope_bench.zig +514 -0
  357. package/src/zig/bench/styled-text_bench.zig +470 -0
  358. package/src/zig/bench/text-buffer-coords_bench.zig +362 -0
  359. package/src/zig/bench/text-buffer-view_bench.zig +459 -0
  360. package/src/zig/bench/text-chunk-graphemes_bench.zig +273 -0
  361. package/src/zig/bench/utf8_bench.zig +799 -0
  362. package/src/zig/bench-utils.zig +431 -0
  363. package/src/zig/bench.zig +217 -0
  364. package/src/zig/buffer.zig +2223 -0
  365. package/src/zig/build.zig +289 -0
  366. package/src/zig/build.zig.zon +16 -0
  367. package/src/zig/edit-buffer.zig +825 -0
  368. package/src/zig/editor-view.zig +802 -0
  369. package/src/zig/event-bus.zig +13 -0
  370. package/src/zig/event-emitter.zig +65 -0
  371. package/src/zig/file-logger.zig +92 -0
  372. package/src/zig/grapheme.zig +599 -0
  373. package/src/zig/lib.zig +1834 -0
  374. package/src/zig/link.zig +333 -0
  375. package/src/zig/logger.zig +43 -0
  376. package/src/zig/mem-registry.zig +125 -0
  377. package/src/zig/native-span-feed-bench-lib.zig +7 -0
  378. package/src/zig/native-span-feed.zig +708 -0
  379. package/src/zig/renderer.zig +1386 -0
  380. package/src/zig/rope.zig +1220 -0
  381. package/src/zig/syntax-style.zig +161 -0
  382. package/src/zig/terminal.zig +975 -0
  383. package/src/zig/test.zig +70 -0
  384. package/src/zig/tests/README.md +18 -0
  385. package/src/zig/tests/buffer_test.zig +2526 -0
  386. package/src/zig/tests/edit-buffer-history_test.zig +271 -0
  387. package/src/zig/tests/edit-buffer_test.zig +1689 -0
  388. package/src/zig/tests/editor-view_test.zig +3299 -0
  389. package/src/zig/tests/event-emitter_test.zig +249 -0
  390. package/src/zig/tests/grapheme_test.zig +1304 -0
  391. package/src/zig/tests/link_test.zig +190 -0
  392. package/src/zig/tests/mem-registry_test.zig +473 -0
  393. package/src/zig/tests/memory_leak_regression_test.zig +159 -0
  394. package/src/zig/tests/native-span-feed_test.zig +1264 -0
  395. package/src/zig/tests/renderer_test.zig +1010 -0
  396. package/src/zig/tests/rope-nested_test.zig +712 -0
  397. package/src/zig/tests/rope_fuzz_test.zig +238 -0
  398. package/src/zig/tests/rope_test.zig +2362 -0
  399. package/src/zig/tests/segment-merge.test.zig +148 -0
  400. package/src/zig/tests/syntax-style_test.zig +557 -0
  401. package/src/zig/tests/terminal_test.zig +719 -0
  402. package/src/zig/tests/text-buffer-drawing_test.zig +3237 -0
  403. package/src/zig/tests/text-buffer-highlights_test.zig +666 -0
  404. package/src/zig/tests/text-buffer-iterators_test.zig +776 -0
  405. package/src/zig/tests/text-buffer-segment_test.zig +320 -0
  406. package/src/zig/tests/text-buffer-selection_test.zig +1035 -0
  407. package/src/zig/tests/text-buffer-selection_viewport_test.zig +358 -0
  408. package/src/zig/tests/text-buffer-view_test.zig +3649 -0
  409. package/src/zig/tests/text-buffer_test.zig +2191 -0
  410. package/src/zig/tests/unicode-width-map.zon +3909 -0
  411. package/src/zig/tests/utf8_no_zwj_test.zig +260 -0
  412. package/src/zig/tests/utf8_test.zig +4057 -0
  413. package/src/zig/tests/utf8_wcwidth_cursor_test.zig +267 -0
  414. package/src/zig/tests/utf8_wcwidth_test.zig +357 -0
  415. package/src/zig/tests/word-wrap-editing_test.zig +498 -0
  416. package/src/zig/tests/wrap-cache-perf_test.zig +113 -0
  417. package/src/zig/text-buffer-iterators.zig +499 -0
  418. package/src/zig/text-buffer-segment.zig +404 -0
  419. package/src/zig/text-buffer-view.zig +1371 -0
  420. package/src/zig/text-buffer.zig +1180 -0
  421. package/src/zig/utf8.zig +1948 -0
  422. package/src/zig/utils.zig +9 -0
  423. package/src/zig-structs.ts +261 -0
  424. package/src/zig.ts +3843 -0
  425. package/tsconfig.build.json +22 -0
  426. package/tsconfig.json +28 -0
  427. package/3d/SpriteResourceManager.d.ts +0 -74
  428. package/3d/SpriteUtils.d.ts +0 -13
  429. package/3d/TextureUtils.d.ts +0 -24
  430. package/3d/ThreeRenderable.d.ts +0 -40
  431. package/3d/WGPURenderer.d.ts +0 -61
  432. package/3d/animation/ExplodingSpriteEffect.d.ts +0 -71
  433. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +0 -76
  434. package/3d/animation/SpriteAnimator.d.ts +0 -124
  435. package/3d/animation/SpriteParticleGenerator.d.ts +0 -62
  436. package/3d/canvas.d.ts +0 -44
  437. package/3d/index.d.ts +0 -12
  438. package/3d/physics/PlanckPhysicsAdapter.d.ts +0 -19
  439. package/3d/physics/RapierPhysicsAdapter.d.ts +0 -19
  440. package/3d/physics/physics-interface.d.ts +0 -27
  441. package/3d.d.ts +0 -2
  442. package/3d.js +0 -34042
  443. package/3d.js.map +0 -155
  444. package/LICENSE +0 -21
  445. package/NativeSpanFeed.d.ts +0 -41
  446. package/Renderable.d.ts +0 -334
  447. package/animation/Timeline.d.ts +0 -126
  448. package/ansi.d.ts +0 -13
  449. package/buffer.d.ts +0 -107
  450. package/console.d.ts +0 -143
  451. package/edit-buffer.d.ts +0 -98
  452. package/editor-view.d.ts +0 -73
  453. package/index-e4hzc2j2.js +0 -113
  454. package/index-e4hzc2j2.js.map +0 -10
  455. package/index-nkrr8a4c.js +0 -18415
  456. package/index-nkrr8a4c.js.map +0 -64
  457. package/index-nyw5p3ep.js +0 -12619
  458. package/index-nyw5p3ep.js.map +0 -43
  459. package/index.d.ts +0 -21
  460. package/index.js +0 -430
  461. package/index.js.map +0 -9
  462. package/lib/KeyHandler.d.ts +0 -61
  463. package/lib/RGBA.d.ts +0 -25
  464. package/lib/ascii.font.d.ts +0 -508
  465. package/lib/border.d.ts +0 -49
  466. package/lib/bunfs.d.ts +0 -7
  467. package/lib/clipboard.d.ts +0 -17
  468. package/lib/clock.d.ts +0 -15
  469. package/lib/data-paths.d.ts +0 -26
  470. package/lib/debounce.d.ts +0 -42
  471. package/lib/detect-links.d.ts +0 -6
  472. package/lib/env.d.ts +0 -42
  473. package/lib/extmarks-history.d.ts +0 -17
  474. package/lib/extmarks.d.ts +0 -89
  475. package/lib/hast-styled-text.d.ts +0 -17
  476. package/lib/index.d.ts +0 -21
  477. package/lib/keymapping.d.ts +0 -25
  478. package/lib/objects-in-viewport.d.ts +0 -24
  479. package/lib/output.capture.d.ts +0 -24
  480. package/lib/parse.keypress-kitty.d.ts +0 -2
  481. package/lib/parse.keypress.d.ts +0 -26
  482. package/lib/parse.mouse.d.ts +0 -30
  483. package/lib/paste.d.ts +0 -7
  484. package/lib/queue.d.ts +0 -15
  485. package/lib/renderable.validations.d.ts +0 -12
  486. package/lib/scroll-acceleration.d.ts +0 -43
  487. package/lib/selection.d.ts +0 -63
  488. package/lib/singleton.d.ts +0 -7
  489. package/lib/stdin-parser.d.ts +0 -76
  490. package/lib/styled-text.d.ts +0 -63
  491. package/lib/terminal-capability-detection.d.ts +0 -30
  492. package/lib/terminal-palette.d.ts +0 -50
  493. package/lib/tree-sitter/assets/update.d.ts +0 -11
  494. package/lib/tree-sitter/client.d.ts +0 -47
  495. package/lib/tree-sitter/default-parsers.d.ts +0 -2
  496. package/lib/tree-sitter/download-utils.d.ts +0 -21
  497. package/lib/tree-sitter/index.d.ts +0 -8
  498. package/lib/tree-sitter/parser.worker.d.ts +0 -1
  499. package/lib/tree-sitter/parsers-config.d.ts +0 -38
  500. package/lib/tree-sitter/resolve-ft.d.ts +0 -2
  501. package/lib/tree-sitter/types.d.ts +0 -81
  502. package/lib/tree-sitter-styled-text.d.ts +0 -14
  503. package/lib/validate-dir-name.d.ts +0 -1
  504. package/lib/yoga.options.d.ts +0 -32
  505. package/parser.worker.js +0 -869
  506. package/parser.worker.js.map +0 -12
  507. package/plugins/core-slot.d.ts +0 -72
  508. package/plugins/registry.d.ts +0 -38
  509. package/plugins/types.d.ts +0 -34
  510. package/post/filters.d.ts +0 -105
  511. package/renderables/ASCIIFont.d.ts +0 -52
  512. package/renderables/Box.d.ts +0 -72
  513. package/renderables/Code.d.ts +0 -78
  514. package/renderables/Diff.d.ts +0 -142
  515. package/renderables/EditBufferRenderable.d.ts +0 -162
  516. package/renderables/FrameBuffer.d.ts +0 -16
  517. package/renderables/Input.d.ts +0 -67
  518. package/renderables/LineNumberRenderable.d.ts +0 -74
  519. package/renderables/Markdown.d.ts +0 -173
  520. package/renderables/ScrollBar.d.ts +0 -77
  521. package/renderables/ScrollBox.d.ts +0 -124
  522. package/renderables/Select.d.ts +0 -115
  523. package/renderables/Slider.d.ts +0 -44
  524. package/renderables/TabSelect.d.ts +0 -96
  525. package/renderables/Text.d.ts +0 -36
  526. package/renderables/TextBufferRenderable.d.ts +0 -105
  527. package/renderables/TextNode.d.ts +0 -91
  528. package/renderables/TextTable.d.ts +0 -140
  529. package/renderables/Textarea.d.ts +0 -114
  530. package/renderables/TimeToFirstDraw.d.ts +0 -24
  531. package/renderables/__tests__/renderable-test-utils.d.ts +0 -12
  532. package/renderables/composition/VRenderable.d.ts +0 -16
  533. package/renderables/composition/constructs.d.ts +0 -35
  534. package/renderables/composition/vnode.d.ts +0 -46
  535. package/renderables/index.d.ts +0 -22
  536. package/renderables/markdown-parser.d.ts +0 -10
  537. package/renderer.d.ts +0 -388
  538. package/runtime-plugin-support.d.ts +0 -3
  539. package/runtime-plugin-support.js +0 -29
  540. package/runtime-plugin-support.js.map +0 -10
  541. package/runtime-plugin.d.ts +0 -11
  542. package/runtime-plugin.js +0 -16
  543. package/runtime-plugin.js.map +0 -9
  544. package/syntax-style.d.ts +0 -54
  545. package/testing/manual-clock.d.ts +0 -16
  546. package/testing/mock-keys.d.ts +0 -81
  547. package/testing/mock-mouse.d.ts +0 -38
  548. package/testing/mock-tree-sitter-client.d.ts +0 -23
  549. package/testing/spy.d.ts +0 -7
  550. package/testing/test-recorder.d.ts +0 -61
  551. package/testing/test-renderer.d.ts +0 -23
  552. package/testing.d.ts +0 -6
  553. package/testing.js +0 -675
  554. package/testing.js.map +0 -15
  555. package/text-buffer-view.d.ts +0 -42
  556. package/text-buffer.d.ts +0 -67
  557. package/types.d.ts +0 -131
  558. package/utils.d.ts +0 -14
  559. package/zig-structs.d.ts +0 -155
  560. package/zig.d.ts +0 -351
  561. /package/{assets → src/lib/tree-sitter/assets}/javascript/highlights.scm +0 -0
  562. /package/{assets → src/lib/tree-sitter/assets}/javascript/tree-sitter-javascript.wasm +0 -0
  563. /package/{assets → src/lib/tree-sitter/assets}/markdown/highlights.scm +0 -0
  564. /package/{assets → src/lib/tree-sitter/assets}/markdown/injections.scm +0 -0
  565. /package/{assets → src/lib/tree-sitter/assets}/markdown/tree-sitter-markdown.wasm +0 -0
  566. /package/{assets → src/lib/tree-sitter/assets}/markdown_inline/highlights.scm +0 -0
  567. /package/{assets → src/lib/tree-sitter/assets}/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  568. /package/{assets → src/lib/tree-sitter/assets}/typescript/highlights.scm +0 -0
  569. /package/{assets → src/lib/tree-sitter/assets}/typescript/tree-sitter-typescript.wasm +0 -0
  570. /package/{assets → src/lib/tree-sitter/assets}/zig/highlights.scm +0 -0
  571. /package/{assets → src/lib/tree-sitter/assets}/zig/tree-sitter-zig.wasm +0 -0
@@ -0,0 +1,921 @@
1
+ import { test, expect, beforeEach, afterEach, describe } from "bun:test"
2
+ import { Renderable, type RenderableOptions } from "../Renderable.js"
3
+ import { createTestRenderer, type TestRenderer } from "../testing/test-renderer.js"
4
+ import type { RenderContext } from "../types.js"
5
+
6
+ class TestRenderable extends Renderable {
7
+ constructor(ctx: RenderContext, options: RenderableOptions) {
8
+ super(ctx, options)
9
+ }
10
+ }
11
+
12
+ let testRenderer: TestRenderer
13
+
14
+ beforeEach(async () => {
15
+ ;({ renderer: testRenderer } = await createTestRenderer({}))
16
+ })
17
+
18
+ afterEach(() => {
19
+ testRenderer.destroy()
20
+ })
21
+
22
+ describe("Yoga Prop Setters - flexGrow", () => {
23
+ test("accepts valid number", () => {
24
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-grow" })
25
+ expect(() => {
26
+ renderable.flexGrow = 1
27
+ }).not.toThrow()
28
+ })
29
+
30
+ test("accepts 0", () => {
31
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-grow-zero" })
32
+ expect(() => {
33
+ renderable.flexGrow = 0
34
+ }).not.toThrow()
35
+ })
36
+
37
+ test("accepts null", () => {
38
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-grow-null" })
39
+ expect(() => {
40
+ renderable.flexGrow = null
41
+ }).not.toThrow()
42
+ })
43
+
44
+ test("accepts undefined", () => {
45
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-grow-undefined" })
46
+ expect(() => {
47
+ renderable.flexGrow = undefined
48
+ }).not.toThrow()
49
+ })
50
+ })
51
+
52
+ describe("Yoga Prop Setters - flexShrink", () => {
53
+ test("accepts valid number", () => {
54
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-shrink" })
55
+ expect(() => {
56
+ renderable.flexShrink = 1
57
+ }).not.toThrow()
58
+ })
59
+
60
+ test("accepts 0", () => {
61
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-shrink-zero" })
62
+ expect(() => {
63
+ renderable.flexShrink = 0
64
+ }).not.toThrow()
65
+ })
66
+
67
+ test("accepts null", () => {
68
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-shrink-null" })
69
+ expect(() => {
70
+ renderable.flexShrink = null
71
+ }).not.toThrow()
72
+ })
73
+
74
+ test("accepts undefined", () => {
75
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-shrink-undefined" })
76
+ expect(() => {
77
+ renderable.flexShrink = undefined
78
+ }).not.toThrow()
79
+ })
80
+ })
81
+
82
+ describe("Yoga Prop Setters - flexDirection", () => {
83
+ test("accepts valid string", () => {
84
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-direction" })
85
+ expect(() => {
86
+ renderable.flexDirection = "row"
87
+ }).not.toThrow()
88
+ })
89
+
90
+ test("accepts all valid values", () => {
91
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-direction-all" })
92
+ expect(() => {
93
+ renderable.flexDirection = "column"
94
+ renderable.flexDirection = "column-reverse"
95
+ renderable.flexDirection = "row"
96
+ renderable.flexDirection = "row-reverse"
97
+ }).not.toThrow()
98
+ })
99
+
100
+ test("accepts null", () => {
101
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-direction-null" })
102
+ expect(() => {
103
+ renderable.flexDirection = null
104
+ }).not.toThrow()
105
+ })
106
+
107
+ test("accepts undefined", () => {
108
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-direction-undefined" })
109
+ expect(() => {
110
+ renderable.flexDirection = undefined
111
+ }).not.toThrow()
112
+ })
113
+ })
114
+
115
+ describe("Yoga Prop Setters - flexWrap", () => {
116
+ test("accepts valid string", () => {
117
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-wrap" })
118
+ expect(() => {
119
+ renderable.flexWrap = "wrap"
120
+ }).not.toThrow()
121
+ })
122
+
123
+ test("accepts all valid values", () => {
124
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-wrap-all" })
125
+ expect(() => {
126
+ renderable.flexWrap = "no-wrap"
127
+ renderable.flexWrap = "wrap"
128
+ renderable.flexWrap = "wrap-reverse"
129
+ }).not.toThrow()
130
+ })
131
+
132
+ test("accepts null", () => {
133
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-wrap-null" })
134
+ expect(() => {
135
+ renderable.flexWrap = null
136
+ }).not.toThrow()
137
+ })
138
+
139
+ test("accepts undefined", () => {
140
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-wrap-undefined" })
141
+ expect(() => {
142
+ renderable.flexWrap = undefined
143
+ }).not.toThrow()
144
+ })
145
+ })
146
+
147
+ describe("Yoga Prop Setters - alignItems", () => {
148
+ test("accepts valid string", () => {
149
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-items" })
150
+ expect(() => {
151
+ renderable.alignItems = "center"
152
+ }).not.toThrow()
153
+ })
154
+
155
+ test("accepts all valid values", () => {
156
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-items-all" })
157
+ expect(() => {
158
+ renderable.alignItems = "auto"
159
+ renderable.alignItems = "flex-start"
160
+ renderable.alignItems = "center"
161
+ renderable.alignItems = "flex-end"
162
+ renderable.alignItems = "stretch"
163
+ renderable.alignItems = "baseline"
164
+ renderable.alignItems = "space-between"
165
+ renderable.alignItems = "space-around"
166
+ renderable.alignItems = "space-evenly"
167
+ }).not.toThrow()
168
+ })
169
+
170
+ test("accepts null", () => {
171
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-items-null" })
172
+ expect(() => {
173
+ renderable.alignItems = null
174
+ }).not.toThrow()
175
+ })
176
+
177
+ test("accepts undefined", () => {
178
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-items-undefined" })
179
+ expect(() => {
180
+ renderable.alignItems = undefined
181
+ }).not.toThrow()
182
+ })
183
+ })
184
+
185
+ describe("Yoga Prop Setters - justifyContent", () => {
186
+ test("accepts valid string", () => {
187
+ const renderable = new TestRenderable(testRenderer, { id: "test-justify-content" })
188
+ expect(() => {
189
+ renderable.justifyContent = "center"
190
+ }).not.toThrow()
191
+ })
192
+
193
+ test("accepts all valid values", () => {
194
+ const renderable = new TestRenderable(testRenderer, { id: "test-justify-content-all" })
195
+ expect(() => {
196
+ renderable.justifyContent = "flex-start"
197
+ renderable.justifyContent = "center"
198
+ renderable.justifyContent = "flex-end"
199
+ renderable.justifyContent = "space-between"
200
+ renderable.justifyContent = "space-around"
201
+ renderable.justifyContent = "space-evenly"
202
+ }).not.toThrow()
203
+ })
204
+
205
+ test("accepts null", () => {
206
+ const renderable = new TestRenderable(testRenderer, { id: "test-justify-content-null" })
207
+ expect(() => {
208
+ renderable.justifyContent = null
209
+ }).not.toThrow()
210
+ })
211
+
212
+ test("accepts undefined", () => {
213
+ const renderable = new TestRenderable(testRenderer, { id: "test-justify-content-undefined" })
214
+ expect(() => {
215
+ renderable.justifyContent = undefined
216
+ }).not.toThrow()
217
+ })
218
+ })
219
+
220
+ describe("Yoga Prop Setters - alignSelf", () => {
221
+ test("accepts valid string", () => {
222
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-self" })
223
+ expect(() => {
224
+ renderable.alignSelf = "center"
225
+ }).not.toThrow()
226
+ })
227
+
228
+ test("accepts all valid values", () => {
229
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-self-all" })
230
+ expect(() => {
231
+ renderable.alignSelf = "auto"
232
+ renderable.alignSelf = "flex-start"
233
+ renderable.alignSelf = "center"
234
+ renderable.alignSelf = "flex-end"
235
+ renderable.alignSelf = "stretch"
236
+ renderable.alignSelf = "baseline"
237
+ renderable.alignSelf = "space-between"
238
+ renderable.alignSelf = "space-around"
239
+ renderable.alignSelf = "space-evenly"
240
+ }).not.toThrow()
241
+ })
242
+
243
+ test("accepts null", () => {
244
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-self-null" })
245
+ expect(() => {
246
+ renderable.alignSelf = null
247
+ }).not.toThrow()
248
+ })
249
+
250
+ test("accepts undefined", () => {
251
+ const renderable = new TestRenderable(testRenderer, { id: "test-align-self-undefined" })
252
+ expect(() => {
253
+ renderable.alignSelf = undefined
254
+ }).not.toThrow()
255
+ })
256
+ })
257
+
258
+ describe("Yoga Prop Setters - overflow", () => {
259
+ test("accepts valid string", () => {
260
+ const renderable = new TestRenderable(testRenderer, { id: "test-overflow" })
261
+ expect(() => {
262
+ renderable.overflow = "hidden"
263
+ }).not.toThrow()
264
+ })
265
+
266
+ test("accepts all valid values", () => {
267
+ const renderable = new TestRenderable(testRenderer, { id: "test-overflow-all" })
268
+ expect(() => {
269
+ renderable.overflow = "visible"
270
+ renderable.overflow = "hidden"
271
+ renderable.overflow = "scroll"
272
+ }).not.toThrow()
273
+ })
274
+
275
+ test("accepts null", () => {
276
+ const renderable = new TestRenderable(testRenderer, { id: "test-overflow-null" })
277
+ expect(() => {
278
+ renderable.overflow = null
279
+ }).not.toThrow()
280
+ })
281
+
282
+ test("accepts undefined", () => {
283
+ const renderable = new TestRenderable(testRenderer, { id: "test-overflow-undefined" })
284
+ expect(() => {
285
+ renderable.overflow = undefined
286
+ }).not.toThrow()
287
+ })
288
+ })
289
+
290
+ describe("Yoga Prop Setters - position", () => {
291
+ test("accepts valid string", () => {
292
+ const renderable = new TestRenderable(testRenderer, { id: "test-position" })
293
+ expect(() => {
294
+ renderable.position = "absolute"
295
+ }).not.toThrow()
296
+ })
297
+
298
+ test("accepts all valid values", () => {
299
+ const renderable = new TestRenderable(testRenderer, { id: "test-position-all" })
300
+ expect(() => {
301
+ renderable.position = "static"
302
+ renderable.position = "relative"
303
+ renderable.position = "absolute"
304
+ }).not.toThrow()
305
+ })
306
+
307
+ test("accepts null", () => {
308
+ const renderable = new TestRenderable(testRenderer, { id: "test-position-null" })
309
+ expect(() => {
310
+ renderable.position = null
311
+ }).not.toThrow()
312
+ })
313
+
314
+ test("accepts undefined", () => {
315
+ const renderable = new TestRenderable(testRenderer, { id: "test-position-undefined" })
316
+ expect(() => {
317
+ renderable.position = undefined
318
+ }).not.toThrow()
319
+ })
320
+ })
321
+
322
+ describe("Yoga Prop Setters - flexBasis", () => {
323
+ test("accepts valid number", () => {
324
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-basis" })
325
+ expect(() => {
326
+ renderable.flexBasis = 100
327
+ }).not.toThrow()
328
+ })
329
+
330
+ test("accepts auto", () => {
331
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-basis-auto" })
332
+ expect(() => {
333
+ renderable.flexBasis = "auto"
334
+ }).not.toThrow()
335
+ })
336
+
337
+ test("accepts null", () => {
338
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-basis-null" })
339
+ expect(() => {
340
+ renderable.flexBasis = null
341
+ }).not.toThrow()
342
+ })
343
+
344
+ test("accepts undefined", () => {
345
+ const renderable = new TestRenderable(testRenderer, { id: "test-flex-basis-undefined" })
346
+ expect(() => {
347
+ renderable.flexBasis = undefined
348
+ }).not.toThrow()
349
+ })
350
+ })
351
+
352
+ describe("Yoga Prop Setters - minWidth", () => {
353
+ test("accepts valid number", () => {
354
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-width" })
355
+ expect(() => {
356
+ renderable.minWidth = 100
357
+ }).not.toThrow()
358
+ })
359
+
360
+ test("accepts percentage", () => {
361
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-width-percent" })
362
+ expect(() => {
363
+ renderable.minWidth = "50%"
364
+ }).not.toThrow()
365
+ })
366
+
367
+ test("accepts null", () => {
368
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-width-null" })
369
+ expect(() => {
370
+ renderable.minWidth = null
371
+ }).not.toThrow()
372
+ })
373
+
374
+ test("accepts undefined", () => {
375
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-width-undefined" })
376
+ expect(() => {
377
+ renderable.minWidth = undefined
378
+ }).not.toThrow()
379
+ })
380
+ })
381
+
382
+ describe("Yoga Prop Setters - maxWidth", () => {
383
+ test("accepts valid number", () => {
384
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-width" })
385
+ expect(() => {
386
+ renderable.maxWidth = 100
387
+ }).not.toThrow()
388
+ })
389
+
390
+ test("accepts percentage", () => {
391
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-width-percent" })
392
+ expect(() => {
393
+ renderable.maxWidth = "50%"
394
+ }).not.toThrow()
395
+ })
396
+
397
+ test("accepts null", () => {
398
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-width-null" })
399
+ expect(() => {
400
+ renderable.maxWidth = null
401
+ }).not.toThrow()
402
+ })
403
+
404
+ test("accepts undefined", () => {
405
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-width-undefined" })
406
+ expect(() => {
407
+ renderable.maxWidth = undefined
408
+ }).not.toThrow()
409
+ })
410
+ })
411
+
412
+ describe("Yoga Prop Setters - minHeight", () => {
413
+ test("accepts valid number", () => {
414
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-height" })
415
+ expect(() => {
416
+ renderable.minHeight = 100
417
+ }).not.toThrow()
418
+ })
419
+
420
+ test("accepts percentage", () => {
421
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-height-percent" })
422
+ expect(() => {
423
+ renderable.minHeight = "50%"
424
+ }).not.toThrow()
425
+ })
426
+
427
+ test("accepts null", () => {
428
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-height-null" })
429
+ expect(() => {
430
+ renderable.minHeight = null
431
+ }).not.toThrow()
432
+ })
433
+
434
+ test("accepts undefined", () => {
435
+ const renderable = new TestRenderable(testRenderer, { id: "test-min-height-undefined" })
436
+ expect(() => {
437
+ renderable.minHeight = undefined
438
+ }).not.toThrow()
439
+ })
440
+ })
441
+
442
+ describe("Yoga Prop Setters - maxHeight", () => {
443
+ test("accepts valid number", () => {
444
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-height" })
445
+ expect(() => {
446
+ renderable.maxHeight = 100
447
+ }).not.toThrow()
448
+ })
449
+
450
+ test("accepts percentage", () => {
451
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-height-percent" })
452
+ expect(() => {
453
+ renderable.maxHeight = "50%"
454
+ }).not.toThrow()
455
+ })
456
+
457
+ test("accepts null", () => {
458
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-height-null" })
459
+ expect(() => {
460
+ renderable.maxHeight = null
461
+ }).not.toThrow()
462
+ })
463
+
464
+ test("accepts undefined", () => {
465
+ const renderable = new TestRenderable(testRenderer, { id: "test-max-height-undefined" })
466
+ expect(() => {
467
+ renderable.maxHeight = undefined
468
+ }).not.toThrow()
469
+ })
470
+ })
471
+
472
+ describe("Yoga Prop Setters - margin", () => {
473
+ test("accepts valid number", () => {
474
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin" })
475
+ expect(() => {
476
+ renderable.margin = 10
477
+ }).not.toThrow()
478
+ })
479
+
480
+ test("accepts auto", () => {
481
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-auto" })
482
+ expect(() => {
483
+ renderable.margin = "auto"
484
+ }).not.toThrow()
485
+ })
486
+
487
+ test("accepts percentage", () => {
488
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-percent" })
489
+ expect(() => {
490
+ renderable.margin = "10%"
491
+ }).not.toThrow()
492
+ })
493
+
494
+ test("accepts null", () => {
495
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-null" })
496
+ expect(() => {
497
+ renderable.margin = null
498
+ }).not.toThrow()
499
+ })
500
+
501
+ test("accepts undefined", () => {
502
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-undefined" })
503
+ expect(() => {
504
+ renderable.margin = undefined
505
+ }).not.toThrow()
506
+ })
507
+ })
508
+
509
+ describe("Yoga Prop Setters - marginX", () => {
510
+ test("accepts valid number", () => {
511
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-x" })
512
+ expect(() => {
513
+ renderable.marginX = 10
514
+ }).not.toThrow()
515
+ })
516
+ test("accepts auto", () => {
517
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-x-auto" })
518
+ expect(() => {
519
+ renderable.marginX = "auto"
520
+ }).not.toThrow()
521
+ })
522
+ test("accepts percentage", () => {
523
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-x-percent" })
524
+ expect(() => {
525
+ renderable.marginX = "10%"
526
+ }).not.toThrow()
527
+ })
528
+ test("accepts null", () => {
529
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-x-null" })
530
+ expect(() => {
531
+ renderable.marginX = null
532
+ }).not.toThrow()
533
+ })
534
+ test("accepts undefined", () => {
535
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-x-undefined" })
536
+ expect(() => {
537
+ renderable.marginX = undefined
538
+ }).not.toThrow()
539
+ })
540
+ })
541
+
542
+ describe("Yoga Prop Setters - marginY", () => {
543
+ test("accepts valid number", () => {
544
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-y" })
545
+ expect(() => {
546
+ renderable.marginY = 10
547
+ }).not.toThrow()
548
+ })
549
+ test("accepts auto", () => {
550
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-y-auto" })
551
+ expect(() => {
552
+ renderable.marginY = "auto"
553
+ }).not.toThrow()
554
+ })
555
+ test("accepts percentage", () => {
556
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-y-percent" })
557
+ expect(() => {
558
+ renderable.marginY = "10%"
559
+ }).not.toThrow()
560
+ })
561
+ test("accepts null", () => {
562
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-y-null" })
563
+ expect(() => {
564
+ renderable.marginY = null
565
+ }).not.toThrow()
566
+ })
567
+ test("accepts undefined", () => {
568
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-y-undefined" })
569
+ expect(() => {
570
+ renderable.marginY = undefined
571
+ }).not.toThrow()
572
+ })
573
+ })
574
+
575
+ describe("Yoga Prop Setters - marginTop", () => {
576
+ test("accepts valid number", () => {
577
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-top" })
578
+ expect(() => {
579
+ renderable.marginTop = 10
580
+ }).not.toThrow()
581
+ })
582
+
583
+ test("accepts null", () => {
584
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-top-null" })
585
+ expect(() => {
586
+ renderable.marginTop = null
587
+ }).not.toThrow()
588
+ })
589
+
590
+ test("accepts undefined", () => {
591
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-top-undefined" })
592
+ expect(() => {
593
+ renderable.marginTop = undefined
594
+ }).not.toThrow()
595
+ })
596
+ })
597
+
598
+ describe("Yoga Prop Setters - marginRight", () => {
599
+ test("accepts valid number", () => {
600
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-right" })
601
+ expect(() => {
602
+ renderable.marginRight = 10
603
+ }).not.toThrow()
604
+ })
605
+
606
+ test("accepts null", () => {
607
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-right-null" })
608
+ expect(() => {
609
+ renderable.marginRight = null
610
+ }).not.toThrow()
611
+ })
612
+
613
+ test("accepts undefined", () => {
614
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-right-undefined" })
615
+ expect(() => {
616
+ renderable.marginRight = undefined
617
+ }).not.toThrow()
618
+ })
619
+ })
620
+
621
+ describe("Yoga Prop Setters - marginBottom", () => {
622
+ test("accepts valid number", () => {
623
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-bottom" })
624
+ expect(() => {
625
+ renderable.marginBottom = 10
626
+ }).not.toThrow()
627
+ })
628
+
629
+ test("accepts null", () => {
630
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-bottom-null" })
631
+ expect(() => {
632
+ renderable.marginBottom = null
633
+ }).not.toThrow()
634
+ })
635
+
636
+ test("accepts undefined", () => {
637
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-bottom-undefined" })
638
+ expect(() => {
639
+ renderable.marginBottom = undefined
640
+ }).not.toThrow()
641
+ })
642
+ })
643
+
644
+ describe("Yoga Prop Setters - marginLeft", () => {
645
+ test("accepts valid number", () => {
646
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-left" })
647
+ expect(() => {
648
+ renderable.marginLeft = 10
649
+ }).not.toThrow()
650
+ })
651
+
652
+ test("accepts null", () => {
653
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-left-null" })
654
+ expect(() => {
655
+ renderable.marginLeft = null
656
+ }).not.toThrow()
657
+ })
658
+
659
+ test("accepts undefined", () => {
660
+ const renderable = new TestRenderable(testRenderer, { id: "test-margin-left-undefined" })
661
+ expect(() => {
662
+ renderable.marginLeft = undefined
663
+ }).not.toThrow()
664
+ })
665
+ })
666
+
667
+ describe("Yoga Prop Setters - padding", () => {
668
+ test("accepts valid number", () => {
669
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding" })
670
+ expect(() => {
671
+ renderable.padding = 10
672
+ }).not.toThrow()
673
+ })
674
+
675
+ test("accepts percentage", () => {
676
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-percent" })
677
+ expect(() => {
678
+ renderable.padding = "10%"
679
+ }).not.toThrow()
680
+ })
681
+
682
+ test("accepts null", () => {
683
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-null" })
684
+ expect(() => {
685
+ renderable.padding = null
686
+ }).not.toThrow()
687
+ })
688
+
689
+ test("accepts undefined", () => {
690
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-undefined" })
691
+ expect(() => {
692
+ renderable.padding = undefined
693
+ }).not.toThrow()
694
+ })
695
+ })
696
+
697
+ describe("Yoga Prop Setters - paddingX", () => {
698
+ test("accepts valid number", () => {
699
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-x" })
700
+ expect(() => {
701
+ renderable.paddingX = 10
702
+ }).not.toThrow()
703
+ })
704
+
705
+ test("accepts percentage", () => {
706
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-x-percent" })
707
+ expect(() => {
708
+ renderable.paddingX = "10%"
709
+ }).not.toThrow()
710
+ })
711
+
712
+ test("accepts null", () => {
713
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-x-null" })
714
+ expect(() => {
715
+ renderable.paddingX = null
716
+ }).not.toThrow()
717
+ })
718
+
719
+ test("accepts undefined", () => {
720
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-x-undefined" })
721
+ expect(() => {
722
+ renderable.paddingX = undefined
723
+ }).not.toThrow()
724
+ })
725
+ })
726
+
727
+ describe("Yoga Prop Setters - paddingY", () => {
728
+ test("accepts valid number", () => {
729
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-y" })
730
+ expect(() => {
731
+ renderable.paddingY = 10
732
+ }).not.toThrow()
733
+ })
734
+
735
+ test("accepts percentage", () => {
736
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-y-percent" })
737
+ expect(() => {
738
+ renderable.paddingY = "10%"
739
+ }).not.toThrow()
740
+ })
741
+
742
+ test("accepts null", () => {
743
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-y-null" })
744
+ expect(() => {
745
+ renderable.paddingY = null
746
+ }).not.toThrow()
747
+ })
748
+
749
+ test("accepts undefined", () => {
750
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-y-undefined" })
751
+ expect(() => {
752
+ renderable.paddingY = undefined
753
+ }).not.toThrow()
754
+ })
755
+ })
756
+
757
+ describe("Yoga Prop Setters - paddingTop", () => {
758
+ test("accepts valid number", () => {
759
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-top" })
760
+ expect(() => {
761
+ renderable.paddingTop = 10
762
+ }).not.toThrow()
763
+ })
764
+
765
+ test("accepts null", () => {
766
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-top-null" })
767
+ expect(() => {
768
+ renderable.paddingTop = null
769
+ }).not.toThrow()
770
+ })
771
+
772
+ test("accepts undefined", () => {
773
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-top-undefined" })
774
+ expect(() => {
775
+ renderable.paddingTop = undefined
776
+ }).not.toThrow()
777
+ })
778
+ })
779
+
780
+ describe("Yoga Prop Setters - paddingRight", () => {
781
+ test("accepts valid number", () => {
782
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-right" })
783
+ expect(() => {
784
+ renderable.paddingRight = 10
785
+ }).not.toThrow()
786
+ })
787
+
788
+ test("accepts null", () => {
789
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-right-null" })
790
+ expect(() => {
791
+ renderable.paddingRight = null
792
+ }).not.toThrow()
793
+ })
794
+
795
+ test("accepts undefined", () => {
796
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-right-undefined" })
797
+ expect(() => {
798
+ renderable.paddingRight = undefined
799
+ }).not.toThrow()
800
+ })
801
+ })
802
+
803
+ describe("Yoga Prop Setters - paddingBottom", () => {
804
+ test("accepts valid number", () => {
805
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-bottom" })
806
+ expect(() => {
807
+ renderable.paddingBottom = 10
808
+ }).not.toThrow()
809
+ })
810
+
811
+ test("accepts null", () => {
812
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-bottom-null" })
813
+ expect(() => {
814
+ renderable.paddingBottom = null
815
+ }).not.toThrow()
816
+ })
817
+
818
+ test("accepts undefined", () => {
819
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-bottom-undefined" })
820
+ expect(() => {
821
+ renderable.paddingBottom = undefined
822
+ }).not.toThrow()
823
+ })
824
+ })
825
+
826
+ describe("Yoga Prop Setters - paddingLeft", () => {
827
+ test("accepts valid number", () => {
828
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-left" })
829
+ expect(() => {
830
+ renderable.paddingLeft = 10
831
+ }).not.toThrow()
832
+ })
833
+
834
+ test("accepts null", () => {
835
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-left-null" })
836
+ expect(() => {
837
+ renderable.paddingLeft = null
838
+ }).not.toThrow()
839
+ })
840
+
841
+ test("accepts undefined", () => {
842
+ const renderable = new TestRenderable(testRenderer, { id: "test-padding-left-undefined" })
843
+ expect(() => {
844
+ renderable.paddingLeft = undefined
845
+ }).not.toThrow()
846
+ })
847
+ })
848
+
849
+ describe("Yoga Prop Setters - width", () => {
850
+ test("accepts valid number", () => {
851
+ const renderable = new TestRenderable(testRenderer, { id: "test-width" })
852
+ expect(() => {
853
+ renderable.width = 100
854
+ }).not.toThrow()
855
+ })
856
+
857
+ test("accepts auto", () => {
858
+ const renderable = new TestRenderable(testRenderer, { id: "test-width-auto" })
859
+ expect(() => {
860
+ renderable.width = "auto"
861
+ }).not.toThrow()
862
+ })
863
+
864
+ test("accepts percentage", () => {
865
+ const renderable = new TestRenderable(testRenderer, { id: "test-width-percent" })
866
+ expect(() => {
867
+ renderable.width = "50%"
868
+ }).not.toThrow()
869
+ })
870
+
871
+ test("handles null", () => {
872
+ const renderable = new TestRenderable(testRenderer, { id: "test-width-null" })
873
+ expect(() => {
874
+ renderable.width = null as any
875
+ }).not.toThrow()
876
+ })
877
+
878
+ test("handles undefined", () => {
879
+ const renderable = new TestRenderable(testRenderer, { id: "test-width-undefined" })
880
+ expect(() => {
881
+ renderable.width = undefined as any
882
+ }).not.toThrow()
883
+ })
884
+ })
885
+
886
+ describe("Yoga Prop Setters - height", () => {
887
+ test("accepts valid number", () => {
888
+ const renderable = new TestRenderable(testRenderer, { id: "test-height" })
889
+ expect(() => {
890
+ renderable.height = 100
891
+ }).not.toThrow()
892
+ })
893
+
894
+ test("accepts auto", () => {
895
+ const renderable = new TestRenderable(testRenderer, { id: "test-height-auto" })
896
+ expect(() => {
897
+ renderable.height = "auto"
898
+ }).not.toThrow()
899
+ })
900
+
901
+ test("accepts percentage", () => {
902
+ const renderable = new TestRenderable(testRenderer, { id: "test-height-percent" })
903
+ expect(() => {
904
+ renderable.height = "50%"
905
+ }).not.toThrow()
906
+ })
907
+
908
+ test("handles null", () => {
909
+ const renderable = new TestRenderable(testRenderer, { id: "test-height-null" })
910
+ expect(() => {
911
+ renderable.height = null as any
912
+ }).not.toThrow()
913
+ })
914
+
915
+ test("handles undefined", () => {
916
+ const renderable = new TestRenderable(testRenderer, { id: "test-height-undefined" })
917
+ expect(() => {
918
+ renderable.height = undefined as any
919
+ }).not.toThrow()
920
+ })
921
+ })