@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
@@ -0,0 +1,45 @@
1
+ import type { CellBuffer, Palette, Color } from "@effect-tui/core";
2
+ import type { HostContext, Rect, Size, CommonProps } from "../reconciler/types.js";
3
+ import { BaseHost } from "./base.js";
4
+ import { type FlexAxis } from "../utils/index.js";
5
+ export type CrossAlignment<A extends FlexAxis> = A extends "vertical" ? "leading" | "center" | "trailing" : "top" | "center" | "bottom";
6
+ export interface FlexContainerProps<A extends FlexAxis> extends CommonProps {
7
+ spacing?: number;
8
+ alignment?: CrossAlignment<A>;
9
+ /** Background color to fill the entire container rect */
10
+ bg?: Color;
11
+ }
12
+ /**
13
+ * FlexContainerHost is a generic linear layout container.
14
+ * VStackHost and HStackHost extend this with their axis-specific defaults.
15
+ */
16
+ export declare class FlexContainerHost<A extends FlexAxis> extends BaseHost {
17
+ protected readonly axis: A;
18
+ spacing: number;
19
+ alignment: CrossAlignment<A>;
20
+ bg?: Color;
21
+ private cachedSizes;
22
+ private layoutChildren;
23
+ constructor(axis: A, elementType: string, props: FlexContainerProps<A>, ctx: HostContext, defaultAlignment: CrossAlignment<A>);
24
+ /** Get children excluding __static nodes (which are rendered separately) */
25
+ private getNonStaticChildren;
26
+ /**
27
+ * Measure this container's size given parent's proposed constraints.
28
+ *
29
+ * Frame constraints are applied in two places:
30
+ * 1. constrainProposal() - limits what we tell children is available
31
+ * 2. constrainResult() - limits what we report back to parent
32
+ *
33
+ * This enables patterns like:
34
+ * ```tsx
35
+ * <vstack height={10}> // Reports 10, proposes 10 to children
36
+ * <scroll>...</scroll> // Greedy, but only gets 10
37
+ * </vstack>
38
+ * ```
39
+ */
40
+ measure(maxW: number, maxH: number): Size;
41
+ layout(rect: Rect): void;
42
+ render(buffer: CellBuffer, palette: Palette): void;
43
+ updateProps(props: Record<string, unknown>): void;
44
+ }
45
+ //# sourceMappingURL=flex-container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flex-container.d.ts","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAElE,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAA2B,KAAK,QAAQ,EAAsC,MAAM,mBAAmB,CAAA;AAE9G,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,QAAQ,IAAI,CAAC,SAAS,UAAU,GAClE,SAAS,GAAG,QAAQ,GAAG,UAAU,GACjC,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAE9B,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,WAAW;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAA;IAC7B,yDAAyD;IACzD,EAAE,CAAC,EAAE,KAAK,CAAA;CACV;AAYD;;;GAGG;AACH,qBAAa,iBAAiB,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAQjE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAP3B,OAAO,SAAI;IACX,SAAS,EAAG,cAAc,CAAC,CAAC,CAAC,CAAA;IAC7B,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,cAAc,CAA2B;gBAG7B,IAAI,EAAE,CAAC,EAC1B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC5B,GAAG,EAAE,WAAW,EAChB,gBAAgB,EAAE,cAAc,CAAC,CAAC,CAAC;IAOpC,4EAA4E;IAC5E,OAAO,CAAC,oBAAoB;IAI5B;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAchC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAcjC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAgBzC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAS1D"}
@@ -0,0 +1,90 @@
1
+ import { splitConstraints } from "@effect-tui/core";
2
+ import { BaseHost } from "./base.js";
3
+ import { measureFlex, layoutFlex, resolveBgStyle } from "../utils/index.js";
4
+ // Map alignment names to generic flex alignment
5
+ function toFlexAlignment(axis, alignment) {
6
+ if (alignment === "center")
7
+ return "center";
8
+ if (axis === "vertical") {
9
+ return alignment === "leading" ? "start" : "end";
10
+ }
11
+ else {
12
+ return alignment === "top" ? "start" : "end";
13
+ }
14
+ }
15
+ /**
16
+ * FlexContainerHost is a generic linear layout container.
17
+ * VStackHost and HStackHost extend this with their axis-specific defaults.
18
+ */
19
+ export class FlexContainerHost extends BaseHost {
20
+ axis;
21
+ spacing = 0;
22
+ alignment; // Set in constructor before updateProps
23
+ bg;
24
+ cachedSizes = [];
25
+ layoutChildren = [];
26
+ constructor(axis, elementType, props, ctx, defaultAlignment) {
27
+ super(elementType, props, ctx);
28
+ this.axis = axis;
29
+ this.alignment = defaultAlignment;
30
+ this.updateProps(props);
31
+ }
32
+ /** Get children excluding __static nodes (which are rendered separately) */
33
+ getNonStaticChildren() {
34
+ return this.children.filter((c) => !c.__static);
35
+ }
36
+ /**
37
+ * Measure this container's size given parent's proposed constraints.
38
+ *
39
+ * Frame constraints are applied in two places:
40
+ * 1. constrainProposal() - limits what we tell children is available
41
+ * 2. constrainResult() - limits what we report back to parent
42
+ *
43
+ * This enables patterns like:
44
+ * ```tsx
45
+ * <vstack height={10}> // Reports 10, proposes 10 to children
46
+ * <scroll>...</scroll> // Greedy, but only gets 10
47
+ * </vstack>
48
+ * ```
49
+ */
50
+ measure(maxW, maxH) {
51
+ // Apply frame constraints to what we propose to children
52
+ const constrained = this.constrainProposal(maxW, maxH);
53
+ // Exclude __static children from normal layout - they're rendered to scrollback separately
54
+ this.layoutChildren = this.getNonStaticChildren();
55
+ const [maxMain, maxCross] = splitConstraints(this.axis, constrained.w, constrained.h);
56
+ const result = measureFlex(this.axis, this.layoutChildren, this.spacing, maxMain, maxCross);
57
+ this.cachedSizes = result.sizes;
58
+ // Apply frame constraints to what we report to parent
59
+ return this.constrainResult(result.totalSize);
60
+ }
61
+ layout(rect) {
62
+ super.layout(rect);
63
+ const stretchCross = this.axis === "vertical" ? this.alignment === "leading" : this.alignment === "top";
64
+ layoutFlex(this.axis, this.layoutChildren, this.cachedSizes, rect, this.spacing, toFlexAlignment(this.axis, this.alignment), stretchCross);
65
+ }
66
+ render(buffer, palette) {
67
+ // Fill background color if set
68
+ if (this.bg && this.rect) {
69
+ const { styleId } = resolveBgStyle(palette, this.bg);
70
+ buffer.fillRect(this.rect.x, this.rect.y, this.rect.w, this.rect.h, 32, styleId);
71
+ }
72
+ // Only render non-static children to buffer (static content goes to scrollback)
73
+ // Check __static at render time (not just measure time) to avoid race with React commit
74
+ for (const child of this.layoutChildren) {
75
+ if (!child.__static) {
76
+ child.render(buffer, palette);
77
+ }
78
+ }
79
+ }
80
+ updateProps(props) {
81
+ super.updateProps(props);
82
+ this.spacing = props.spacing ?? 0;
83
+ // Reset to axis-specific default when undefined
84
+ this.alignment =
85
+ props.alignment ??
86
+ (this.axis === "vertical" ? "leading" : "top");
87
+ this.bg = props.bg;
88
+ }
89
+ }
90
+ //# sourceMappingURL=flex-container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flex-container.js","sourceRoot":"","sources":["../../../src/hosts/flex-container.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,13 @@
1
- import type { CellBuffer, Palette } from "@effect-tui/core";
2
- import type { HostContext, Rect, Size, CommonProps } from "../reconciler/types.js";
3
- import { BaseHost } from "./base.js";
1
+ import type { HostContext, CommonProps } from "../reconciler/types.js";
2
+ import { FlexContainerHost } from "./flex-container.js";
4
3
  export interface HStackProps extends CommonProps {
5
4
  spacing?: number;
6
5
  alignment?: "top" | "center" | "bottom";
7
6
  }
8
- export declare class HStackHost extends BaseHost {
9
- spacing: number;
10
- alignment: "top" | "center" | "bottom";
11
- private cachedSizes;
7
+ /**
8
+ * HStackHost lays out children horizontally with optional spacing and cross-axis alignment.
9
+ */
10
+ export declare class HStackHost extends FlexContainerHost<"horizontal"> {
12
11
  constructor(props: HStackProps, ctx: HostContext);
13
- measure(maxW: number, maxH: number): Size;
14
- layout(rect: Rect): void;
15
- render(buffer: CellBuffer, palette: Palette): void;
16
- updateProps(props: Record<string, unknown>): void;
17
12
  }
18
13
  //# sourceMappingURL=hstack.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hstack.d.ts","sourceRoot":"","sources":["../../../src/hosts/hstack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC3D,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAClF,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC9C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACxC;AAcD,qBAAa,UAAW,SAAQ,QAAQ;IACtC,OAAO,SAAI;IACX,SAAS,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAQ;IAC9C,OAAO,CAAC,WAAW,CAAa;gBAEpB,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW;IAKhD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAMhC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAcjC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAMzC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAK3D"}
1
+ {"version":3,"file":"hstack.d.ts","sourceRoot":"","sources":["../../../src/hosts/hstack.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAA;AAEhF,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;CACvC;AAED;;GAEG;AACH,qBAAa,UAAW,SAAQ,iBAAiB,CAAC,YAAY,CAAC;gBAClD,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW;CAGhD"}
@@ -1,45 +1,10 @@
1
- import { BaseHost } from "./base.js";
2
- import { measureFlex, layoutFlex } from "../utils/index.js";
3
- // Map HStack alignment names to generic flex alignment
4
- function toFlexAlignment(alignment) {
5
- switch (alignment) {
6
- case "top":
7
- return "start";
8
- case "center":
9
- return "center";
10
- case "bottom":
11
- return "end";
12
- }
13
- }
14
- export class HStackHost extends BaseHost {
15
- spacing = 0;
16
- alignment = "top";
17
- cachedSizes = [];
1
+ import { FlexContainerHost } from "./flex-container.js";
2
+ /**
3
+ * HStackHost lays out children horizontally with optional spacing and cross-axis alignment.
4
+ */
5
+ export class HStackHost extends FlexContainerHost {
18
6
  constructor(props, ctx) {
19
- super("hstack", props, ctx);
20
- this.updateProps(props);
21
- }
22
- measure(maxW, maxH) {
23
- const result = measureFlex("horizontal", this.children, this.spacing, maxW, maxH);
24
- this.cachedSizes = result.sizes;
25
- return result.totalSize;
26
- }
27
- layout(rect) {
28
- super.layout(rect);
29
- const stretchCross = this.alignment === "top";
30
- layoutFlex("horizontal", this.children, this.cachedSizes, rect, this.spacing, toFlexAlignment(this.alignment), stretchCross);
31
- }
32
- render(buffer, palette) {
33
- for (const child of this.children) {
34
- child.render(buffer, palette);
35
- }
36
- }
37
- updateProps(props) {
38
- super.updateProps(props);
39
- if (props.spacing !== undefined)
40
- this.spacing = props.spacing;
41
- if (props.alignment !== undefined)
42
- this.alignment = props.alignment;
7
+ super("horizontal", "hstack", props, ctx, "top");
43
8
  }
44
9
  }
45
10
  //# sourceMappingURL=hstack.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hstack.js","sourceRoot":"","sources":["../../../src/hosts/hstack.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAsB,MAAM,mBAAmB,CAAA;AAO/E,uDAAuD;AACvD,SAAS,eAAe,CAAC,SAAsC;IAC7D,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,KAAK;YACR,OAAO,OAAO,CAAA;QAChB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAA;QACjB,KAAK,QAAQ;YACX,OAAO,KAAK,CAAA;IAChB,CAAC;AACH,CAAC;AAED,MAAM,OAAO,UAAW,SAAQ,QAAQ;IACtC,OAAO,GAAG,CAAC,CAAA;IACX,SAAS,GAAgC,KAAK,CAAA;IACtC,WAAW,GAAW,EAAE,CAAA;IAEhC,YAAY,KAAkB,EAAE,GAAgB;QAC9C,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACzB,CAAC;IAED,OAAO,CAAC,IAAY,EAAE,IAAY;QAChC,MAAM,MAAM,GAAG,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACjF,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAA;QAC/B,OAAO,MAAM,CAAC,SAAS,CAAA;IACzB,CAAC;IAEQ,MAAM,CAAC,IAAU;QACxB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAClB,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,KAAK,KAAK,CAAA;QAC7C,UAAU,CACR,YAAY,EACZ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,IAAI,CAAC,OAAO,EACZ,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,EAC/B,YAAY,CACb,CAAA;IACH,CAAC;IAED,MAAM,CAAC,MAAkB,EAAE,OAAgB;QACzC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IAEQ,WAAW,CAAC,KAA8B;QACjD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAiB,CAAA;QACvE,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS;YAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAwC,CAAA;IACpG,CAAC;CACF"}
1
+ {"version":3,"file":"hstack.js","sourceRoot":"","sources":["../../../src/hosts/hstack.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAA2B,MAAM,qBAAqB,CAAA;AAOhF;;GAEG;AACH,MAAM,OAAO,UAAW,SAAQ,iBAA+B;IAC9D,YAAY,KAAkB,EAAE,GAAgB;QAC/C,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAyC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACrF,CAAC;CACD"}
@@ -1,6 +1,7 @@
1
1
  import type { HostContext, CommonProps } from "../reconciler/types.js";
2
2
  import type { BaseHost } from "./base.js";
3
3
  import { RawTextHost } from "./text.js";
4
+ export { SingleChildHost } from "./single-child.js";
4
5
  export { BaseHost } from "./base.js";
5
6
  export { TextHost, RawTextHost, type TextProps } from "./text.js";
6
7
  export { SpacerHost, type SpacerProps } from "./spacer.js";
@@ -10,6 +11,9 @@ export { ZStackHost, type ZStackProps } from "./zstack.js";
10
11
  export { BoxHost, type BoxProps } from "./box.js";
11
12
  export { CanvasHost, type CanvasProps, type DrawContext } from "./canvas.js";
12
13
  export { CodeBlockHost, type CodeBlockProps } from "./codeblock.js";
14
+ export { ScrollHost, type ScrollProps } from "./scroll.js";
15
+ export { OverlayHost, type OverlayProps } from "./overlay.js";
16
+ export { OverlayItemHost, type OverlayItemProps } from "./overlay-item.js";
13
17
  export declare const hostRegistry: Record<string, new (props: any, ctx: HostContext) => BaseHost>;
14
18
  export declare function createHostInstance(type: string, props: CommonProps, ctx: HostContext): BaseHost;
15
19
  export declare function createTextInstance(text: string, ctx: HostContext): RawTextHost;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAY,WAAW,EAAE,MAAM,WAAW,CAAA;AASjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAInE,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,KAAK,QAAQ,CASvF,CAAA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAM/F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAE9E"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAY,WAAW,EAAE,MAAM,WAAW,CAAA;AAWjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAI1E,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,KAAK,QAAQ,CAYvF,CAAA;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,QAAQ,CAM/F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,WAAW,GAAG,WAAW,CAE9E"}
@@ -6,6 +6,10 @@ import { ZStackHost } from "./zstack.js";
6
6
  import { BoxHost } from "./box.js";
7
7
  import { CanvasHost } from "./canvas.js";
8
8
  import { CodeBlockHost } from "./codeblock.js";
9
+ import { ScrollHost } from "./scroll.js";
10
+ import { OverlayHost } from "./overlay.js";
11
+ import { OverlayItemHost } from "./overlay-item.js";
12
+ export { SingleChildHost } from "./single-child.js";
9
13
  export { BaseHost } from "./base.js";
10
14
  export { TextHost, RawTextHost } from "./text.js";
11
15
  export { SpacerHost } from "./spacer.js";
@@ -15,6 +19,9 @@ export { ZStackHost } from "./zstack.js";
15
19
  export { BoxHost } from "./box.js";
16
20
  export { CanvasHost } from "./canvas.js";
17
21
  export { CodeBlockHost } from "./codeblock.js";
22
+ export { ScrollHost } from "./scroll.js";
23
+ export { OverlayHost } from "./overlay.js";
24
+ export { OverlayItemHost } from "./overlay-item.js";
18
25
  // Use any to allow specialized props on each host type
19
26
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
20
27
  export const hostRegistry = {
@@ -26,6 +33,9 @@ export const hostRegistry = {
26
33
  box: BoxHost,
27
34
  canvas: CanvasHost,
28
35
  codeblock: CodeBlockHost,
36
+ scroll: ScrollHost,
37
+ overlay: OverlayHost,
38
+ overlayItem: OverlayItemHost,
29
39
  };
30
40
  export function createHostInstance(type, props, ctx) {
31
41
  const Host = hostRegistry[type];
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAA;AAEnE,uDAAuD;AACvD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAmE;IAC1F,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,aAAa;CACzB,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAkB,EAAE,GAAgB;IACnF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAA;IACzD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAgB;IAC/D,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AACnC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hosts/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEnD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AACpC,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAA;AACjE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,OAAO,EAAiB,MAAM,UAAU,CAAA;AACjD,OAAO,EAAE,UAAU,EAAsC,MAAM,aAAa,CAAA;AAC5E,OAAO,EAAE,aAAa,EAAuB,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,UAAU,EAAoB,MAAM,aAAa,CAAA;AAC1D,OAAO,EAAE,WAAW,EAAqB,MAAM,cAAc,CAAA;AAC7D,OAAO,EAAE,eAAe,EAAyB,MAAM,mBAAmB,CAAA;AAE1E,uDAAuD;AACvD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,YAAY,GAAmE;IAC3F,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,OAAO;IACZ,MAAM,EAAE,UAAU;IAClB,SAAS,EAAE,aAAa;IACxB,MAAM,EAAE,UAAU;IAClB,OAAO,EAAE,WAAW;IACpB,WAAW,EAAE,eAAe;CAC5B,CAAA;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,KAAkB,EAAE,GAAgB;IACpF,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,CAAA;IAC/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAgC,IAAI,EAAE,CAAC,CAAA;IACxD,CAAC;IACD,OAAO,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY,EAAE,GAAgB;IAChE,OAAO,IAAI,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;AAClC,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * OverlayItem host - wrapper for overlay children with alignment
3
+ *
4
+ * This is a pass-through container that holds alignment props.
5
+ * Used by Overlay to position non-base children.
6
+ */
7
+ import type { CellBuffer, Palette, Rect, Size } from "@effect-tui/core";
8
+ import type { HostContext, CommonProps } from "../reconciler/types.js";
9
+ import { BaseHost } from "./base.js";
10
+ type HAlign = "left" | "center" | "right";
11
+ type VAlign = "top" | "center" | "bottom";
12
+ export interface OverlayItemProps extends CommonProps {
13
+ /** Alignment within the overlay container */
14
+ alignment?: {
15
+ h?: HAlign;
16
+ v?: VAlign;
17
+ };
18
+ }
19
+ export declare class OverlayItemHost extends BaseHost {
20
+ /** Stored alignment for parent Overlay to read */
21
+ alignment: {
22
+ h?: HAlign;
23
+ v?: VAlign;
24
+ };
25
+ constructor(props: OverlayItemProps, ctx: HostContext);
26
+ measure(maxW: number, maxH: number): Size;
27
+ layout(rect: Rect): void;
28
+ render(buffer: CellBuffer, palette: Palette): void;
29
+ updateProps(props: Record<string, unknown>): void;
30
+ }
31
+ export {};
32
+ //# sourceMappingURL=overlay-item.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-item.d.ts","sourceRoot":"","sources":["../../../src/hosts/overlay-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAEpC,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AACzC,KAAK,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEzC,MAAM,WAAW,gBAAiB,SAAQ,WAAW;IACpD,6CAA6C;IAC7C,SAAS,CAAC,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACtC;AAED,qBAAa,eAAgB,SAAQ,QAAQ;IAC5C,kDAAkD;IAClD,SAAS,EAAE;QAAE,CAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAK;gBAE9B,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,WAAW;IAK5C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAazC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAUxB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAclD,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAM1D"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * OverlayItem host - wrapper for overlay children with alignment
3
+ *
4
+ * This is a pass-through container that holds alignment props.
5
+ * Used by Overlay to position non-base children.
6
+ */
7
+ import { BaseHost } from "./base.js";
8
+ export class OverlayItemHost extends BaseHost {
9
+ /** Stored alignment for parent Overlay to read */
10
+ alignment = {};
11
+ constructor(props, ctx) {
12
+ super("overlayItem", props, ctx);
13
+ this.updateProps(props);
14
+ }
15
+ measure(maxW, maxH) {
16
+ const constrained = this.constrainProposal(maxW, maxH);
17
+ // Size is determined by single child
18
+ const child = this.children[0];
19
+ if (!child) {
20
+ return this.constrainResult({ w: 0, h: 0 });
21
+ }
22
+ const childSize = child.measure(constrained.w, constrained.h);
23
+ return this.constrainResult(childSize);
24
+ }
25
+ layout(rect) {
26
+ this.rect = rect;
27
+ // Pass rect to child
28
+ const child = this.children[0];
29
+ if (child) {
30
+ child.layout(rect);
31
+ }
32
+ }
33
+ render(buffer, palette) {
34
+ // Render child
35
+ const child = this.children[0];
36
+ if (child) {
37
+ if (child.rect) {
38
+ buffer.withClip(child.rect.x, child.rect.y, child.rect.w, child.rect.h, () => {
39
+ child.render(buffer, palette);
40
+ });
41
+ }
42
+ else {
43
+ child.render(buffer, palette);
44
+ }
45
+ }
46
+ }
47
+ updateProps(props) {
48
+ super.updateProps(props);
49
+ if (props.alignment !== undefined) {
50
+ this.alignment = props.alignment;
51
+ }
52
+ }
53
+ }
54
+ //# sourceMappingURL=overlay-item.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay-item.js","sourceRoot":"","sources":["../../../src/hosts/overlay-item.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAUpC,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC5C,kDAAkD;IAClD,SAAS,GAA+B,EAAE,CAAA;IAE1C,YAAY,KAAuB,EAAE,GAAgB;QACpD,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC;IAEQ,OAAO,CAAC,IAAY,EAAE,IAAY;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAEtD,qCAAqC;QACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC5C,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAA;QAC7D,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;IACvC,CAAC;IAEQ,MAAM,CAAC,IAAU;QACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAA;QAEhB,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACnB,CAAC;IACF,CAAC;IAEQ,MAAM,CAAC,MAAkB,EAAE,OAAgB;QACnD,eAAe;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAC9B,IAAI,KAAK,EAAE,CAAC;YACX,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE;oBAC5E,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;gBAC9B,CAAC,CAAC,CAAA;YACH,CAAC;iBAAM,CAAC;gBACP,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;IACF,CAAC;IAEQ,WAAW,CAAC,KAA8B;QAClD,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;QACxB,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAuC,CAAA;QAC/D,CAAC;IACF,CAAC;CACD"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Overlay host - SwiftUI-style overlay layout
3
+ *
4
+ * Unlike zstack (which sizes to MAX of all children), overlay:
5
+ * 1. First child is the "base" - determines the container size
6
+ * 2. Subsequent children (overlayItem) are overlaid without affecting measurement
7
+ * 3. Each overlayItem specifies its own alignment
8
+ *
9
+ * Usage with compound component:
10
+ * ```tsx
11
+ * <Overlay>
12
+ * <MainContent />
13
+ * <Overlay.Item alignment={{ v: "top" }}><Toast /></Overlay.Item>
14
+ * <Overlay.Item alignment={{ v: "bottom" }}><Console /></Overlay.Item>
15
+ * </Overlay>
16
+ * ```
17
+ */
18
+ import type { CellBuffer, Palette, Rect, Size } from "@effect-tui/core";
19
+ import type { HostContext, CommonProps } from "../reconciler/types.js";
20
+ import { BaseHost } from "./base.js";
21
+ export interface OverlayProps extends CommonProps {
22
+ }
23
+ export declare class OverlayHost extends BaseHost {
24
+ private cachedSizes;
25
+ constructor(props: OverlayProps, ctx: HostContext);
26
+ measure(maxW: number, maxH: number): Size;
27
+ layout(rect: Rect): void;
28
+ render(buffer: CellBuffer, palette: Palette): void;
29
+ }
30
+ //# sourceMappingURL=overlay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAGpC,MAAM,WAAW,YAAa,SAAQ,WAAW;CAAG;AAEpD,qBAAa,WAAY,SAAQ,QAAQ;IACxC,OAAO,CAAC,WAAW,CAAa;gBAEpB,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,WAAW;IAIxC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IAwBzC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAwDxB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;CAY3D"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Overlay host - SwiftUI-style overlay layout
3
+ *
4
+ * Unlike zstack (which sizes to MAX of all children), overlay:
5
+ * 1. First child is the "base" - determines the container size
6
+ * 2. Subsequent children (overlayItem) are overlaid without affecting measurement
7
+ * 3. Each overlayItem specifies its own alignment
8
+ *
9
+ * Usage with compound component:
10
+ * ```tsx
11
+ * <Overlay>
12
+ * <MainContent />
13
+ * <Overlay.Item alignment={{ v: "top" }}><Toast /></Overlay.Item>
14
+ * <Overlay.Item alignment={{ v: "bottom" }}><Console /></Overlay.Item>
15
+ * </Overlay>
16
+ * ```
17
+ */
18
+ import { BaseHost } from "./base.js";
19
+ export class OverlayHost extends BaseHost {
20
+ cachedSizes = [];
21
+ constructor(props, ctx) {
22
+ super("overlay", props, ctx);
23
+ }
24
+ measure(maxW, maxH) {
25
+ // Apply frame constraints to what we propose to children
26
+ const constrained = this.constrainProposal(maxW, maxH);
27
+ // Only first child determines our size
28
+ const baseChild = this.children[0];
29
+ if (!baseChild) {
30
+ return this.constrainResult({ w: 0, h: 0 });
31
+ }
32
+ const baseSize = baseChild.measure(constrained.w, constrained.h);
33
+ this.cachedSizes = [baseSize];
34
+ // Measure overlay children with the base size
35
+ // They don't affect our size, but need to know their constraints
36
+ for (let i = 1; i < this.children.length; i++) {
37
+ const size = this.children[i].measure(baseSize.w, baseSize.h);
38
+ this.cachedSizes.push(size);
39
+ }
40
+ // Return base size (overlay children don't affect our size)
41
+ return this.constrainResult(baseSize);
42
+ }
43
+ layout(rect) {
44
+ this.rect = rect;
45
+ // Layout base child to fill our rect
46
+ const baseChild = this.children[0];
47
+ if (baseChild) {
48
+ baseChild.layout(rect);
49
+ }
50
+ // Layout overlay children with their alignment
51
+ for (let i = 1; i < this.children.length; i++) {
52
+ const child = this.children[i];
53
+ const size = this.cachedSizes[i] ?? child.measure(rect.w, rect.h);
54
+ // Read alignment from OverlayItemHost (use type check, not instanceof, for bundler compatibility)
55
+ const alignment = child.type === "overlayItem" ? child.alignment : {};
56
+ const hAlign = alignment.h ?? "center";
57
+ const vAlign = alignment.v ?? "center";
58
+ // Calculate position based on alignment
59
+ let x = rect.x;
60
+ let y = rect.y;
61
+ switch (hAlign) {
62
+ case "left":
63
+ x = rect.x;
64
+ break;
65
+ case "center":
66
+ x = rect.x + Math.floor((rect.w - size.w) / 2);
67
+ break;
68
+ case "right":
69
+ x = rect.x + rect.w - size.w;
70
+ break;
71
+ }
72
+ switch (vAlign) {
73
+ case "top":
74
+ y = rect.y;
75
+ break;
76
+ case "center":
77
+ y = rect.y + Math.floor((rect.h - size.h) / 2);
78
+ break;
79
+ case "bottom":
80
+ y = rect.y + rect.h - size.h;
81
+ break;
82
+ }
83
+ child.layout({
84
+ x,
85
+ y,
86
+ w: Math.min(rect.w, size.w),
87
+ h: Math.min(rect.h, size.h),
88
+ });
89
+ }
90
+ }
91
+ render(buffer, palette) {
92
+ // Render all children in order (base first, then overlays)
93
+ for (const child of this.children) {
94
+ if (child.rect) {
95
+ buffer.withClip(child.rect.x, child.rect.y, child.rect.w, child.rect.h, () => {
96
+ child.render(buffer, palette);
97
+ });
98
+ }
99
+ else {
100
+ child.render(buffer, palette);
101
+ }
102
+ }
103
+ }
104
+ }
105
+ //# sourceMappingURL=overlay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"overlay.js","sourceRoot":"","sources":["../../../src/hosts/overlay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { CellBuffer, Palette, Color } from "@effect-tui/core";
2
+ import type { HostContext, Rect, Size, CommonProps } from "../reconciler/types.js";
3
+ import { SingleChildHost } from "./single-child.js";
4
+ export interface ScrollProps extends CommonProps {
5
+ /** Scroll axis: "vertical" (default), "horizontal", or "both" */
6
+ axis?: "vertical" | "horizontal" | "both";
7
+ /** Current scroll offset in pixels (0 = start) */
8
+ offset?: number;
9
+ /** Horizontal offset when axis="both" */
10
+ offsetX?: number;
11
+ /** Alignment when content is smaller than viewport */
12
+ align?: "start" | "end";
13
+ /** Background color for the scroll viewport */
14
+ bg?: Color;
15
+ /** Whether to show scrollbar indicators */
16
+ showScrollbar?: boolean;
17
+ /**
18
+ * Sticky scroll - automatically stay at end when content grows.
19
+ * This is handled in the host itself for instant updates (no React roundtrip).
20
+ */
21
+ sticky?: boolean;
22
+ /** Called when content size is measured (for useScroll) */
23
+ onContentSize?: (width: number, height: number) => void;
24
+ /** Called when viewport size changes (for useScroll) */
25
+ onViewportSize?: (width: number, height: number) => void;
26
+ /** Called when effective offset changes (for syncing with useScroll when sticky adjusts) */
27
+ onEffectiveOffset?: (offset: number) => void;
28
+ }
29
+ export declare class ScrollHost extends SingleChildHost {
30
+ axis: "vertical" | "horizontal" | "both";
31
+ offset: number;
32
+ offsetX: number;
33
+ align: "start" | "end";
34
+ bg?: Color;
35
+ showScrollbar: boolean;
36
+ sticky: boolean;
37
+ onContentSize?: (width: number, height: number) => void;
38
+ onViewportSize?: (width: number, height: number) => void;
39
+ onEffectiveOffset?: (offset: number) => void;
40
+ private contentWidth;
41
+ private contentHeight;
42
+ private lastViewportW;
43
+ private lastViewportH;
44
+ private lastReportedContentW;
45
+ private lastReportedContentH;
46
+ private wasAtEnd;
47
+ private effectiveOffset;
48
+ private effectiveOffsetX;
49
+ constructor(props: ScrollProps, ctx: HostContext);
50
+ measure(maxW: number, maxH: number): Size;
51
+ layout(rect: Rect): void;
52
+ render(buffer: CellBuffer, palette: Palette): void;
53
+ private renderScrollbars;
54
+ updateProps(props: Record<string, unknown>): void;
55
+ }
56
+ //# sourceMappingURL=scroll.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/hosts/scroll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAClE,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAElF,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,WAAW,WAAY,SAAQ,WAAW;IAC/C,iEAAiE;IACjE,IAAI,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAA;IACzC,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sDAAsD;IACtD,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACvB,+CAA+C;IAC/C,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,2CAA2C;IAC3C,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB;;;OAGG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,2DAA2D;IAC3D,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,wDAAwD;IACxD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,4FAA4F;IAC5F,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AAED,qBAAa,UAAW,SAAQ,eAAe;IAC9C,IAAI,EAAE,UAAU,GAAG,YAAY,GAAG,MAAM,CAAa;IACrD,MAAM,SAAI;IACV,OAAO,SAAI;IACX,KAAK,EAAE,OAAO,GAAG,KAAK,CAAU;IAChC,EAAE,CAAC,EAAE,KAAK,CAAA;IACV,aAAa,UAAO;IACpB,MAAM,UAAQ;IACd,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACvD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IACxD,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAA;IAG5C,OAAO,CAAC,YAAY,CAAI;IACxB,OAAO,CAAC,aAAa,CAAI;IAEzB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,oBAAoB,CAAI;IAChC,OAAO,CAAC,oBAAoB,CAAI;IAEhC,OAAO,CAAC,QAAQ,CAAO;IAEvB,OAAO,CAAC,eAAe,CAAI;IAC3B,OAAO,CAAC,gBAAgB,CAAI;gBAEhB,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW;IAKhD,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI;IA4BhC,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAiFjC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAyBlD,OAAO,CAAC,gBAAgB;IA2Cf,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAa1D"}