@effect-tui/react 0.1.1 → 0.1.4

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 (442) hide show
  1. package/dist/jsx-runtime.d.ts +13 -0
  2. package/dist/jsx-runtime.d.ts.map +1 -1
  3. package/dist/jsx-runtime.js.map +1 -1
  4. package/dist/src/codeblock.d.ts.map +1 -1
  5. package/dist/src/codeblock.js.map +1 -1
  6. package/dist/src/components/Divider.d.ts +18 -0
  7. package/dist/src/components/Divider.d.ts.map +1 -0
  8. package/dist/src/components/Divider.js +17 -0
  9. package/dist/src/components/Divider.js.map +1 -0
  10. package/dist/src/components/Markdown.d.ts +66 -0
  11. package/dist/src/components/Markdown.d.ts.map +1 -0
  12. package/dist/src/components/Markdown.js +226 -0
  13. package/dist/src/components/Markdown.js.map +1 -0
  14. package/dist/src/components/MultilineTextInput.d.ts +65 -0
  15. package/dist/src/components/MultilineTextInput.d.ts.map +1 -0
  16. package/dist/src/components/MultilineTextInput.js +607 -0
  17. package/dist/src/components/MultilineTextInput.js.map +1 -0
  18. package/dist/src/components/Overlay.d.ts +46 -0
  19. package/dist/src/components/Overlay.d.ts.map +1 -0
  20. package/dist/src/components/Overlay.js +11 -0
  21. package/dist/src/components/Overlay.js.map +1 -0
  22. package/dist/src/components/Static.d.ts +44 -0
  23. package/dist/src/components/Static.d.ts.map +1 -0
  24. package/dist/src/components/Static.js +53 -0
  25. package/dist/src/components/Static.js.map +1 -0
  26. package/dist/src/components/TextInput.d.ts +53 -0
  27. package/dist/src/components/TextInput.d.ts.map +1 -0
  28. package/dist/src/components/TextInput.js +210 -0
  29. package/dist/src/components/TextInput.js.map +1 -0
  30. package/dist/src/components/index.d.ts +7 -0
  31. package/dist/src/components/index.d.ts.map +1 -0
  32. package/dist/src/components/index.js +7 -0
  33. package/dist/src/components/index.js.map +1 -0
  34. package/dist/src/components/text-editing.d.ts +62 -0
  35. package/dist/src/components/text-editing.d.ts.map +1 -0
  36. package/dist/src/components/text-editing.js +385 -0
  37. package/dist/src/components/text-editing.js.map +1 -0
  38. package/dist/src/console/ConsoleCapture.d.ts +36 -0
  39. package/dist/src/console/ConsoleCapture.d.ts.map +1 -0
  40. package/dist/src/console/ConsoleCapture.js +210 -0
  41. package/dist/src/console/ConsoleCapture.js.map +1 -0
  42. package/dist/src/console/ConsolePopover.d.ts +18 -0
  43. package/dist/src/console/ConsolePopover.d.ts.map +1 -0
  44. package/dist/src/console/ConsolePopover.js +324 -0
  45. package/dist/src/console/ConsolePopover.js.map +1 -0
  46. package/dist/src/console/clipboard.d.ts +10 -0
  47. package/dist/src/console/clipboard.d.ts.map +1 -0
  48. package/dist/src/console/clipboard.js +74 -0
  49. package/dist/src/console/clipboard.js.map +1 -0
  50. package/dist/src/console/index.d.ts +5 -0
  51. package/dist/src/console/index.d.ts.map +1 -0
  52. package/dist/src/console/index.js +33 -0
  53. package/dist/src/console/index.js.map +1 -0
  54. package/dist/src/console/useConsole.d.ts +44 -0
  55. package/dist/src/console/useConsole.d.ts.map +1 -0
  56. package/dist/src/console/useConsole.js +91 -0
  57. package/dist/src/console/useConsole.js.map +1 -0
  58. package/dist/src/debug/DebugOverlay.d.ts +49 -0
  59. package/dist/src/debug/DebugOverlay.d.ts.map +1 -0
  60. package/dist/src/debug/DebugOverlay.js +438 -0
  61. package/dist/src/debug/DebugOverlay.js.map +1 -0
  62. package/dist/src/debug/DiagnosticsPanel.d.ts.map +1 -1
  63. package/dist/src/debug/DiagnosticsPanel.js.map +1 -1
  64. package/dist/src/dev/Toast.d.ts +19 -0
  65. package/dist/src/dev/Toast.d.ts.map +1 -0
  66. package/dist/src/dev/Toast.js +72 -0
  67. package/dist/src/dev/Toast.js.map +1 -0
  68. package/dist/src/dev/index.d.ts +2 -0
  69. package/dist/src/dev/index.d.ts.map +1 -0
  70. package/dist/src/dev/index.js +3 -0
  71. package/dist/src/dev/index.js.map +1 -0
  72. package/dist/src/dev.d.ts +114 -0
  73. package/dist/src/dev.d.ts.map +1 -0
  74. package/dist/src/dev.js +373 -0
  75. package/dist/src/dev.js.map +1 -0
  76. package/dist/src/highlight.d.ts +3 -3
  77. package/dist/src/highlight.d.ts.map +1 -1
  78. package/dist/src/highlight.js.map +1 -1
  79. package/dist/src/hmr-plugin.d.ts +2 -0
  80. package/dist/src/hmr-plugin.d.ts.map +1 -0
  81. package/dist/src/hmr-plugin.js +53 -0
  82. package/dist/src/hmr-plugin.js.map +1 -0
  83. package/dist/src/hooks/index.d.ts +4 -0
  84. package/dist/src/hooks/index.d.ts.map +1 -1
  85. package/dist/src/hooks/index.js +2 -0
  86. package/dist/src/hooks/index.js.map +1 -1
  87. package/dist/src/hooks/use-keyboard.d.ts +11 -0
  88. package/dist/src/hooks/use-keyboard.d.ts.map +1 -1
  89. package/dist/src/hooks/use-keyboard.js +22 -4
  90. package/dist/src/hooks/use-keyboard.js.map +1 -1
  91. package/dist/src/hooks/use-mouse.d.ts +24 -0
  92. package/dist/src/hooks/use-mouse.d.ts.map +1 -0
  93. package/dist/src/hooks/use-mouse.js +41 -0
  94. package/dist/src/hooks/use-mouse.js.map +1 -0
  95. package/dist/src/hooks/use-paste.d.ts +11 -0
  96. package/dist/src/hooks/use-paste.d.ts.map +1 -1
  97. package/dist/src/hooks/use-paste.js +17 -3
  98. package/dist/src/hooks/use-paste.js.map +1 -1
  99. package/dist/src/hooks/use-scroll.d.ts +79 -0
  100. package/dist/src/hooks/use-scroll.d.ts.map +1 -0
  101. package/dist/src/hooks/use-scroll.js +239 -0
  102. package/dist/src/hooks/use-scroll.js.map +1 -0
  103. package/dist/src/hooks/useFrameStats.js.map +1 -1
  104. package/dist/src/hosts/base.d.ts +62 -1
  105. package/dist/src/hosts/base.d.ts.map +1 -1
  106. package/dist/src/hosts/base.js +118 -5
  107. package/dist/src/hosts/base.js.map +1 -1
  108. package/dist/src/hosts/box.d.ts +7 -7
  109. package/dist/src/hosts/box.d.ts.map +1 -1
  110. package/dist/src/hosts/box.js +31 -26
  111. package/dist/src/hosts/box.js.map +1 -1
  112. package/dist/src/hosts/canvas.d.ts +8 -8
  113. package/dist/src/hosts/canvas.d.ts.map +1 -1
  114. package/dist/src/hosts/canvas.js +13 -22
  115. package/dist/src/hosts/canvas.js.map +1 -1
  116. package/dist/src/hosts/codeblock.d.ts +7 -7
  117. package/dist/src/hosts/codeblock.d.ts.map +1 -1
  118. package/dist/src/hosts/codeblock.js +11 -20
  119. package/dist/src/hosts/codeblock.js.map +1 -1
  120. package/dist/src/hosts/flex-container.d.ts +45 -0
  121. package/dist/src/hosts/flex-container.d.ts.map +1 -0
  122. package/dist/src/hosts/flex-container.js +90 -0
  123. package/dist/src/hosts/flex-container.js.map +1 -0
  124. package/dist/src/hosts/hstack.d.ts +6 -11
  125. package/dist/src/hosts/hstack.d.ts.map +1 -1
  126. package/dist/src/hosts/hstack.js +6 -41
  127. package/dist/src/hosts/hstack.js.map +1 -1
  128. package/dist/src/hosts/index.d.ts +4 -0
  129. package/dist/src/hosts/index.d.ts.map +1 -1
  130. package/dist/src/hosts/index.js +10 -0
  131. package/dist/src/hosts/index.js.map +1 -1
  132. package/dist/src/hosts/overlay-item.d.ts +32 -0
  133. package/dist/src/hosts/overlay-item.d.ts.map +1 -0
  134. package/dist/src/hosts/overlay-item.js +54 -0
  135. package/dist/src/hosts/overlay-item.js.map +1 -0
  136. package/dist/src/hosts/overlay.d.ts +30 -0
  137. package/dist/src/hosts/overlay.d.ts.map +1 -0
  138. package/dist/src/hosts/overlay.js +105 -0
  139. package/dist/src/hosts/overlay.js.map +1 -0
  140. package/dist/src/hosts/scroll.d.ts +56 -0
  141. package/dist/src/hosts/scroll.d.ts.map +1 -0
  142. package/dist/src/hosts/scroll.js +204 -0
  143. package/dist/src/hosts/scroll.js.map +1 -0
  144. package/dist/src/hosts/single-child.d.ts +16 -0
  145. package/dist/src/hosts/single-child.d.ts.map +1 -0
  146. package/dist/src/hosts/single-child.js +45 -0
  147. package/dist/src/hosts/single-child.js.map +1 -0
  148. package/dist/src/hosts/spacer.d.ts.map +1 -1
  149. package/dist/src/hosts/spacer.js +7 -3
  150. package/dist/src/hosts/spacer.js.map +1 -1
  151. package/dist/src/hosts/text.d.ts +9 -6
  152. package/dist/src/hosts/text.d.ts.map +1 -1
  153. package/dist/src/hosts/text.js +49 -22
  154. package/dist/src/hosts/text.js.map +1 -1
  155. package/dist/src/hosts/vstack.d.ts +6 -11
  156. package/dist/src/hosts/vstack.d.ts.map +1 -1
  157. package/dist/src/hosts/vstack.js +6 -41
  158. package/dist/src/hosts/vstack.js.map +1 -1
  159. package/dist/src/hosts/zstack.d.ts.map +1 -1
  160. package/dist/src/hosts/zstack.js +16 -5
  161. package/dist/src/hosts/zstack.js.map +1 -1
  162. package/dist/src/index.d.ts +9 -2
  163. package/dist/src/index.d.ts.map +1 -1
  164. package/dist/src/index.js +10 -2
  165. package/dist/src/index.js.map +1 -1
  166. package/dist/src/inline/index.d.ts.map +1 -1
  167. package/dist/src/inline/index.js.map +1 -1
  168. package/dist/src/motion/color-motion-value.d.ts.map +1 -1
  169. package/dist/src/motion/color-motion-value.js.map +1 -1
  170. package/dist/src/motion/color.d.ts +1 -29
  171. package/dist/src/motion/color.d.ts.map +1 -1
  172. package/dist/src/motion/color.js +2 -170
  173. package/dist/src/motion/color.js.map +1 -1
  174. package/dist/src/motion/color.test.js.map +1 -1
  175. package/dist/src/motion/event-emitter.d.ts.map +1 -1
  176. package/dist/src/motion/event-emitter.js.map +1 -1
  177. package/dist/src/motion/frame.js.map +1 -1
  178. package/dist/src/motion/hooks.d.ts.map +1 -1
  179. package/dist/src/motion/hooks.js +8 -3
  180. package/dist/src/motion/hooks.js.map +1 -1
  181. package/dist/src/motion/index.d.ts.map +1 -1
  182. package/dist/src/motion/index.js.map +1 -1
  183. package/dist/src/motion/motion-value.d.ts.map +1 -1
  184. package/dist/src/motion/motion-value.js.map +1 -1
  185. package/dist/src/motion/motion-value.test.js.map +1 -1
  186. package/dist/src/motion/spring-math.d.ts +6 -1
  187. package/dist/src/motion/spring-math.d.ts.map +1 -1
  188. package/dist/src/motion/spring-math.js +6 -1
  189. package/dist/src/motion/spring-math.js.map +1 -1
  190. package/dist/src/motion/types.d.ts.map +1 -1
  191. package/dist/src/motion/types.js.map +1 -1
  192. package/dist/src/profiler.js.map +1 -1
  193. package/dist/src/reconciler/host-config.d.ts +5 -5
  194. package/dist/src/reconciler/host-config.d.ts.map +1 -1
  195. package/dist/src/reconciler/host-config.js +43 -51
  196. package/dist/src/reconciler/host-config.js.map +1 -1
  197. package/dist/src/reconciler/noop-methods.d.ts +29 -0
  198. package/dist/src/reconciler/noop-methods.d.ts.map +1 -0
  199. package/dist/src/reconciler/noop-methods.js +43 -0
  200. package/dist/src/reconciler/noop-methods.js.map +1 -0
  201. package/dist/src/reconciler/types.d.ts +68 -14
  202. package/dist/src/reconciler/types.d.ts.map +1 -1
  203. package/dist/src/remote/Procedures.d.ts +22 -0
  204. package/dist/src/remote/Procedures.d.ts.map +1 -0
  205. package/dist/src/remote/Procedures.js +42 -0
  206. package/dist/src/remote/Procedures.js.map +1 -0
  207. package/dist/src/remote/Router.d.ts +20 -0
  208. package/dist/src/remote/Router.d.ts.map +1 -0
  209. package/dist/src/remote/Router.js +26 -0
  210. package/dist/src/remote/Router.js.map +1 -0
  211. package/dist/src/remote/Server.d.ts +6 -0
  212. package/dist/src/remote/Server.d.ts.map +1 -0
  213. package/dist/src/remote/Server.js +53 -0
  214. package/dist/src/remote/Server.js.map +1 -0
  215. package/dist/src/remote/index.d.ts +18 -0
  216. package/dist/src/remote/index.d.ts.map +1 -0
  217. package/dist/src/remote/index.js +74 -0
  218. package/dist/src/remote/index.js.map +1 -0
  219. package/dist/src/renderer/core/FrameBuilder.d.ts +18 -0
  220. package/dist/src/renderer/core/FrameBuilder.d.ts.map +1 -0
  221. package/dist/src/renderer/core/FrameBuilder.js +38 -0
  222. package/dist/src/renderer/core/FrameBuilder.js.map +1 -0
  223. package/dist/src/renderer/core/RendererState.d.ts +41 -0
  224. package/dist/src/renderer/core/RendererState.d.ts.map +1 -0
  225. package/dist/src/renderer/core/RendererState.js +70 -0
  226. package/dist/src/renderer/core/RendererState.js.map +1 -0
  227. package/dist/src/renderer/core/index.d.ts +3 -0
  228. package/dist/src/renderer/core/index.d.ts.map +1 -0
  229. package/dist/src/renderer/core/index.js +3 -0
  230. package/dist/src/renderer/core/index.js.map +1 -0
  231. package/dist/src/renderer/input/InputProcessor.d.ts +25 -0
  232. package/dist/src/renderer/input/InputProcessor.d.ts.map +1 -0
  233. package/dist/src/renderer/input/InputProcessor.js +81 -0
  234. package/dist/src/renderer/input/InputProcessor.js.map +1 -0
  235. package/dist/src/renderer/input/index.d.ts +2 -0
  236. package/dist/src/renderer/input/index.d.ts.map +1 -0
  237. package/dist/src/renderer/input/index.js +2 -0
  238. package/dist/src/renderer/input/index.js.map +1 -0
  239. package/dist/src/renderer/lifecycle/EventBus.d.ts +41 -0
  240. package/dist/src/renderer/lifecycle/EventBus.d.ts.map +1 -0
  241. package/dist/src/renderer/lifecycle/EventBus.js +78 -0
  242. package/dist/src/renderer/lifecycle/EventBus.js.map +1 -0
  243. package/dist/src/renderer/lifecycle/ResizeManager.d.ts +34 -0
  244. package/dist/src/renderer/lifecycle/ResizeManager.d.ts.map +1 -0
  245. package/dist/src/renderer/lifecycle/ResizeManager.js +47 -0
  246. package/dist/src/renderer/lifecycle/ResizeManager.js.map +1 -0
  247. package/dist/src/renderer/lifecycle/TerminalSetup.d.ts +36 -0
  248. package/dist/src/renderer/lifecycle/TerminalSetup.d.ts.map +1 -0
  249. package/dist/src/renderer/lifecycle/TerminalSetup.js +82 -0
  250. package/dist/src/renderer/lifecycle/TerminalSetup.js.map +1 -0
  251. package/dist/src/renderer/lifecycle/index.d.ts +4 -0
  252. package/dist/src/renderer/lifecycle/index.d.ts.map +1 -0
  253. package/dist/src/renderer/lifecycle/index.js +4 -0
  254. package/dist/src/renderer/lifecycle/index.js.map +1 -0
  255. package/dist/src/renderer/modes/FullscreenRenderer.d.ts +12 -0
  256. package/dist/src/renderer/modes/FullscreenRenderer.d.ts.map +1 -0
  257. package/dist/src/renderer/modes/FullscreenRenderer.js +52 -0
  258. package/dist/src/renderer/modes/FullscreenRenderer.js.map +1 -0
  259. package/dist/src/renderer/modes/InlineRenderer.d.ts +22 -0
  260. package/dist/src/renderer/modes/InlineRenderer.d.ts.map +1 -0
  261. package/dist/src/renderer/modes/InlineRenderer.js +154 -0
  262. package/dist/src/renderer/modes/InlineRenderer.js.map +1 -0
  263. package/dist/src/renderer/modes/RendererMode.d.ts +42 -0
  264. package/dist/src/renderer/modes/RendererMode.d.ts.map +1 -0
  265. package/dist/src/renderer/modes/RendererMode.js +2 -0
  266. package/dist/src/renderer/modes/RendererMode.js.map +1 -0
  267. package/dist/src/renderer/modes/StaticContentRenderer.d.ts +25 -0
  268. package/dist/src/renderer/modes/StaticContentRenderer.d.ts.map +1 -0
  269. package/dist/src/renderer/modes/StaticContentRenderer.js +47 -0
  270. package/dist/src/renderer/modes/StaticContentRenderer.js.map +1 -0
  271. package/dist/src/renderer/modes/index.d.ts +5 -0
  272. package/dist/src/renderer/modes/index.d.ts.map +1 -0
  273. package/dist/src/renderer/modes/index.js +4 -0
  274. package/dist/src/renderer/modes/index.js.map +1 -0
  275. package/dist/src/renderer-context.d.ts +9 -0
  276. package/dist/src/renderer-context.d.ts.map +1 -0
  277. package/dist/src/renderer-context.js +22 -0
  278. package/dist/src/renderer-context.js.map +1 -0
  279. package/dist/src/renderer-types.d.ts +103 -0
  280. package/dist/src/renderer-types.d.ts.map +1 -0
  281. package/dist/src/renderer-types.js +2 -0
  282. package/dist/src/renderer-types.js.map +1 -0
  283. package/dist/src/renderer.d.ts +4 -86
  284. package/dist/src/renderer.d.ts.map +1 -1
  285. package/dist/src/renderer.js +213 -384
  286. package/dist/src/renderer.js.map +1 -1
  287. package/dist/src/test/index.d.ts.map +1 -1
  288. package/dist/src/test/index.js.map +1 -1
  289. package/dist/src/test/mock-streams.d.ts.map +1 -1
  290. package/dist/src/test/mock-streams.js.map +1 -1
  291. package/dist/src/test/render-tui.d.ts.map +1 -1
  292. package/dist/src/test/render-tui.js +2 -5
  293. package/dist/src/test/render-tui.js.map +1 -1
  294. package/dist/src/trace/SpanTree.d.ts.map +1 -1
  295. package/dist/src/trace/SpanTree.js +21 -11
  296. package/dist/src/trace/SpanTree.js.map +1 -1
  297. package/dist/src/trace/format-value.d.ts +15 -0
  298. package/dist/src/trace/format-value.d.ts.map +1 -0
  299. package/dist/src/trace/format-value.js +77 -0
  300. package/dist/src/trace/format-value.js.map +1 -0
  301. package/dist/src/trace/index.d.ts.map +1 -1
  302. package/dist/src/trace/index.js.map +1 -1
  303. package/dist/src/trace/location.js +1 -1
  304. package/dist/src/trace/location.js.map +1 -1
  305. package/dist/src/trace/span-processor.d.ts.map +1 -1
  306. package/dist/src/trace/span-processor.js.map +1 -1
  307. package/dist/src/trace/span-state.d.ts +19 -2
  308. package/dist/src/trace/span-state.d.ts.map +1 -1
  309. package/dist/src/trace/span-state.js +62 -31
  310. package/dist/src/trace/span-state.js.map +1 -1
  311. package/dist/src/trace/tui-logger.js.map +1 -1
  312. package/dist/src/utils/border.d.ts +1 -1
  313. package/dist/src/utils/border.d.ts.map +1 -1
  314. package/dist/src/utils/border.js +6 -0
  315. package/dist/src/utils/border.js.map +1 -1
  316. package/dist/src/utils/flex-layout.d.ts +2 -1
  317. package/dist/src/utils/flex-layout.d.ts.map +1 -1
  318. package/dist/src/utils/flex-layout.js +22 -33
  319. package/dist/src/utils/flex-layout.js.map +1 -1
  320. package/dist/src/utils/index.d.ts +1 -1
  321. package/dist/src/utils/index.d.ts.map +1 -1
  322. package/dist/src/utils/index.js +1 -1
  323. package/dist/src/utils/index.js.map +1 -1
  324. package/dist/src/utils/padding.d.ts.map +1 -1
  325. package/dist/src/utils/padding.js.map +1 -1
  326. package/dist/src/utils/styles.d.ts +20 -1
  327. package/dist/src/utils/styles.d.ts.map +1 -1
  328. package/dist/src/utils/styles.js +36 -1
  329. package/dist/src/utils/styles.js.map +1 -1
  330. package/dist/src/visualize/index.d.ts +8 -19
  331. package/dist/src/visualize/index.d.ts.map +1 -1
  332. package/dist/src/visualize/index.js +11 -25
  333. package/dist/src/visualize/index.js.map +1 -1
  334. package/dist/tsconfig.tsbuildinfo +1 -1
  335. package/jsx-dev-runtime.ts +5 -0
  336. package/jsx-runtime.ts +54 -0
  337. package/package.json +124 -92
  338. package/src/codeblock.tsx +34 -34
  339. package/src/components/Divider.tsx +23 -0
  340. package/src/components/Markdown.tsx +380 -0
  341. package/src/components/MultilineTextInput.tsx +749 -0
  342. package/src/components/Overlay.tsx +56 -0
  343. package/src/components/Static.tsx +68 -0
  344. package/src/components/TextInput.tsx +285 -0
  345. package/src/components/index.ts +6 -0
  346. package/src/components/text-editing.ts +464 -0
  347. package/src/console/ConsoleCapture.ts +272 -0
  348. package/src/console/ConsolePopover.tsx +487 -0
  349. package/src/console/clipboard.ts +81 -0
  350. package/src/console/index.ts +42 -0
  351. package/src/console/useConsole.ts +129 -0
  352. package/src/debug/DebugOverlay.ts +557 -0
  353. package/src/debug/DiagnosticsPanel.tsx +27 -27
  354. package/src/dev/Toast.tsx +117 -0
  355. package/src/dev/index.ts +2 -0
  356. package/src/dev.tsx +489 -0
  357. package/src/highlight.ts +46 -46
  358. package/src/hmr-plugin.ts +61 -0
  359. package/src/hooks/index.ts +4 -0
  360. package/src/hooks/use-keyboard.ts +44 -24
  361. package/src/hooks/use-mouse.ts +51 -0
  362. package/src/hooks/use-paste.ts +21 -6
  363. package/src/hooks/use-scroll.ts +386 -0
  364. package/src/hooks/useFrameStats.ts +17 -17
  365. package/src/hosts/base.ts +180 -59
  366. package/src/hosts/box.ts +117 -96
  367. package/src/hosts/canvas.ts +137 -141
  368. package/src/hosts/codeblock.ts +117 -133
  369. package/src/hosts/flex-container.ts +124 -0
  370. package/src/hosts/hstack.ts +11 -59
  371. package/src/hosts/index.ts +24 -14
  372. package/src/hosts/overlay-item.ts +72 -0
  373. package/src/hosts/overlay.ts +125 -0
  374. package/src/hosts/scroll.ts +255 -0
  375. package/src/hosts/single-child.ts +52 -0
  376. package/src/hosts/spacer.ts +30 -26
  377. package/src/hosts/text.ts +198 -164
  378. package/src/hosts/vstack.ts +11 -59
  379. package/src/hosts/zstack.ts +79 -67
  380. package/src/index.ts +44 -19
  381. package/src/inline/index.tsx +123 -123
  382. package/src/motion/color-motion-value.ts +67 -67
  383. package/src/motion/color.test.ts +107 -107
  384. package/src/motion/color.ts +9 -190
  385. package/src/motion/event-emitter.ts +20 -20
  386. package/src/motion/frame.ts +35 -35
  387. package/src/motion/hooks.ts +144 -139
  388. package/src/motion/index.ts +10 -10
  389. package/src/motion/motion-value.test.ts +207 -207
  390. package/src/motion/motion-value.ts +112 -112
  391. package/src/motion/spring-math.ts +88 -83
  392. package/src/motion/types.ts +25 -25
  393. package/src/profiler.ts +50 -50
  394. package/src/reconciler/host-config.ts +152 -174
  395. package/src/reconciler/noop-methods.ts +55 -0
  396. package/src/reconciler/types.ts +112 -46
  397. package/src/remote/Procedures.ts +52 -0
  398. package/src/remote/Router.ts +58 -0
  399. package/src/remote/Server.ts +76 -0
  400. package/src/remote/index.ts +90 -0
  401. package/src/renderer/core/FrameBuilder.ts +49 -0
  402. package/src/renderer/core/RendererState.ts +80 -0
  403. package/src/renderer/core/index.ts +2 -0
  404. package/src/renderer/input/InputProcessor.ts +94 -0
  405. package/src/renderer/input/index.ts +1 -0
  406. package/src/renderer/lifecycle/EventBus.ts +90 -0
  407. package/src/renderer/lifecycle/ResizeManager.ts +65 -0
  408. package/src/renderer/lifecycle/TerminalSetup.ts +105 -0
  409. package/src/renderer/lifecycle/index.ts +3 -0
  410. package/src/renderer/modes/FullscreenRenderer.ts +53 -0
  411. package/src/renderer/modes/InlineRenderer.ts +178 -0
  412. package/src/renderer/modes/RendererMode.ts +46 -0
  413. package/src/renderer/modes/StaticContentRenderer.ts +56 -0
  414. package/src/renderer/modes/index.ts +4 -0
  415. package/src/renderer-context.ts +27 -0
  416. package/src/renderer-types.ts +109 -0
  417. package/src/renderer.ts +391 -642
  418. package/src/test/index.ts +5 -5
  419. package/src/test/mock-streams.ts +115 -115
  420. package/src/test/render-tui.ts +84 -87
  421. package/src/utils/border.ts +79 -73
  422. package/src/utils/flex-layout.ts +80 -93
  423. package/src/utils/index.ts +1 -1
  424. package/src/utils/padding.ts +27 -27
  425. package/src/utils/styles.ts +50 -7
  426. package/src/visualize/index.tsx +225 -240
  427. package/dist/src/output.d.ts +0 -47
  428. package/dist/src/output.d.ts.map +0 -1
  429. package/dist/src/output.js +0 -125
  430. package/dist/src/output.js.map +0 -1
  431. package/dist/src/terminal.d.ts +0 -37
  432. package/dist/src/terminal.d.ts.map +0 -1
  433. package/dist/src/terminal.js +0 -65
  434. package/dist/src/terminal.js.map +0 -1
  435. package/src/output.ts +0 -156
  436. package/src/terminal.ts +0 -67
  437. package/src/trace/SpanTree.tsx +0 -195
  438. package/src/trace/index.tsx +0 -205
  439. package/src/trace/location.ts +0 -90
  440. package/src/trace/span-processor.ts +0 -65
  441. package/src/trace/span-state.ts +0 -286
  442. package/src/trace/tui-logger.ts +0 -72
package/src/hosts/box.ts CHANGED
@@ -1,105 +1,126 @@
1
- import type { CellBuffer, Palette, ColorValue } from "@effect-tui/core"
1
+ import type { CellBuffer, Palette, Color } from "@effect-tui/core"
2
2
  import { Colors } from "@effect-tui/core"
3
3
  import type { HostContext, Rect, Size, CommonProps } from "../reconciler/types.js"
4
- import { BaseHost } from "./base.js"
5
- import { type BorderKind, borderChars, drawBorder, type Padding, type PaddingInput, resolvePadding } from "../utils/index.js"
4
+ import { getInheritedBg } from "./base.js"
5
+ import { SingleChildHost } from "./single-child.js"
6
+ import {
7
+ type BorderKind,
8
+ borderChars,
9
+ drawBorder,
10
+ type Padding,
11
+ type PaddingInput,
12
+ resolvePadding,
13
+ resolveBgStyle,
14
+ toColorValue,
15
+ } from "../utils/index.js"
6
16
 
7
17
  export type { BorderKind }
8
18
 
9
19
  export interface BoxProps extends CommonProps {
10
- padding?: PaddingInput
11
- border?: BorderKind
12
- borderColor?: ColorValue
13
- bg?: ColorValue
20
+ padding?: PaddingInput
21
+ border?: BorderKind
22
+ borderColor?: Color
23
+ bg?: Color
14
24
  }
15
25
 
16
- export class BoxHost extends BaseHost {
17
- padding: Padding = { top: 0, right: 0, bottom: 0, left: 0 }
18
- border: BorderKind = "none"
19
- borderColor?: ColorValue
20
- bg?: ColorValue
21
-
22
- constructor(props: BoxProps, ctx: HostContext) {
23
- super("box", props, ctx)
24
- this.updateProps(props)
25
- }
26
-
27
- private get borderThickness(): number {
28
- return this.border === "none" ? 0 : 1
29
- }
30
-
31
- private get insetX(): number {
32
- return this.borderThickness + this.padding.left + this.padding.right + this.borderThickness
33
- }
34
-
35
- private get insetY(): number {
36
- return this.borderThickness + this.padding.top + this.padding.bottom + this.borderThickness
37
- }
38
-
39
- measure(maxW: number, maxH: number): Size {
40
- const innerMaxW = Math.max(0, maxW - this.insetX)
41
- const innerMaxH = Math.max(0, maxH - this.insetY)
42
-
43
- // Measure single child (box should have at most one child)
44
- let childW = 0
45
- let childH = 0
46
- if (this.children.length > 0) {
47
- const childSize = this.children[0].measure(innerMaxW, innerMaxH)
48
- childW = childSize.w
49
- childH = childSize.h
50
- }
51
-
52
- return {
53
- w: childW + this.insetX,
54
- h: childH + this.insetY,
55
- }
56
- }
57
-
58
- override layout(rect: Rect): void {
59
- super.layout(rect)
60
-
61
- const t = this.borderThickness
62
- const innerRect: Rect = {
63
- x: rect.x + t + this.padding.left,
64
- y: rect.y + t + this.padding.top,
65
- w: Math.max(0, rect.w - this.insetX),
66
- h: Math.max(0, rect.h - this.insetY),
67
- }
68
-
69
- // Layout single child
70
- if (this.children.length > 0) {
71
- this.children[0].layout(innerRect)
72
- }
73
- }
74
-
75
- render(buffer: CellBuffer, palette: Palette): void {
76
- if (!this.rect) return
77
- const { x, y, w, h } = this.rect
78
-
79
- // Draw background if set
80
- if (this.bg !== undefined) {
81
- const bgStyle = palette.id({ bg: this.bg })
82
- buffer.fillRect(x, y, w, h, " ".codePointAt(0)!, bgStyle)
83
- }
84
-
85
- // Draw border
86
- if (this.border !== "none" && w >= 2 && h >= 2) {
87
- const chars = borderChars(this.border)
88
- const borderStyle = palette.id({ fg: this.borderColor ?? Colors.gray(8) })
89
- drawBorder(buffer, x, y, w, h, chars, borderStyle)
90
- }
91
-
92
- // Render children
93
- for (const child of this.children) {
94
- child.render(buffer, palette)
95
- }
96
- }
97
-
98
- override updateProps(props: Record<string, unknown>): void {
99
- super.updateProps(props)
100
- if (props.padding !== undefined) this.padding = resolvePadding(props.padding as BoxProps["padding"])
101
- if (props.border !== undefined) this.border = props.border as BorderKind
102
- if (props.borderColor !== undefined) this.borderColor = props.borderColor as ColorValue
103
- if (props.bg !== undefined) this.bg = props.bg as ColorValue
104
- }
26
+ export class BoxHost extends SingleChildHost {
27
+ padding: Padding = { top: 0, right: 0, bottom: 0, left: 0 }
28
+ border: BorderKind = "none"
29
+ borderColor?: Color
30
+ bg?: Color
31
+
32
+ constructor(props: BoxProps, ctx: HostContext) {
33
+ super("box", props, ctx)
34
+ this.updateProps(props)
35
+ }
36
+
37
+ private get borderThickness(): number {
38
+ return this.border === "none" ? 0 : 1
39
+ }
40
+
41
+ private get insetX(): number {
42
+ return this.borderThickness + this.padding.left + this.padding.right + this.borderThickness
43
+ }
44
+
45
+ private get insetY(): number {
46
+ return this.borderThickness + this.padding.top + this.padding.bottom + this.borderThickness
47
+ }
48
+
49
+ measure(maxW: number, maxH: number): Size {
50
+ // Apply frame constraints first
51
+ const constrained = this.constrainProposal(maxW, maxH)
52
+
53
+ const innerMaxW = Math.max(0, constrained.w - this.insetX)
54
+ const innerMaxH = Math.max(0, constrained.h - this.insetY)
55
+
56
+ // Measure single child (box should have at most one child)
57
+ let childW = 0
58
+ let childH = 0
59
+ const child = this.child
60
+ if (child) {
61
+ const childSize = child.measure(innerMaxW, innerMaxH)
62
+ childW = childSize.w
63
+ childH = childSize.h
64
+ }
65
+
66
+ const naturalSize = {
67
+ w: childW + this.insetX,
68
+ h: childH + this.insetY,
69
+ }
70
+
71
+ // Apply frame constraints to result
72
+ return this.constrainResult(naturalSize)
73
+ }
74
+
75
+ override layout(rect: Rect): void {
76
+ super.layout(rect)
77
+
78
+ const t = this.borderThickness
79
+ const innerRect: Rect = {
80
+ x: rect.x + t + this.padding.left,
81
+ y: rect.y + t + this.padding.top,
82
+ w: Math.max(0, rect.w - this.insetX),
83
+ h: Math.max(0, rect.h - this.insetY),
84
+ }
85
+
86
+ // Layout single child
87
+ const child = this.child
88
+ if (child) {
89
+ child.layout(innerRect)
90
+ }
91
+ }
92
+
93
+ render(buffer: CellBuffer, palette: Palette): void {
94
+ if (!this.rect) return
95
+ const { x, y, w, h } = this.rect
96
+
97
+ // If no explicit bg, inherit from parent (so child boxes are transparent over parents)
98
+ const rawBg: Color | undefined = this.bg ?? getInheritedBg(this.parent)
99
+
100
+ // Always clear our rect to ensure stale backgrounds are removed.
101
+ const { styleId: bgStyleId } = resolveBgStyle(palette, rawBg)
102
+ buffer.fillRect(x, y, w, h, " ".codePointAt(0)!, bgStyleId)
103
+
104
+ // Draw border
105
+ if (this.border !== "none" && w >= 2 && h >= 2) {
106
+ const chars = borderChars(this.border)
107
+ const borderFg = toColorValue(this.borderColor) ?? Colors.gray(8)
108
+ const borderStyle = palette.id({ fg: borderFg })
109
+ drawBorder(buffer, x, y, w, h, chars, borderStyle)
110
+ }
111
+
112
+ // Render single child
113
+ const child = this.child
114
+ if (child) {
115
+ child.render(buffer, palette)
116
+ }
117
+ }
118
+
119
+ override updateProps(props: Record<string, unknown>): void {
120
+ super.updateProps(props)
121
+ this.padding = resolvePadding(props.padding as BoxProps["padding"])
122
+ this.border = (props.border as BorderKind | undefined) ?? "none"
123
+ this.borderColor = props.borderColor as Color | undefined
124
+ this.bg = props.bg as Color | undefined
125
+ }
105
126
  }
@@ -1,155 +1,151 @@
1
- import type { CellBuffer, Palette, ColorValue } from "@effect-tui/core"
1
+ import type { CellBuffer, Palette, Color } from "@effect-tui/core"
2
2
  import { Colors } from "@effect-tui/core"
3
3
  import type { HostContext, Size, CommonProps } from "../reconciler/types.js"
4
4
  import { BaseHost } from "./base.js"
5
- import { type BorderKind, borderChars, drawBorder } from "../utils/index.js"
5
+ import { type BorderKind, borderChars, drawBorder, resolveBgStyle, styleIdFromProps, toColorValue } from "../utils/index.js"
6
6
 
7
7
  export type { BorderKind }
8
8
 
9
9
  export interface DrawContext {
10
- /** Canvas width in cells */
11
- width: number
12
- /** Canvas height in cells */
13
- height: number
14
-
15
- /** Draw text at position */
16
- text(x: number, y: number, str: string, opts?: { fg?: ColorValue; bg?: ColorValue }): void
17
-
18
- /** Fill rectangle with character */
19
- fill(x: number, y: number, w: number, h: number, char?: string, opts?: { fg?: ColorValue; bg?: ColorValue }): void
20
-
21
- /** Draw box with optional border */
22
- box(
23
- x: number,
24
- y: number,
25
- w: number,
26
- h: number,
27
- opts?: {
28
- border?: BorderKind
29
- borderColor?: ColorValue
30
- bg?: ColorValue
31
- fg?: ColorValue
32
- },
33
- ): void
34
-
35
- /** Clear entire canvas */
36
- clear(): void
10
+ /** Canvas width in cells */
11
+ width: number
12
+ /** Canvas height in cells */
13
+ height: number
14
+
15
+ /** Draw text at position */
16
+ text(x: number, y: number, str: string, opts?: { fg?: Color; bg?: Color }): void
17
+
18
+ /** Fill rectangle with character */
19
+ fill(x: number, y: number, w: number, h: number, char?: string, opts?: { fg?: Color; bg?: Color }): void
20
+
21
+ /** Draw box with optional border */
22
+ box(
23
+ x: number,
24
+ y: number,
25
+ w: number,
26
+ h: number,
27
+ opts?: {
28
+ border?: BorderKind
29
+ borderColor?: Color
30
+ bg?: Color
31
+ fg?: Color
32
+ },
33
+ ): void
34
+
35
+ /** Clear entire canvas */
36
+ clear(): void
37
37
  }
38
38
 
39
39
  export interface CanvasProps extends CommonProps {
40
- /** Draw function called each render */
41
- draw: (ctx: DrawContext) => void
42
- /** Fixed width (default: fill available) */
43
- width?: number
44
- /** Fixed height (default: fill available) */
45
- height?: number
40
+ /** Draw function called each render */
41
+ draw: (ctx: DrawContext) => void
42
+ /** Fixed width (default: fill available) */
43
+ width?: number
44
+ /** Fixed height (default: fill available) */
45
+ height?: number
46
46
  }
47
47
 
48
48
  export class CanvasHost extends BaseHost {
49
- draw: CanvasProps["draw"] = () => {}
50
- fixedWidth?: number
51
- fixedHeight?: number
52
-
53
- constructor(props: CanvasProps, ctx: HostContext) {
54
- super("canvas", props, ctx)
55
- this.updateProps(props)
56
- }
57
-
58
- measure(maxW: number, maxH: number): Size {
59
- return {
60
- w: this.fixedWidth ?? maxW,
61
- h: this.fixedHeight ?? maxH,
62
- }
63
- }
64
-
65
- render(buffer: CellBuffer, palette: Palette): void {
66
- if (!this.rect) return
67
- const { x: ox, y: oy, w, h } = this.rect
68
-
69
- // Create draw context
70
- const ctx: DrawContext = {
71
- width: w,
72
- height: h,
73
-
74
- text: (x, y, str, opts) => {
75
- const px = Math.round(ox + x)
76
- const py = Math.round(oy + y)
77
- if (py < oy || py >= oy + h) return
78
- const style = palette.id({ fg: opts?.fg, bg: opts?.bg })
79
- let col = px
80
- for (const char of str) {
81
- if (col >= ox + w) break
82
- if (col >= ox) {
83
- buffer.drawCP(col, py, char.codePointAt(0)!, style)
84
- }
85
- col++
86
- }
87
- },
88
-
89
- fill: (x, y, fw, fh, char = " ", opts) => {
90
- const px = Math.round(ox + x)
91
- const py = Math.round(oy + y)
92
- const cp = char.codePointAt(0)!
93
- const style = palette.id({ fg: opts?.fg, bg: opts?.bg })
94
- for (let row = 0; row < fh; row++) {
95
- const yy = py + row
96
- if (yy < oy || yy >= oy + h) continue
97
- for (let col = 0; col < fw; col++) {
98
- const xx = px + col
99
- if (xx < ox || xx >= ox + w) continue
100
- buffer.drawCP(xx, yy, cp, style)
101
- }
102
- }
103
- },
104
-
105
- box: (x, y, bw, bh, opts) => {
106
- const px = Math.round(ox + x)
107
- const py = Math.round(oy + y)
108
- const border = opts?.border ?? "none"
109
- const bgStyle = opts?.bg !== undefined ? palette.id({ bg: opts.bg }) : undefined
110
-
111
- // Fill background (with clipping)
112
- if (bgStyle !== undefined) {
113
- for (let row = 0; row < bh; row++) {
114
- const yy = py + row
115
- if (yy < oy || yy >= oy + h) continue
116
- for (let col = 0; col < bw; col++) {
117
- const xx = px + col
118
- if (xx < ox || xx >= ox + w) continue
119
- buffer.drawCP(xx, yy, " ".codePointAt(0)!, bgStyle)
120
- }
121
- }
122
- }
123
-
124
- // Draw border (with clipping)
125
- if (border !== "none" && bw >= 2 && bh >= 2) {
126
- const chars = borderChars(border)
127
- const borderStyle = palette.id({ fg: opts?.borderColor ?? opts?.fg ?? Colors.gray(8) })
128
- drawBorder(buffer, px, py, bw, bh, chars, borderStyle, { ox, oy, w, h })
129
- }
130
- },
131
-
132
- clear: () => {
133
- const style = palette.id({})
134
- for (let row = 0; row < h; row++) {
135
- for (let col = 0; col < w; col++) {
136
- buffer.drawCP(ox + col, oy + row, " ".codePointAt(0)!, style)
137
- }
138
- }
139
- },
140
- }
141
-
142
- // Call user's draw function
143
- this.draw(ctx)
144
- }
145
-
146
- override updateProps(props: Record<string, unknown>): void {
147
- super.updateProps(props)
148
- if (props.draw !== undefined) {
149
- this.draw = props.draw as CanvasProps["draw"]
150
- this.ctx.requestRender() // trigger repaint when draw function changes
151
- }
152
- if (props.width !== undefined) this.fixedWidth = props.width as number
153
- if (props.height !== undefined) this.fixedHeight = props.height as number
154
- }
49
+ draw: CanvasProps["draw"] = () => {}
50
+ fixedWidth?: number
51
+ fixedHeight?: number
52
+
53
+ constructor(props: CanvasProps, ctx: HostContext) {
54
+ super("canvas", props, ctx)
55
+ this.updateProps(props)
56
+ }
57
+
58
+ measure(maxW: number, maxH: number): Size {
59
+ return {
60
+ w: this.fixedWidth ?? maxW,
61
+ h: this.fixedHeight ?? maxH,
62
+ }
63
+ }
64
+
65
+ render(buffer: CellBuffer, palette: Palette): void {
66
+ if (!this.rect) return
67
+ const { x: ox, y: oy, w, h } = this.rect
68
+
69
+ // Create draw context
70
+ const ctx: DrawContext = {
71
+ width: w,
72
+ height: h,
73
+
74
+ text: (x, y, str, opts) => {
75
+ const px = Math.round(ox + x)
76
+ const py = Math.round(oy + y)
77
+ const style = styleIdFromProps(palette, { fg: opts?.fg, bg: opts?.bg })
78
+ let col = px
79
+ for (const char of str) {
80
+ if (col >= ox + w) break
81
+ buffer.drawCP(col, py, char.codePointAt(0)!, style)
82
+ col++
83
+ }
84
+ },
85
+
86
+ fill: (x, y, fw, fh, char = " ", opts) => {
87
+ const px = Math.round(ox + x)
88
+ const py = Math.round(oy + y)
89
+ const cp = char.codePointAt(0)!
90
+ const style = styleIdFromProps(palette, { fg: opts?.fg, bg: opts?.bg })
91
+ for (let row = 0; row < fh; row++) {
92
+ const yy = py + row
93
+ for (let col = 0; col < fw; col++) {
94
+ const xx = px + col
95
+ buffer.drawCP(xx, yy, cp, style)
96
+ }
97
+ }
98
+ },
99
+
100
+ box: (x, y, bw, bh, opts) => {
101
+ const px = Math.round(ox + x)
102
+ const py = Math.round(oy + y)
103
+ const border = opts?.border ?? "none"
104
+ const { value: bgValue, styleId: bgStyleId } = resolveBgStyle(palette, opts?.bg)
105
+
106
+ // Fill background (with clipping)
107
+ if (bgValue !== undefined) {
108
+ for (let row = 0; row < bh; row++) {
109
+ const yy = py + row
110
+ for (let col = 0; col < bw; col++) {
111
+ const xx = px + col
112
+ buffer.drawCP(xx, yy, " ".codePointAt(0)!, bgStyleId)
113
+ }
114
+ }
115
+ }
116
+
117
+ // Draw border (with clipping)
118
+ if (border !== "none" && bw >= 2 && bh >= 2) {
119
+ const chars = borderChars(border)
120
+ const borderFg = toColorValue(opts?.borderColor) ?? toColorValue(opts?.fg) ?? Colors.gray(8)
121
+ const borderStyle = palette.id({ fg: borderFg })
122
+ drawBorder(buffer, px, py, bw, bh, chars, borderStyle, { ox, oy, w, h })
123
+ }
124
+ },
125
+
126
+ clear: () => {
127
+ const style = palette.id({})
128
+ for (let row = 0; row < h; row++) {
129
+ for (let col = 0; col < w; col++) {
130
+ buffer.drawCP(ox + col, oy + row, " ".codePointAt(0)!, style)
131
+ }
132
+ }
133
+ },
134
+ }
135
+
136
+ buffer.withClip(ox, oy, w, h, () => {
137
+ // Call user's draw function within the canvas clip region
138
+ this.draw(ctx)
139
+ })
140
+ }
141
+
142
+ override updateProps(props: Record<string, unknown>): void {
143
+ super.updateProps(props)
144
+ if (props.draw !== undefined) {
145
+ this.draw = props.draw as CanvasProps["draw"]
146
+ this.ctx.requestRender() // trigger repaint when draw function changes
147
+ }
148
+ if (props.width !== undefined) this.fixedWidth = props.width as number
149
+ if (props.height !== undefined) this.fixedHeight = props.height as number
150
+ }
155
151
  }