@fairyhunter13/opentui-core 0.1.112 → 0.1.114

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 (591) hide show
  1. package/dev/keypress-debug-renderer.ts +148 -0
  2. package/dev/keypress-debug.ts +43 -0
  3. package/dev/print-env-vars.ts +32 -0
  4. package/dev/test-tmux-graphics-334.sh +68 -0
  5. package/dev/thai-debug-test.ts +68 -0
  6. package/docs/development.md +144 -0
  7. package/package.json +63 -51
  8. package/scripts/build.ts +400 -0
  9. package/scripts/publish.ts +60 -0
  10. package/src/3d/SpriteResourceManager.ts +286 -0
  11. package/src/3d/SpriteUtils.ts +70 -0
  12. package/src/3d/TextureUtils.ts +196 -0
  13. package/src/3d/ThreeRenderable.ts +197 -0
  14. package/src/3d/WGPURenderer.ts +294 -0
  15. package/src/3d/animation/ExplodingSpriteEffect.ts +513 -0
  16. package/src/3d/animation/PhysicsExplodingSpriteEffect.ts +429 -0
  17. package/src/3d/animation/SpriteAnimator.ts +633 -0
  18. package/src/3d/animation/SpriteParticleGenerator.ts +435 -0
  19. package/src/3d/canvas.ts +464 -0
  20. package/src/3d/index.ts +12 -0
  21. package/src/3d/physics/PlanckPhysicsAdapter.ts +72 -0
  22. package/src/3d/physics/RapierPhysicsAdapter.ts +66 -0
  23. package/src/3d/physics/physics-interface.ts +31 -0
  24. package/src/3d/shaders/supersampling.wgsl +201 -0
  25. package/src/3d.ts +3 -0
  26. package/src/NativeSpanFeed.ts +300 -0
  27. package/src/Renderable.ts +1704 -0
  28. package/src/__snapshots__/buffer.test.ts.snap +28 -0
  29. package/src/animation/Timeline.test.ts +2709 -0
  30. package/src/animation/Timeline.ts +598 -0
  31. package/src/ansi.ts +18 -0
  32. package/src/benchmark/attenuation-benchmark.ts +81 -0
  33. package/src/benchmark/colormatrix-benchmark.ts +128 -0
  34. package/src/benchmark/gain-benchmark.ts +80 -0
  35. package/src/benchmark/latest-all-bench-run.json +707 -0
  36. package/src/benchmark/latest-async-bench-run.json +336 -0
  37. package/src/benchmark/latest-default-bench-run.json +657 -0
  38. package/src/benchmark/latest-large-bench-run.json +707 -0
  39. package/src/benchmark/latest-quick-bench-run.json +207 -0
  40. package/src/benchmark/markdown-benchmark.ts +1796 -0
  41. package/src/benchmark/native-span-feed-async-benchmark.ts +355 -0
  42. package/src/benchmark/native-span-feed-benchmark.md +56 -0
  43. package/src/benchmark/native-span-feed-benchmark.ts +596 -0
  44. package/src/benchmark/native-span-feed-compare.ts +280 -0
  45. package/src/benchmark/renderer-benchmark.ts +754 -0
  46. package/src/benchmark/text-table-benchmark.ts +948 -0
  47. package/src/buffer.test.ts +291 -0
  48. package/src/buffer.ts +554 -0
  49. package/src/console.test.ts +612 -0
  50. package/src/console.ts +1254 -0
  51. package/src/edit-buffer.test.ts +1769 -0
  52. package/src/edit-buffer.ts +411 -0
  53. package/src/editor-view.test.ts +1032 -0
  54. package/src/editor-view.ts +284 -0
  55. package/src/examples/ascii-font-selection-demo.ts +245 -0
  56. package/src/examples/assets/Water_2_M_Normal.jpg +0 -0
  57. package/src/examples/assets/concrete.png +0 -0
  58. package/src/examples/assets/crate.png +0 -0
  59. package/src/examples/assets/crate_emissive.png +0 -0
  60. package/src/examples/assets/forrest_background.png +0 -0
  61. package/src/examples/assets/hast-example.json +1018 -0
  62. package/src/examples/assets/heart.png +0 -0
  63. package/src/examples/assets/main_char_heavy_attack.png +0 -0
  64. package/src/examples/assets/main_char_idle.png +0 -0
  65. package/src/examples/assets/main_char_jump_end.png +0 -0
  66. package/src/examples/assets/main_char_jump_landing.png +0 -0
  67. package/src/examples/assets/main_char_jump_start.png +0 -0
  68. package/src/examples/assets/main_char_run_loop.png +0 -0
  69. package/src/examples/assets/roughness_map.jpg +0 -0
  70. package/src/examples/build.ts +115 -0
  71. package/src/examples/code-demo.ts +924 -0
  72. package/src/examples/console-demo.ts +358 -0
  73. package/src/examples/core-plugin-slots-demo.ts +759 -0
  74. package/src/examples/diff-demo.ts +701 -0
  75. package/src/examples/draggable-three-demo.ts +259 -0
  76. package/src/examples/editor-demo.ts +322 -0
  77. package/src/examples/extmarks-demo.ts +196 -0
  78. package/src/examples/focus-restore-demo.ts +310 -0
  79. package/src/examples/fonts.ts +245 -0
  80. package/src/examples/fractal-shader-demo.ts +268 -0
  81. package/src/examples/framebuffer-demo.ts +674 -0
  82. package/src/examples/full-unicode-demo.ts +241 -0
  83. package/src/examples/golden-star-demo.ts +933 -0
  84. package/src/examples/grayscale-buffer-demo.ts +249 -0
  85. package/src/examples/hast-syntax-highlighting-demo.ts +129 -0
  86. package/src/examples/index.ts +926 -0
  87. package/src/examples/input-demo.ts +377 -0
  88. package/src/examples/input-select-layout-demo.ts +425 -0
  89. package/src/examples/install.sh +143 -0
  90. package/src/examples/keypress-debug-demo.ts +452 -0
  91. package/src/examples/lib/HexList.ts +122 -0
  92. package/src/examples/lib/PaletteGrid.ts +125 -0
  93. package/src/examples/lib/standalone-keys.ts +25 -0
  94. package/src/examples/lib/tab-controller.ts +243 -0
  95. package/src/examples/lights-phong-demo.ts +290 -0
  96. package/src/examples/link-demo.ts +220 -0
  97. package/src/examples/live-state-demo.ts +480 -0
  98. package/src/examples/markdown-demo.ts +725 -0
  99. package/src/examples/mouse-interaction-demo.ts +428 -0
  100. package/src/examples/nested-zindex-demo.ts +357 -0
  101. package/src/examples/opacity-example.ts +235 -0
  102. package/src/examples/opentui-demo.ts +1057 -0
  103. package/src/examples/physx-planck-2d-demo.ts +623 -0
  104. package/src/examples/physx-rapier-2d-demo.ts +655 -0
  105. package/src/examples/relative-positioning-demo.ts +323 -0
  106. package/src/examples/scroll-example.ts +214 -0
  107. package/src/examples/scrollbox-mouse-test.ts +112 -0
  108. package/src/examples/scrollbox-overlay-hit-test.ts +206 -0
  109. package/src/examples/select-demo.ts +237 -0
  110. package/src/examples/shader-cube-demo.ts +1015 -0
  111. package/src/examples/simple-layout-example.ts +591 -0
  112. package/src/examples/slider-demo.ts +617 -0
  113. package/src/examples/split-mode-demo.ts +453 -0
  114. package/src/examples/sprite-animation-demo.ts +443 -0
  115. package/src/examples/sprite-particle-generator-demo.ts +486 -0
  116. package/src/examples/static-sprite-demo.ts +193 -0
  117. package/src/examples/sticky-scroll-example.ts +308 -0
  118. package/src/examples/styled-text-demo.ts +282 -0
  119. package/src/examples/tab-select-demo.ts +219 -0
  120. package/src/examples/terminal-title.ts +29 -0
  121. package/src/examples/terminal.ts +305 -0
  122. package/src/examples/text-node-demo.ts +416 -0
  123. package/src/examples/text-selection-demo.ts +377 -0
  124. package/src/examples/text-table-demo.ts +503 -0
  125. package/src/examples/text-truncation-demo.ts +481 -0
  126. package/src/examples/text-wrap.ts +757 -0
  127. package/src/examples/texture-loading-demo.ts +259 -0
  128. package/src/examples/timeline-example.ts +670 -0
  129. package/src/examples/transparency-demo.ts +400 -0
  130. package/src/examples/vnode-composition-demo.ts +404 -0
  131. package/src/examples/wide-grapheme-overlay-demo.ts +280 -0
  132. package/src/index.ts +24 -0
  133. package/src/lib/KeyHandler.integration.test.ts +292 -0
  134. package/src/lib/KeyHandler.stopPropagation.test.ts +289 -0
  135. package/src/lib/KeyHandler.test.ts +662 -0
  136. package/src/lib/KeyHandler.ts +222 -0
  137. package/src/lib/RGBA.test.ts +984 -0
  138. package/src/lib/RGBA.ts +204 -0
  139. package/src/lib/ascii.font.ts +330 -0
  140. package/src/lib/border.test.ts +83 -0
  141. package/src/lib/border.ts +170 -0
  142. package/src/lib/bunfs.test.ts +27 -0
  143. package/src/lib/bunfs.ts +18 -0
  144. package/src/lib/clipboard.test.ts +41 -0
  145. package/src/lib/clipboard.ts +47 -0
  146. package/src/lib/clock.ts +35 -0
  147. package/src/lib/data-paths.test.ts +133 -0
  148. package/src/lib/data-paths.ts +109 -0
  149. package/src/lib/debounce.ts +106 -0
  150. package/src/lib/detect-links.test.ts +98 -0
  151. package/src/lib/detect-links.ts +56 -0
  152. package/src/lib/env.test.ts +228 -0
  153. package/src/lib/env.ts +209 -0
  154. package/src/lib/extmarks-history.ts +51 -0
  155. package/src/lib/extmarks-multiwidth.test.ts +322 -0
  156. package/src/lib/extmarks.test.ts +3457 -0
  157. package/src/lib/extmarks.ts +843 -0
  158. package/src/lib/fonts/block.json +405 -0
  159. package/src/lib/fonts/grid.json +265 -0
  160. package/src/lib/fonts/huge.json +741 -0
  161. package/src/lib/fonts/pallet.json +314 -0
  162. package/src/lib/fonts/shade.json +591 -0
  163. package/src/lib/fonts/slick.json +321 -0
  164. package/src/lib/fonts/tiny.json +69 -0
  165. package/src/lib/hast-styled-text.ts +59 -0
  166. package/src/lib/index.ts +21 -0
  167. package/src/lib/keymapping.test.ts +317 -0
  168. package/src/lib/keymapping.ts +115 -0
  169. package/src/lib/objects-in-viewport.test.ts +787 -0
  170. package/src/lib/objects-in-viewport.ts +153 -0
  171. package/src/lib/output.capture.ts +58 -0
  172. package/src/lib/parse.keypress-kitty.protocol.test.ts +340 -0
  173. package/src/lib/parse.keypress-kitty.test.ts +663 -0
  174. package/src/lib/parse.keypress-kitty.ts +439 -0
  175. package/src/lib/parse.keypress.test.ts +1849 -0
  176. package/src/lib/parse.keypress.ts +397 -0
  177. package/src/lib/parse.mouse.test.ts +552 -0
  178. package/src/lib/parse.mouse.ts +232 -0
  179. package/src/lib/paste.ts +16 -0
  180. package/src/lib/queue.ts +65 -0
  181. package/src/lib/renderable.validations.test.ts +87 -0
  182. package/src/lib/renderable.validations.ts +83 -0
  183. package/src/lib/scroll-acceleration.ts +98 -0
  184. package/src/lib/selection.ts +240 -0
  185. package/src/lib/singleton.ts +28 -0
  186. package/src/lib/stdin-parser.test.ts +2290 -0
  187. package/src/lib/stdin-parser.ts +1810 -0
  188. package/src/lib/styled-text.ts +178 -0
  189. package/src/lib/terminal-capability-detection.test.ts +202 -0
  190. package/src/lib/terminal-capability-detection.ts +79 -0
  191. package/src/lib/terminal-palette.test.ts +878 -0
  192. package/src/lib/terminal-palette.ts +383 -0
  193. package/src/lib/tree-sitter/assets/README.md +118 -0
  194. package/src/lib/tree-sitter/assets/update.ts +334 -0
  195. package/src/lib/tree-sitter/assets.d.ts +9 -0
  196. package/src/lib/tree-sitter/cache.test.ts +273 -0
  197. package/src/lib/tree-sitter/client.test.ts +1165 -0
  198. package/src/lib/tree-sitter/client.ts +607 -0
  199. package/src/lib/tree-sitter/default-parsers.ts +86 -0
  200. package/src/lib/tree-sitter/download-utils.ts +148 -0
  201. package/src/lib/tree-sitter/index.ts +28 -0
  202. package/src/lib/tree-sitter/parser.worker.ts +1042 -0
  203. package/src/lib/tree-sitter/parsers-config.ts +81 -0
  204. package/src/lib/tree-sitter/resolve-ft.test.ts +55 -0
  205. package/src/lib/tree-sitter/resolve-ft.ts +189 -0
  206. package/src/lib/tree-sitter/types.ts +82 -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 +402 -0
  214. package/src/plugins/types.ts +46 -0
  215. package/src/post/effects.ts +930 -0
  216. package/src/post/filters.ts +489 -0
  217. package/src/post/matrices.ts +288 -0
  218. package/src/renderables/ASCIIFont.ts +219 -0
  219. package/src/renderables/Box.test.ts +205 -0
  220. package/src/renderables/Box.ts +326 -0
  221. package/src/renderables/Code.test.ts +2062 -0
  222. package/src/renderables/Code.ts +357 -0
  223. package/src/renderables/Diff.regression.test.ts +226 -0
  224. package/src/renderables/Diff.test.ts +3101 -0
  225. package/src/renderables/Diff.ts +1211 -0
  226. package/src/renderables/EditBufferRenderable.test.ts +288 -0
  227. package/src/renderables/EditBufferRenderable.ts +1166 -0
  228. package/src/renderables/FrameBuffer.ts +47 -0
  229. package/src/renderables/Input.test.ts +1228 -0
  230. package/src/renderables/Input.ts +247 -0
  231. package/src/renderables/LineNumberRenderable.ts +724 -0
  232. package/src/renderables/Markdown.ts +1393 -0
  233. package/src/renderables/ScrollBar.ts +422 -0
  234. package/src/renderables/ScrollBox.ts +883 -0
  235. package/src/renderables/Select.test.ts +1033 -0
  236. package/src/renderables/Select.ts +524 -0
  237. package/src/renderables/Slider.test.ts +456 -0
  238. package/src/renderables/Slider.ts +342 -0
  239. package/src/renderables/TabSelect.test.ts +197 -0
  240. package/src/renderables/TabSelect.ts +455 -0
  241. package/src/renderables/Text.selection-buffer.test.ts +123 -0
  242. package/src/renderables/Text.test.ts +2660 -0
  243. package/src/renderables/Text.ts +147 -0
  244. package/src/renderables/TextBufferRenderable.ts +518 -0
  245. package/src/renderables/TextNode.test.ts +1058 -0
  246. package/src/renderables/TextNode.ts +325 -0
  247. package/src/renderables/TextTable.test.ts +1421 -0
  248. package/src/renderables/TextTable.ts +1344 -0
  249. package/src/renderables/Textarea.ts +430 -0
  250. package/src/renderables/TimeToFirstDraw.ts +89 -0
  251. package/src/renderables/__snapshots__/Code.test.ts.snap +13 -0
  252. package/src/renderables/__snapshots__/Diff.test.ts.snap +785 -0
  253. package/src/renderables/__snapshots__/Text.test.ts.snap +421 -0
  254. package/src/renderables/__snapshots__/TextTable.test.ts.snap +215 -0
  255. package/src/renderables/__tests__/LineNumberRenderable.scrollbox-simple.test.ts +144 -0
  256. package/src/renderables/__tests__/LineNumberRenderable.scrollbox.test.ts +816 -0
  257. package/src/renderables/__tests__/LineNumberRenderable.test.ts +1865 -0
  258. package/src/renderables/__tests__/LineNumberRenderable.wrapping.test.ts +85 -0
  259. package/src/renderables/__tests__/Markdown.code-colors.test.ts +242 -0
  260. package/src/renderables/__tests__/Markdown.test.ts +2518 -0
  261. package/src/renderables/__tests__/MultiRenderable.selection.test.ts +87 -0
  262. package/src/renderables/__tests__/Textarea.buffer.test.ts +682 -0
  263. package/src/renderables/__tests__/Textarea.destroyed-events.test.ts +675 -0
  264. package/src/renderables/__tests__/Textarea.editing.test.ts +2041 -0
  265. package/src/renderables/__tests__/Textarea.error-handling.test.ts +35 -0
  266. package/src/renderables/__tests__/Textarea.events.test.ts +738 -0
  267. package/src/renderables/__tests__/Textarea.highlights.test.ts +590 -0
  268. package/src/renderables/__tests__/Textarea.keybinding.test.ts +3149 -0
  269. package/src/renderables/__tests__/Textarea.paste.test.ts +357 -0
  270. package/src/renderables/__tests__/Textarea.rendering.test.ts +1866 -0
  271. package/src/renderables/__tests__/Textarea.scroll.test.ts +733 -0
  272. package/src/renderables/__tests__/Textarea.selection.test.ts +1590 -0
  273. package/src/renderables/__tests__/Textarea.stress.test.ts +670 -0
  274. package/src/renderables/__tests__/Textarea.undo-redo.test.ts +383 -0
  275. package/src/renderables/__tests__/Textarea.visual-lines.test.ts +310 -0
  276. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.code.test.ts.snap +221 -0
  277. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox-simple.test.ts.snap +89 -0
  278. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.scrollbox.test.ts.snap +457 -0
  279. package/src/renderables/__tests__/__snapshots__/LineNumberRenderable.test.ts.snap +158 -0
  280. package/src/renderables/__tests__/__snapshots__/Textarea.rendering.test.ts.snap +387 -0
  281. package/src/renderables/__tests__/markdown-parser.test.ts +217 -0
  282. package/src/renderables/__tests__/renderable-test-utils.ts +60 -0
  283. package/src/renderables/composition/README.md +8 -0
  284. package/src/renderables/composition/VRenderable.ts +32 -0
  285. package/src/renderables/composition/constructs.ts +127 -0
  286. package/src/renderables/composition/vnode.ts +289 -0
  287. package/src/renderables/index.ts +23 -0
  288. package/src/renderables/markdown-parser.ts +66 -0
  289. package/src/renderer.ts +2681 -0
  290. package/src/runtime-plugin-support.ts +39 -0
  291. package/src/runtime-plugin.ts +615 -0
  292. package/src/syntax-style.test.ts +841 -0
  293. package/src/syntax-style.ts +257 -0
  294. package/src/testing/README.md +210 -0
  295. package/src/testing/capture-spans.test.ts +194 -0
  296. package/src/testing/integration.test.ts +276 -0
  297. package/src/testing/manual-clock.ts +117 -0
  298. package/src/testing/mock-keys.test.ts +1378 -0
  299. package/src/testing/mock-keys.ts +457 -0
  300. package/src/testing/mock-mouse.test.ts +218 -0
  301. package/src/testing/mock-mouse.ts +247 -0
  302. package/src/testing/mock-tree-sitter-client.ts +73 -0
  303. package/src/testing/spy.ts +13 -0
  304. package/src/testing/test-recorder.test.ts +415 -0
  305. package/src/testing/test-recorder.ts +145 -0
  306. package/src/testing/test-renderer.ts +132 -0
  307. package/src/testing.ts +7 -0
  308. package/src/tests/__snapshots__/absolute-positioning.snapshot.test.ts.snap +481 -0
  309. package/src/tests/__snapshots__/renderable.snapshot.test.ts.snap +19 -0
  310. package/src/tests/__snapshots__/scrollbox.test.ts.snap +29 -0
  311. package/src/tests/absolute-positioning.snapshot.test.ts +638 -0
  312. package/src/tests/allocator-stats.test.ts +38 -0
  313. package/src/tests/destroy-during-render.test.ts +200 -0
  314. package/src/tests/destroy-on-exit.fixture.ts +36 -0
  315. package/src/tests/destroy-on-exit.test.ts +41 -0
  316. package/src/tests/hover-cursor.test.ts +98 -0
  317. package/src/tests/native-span-feed-async.test.ts +173 -0
  318. package/src/tests/native-span-feed-close.test.ts +120 -0
  319. package/src/tests/native-span-feed-coverage.test.ts +227 -0
  320. package/src/tests/native-span-feed-edge-cases.test.ts +352 -0
  321. package/src/tests/native-span-feed-use-after-free.test.ts +45 -0
  322. package/src/tests/opacity.test.ts +123 -0
  323. package/src/tests/renderable.snapshot.test.ts +524 -0
  324. package/src/tests/renderable.test.ts +1281 -0
  325. package/src/tests/renderer.clock.test.ts +158 -0
  326. package/src/tests/renderer.console-startup.test.ts +185 -0
  327. package/src/tests/renderer.control.test.ts +425 -0
  328. package/src/tests/renderer.core-slot-binding.test.ts +952 -0
  329. package/src/tests/renderer.cursor.test.ts +26 -0
  330. package/src/tests/renderer.destroy-during-render.test.ts +147 -0
  331. package/src/tests/renderer.focus-restore.test.ts +257 -0
  332. package/src/tests/renderer.focus.test.ts +294 -0
  333. package/src/tests/renderer.idle.test.ts +219 -0
  334. package/src/tests/renderer.input.test.ts +2237 -0
  335. package/src/tests/renderer.kitty-flags.test.ts +195 -0
  336. package/src/tests/renderer.mouse.test.ts +1274 -0
  337. package/src/tests/renderer.palette.test.ts +629 -0
  338. package/src/tests/renderer.selection.test.ts +49 -0
  339. package/src/tests/renderer.slot-registry.test.ts +684 -0
  340. package/src/tests/renderer.useMouse.test.ts +47 -0
  341. package/src/tests/runtime-plugin-node-modules-cycle.fixture.ts +76 -0
  342. package/src/tests/runtime-plugin-node-modules-mjs.fixture.ts +43 -0
  343. package/src/tests/runtime-plugin-node-modules-no-bare-rewrite.fixture.ts +67 -0
  344. package/src/tests/runtime-plugin-node-modules-package-type-cache.fixture.ts +72 -0
  345. package/src/tests/runtime-plugin-node-modules-runtime-specifier.fixture.ts +44 -0
  346. package/src/tests/runtime-plugin-node-modules-scoped-package-bare-rewrite.fixture.ts +85 -0
  347. package/src/tests/runtime-plugin-path-alias.fixture.ts +43 -0
  348. package/src/tests/runtime-plugin-resolve-roots.fixture.ts +65 -0
  349. package/src/tests/runtime-plugin-support.fixture.ts +11 -0
  350. package/src/tests/runtime-plugin-support.test.ts +19 -0
  351. package/src/tests/runtime-plugin-windows-file-url.fixture.ts +30 -0
  352. package/src/tests/runtime-plugin.fixture.ts +40 -0
  353. package/src/tests/runtime-plugin.test.ts +354 -0
  354. package/src/tests/scrollbox-culling-bug.test.ts +114 -0
  355. package/src/tests/scrollbox-hitgrid-resize.test.ts +136 -0
  356. package/src/tests/scrollbox-hitgrid.test.ts +909 -0
  357. package/src/tests/scrollbox.test.ts +1530 -0
  358. package/src/tests/wrap-resize-perf.test.ts +276 -0
  359. package/src/tests/yoga-setters.test.ts +921 -0
  360. package/src/text-buffer-view.test.ts +705 -0
  361. package/src/text-buffer-view.ts +189 -0
  362. package/src/text-buffer.test.ts +347 -0
  363. package/src/text-buffer.ts +250 -0
  364. package/src/types.ts +161 -0
  365. package/src/utils.ts +88 -0
  366. package/src/zig/ansi.zig +268 -0
  367. package/src/zig/bench/README.md +50 -0
  368. package/src/zig/bench/buffer-draw-text-buffer_bench.zig +887 -0
  369. package/src/zig/bench/edit-buffer_bench.zig +476 -0
  370. package/src/zig/bench/native-span-feed_bench.zig +100 -0
  371. package/src/zig/bench/rope-markers_bench.zig +713 -0
  372. package/src/zig/bench/rope_bench.zig +514 -0
  373. package/src/zig/bench/styled-text_bench.zig +470 -0
  374. package/src/zig/bench/text-buffer-coords_bench.zig +362 -0
  375. package/src/zig/bench/text-buffer-view_bench.zig +459 -0
  376. package/src/zig/bench/text-chunk-graphemes_bench.zig +273 -0
  377. package/src/zig/bench/utf8_bench.zig +799 -0
  378. package/src/zig/bench-utils.zig +431 -0
  379. package/src/zig/bench.zig +217 -0
  380. package/src/zig/buffer-methods.zig +211 -0
  381. package/src/zig/buffer.zig +2281 -0
  382. package/src/zig/build.zig +289 -0
  383. package/src/zig/build.zig.zon +16 -0
  384. package/src/zig/edit-buffer.zig +825 -0
  385. package/src/zig/editor-view.zig +802 -0
  386. package/src/zig/event-bus.zig +13 -0
  387. package/src/zig/event-emitter.zig +65 -0
  388. package/src/zig/file-logger.zig +92 -0
  389. package/src/zig/grapheme.zig +599 -0
  390. package/src/zig/lib.zig +1854 -0
  391. package/src/zig/link.zig +333 -0
  392. package/src/zig/logger.zig +43 -0
  393. package/src/zig/mem-registry.zig +125 -0
  394. package/src/zig/native-span-feed-bench-lib.zig +7 -0
  395. package/src/zig/native-span-feed.zig +708 -0
  396. package/src/zig/renderer.zig +1393 -0
  397. package/src/zig/rope.zig +1220 -0
  398. package/src/zig/syntax-style.zig +161 -0
  399. package/src/zig/terminal.zig +987 -0
  400. package/src/zig/test.zig +72 -0
  401. package/src/zig/tests/README.md +18 -0
  402. package/src/zig/tests/buffer-methods_test.zig +1109 -0
  403. package/src/zig/tests/buffer_test.zig +2557 -0
  404. package/src/zig/tests/edit-buffer-history_test.zig +271 -0
  405. package/src/zig/tests/edit-buffer_test.zig +1689 -0
  406. package/src/zig/tests/editor-view_test.zig +3299 -0
  407. package/src/zig/tests/event-emitter_test.zig +249 -0
  408. package/src/zig/tests/grapheme_test.zig +1304 -0
  409. package/src/zig/tests/link_test.zig +190 -0
  410. package/src/zig/tests/mem-registry_test.zig +473 -0
  411. package/src/zig/tests/memory_leak_regression_test.zig +159 -0
  412. package/src/zig/tests/native-span-feed_test.zig +1264 -0
  413. package/src/zig/tests/renderer_test.zig +1017 -0
  414. package/src/zig/tests/rope-nested_test.zig +712 -0
  415. package/src/zig/tests/rope_fuzz_test.zig +238 -0
  416. package/src/zig/tests/rope_test.zig +2362 -0
  417. package/src/zig/tests/segment-merge.test.zig +148 -0
  418. package/src/zig/tests/syntax-style_test.zig +557 -0
  419. package/src/zig/tests/terminal_test.zig +754 -0
  420. package/src/zig/tests/text-buffer-drawing_test.zig +3237 -0
  421. package/src/zig/tests/text-buffer-highlights_test.zig +666 -0
  422. package/src/zig/tests/text-buffer-iterators_test.zig +776 -0
  423. package/src/zig/tests/text-buffer-segment_test.zig +320 -0
  424. package/src/zig/tests/text-buffer-selection_test.zig +1035 -0
  425. package/src/zig/tests/text-buffer-selection_viewport_test.zig +358 -0
  426. package/src/zig/tests/text-buffer-view_test.zig +3649 -0
  427. package/src/zig/tests/text-buffer_test.zig +2191 -0
  428. package/src/zig/tests/unicode-width-map.zon +3909 -0
  429. package/src/zig/tests/utf8_no_zwj_test.zig +260 -0
  430. package/src/zig/tests/utf8_test.zig +4057 -0
  431. package/src/zig/tests/utf8_wcwidth_cursor_test.zig +267 -0
  432. package/src/zig/tests/utf8_wcwidth_test.zig +357 -0
  433. package/src/zig/tests/word-wrap-editing_test.zig +498 -0
  434. package/src/zig/tests/wrap-cache-perf_test.zig +113 -0
  435. package/src/zig/text-buffer-iterators.zig +499 -0
  436. package/src/zig/text-buffer-segment.zig +404 -0
  437. package/src/zig/text-buffer-view.zig +1371 -0
  438. package/src/zig/text-buffer.zig +1180 -0
  439. package/src/zig/utf8.zig +1948 -0
  440. package/src/zig/utils.zig +9 -0
  441. package/src/zig-structs.ts +261 -0
  442. package/src/zig.ts +3884 -0
  443. package/tsconfig.build.json +24 -0
  444. package/tsconfig.json +27 -0
  445. package/3d/SpriteResourceManager.d.ts +0 -74
  446. package/3d/SpriteUtils.d.ts +0 -13
  447. package/3d/TextureUtils.d.ts +0 -24
  448. package/3d/ThreeRenderable.d.ts +0 -40
  449. package/3d/WGPURenderer.d.ts +0 -61
  450. package/3d/animation/ExplodingSpriteEffect.d.ts +0 -71
  451. package/3d/animation/PhysicsExplodingSpriteEffect.d.ts +0 -76
  452. package/3d/animation/SpriteAnimator.d.ts +0 -124
  453. package/3d/animation/SpriteParticleGenerator.d.ts +0 -62
  454. package/3d/canvas.d.ts +0 -44
  455. package/3d/index.d.ts +0 -12
  456. package/3d/physics/PlanckPhysicsAdapter.d.ts +0 -19
  457. package/3d/physics/RapierPhysicsAdapter.d.ts +0 -19
  458. package/3d/physics/physics-interface.d.ts +0 -27
  459. package/3d.d.ts +0 -2
  460. package/3d.js +0 -34041
  461. package/3d.js.map +0 -155
  462. package/LICENSE +0 -21
  463. package/NativeSpanFeed.d.ts +0 -41
  464. package/Renderable.d.ts +0 -334
  465. package/animation/Timeline.d.ts +0 -126
  466. package/ansi.d.ts +0 -13
  467. package/buffer.d.ts +0 -111
  468. package/console.d.ts +0 -144
  469. package/edit-buffer.d.ts +0 -98
  470. package/editor-view.d.ts +0 -73
  471. package/index-8fks7yv1.js +0 -411
  472. package/index-8fks7yv1.js.map +0 -10
  473. package/index-egy5e2rs.js +0 -12267
  474. package/index-egy5e2rs.js.map +0 -42
  475. package/index-tse8gzh0.js +0 -20614
  476. package/index-tse8gzh0.js.map +0 -67
  477. package/index.d.ts +0 -23
  478. package/index.js +0 -478
  479. package/index.js.map +0 -9
  480. package/lib/KeyHandler.d.ts +0 -61
  481. package/lib/RGBA.d.ts +0 -25
  482. package/lib/ascii.font.d.ts +0 -508
  483. package/lib/border.d.ts +0 -51
  484. package/lib/bunfs.d.ts +0 -7
  485. package/lib/clipboard.d.ts +0 -17
  486. package/lib/clock.d.ts +0 -15
  487. package/lib/data-paths.d.ts +0 -26
  488. package/lib/debounce.d.ts +0 -42
  489. package/lib/detect-links.d.ts +0 -6
  490. package/lib/env.d.ts +0 -42
  491. package/lib/extmarks-history.d.ts +0 -17
  492. package/lib/extmarks.d.ts +0 -89
  493. package/lib/hast-styled-text.d.ts +0 -17
  494. package/lib/index.d.ts +0 -21
  495. package/lib/keymapping.d.ts +0 -25
  496. package/lib/objects-in-viewport.d.ts +0 -24
  497. package/lib/output.capture.d.ts +0 -24
  498. package/lib/parse.keypress-kitty.d.ts +0 -2
  499. package/lib/parse.keypress.d.ts +0 -26
  500. package/lib/parse.mouse.d.ts +0 -30
  501. package/lib/paste.d.ts +0 -7
  502. package/lib/queue.d.ts +0 -15
  503. package/lib/renderable.validations.d.ts +0 -12
  504. package/lib/scroll-acceleration.d.ts +0 -43
  505. package/lib/selection.d.ts +0 -63
  506. package/lib/singleton.d.ts +0 -7
  507. package/lib/stdin-parser.d.ts +0 -87
  508. package/lib/styled-text.d.ts +0 -63
  509. package/lib/terminal-capability-detection.d.ts +0 -30
  510. package/lib/terminal-palette.d.ts +0 -50
  511. package/lib/tree-sitter/assets/update.d.ts +0 -11
  512. package/lib/tree-sitter/client.d.ts +0 -47
  513. package/lib/tree-sitter/default-parsers.d.ts +0 -2
  514. package/lib/tree-sitter/download-utils.d.ts +0 -21
  515. package/lib/tree-sitter/index.d.ts +0 -8
  516. package/lib/tree-sitter/parser.worker.d.ts +0 -1
  517. package/lib/tree-sitter/parsers-config.d.ts +0 -53
  518. package/lib/tree-sitter/resolve-ft.d.ts +0 -5
  519. package/lib/tree-sitter/types.d.ts +0 -82
  520. package/lib/tree-sitter-styled-text.d.ts +0 -14
  521. package/lib/validate-dir-name.d.ts +0 -1
  522. package/lib/yoga.options.d.ts +0 -32
  523. package/parser.worker.js +0 -899
  524. package/parser.worker.js.map +0 -12
  525. package/plugins/core-slot.d.ts +0 -72
  526. package/plugins/registry.d.ts +0 -42
  527. package/plugins/types.d.ts +0 -34
  528. package/post/effects.d.ts +0 -147
  529. package/post/filters.d.ts +0 -65
  530. package/post/matrices.d.ts +0 -20
  531. package/renderables/ASCIIFont.d.ts +0 -52
  532. package/renderables/Box.d.ts +0 -81
  533. package/renderables/Code.d.ts +0 -78
  534. package/renderables/Diff.d.ts +0 -142
  535. package/renderables/EditBufferRenderable.d.ts +0 -237
  536. package/renderables/FrameBuffer.d.ts +0 -16
  537. package/renderables/Input.d.ts +0 -67
  538. package/renderables/LineNumberRenderable.d.ts +0 -78
  539. package/renderables/Markdown.d.ts +0 -185
  540. package/renderables/ScrollBar.d.ts +0 -77
  541. package/renderables/ScrollBox.d.ts +0 -124
  542. package/renderables/Select.d.ts +0 -115
  543. package/renderables/Slider.d.ts +0 -47
  544. package/renderables/TabSelect.d.ts +0 -96
  545. package/renderables/Text.d.ts +0 -36
  546. package/renderables/TextBufferRenderable.d.ts +0 -105
  547. package/renderables/TextNode.d.ts +0 -91
  548. package/renderables/TextTable.d.ts +0 -140
  549. package/renderables/Textarea.d.ts +0 -63
  550. package/renderables/TimeToFirstDraw.d.ts +0 -24
  551. package/renderables/__tests__/renderable-test-utils.d.ts +0 -12
  552. package/renderables/composition/VRenderable.d.ts +0 -16
  553. package/renderables/composition/constructs.d.ts +0 -35
  554. package/renderables/composition/vnode.d.ts +0 -46
  555. package/renderables/index.d.ts +0 -23
  556. package/renderables/markdown-parser.d.ts +0 -10
  557. package/renderer.d.ts +0 -419
  558. package/runtime-plugin-support.d.ts +0 -3
  559. package/runtime-plugin-support.js +0 -29
  560. package/runtime-plugin-support.js.map +0 -10
  561. package/runtime-plugin.d.ts +0 -16
  562. package/runtime-plugin.js +0 -16
  563. package/runtime-plugin.js.map +0 -9
  564. package/syntax-style.d.ts +0 -54
  565. package/testing/manual-clock.d.ts +0 -17
  566. package/testing/mock-keys.d.ts +0 -81
  567. package/testing/mock-mouse.d.ts +0 -38
  568. package/testing/mock-tree-sitter-client.d.ts +0 -23
  569. package/testing/spy.d.ts +0 -7
  570. package/testing/test-recorder.d.ts +0 -61
  571. package/testing/test-renderer.d.ts +0 -23
  572. package/testing.d.ts +0 -6
  573. package/testing.js +0 -697
  574. package/testing.js.map +0 -15
  575. package/text-buffer-view.d.ts +0 -42
  576. package/text-buffer.d.ts +0 -67
  577. package/types.d.ts +0 -139
  578. package/utils.d.ts +0 -14
  579. package/zig-structs.d.ts +0 -155
  580. package/zig.d.ts +0 -353
  581. /package/{assets → src/lib/tree-sitter/assets}/javascript/highlights.scm +0 -0
  582. /package/{assets → src/lib/tree-sitter/assets}/javascript/tree-sitter-javascript.wasm +0 -0
  583. /package/{assets → src/lib/tree-sitter/assets}/markdown/highlights.scm +0 -0
  584. /package/{assets → src/lib/tree-sitter/assets}/markdown/injections.scm +0 -0
  585. /package/{assets → src/lib/tree-sitter/assets}/markdown/tree-sitter-markdown.wasm +0 -0
  586. /package/{assets → src/lib/tree-sitter/assets}/markdown_inline/highlights.scm +0 -0
  587. /package/{assets → src/lib/tree-sitter/assets}/markdown_inline/tree-sitter-markdown_inline.wasm +0 -0
  588. /package/{assets → src/lib/tree-sitter/assets}/typescript/highlights.scm +0 -0
  589. /package/{assets → src/lib/tree-sitter/assets}/typescript/tree-sitter-typescript.wasm +0 -0
  590. /package/{assets → src/lib/tree-sitter/assets}/zig/highlights.scm +0 -0
  591. /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
+ })