@effect-tui/react 0.1.3 → 0.1.5

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 +55 -0
  27. package/dist/src/components/TextInput.d.ts.map +1 -0
  28. package/dist/src/components/TextInput.js +277 -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 +30 -23
  111. package/dist/src/hosts/box.js.map +1 -1
  112. package/dist/src/hosts/canvas.d.ts +16 -8
  113. package/dist/src/hosts/canvas.d.ts.map +1 -1
  114. package/dist/src/hosts/canvas.js +27 -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 +25 -0
  260. package/dist/src/renderer/modes/InlineRenderer.d.ts.map +1 -0
  261. package/dist/src/renderer/modes/InlineRenderer.js +161 -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 +214 -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 +356 -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 -94
  367. package/src/hosts/canvas.ts +170 -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 +186 -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 +392 -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
@@ -1,12 +1,17 @@
1
1
  /**
2
2
  * Spring physics calculations using analytical solutions.
3
- * Matches framer-motion's formulas.
3
+ * Matches framer-motion's formulas (stiffness/damping parameters).
4
+ *
5
+ * Note: @effect-tui/core also exports spring physics with frequency/dampingRatio
6
+ * parameters. Use that for functional/immutable APIs, use this for React hooks.
7
+ *
8
+ * @see @effect-tui/core for Spring, stepSpring1D, motionValue (functional API)
4
9
  */
5
10
 
6
11
  export interface SpringState {
7
- value: number
8
- velocity: number
9
- done: boolean
12
+ value: number
13
+ velocity: number
14
+ done: boolean
10
15
  }
11
16
 
12
17
  export type SpringResolver = (t: number) => SpringState
@@ -16,77 +21,77 @@ export type SpringResolver = (t: number) => SpringState
16
21
  * Returns a function that computes position/velocity at any time t.
17
22
  */
18
23
  export function createSpringResolver(
19
- from: number,
20
- to: number,
21
- initialVelocity: number,
22
- stiffness: number,
23
- damping: number,
24
- mass: number,
25
- restSpeed = 0.01,
26
- restDelta = 0.01,
24
+ from: number,
25
+ to: number,
26
+ initialVelocity: number,
27
+ stiffness: number,
28
+ damping: number,
29
+ mass: number,
30
+ restSpeed = 0.01,
31
+ restDelta = 0.01,
27
32
  ): SpringResolver {
28
- // Use same convention as framer-motion: initialDelta = from - to
29
- const initialDelta = from - to
30
- const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass))
31
- const angularFreq = Math.sqrt(stiffness / mass)
32
- const gamma = dampingRatio * angularFreq
33
-
34
- if (dampingRatio < 1) {
35
- // Underdamped (oscillates)
36
- const dampedFreq = angularFreq * Math.sqrt(1 - dampingRatio * dampingRatio)
37
- // Coefficients matching framer-motion's formula
38
- const A = initialDelta
39
- const B = (initialVelocity + gamma * initialDelta) / dampedFreq
40
-
41
- return (t: number): SpringState => {
42
- const envelope = Math.exp(-gamma * t)
43
- const cos = Math.cos(dampedFreq * t)
44
- const sin = Math.sin(dampedFreq * t)
45
-
46
- // Position: to + envelope * (A*cos + B*sin)
47
- const value = to + envelope * (A * cos + B * sin)
48
-
49
- // Velocity: derivative of position
50
- const velocity = envelope * ((B * dampedFreq - gamma * A) * cos + (-A * dampedFreq - gamma * B) * sin)
51
-
52
- const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
53
-
54
- return { value, velocity, done }
55
- }
56
- } else if (dampingRatio === 1) {
57
- // Critically damped (fastest without oscillation)
58
- const A = initialDelta
59
- const B = initialVelocity + angularFreq * initialDelta
60
-
61
- return (t: number): SpringState => {
62
- const envelope = Math.exp(-angularFreq * t)
63
- const value = to + envelope * (A + B * t)
64
- const velocity = envelope * (B - angularFreq * A - angularFreq * B * t)
65
-
66
- const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
67
-
68
- return { value, velocity, done }
69
- }
70
- } else {
71
- // Overdamped (slow, no oscillation)
72
- const s = Math.sqrt(dampingRatio * dampingRatio - 1)
73
- const r1 = -angularFreq * (dampingRatio - s)
74
- const r2 = -angularFreq * (dampingRatio + s)
75
- // Solve: A + B = initialDelta, A*r1 + B*r2 = initialVelocity
76
- const A = (initialVelocity - r2 * initialDelta) / (r1 - r2)
77
- const B = initialDelta - A
78
-
79
- return (t: number): SpringState => {
80
- const e1 = Math.exp(r1 * t)
81
- const e2 = Math.exp(r2 * t)
82
- const value = to + A * e1 + B * e2
83
- const velocity = A * r1 * e1 + B * r2 * e2
84
-
85
- const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
86
-
87
- return { value, velocity, done }
88
- }
89
- }
33
+ // Use same convention as framer-motion: initialDelta = from - to
34
+ const initialDelta = from - to
35
+ const dampingRatio = damping / (2 * Math.sqrt(stiffness * mass))
36
+ const angularFreq = Math.sqrt(stiffness / mass)
37
+ const gamma = dampingRatio * angularFreq
38
+
39
+ if (dampingRatio < 1) {
40
+ // Underdamped (oscillates)
41
+ const dampedFreq = angularFreq * Math.sqrt(1 - dampingRatio * dampingRatio)
42
+ // Coefficients matching framer-motion's formula
43
+ const A = initialDelta
44
+ const B = (initialVelocity + gamma * initialDelta) / dampedFreq
45
+
46
+ return (t: number): SpringState => {
47
+ const envelope = Math.exp(-gamma * t)
48
+ const cos = Math.cos(dampedFreq * t)
49
+ const sin = Math.sin(dampedFreq * t)
50
+
51
+ // Position: to + envelope * (A*cos + B*sin)
52
+ const value = to + envelope * (A * cos + B * sin)
53
+
54
+ // Velocity: derivative of position
55
+ const velocity = envelope * ((B * dampedFreq - gamma * A) * cos + (-A * dampedFreq - gamma * B) * sin)
56
+
57
+ const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
58
+
59
+ return { value, velocity, done }
60
+ }
61
+ } else if (dampingRatio === 1) {
62
+ // Critically damped (fastest without oscillation)
63
+ const A = initialDelta
64
+ const B = initialVelocity + angularFreq * initialDelta
65
+
66
+ return (t: number): SpringState => {
67
+ const envelope = Math.exp(-angularFreq * t)
68
+ const value = to + envelope * (A + B * t)
69
+ const velocity = envelope * (B - angularFreq * A - angularFreq * B * t)
70
+
71
+ const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
72
+
73
+ return { value, velocity, done }
74
+ }
75
+ } else {
76
+ // Overdamped (slow, no oscillation)
77
+ const s = Math.sqrt(dampingRatio * dampingRatio - 1)
78
+ const r1 = -angularFreq * (dampingRatio - s)
79
+ const r2 = -angularFreq * (dampingRatio + s)
80
+ // Solve: A + B = initialDelta, A*r1 + B*r2 = initialVelocity
81
+ const A = (initialVelocity - r2 * initialDelta) / (r1 - r2)
82
+ const B = initialDelta - A
83
+
84
+ return (t: number): SpringState => {
85
+ const e1 = Math.exp(r1 * t)
86
+ const e2 = Math.exp(r2 * t)
87
+ const value = to + A * e1 + B * e2
88
+ const velocity = A * r1 * e1 + B * r2 * e2
89
+
90
+ const done = Math.abs(velocity) < restSpeed && Math.abs(to - value) < restDelta
91
+
92
+ return { value, velocity, done }
93
+ }
94
+ }
90
95
  }
91
96
 
92
97
  /**
@@ -94,21 +99,21 @@ export function createSpringResolver(
94
99
  * Uses Motion's formula from motion-dom.
95
100
  */
96
101
  export function springFromVisualDuration(
97
- visualDuration: number,
98
- bounce: number,
102
+ visualDuration: number,
103
+ bounce: number,
99
104
  ): { stiffness: number; damping: number } {
100
- const root = (2 * Math.PI) / (visualDuration * 1.2)
101
- const stiffness = root * root
102
- // Clamp bounce to [0.05, 1], then invert: 0 bounce = damping ratio 1, 1 bounce = 0.05
103
- const clampedBounce = Math.max(0.05, Math.min(1, 1 - bounce))
104
- const damping = 2 * clampedBounce * Math.sqrt(stiffness)
105
+ const root = (2 * Math.PI) / (visualDuration * 1.2)
106
+ const stiffness = root * root
107
+ // Clamp bounce to [0.05, 1], then invert: 0 bounce = damping ratio 1, 1 bounce = 0.05
108
+ const clampedBounce = Math.max(0.05, Math.min(1, 1 - bounce))
109
+ const damping = 2 * clampedBounce * Math.sqrt(stiffness)
105
110
 
106
- return { stiffness, damping }
111
+ return { stiffness, damping }
107
112
  }
108
113
 
109
114
  /**
110
115
  * Check if a spring has settled.
111
116
  */
112
117
  export function isSpringSettled(velocity: number, delta: number, restSpeed = 0.01, restDelta = 0.01): boolean {
113
- return Math.abs(velocity) < restSpeed && Math.abs(delta) < restDelta
118
+ return Math.abs(velocity) < restSpeed && Math.abs(delta) < restDelta
114
119
  }
@@ -3,32 +3,32 @@
3
3
  */
4
4
 
5
5
  export interface SpringOptions {
6
- /** Stiffness of the spring. Higher = snappier. Default: 100 */
7
- stiffness?: number
8
- /** Damping of the spring. Higher = less oscillation. Default: 10 */
9
- damping?: number
10
- /** Mass of the spring. Higher = more inertia. Default: 1 */
11
- mass?: number
12
- /**
13
- * Visual duration in seconds. This is the perceptual duration of the animation.
14
- * The spring will feel like it completes in this time, though it may technically
15
- * continue settling. Overrides stiffness/damping when provided.
16
- */
17
- visualDuration?: number
18
- /** Bounce amount 0-1 when using visualDuration. 0 = no bounce, 1 = full bounce. Default: 0 */
19
- bounce?: number
20
- /** Velocity threshold to consider settled. Default: 0.01 */
21
- restSpeed?: number
22
- /** Position threshold to consider settled. Default: 0.01 */
23
- restDelta?: number
6
+ /** Stiffness of the spring. Higher = snappier. Default: 100 */
7
+ stiffness?: number
8
+ /** Damping of the spring. Higher = less oscillation. Default: 10 */
9
+ damping?: number
10
+ /** Mass of the spring. Higher = more inertia. Default: 1 */
11
+ mass?: number
12
+ /**
13
+ * Visual duration in seconds. This is the perceptual duration of the animation.
14
+ * The spring will feel like it completes in this time, though it may technically
15
+ * continue settling. Overrides stiffness/damping when provided.
16
+ */
17
+ visualDuration?: number
18
+ /** Bounce amount 0-1 when using visualDuration. 0 = no bounce, 1 = full bounce. Default: 0 */
19
+ bounce?: number
20
+ /** Velocity threshold to consider settled. Default: 0.01 */
21
+ restSpeed?: number
22
+ /** Position threshold to consider settled. Default: 0.01 */
23
+ restDelta?: number
24
24
  }
25
25
 
26
26
  export const DEFAULT_SPRING_OPTIONS: Required<SpringOptions> = {
27
- stiffness: 100,
28
- damping: 10,
29
- mass: 1,
30
- visualDuration: 0,
31
- bounce: 0,
32
- restSpeed: 0.01,
33
- restDelta: 0.01,
27
+ stiffness: 100,
28
+ damping: 10,
29
+ mass: 1,
30
+ visualDuration: 0,
31
+ bounce: 0,
32
+ restSpeed: 0.01,
33
+ restDelta: 0.01,
34
34
  }
package/src/profiler.ts CHANGED
@@ -8,10 +8,10 @@ const ENABLED = process.env.PROFILE_TUI === "1"
8
8
  const OUTPUT_FILE = "tui-profile.txt"
9
9
 
10
10
  interface PhaseStats {
11
- total: number
12
- count: number
13
- min: number
14
- max: number
11
+ total: number
12
+ count: number
13
+ min: number
14
+ max: number
15
15
  }
16
16
 
17
17
  const phases = new Map<string, PhaseStats>()
@@ -19,70 +19,70 @@ let frameCount = 0
19
19
  let frameTotal = 0
20
20
 
21
21
  export function startFrame(): number {
22
- if (!ENABLED) return 0
23
- return performance.now()
22
+ if (!ENABLED) return 0
23
+ return performance.now()
24
24
  }
25
25
 
26
26
  export function endFrame(start: number): void {
27
- if (!ENABLED) return
28
- const elapsed = performance.now() - start
29
- frameCount++
30
- frameTotal += elapsed
27
+ if (!ENABLED) return
28
+ const elapsed = performance.now() - start
29
+ frameCount++
30
+ frameTotal += elapsed
31
31
  }
32
32
 
33
33
  export function startPhase(): number {
34
- if (!ENABLED) return 0
35
- return performance.now()
34
+ if (!ENABLED) return 0
35
+ return performance.now()
36
36
  }
37
37
 
38
38
  export function endPhase(name: string, start: number): void {
39
- if (!ENABLED) return
40
- const elapsed = performance.now() - start
41
- let stats = phases.get(name)
42
- if (!stats) {
43
- stats = { total: 0, count: 0, min: Infinity, max: 0 }
44
- phases.set(name, stats)
45
- }
46
- stats.total += elapsed
47
- stats.count++
48
- stats.min = Math.min(stats.min, elapsed)
49
- stats.max = Math.max(stats.max, elapsed)
39
+ if (!ENABLED) return
40
+ const elapsed = performance.now() - start
41
+ let stats = phases.get(name)
42
+ if (!stats) {
43
+ stats = { total: 0, count: 0, min: Infinity, max: 0 }
44
+ phases.set(name, stats)
45
+ }
46
+ stats.total += elapsed
47
+ stats.count++
48
+ stats.min = Math.min(stats.min, elapsed)
49
+ stats.max = Math.max(stats.max, elapsed)
50
50
  }
51
51
 
52
52
  export function dumpStats(): void {
53
- if (!ENABLED || frameCount === 0) return
53
+ if (!ENABLED || frameCount === 0) return
54
54
 
55
- const lines: string[] = []
56
- const avgFrame = frameTotal / frameCount
57
- lines.push(`=== TUI Profile (${frameCount} frames, avg ${avgFrame.toFixed(2)}ms) ===`)
55
+ const lines: string[] = []
56
+ const avgFrame = frameTotal / frameCount
57
+ lines.push(`=== TUI Profile (${frameCount} frames, avg ${avgFrame.toFixed(2)}ms) ===`)
58
58
 
59
- // Sort by total time descending
60
- const sorted = [...phases.entries()].sort((a, b) => b[1].total - a[1].total)
59
+ // Sort by total time descending
60
+ const sorted = [...phases.entries()].sort((a, b) => b[1].total - a[1].total)
61
61
 
62
- for (const [name, stats] of sorted) {
63
- const avg = stats.total / stats.count
64
- const pct = ((stats.total / frameTotal) * 100).toFixed(1)
65
- lines.push(
66
- ` ${name.padEnd(12)} ${avg.toFixed(3)}ms avg ${stats.min.toFixed(3)}-${stats.max.toFixed(3)}ms ${pct}%`,
67
- )
68
- }
69
- lines.push("")
62
+ for (const [name, stats] of sorted) {
63
+ const avg = stats.total / stats.count
64
+ const pct = ((stats.total / frameTotal) * 100).toFixed(1)
65
+ lines.push(
66
+ ` ${name.padEnd(12)} ${avg.toFixed(3)}ms avg ${stats.min.toFixed(3)}-${stats.max.toFixed(3)}ms ${pct}%`,
67
+ )
68
+ }
69
+ lines.push("")
70
70
 
71
- try {
72
- writeFileSync(OUTPUT_FILE, lines.join("\n"))
73
- // Also print path after alt buffer exit
74
- setTimeout(() => console.log(`Profile written to ${OUTPUT_FILE}`), 50)
75
- } catch {
76
- // Fallback to stderr if file write fails
77
- console.error(lines.join("\n"))
78
- }
71
+ try {
72
+ writeFileSync(OUTPUT_FILE, lines.join("\n"))
73
+ // Also print path after alt buffer exit
74
+ setTimeout(() => console.log(`Profile written to ${OUTPUT_FILE}`), 50)
75
+ } catch {
76
+ // Fallback to stderr if file write fails
77
+ console.error(lines.join("\n"))
78
+ }
79
79
  }
80
80
 
81
81
  // Auto-dump on exit
82
82
  if (ENABLED) {
83
- process.on("exit", dumpStats)
84
- process.on("SIGINT", () => {
85
- dumpStats()
86
- process.exit(0)
87
- })
83
+ process.on("exit", dumpStats)
84
+ process.on("SIGINT", () => {
85
+ dumpStats()
86
+ process.exit(0)
87
+ })
88
88
  }