@effect-tui/react 0.15.2 → 2.0.0

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 (313) hide show
  1. package/README.md +11 -2
  2. package/dist/src/codeblock.d.ts +1 -1
  3. package/dist/src/codeblock.d.ts.map +1 -1
  4. package/dist/src/codeblock.js +2 -2
  5. package/dist/src/codeblock.js.map +1 -1
  6. package/dist/src/components/ListView.d.ts +4 -4
  7. package/dist/src/components/ListView.d.ts.map +1 -1
  8. package/dist/src/components/ListView.js +16 -17
  9. package/dist/src/components/ListView.js.map +1 -1
  10. package/dist/src/components/Markdown.js +3 -3
  11. package/dist/src/components/Markdown.js.map +1 -1
  12. package/dist/src/components/MultilineTextInput.d.ts.map +1 -1
  13. package/dist/src/components/MultilineTextInput.js +133 -305
  14. package/dist/src/components/MultilineTextInput.js.map +1 -1
  15. package/dist/src/components/TextInput.d.ts.map +1 -1
  16. package/dist/src/components/TextInput.js +51 -98
  17. package/dist/src/components/TextInput.js.map +1 -1
  18. package/dist/src/components/text-editing.d.ts +61 -0
  19. package/dist/src/components/text-editing.d.ts.map +1 -1
  20. package/dist/src/components/text-editing.js +131 -0
  21. package/dist/src/components/text-editing.js.map +1 -1
  22. package/dist/src/console/ConsolePopover.d.ts +7 -1
  23. package/dist/src/console/ConsolePopover.d.ts.map +1 -1
  24. package/dist/src/console/ConsolePopover.js +55 -74
  25. package/dist/src/console/ConsolePopover.js.map +1 -1
  26. package/dist/src/debug/DebugOverlay.d.ts.map +1 -1
  27. package/dist/src/debug/DebugOverlay.js +3 -57
  28. package/dist/src/debug/DebugOverlay.js.map +1 -1
  29. package/dist/src/debug/DiagnosticsPanel.js +1 -1
  30. package/dist/src/debug/DiagnosticsPanel.js.map +1 -1
  31. package/dist/src/dev.d.ts +5 -117
  32. package/dist/src/dev.d.ts.map +1 -1
  33. package/dist/src/dev.js +3 -333
  34. package/dist/src/dev.js.map +1 -1
  35. package/dist/src/hooks/use-scroll.d.ts +31 -35
  36. package/dist/src/hooks/use-scroll.d.ts.map +1 -1
  37. package/dist/src/hooks/use-scroll.js +51 -90
  38. package/dist/src/hooks/use-scroll.js.map +1 -1
  39. package/dist/src/hosts/base.d.ts +13 -2
  40. package/dist/src/hosts/base.d.ts.map +1 -1
  41. package/dist/src/hosts/base.js +74 -2
  42. package/dist/src/hosts/base.js.map +1 -1
  43. package/dist/src/hosts/box.d.ts +2 -2
  44. package/dist/src/hosts/box.d.ts.map +1 -1
  45. package/dist/src/hosts/box.js +29 -2
  46. package/dist/src/hosts/box.js.map +1 -1
  47. package/dist/src/hosts/canvas.d.ts +24 -4
  48. package/dist/src/hosts/canvas.d.ts.map +1 -1
  49. package/dist/src/hosts/canvas.js +107 -41
  50. package/dist/src/hosts/canvas.js.map +1 -1
  51. package/dist/src/hosts/codeblock.d.ts +10 -12
  52. package/dist/src/hosts/codeblock.d.ts.map +1 -1
  53. package/dist/src/hosts/codeblock.js +38 -35
  54. package/dist/src/hosts/codeblock.js.map +1 -1
  55. package/dist/src/hosts/flex-container.d.ts +3 -3
  56. package/dist/src/hosts/flex-container.d.ts.map +1 -1
  57. package/dist/src/hosts/flex-container.js +20 -5
  58. package/dist/src/hosts/flex-container.js.map +1 -1
  59. package/dist/src/hosts/index.d.ts +3 -2
  60. package/dist/src/hosts/index.d.ts.map +1 -1
  61. package/dist/src/hosts/index.js +2 -1
  62. package/dist/src/hosts/index.js.map +1 -1
  63. package/dist/src/hosts/layout-helpers.d.ts +10 -0
  64. package/dist/src/hosts/layout-helpers.d.ts.map +1 -0
  65. package/dist/src/hosts/layout-helpers.js +10 -0
  66. package/dist/src/hosts/layout-helpers.js.map +1 -0
  67. package/dist/src/hosts/leaf.d.ts +14 -0
  68. package/dist/src/hosts/leaf.d.ts.map +1 -0
  69. package/dist/src/hosts/leaf.js +31 -0
  70. package/dist/src/hosts/leaf.js.map +1 -0
  71. package/dist/src/hosts/overlay-item.d.ts +2 -2
  72. package/dist/src/hosts/overlay-item.d.ts.map +1 -1
  73. package/dist/src/hosts/overlay-item.js +7 -2
  74. package/dist/src/hosts/overlay-item.js.map +1 -1
  75. package/dist/src/hosts/overlay.d.ts +2 -2
  76. package/dist/src/hosts/overlay.d.ts.map +1 -1
  77. package/dist/src/hosts/overlay.js +6 -9
  78. package/dist/src/hosts/overlay.js.map +1 -1
  79. package/dist/src/hosts/scroll.d.ts +54 -26
  80. package/dist/src/hosts/scroll.d.ts.map +1 -1
  81. package/dist/src/hosts/scroll.js +185 -87
  82. package/dist/src/hosts/scroll.js.map +1 -1
  83. package/dist/src/hosts/single-child.d.ts.map +1 -1
  84. package/dist/src/hosts/single-child.js +2 -0
  85. package/dist/src/hosts/single-child.js.map +1 -1
  86. package/dist/src/hosts/spacer.d.ts +3 -3
  87. package/dist/src/hosts/spacer.d.ts.map +1 -1
  88. package/dist/src/hosts/spacer.js +8 -3
  89. package/dist/src/hosts/spacer.js.map +1 -1
  90. package/dist/src/hosts/text.d.ts +22 -18
  91. package/dist/src/hosts/text.d.ts.map +1 -1
  92. package/dist/src/hosts/text.js +108 -131
  93. package/dist/src/hosts/text.js.map +1 -1
  94. package/dist/src/hosts/vstack.js +1 -1
  95. package/dist/src/hosts/vstack.js.map +1 -1
  96. package/dist/src/hosts/zstack.d.ts +3 -3
  97. package/dist/src/hosts/zstack.d.ts.map +1 -1
  98. package/dist/src/hosts/zstack.js +13 -8
  99. package/dist/src/hosts/zstack.js.map +1 -1
  100. package/dist/src/index.d.ts +2 -2
  101. package/dist/src/index.d.ts.map +1 -1
  102. package/dist/src/internal/dev/hmr.d.ts +20 -0
  103. package/dist/src/internal/dev/hmr.d.ts.map +1 -0
  104. package/dist/src/internal/dev/hmr.js +93 -0
  105. package/dist/src/internal/dev/hmr.js.map +1 -0
  106. package/dist/src/internal/dev/runtime.d.ts +24 -0
  107. package/dist/src/internal/dev/runtime.d.ts.map +1 -0
  108. package/dist/src/internal/dev/runtime.js +135 -0
  109. package/dist/src/internal/dev/runtime.js.map +1 -0
  110. package/dist/src/internal/dev/ui.d.ts +13 -0
  111. package/dist/src/internal/dev/ui.d.ts.map +1 -0
  112. package/dist/src/internal/dev/ui.js +51 -0
  113. package/dist/src/internal/dev/ui.js.map +1 -0
  114. package/dist/src/internal/renderer/context.d.ts +9 -0
  115. package/dist/src/internal/renderer/context.d.ts.map +1 -0
  116. package/dist/src/internal/renderer/context.js +22 -0
  117. package/dist/src/internal/renderer/context.js.map +1 -0
  118. package/dist/src/internal/renderer/core/FrameBuilder.d.ts +18 -0
  119. package/dist/src/internal/renderer/core/FrameBuilder.d.ts.map +1 -0
  120. package/dist/src/internal/renderer/core/FrameBuilder.js +40 -0
  121. package/dist/src/internal/renderer/core/FrameBuilder.js.map +1 -0
  122. package/dist/src/internal/renderer/core/RendererState.d.ts +41 -0
  123. package/dist/src/internal/renderer/core/RendererState.d.ts.map +1 -0
  124. package/dist/src/internal/renderer/core/RendererState.js +70 -0
  125. package/dist/src/internal/renderer/core/RendererState.js.map +1 -0
  126. package/dist/src/internal/renderer/core/index.d.ts +3 -0
  127. package/dist/src/internal/renderer/core/index.d.ts.map +1 -0
  128. package/dist/src/internal/renderer/core/index.js +3 -0
  129. package/dist/src/internal/renderer/core/index.js.map +1 -0
  130. package/dist/src/internal/renderer/index.d.ts +40 -0
  131. package/dist/src/internal/renderer/index.d.ts.map +1 -0
  132. package/dist/src/internal/renderer/index.js +543 -0
  133. package/dist/src/internal/renderer/index.js.map +1 -0
  134. package/dist/src/internal/renderer/input/InputProcessor.d.ts +30 -0
  135. package/dist/src/internal/renderer/input/InputProcessor.d.ts.map +1 -0
  136. package/dist/src/internal/renderer/input/InputProcessor.js +122 -0
  137. package/dist/src/internal/renderer/input/InputProcessor.js.map +1 -0
  138. package/dist/src/internal/renderer/input/index.d.ts +2 -0
  139. package/dist/src/internal/renderer/input/index.d.ts.map +1 -0
  140. package/dist/src/internal/renderer/input/index.js +2 -0
  141. package/dist/src/internal/renderer/input/index.js.map +1 -0
  142. package/dist/src/internal/renderer/lifecycle/EventBus.d.ts +42 -0
  143. package/dist/src/internal/renderer/lifecycle/EventBus.d.ts.map +1 -0
  144. package/dist/src/internal/renderer/lifecycle/EventBus.js +97 -0
  145. package/dist/src/internal/renderer/lifecycle/EventBus.js.map +1 -0
  146. package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.d.ts +13 -0
  147. package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.d.ts.map +1 -0
  148. package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.js +111 -0
  149. package/dist/src/internal/renderer/lifecycle/ProcessLifecycle.js.map +1 -0
  150. package/dist/src/internal/renderer/lifecycle/RenderCache.d.ts +3 -0
  151. package/dist/src/internal/renderer/lifecycle/RenderCache.d.ts.map +1 -0
  152. package/dist/src/internal/renderer/lifecycle/RenderCache.js +9 -0
  153. package/dist/src/internal/renderer/lifecycle/RenderCache.js.map +1 -0
  154. package/dist/src/internal/renderer/lifecycle/index.d.ts +4 -0
  155. package/dist/src/internal/renderer/lifecycle/index.d.ts.map +1 -0
  156. package/dist/src/internal/renderer/lifecycle/index.js +4 -0
  157. package/dist/src/internal/renderer/lifecycle/index.js.map +1 -0
  158. package/dist/src/internal/renderer/modes/FullscreenRenderer.d.ts +12 -0
  159. package/dist/src/internal/renderer/modes/FullscreenRenderer.d.ts.map +1 -0
  160. package/dist/src/internal/renderer/modes/FullscreenRenderer.js +54 -0
  161. package/dist/src/internal/renderer/modes/FullscreenRenderer.js.map +1 -0
  162. package/dist/src/internal/renderer/modes/InlineRenderer.d.ts +25 -0
  163. package/dist/src/internal/renderer/modes/InlineRenderer.d.ts.map +1 -0
  164. package/dist/src/internal/renderer/modes/InlineRenderer.js +166 -0
  165. package/dist/src/internal/renderer/modes/InlineRenderer.js.map +1 -0
  166. package/dist/src/internal/renderer/modes/RendererMode.d.ts +42 -0
  167. package/dist/src/internal/renderer/modes/RendererMode.d.ts.map +1 -0
  168. package/dist/src/internal/renderer/modes/RendererMode.js +2 -0
  169. package/dist/src/internal/renderer/modes/RendererMode.js.map +1 -0
  170. package/dist/src/internal/renderer/modes/StaticContentRenderer.d.ts +25 -0
  171. package/dist/src/internal/renderer/modes/StaticContentRenderer.d.ts.map +1 -0
  172. package/dist/src/internal/renderer/modes/StaticContentRenderer.js +49 -0
  173. package/dist/src/internal/renderer/modes/StaticContentRenderer.js.map +1 -0
  174. package/dist/src/internal/renderer/modes/index.d.ts +5 -0
  175. package/dist/src/internal/renderer/modes/index.d.ts.map +1 -0
  176. package/dist/src/internal/renderer/modes/index.js +4 -0
  177. package/dist/src/internal/renderer/modes/index.js.map +1 -0
  178. package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.d.ts +13 -0
  179. package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.d.ts.map +1 -0
  180. package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.js +75 -0
  181. package/dist/src/internal/renderer/terminal/KeyboardCapabilityProbe.js.map +1 -0
  182. package/dist/src/internal/renderer/terminal/TerminalSetup.d.ts +29 -0
  183. package/dist/src/internal/renderer/terminal/TerminalSetup.d.ts.map +1 -0
  184. package/dist/src/internal/renderer/terminal/TerminalSetup.js +82 -0
  185. package/dist/src/internal/renderer/terminal/TerminalSetup.js.map +1 -0
  186. package/dist/src/internal/renderer/terminal/index.d.ts +3 -0
  187. package/dist/src/internal/renderer/terminal/index.d.ts.map +1 -0
  188. package/dist/src/internal/renderer/terminal/index.js +3 -0
  189. package/dist/src/internal/renderer/terminal/index.js.map +1 -0
  190. package/dist/src/internal/renderer/types.d.ts +122 -0
  191. package/dist/src/internal/renderer/types.d.ts.map +1 -0
  192. package/dist/src/internal/renderer/types.js +2 -0
  193. package/dist/src/internal/renderer/types.js.map +1 -0
  194. package/dist/src/motion/hooks.d.ts +1 -1
  195. package/dist/src/motion/hooks.js +1 -1
  196. package/dist/src/reconciler/host-config.js +2 -2
  197. package/dist/src/reconciler/host-config.js.map +1 -1
  198. package/dist/src/reconciler/types.d.ts +5 -1
  199. package/dist/src/reconciler/types.d.ts.map +1 -1
  200. package/dist/src/renderer-context.d.ts +1 -8
  201. package/dist/src/renderer-context.d.ts.map +1 -1
  202. package/dist/src/renderer-context.js +1 -21
  203. package/dist/src/renderer-context.js.map +1 -1
  204. package/dist/src/renderer-types.d.ts +1 -115
  205. package/dist/src/renderer-types.d.ts.map +1 -1
  206. package/dist/src/renderer.d.ts +1 -31
  207. package/dist/src/renderer.d.ts.map +1 -1
  208. package/dist/src/renderer.js +1 -495
  209. package/dist/src/renderer.js.map +1 -1
  210. package/dist/src/test/render-tui.d.ts +3 -3
  211. package/dist/src/test/render-tui.d.ts.map +1 -1
  212. package/dist/src/test/render-tui.js +16 -9
  213. package/dist/src/test/render-tui.js.map +1 -1
  214. package/dist/src/utils/alignment.d.ts +1 -1
  215. package/dist/src/utils/alignment.d.ts.map +1 -1
  216. package/dist/src/utils/alignment.js +0 -2
  217. package/dist/src/utils/alignment.js.map +1 -1
  218. package/dist/src/utils/border.d.ts +1 -1
  219. package/dist/src/utils/border.d.ts.map +1 -1
  220. package/dist/src/utils/border.js +2 -0
  221. package/dist/src/utils/border.js.map +1 -1
  222. package/dist/src/utils/console-helpers.d.ts +19 -0
  223. package/dist/src/utils/console-helpers.d.ts.map +1 -0
  224. package/dist/src/utils/console-helpers.js +61 -0
  225. package/dist/src/utils/console-helpers.js.map +1 -0
  226. package/dist/src/utils/index.d.ts +2 -1
  227. package/dist/src/utils/index.d.ts.map +1 -1
  228. package/dist/src/utils/index.js +2 -1
  229. package/dist/src/utils/index.js.map +1 -1
  230. package/dist/src/utils/styles.d.ts +8 -1
  231. package/dist/src/utils/styles.d.ts.map +1 -1
  232. package/dist/src/utils/styles.js +10 -8
  233. package/dist/src/utils/styles.js.map +1 -1
  234. package/dist/src/utils/text-layout.d.ts +22 -0
  235. package/dist/src/utils/text-layout.d.ts.map +1 -0
  236. package/dist/src/utils/text-layout.js +37 -0
  237. package/dist/src/utils/text-layout.js.map +1 -0
  238. package/dist/src/utils/text-wrap.d.ts +31 -1
  239. package/dist/src/utils/text-wrap.d.ts.map +1 -1
  240. package/dist/src/utils/text-wrap.js +205 -48
  241. package/dist/src/utils/text-wrap.js.map +1 -1
  242. package/dist/src/visualize/index.js +1 -1
  243. package/dist/src/visualize/index.js.map +1 -1
  244. package/dist/tsconfig.tsbuildinfo +1 -1
  245. package/package.json +2 -2
  246. package/src/codeblock.tsx +2 -2
  247. package/src/components/ListView.tsx +21 -23
  248. package/src/components/Markdown.tsx +3 -3
  249. package/src/components/MultilineTextInput.tsx +138 -344
  250. package/src/components/TextInput.tsx +54 -99
  251. package/src/components/text-editing.ts +180 -0
  252. package/src/console/ConsolePopover.tsx +124 -107
  253. package/src/debug/DebugOverlay.ts +15 -74
  254. package/src/debug/DiagnosticsPanel.tsx +1 -1
  255. package/src/dev.tsx +5 -458
  256. package/src/hooks/use-scroll.ts +85 -145
  257. package/src/hosts/base.ts +86 -3
  258. package/src/hosts/box.ts +37 -2
  259. package/src/hosts/canvas.ts +128 -42
  260. package/src/hosts/codeblock.ts +48 -35
  261. package/src/hosts/flex-container.ts +25 -6
  262. package/src/hosts/index.ts +11 -2
  263. package/src/hosts/layout-helpers.ts +20 -0
  264. package/src/hosts/leaf.ts +36 -0
  265. package/src/hosts/overlay-item.ts +8 -2
  266. package/src/hosts/overlay.ts +13 -11
  267. package/src/hosts/scroll.ts +228 -106
  268. package/src/hosts/single-child.ts +2 -0
  269. package/src/hosts/spacer.ts +8 -3
  270. package/src/hosts/text.ts +126 -132
  271. package/src/hosts/vstack.ts +1 -1
  272. package/src/hosts/zstack.ts +14 -9
  273. package/src/index.ts +2 -2
  274. package/src/internal/dev/hmr.ts +101 -0
  275. package/src/internal/dev/runtime.ts +170 -0
  276. package/src/internal/dev/ui.tsx +87 -0
  277. package/src/internal/renderer/context.ts +27 -0
  278. package/src/{renderer → internal/renderer}/core/FrameBuilder.ts +2 -2
  279. package/src/internal/renderer/index.ts +689 -0
  280. package/src/{renderer → internal/renderer}/input/InputProcessor.ts +10 -1
  281. package/src/{renderer → internal/renderer}/lifecycle/EventBus.ts +9 -1
  282. package/src/internal/renderer/lifecycle/ProcessLifecycle.ts +125 -0
  283. package/src/internal/renderer/lifecycle/index.ts +3 -0
  284. package/src/{renderer → internal/renderer}/modes/InlineRenderer.ts +5 -2
  285. package/src/{renderer → internal/renderer}/modes/RendererMode.ts +1 -1
  286. package/src/{renderer → internal/renderer}/modes/StaticContentRenderer.ts +5 -2
  287. package/src/internal/renderer/terminal/KeyboardCapabilityProbe.ts +91 -0
  288. package/src/{renderer/lifecycle → internal/renderer/terminal}/TerminalSetup.ts +4 -22
  289. package/src/internal/renderer/terminal/index.ts +2 -0
  290. package/src/internal/renderer/types.ts +129 -0
  291. package/src/motion/hooks.ts +1 -1
  292. package/src/reconciler/host-config.ts +2 -2
  293. package/src/reconciler/types.ts +7 -1
  294. package/src/renderer-context.ts +1 -27
  295. package/src/renderer-types.ts +10 -123
  296. package/src/renderer.ts +1 -619
  297. package/src/test/render-tui.ts +16 -10
  298. package/src/utils/alignment.ts +1 -3
  299. package/src/utils/border.ts +11 -1
  300. package/src/utils/console-helpers.ts +86 -0
  301. package/src/utils/index.ts +15 -1
  302. package/src/utils/styles.ts +16 -4
  303. package/src/utils/text-layout.ts +65 -0
  304. package/src/utils/text-wrap.ts +261 -48
  305. package/src/visualize/index.tsx +1 -1
  306. package/src/renderer/lifecycle/ResizeManager.ts +0 -65
  307. package/src/renderer/lifecycle/index.ts +0 -4
  308. /package/src/{renderer → internal/renderer}/core/RendererState.ts +0 -0
  309. /package/src/{renderer → internal/renderer}/core/index.ts +0 -0
  310. /package/src/{renderer → internal/renderer}/input/index.ts +0 -0
  311. /package/src/{renderer → internal/renderer}/lifecycle/RenderCache.ts +0 -0
  312. /package/src/{renderer → internal/renderer}/modes/FullscreenRenderer.ts +0 -0
  313. /package/src/{renderer → internal/renderer}/modes/index.ts +0 -0
@@ -0,0 +1,40 @@
1
+ import { type ReactNode } from "react";
2
+ import type { RendererOptions, TuiRenderer } from "./types.js";
3
+ export { RendererContext, useRenderer, useTerminalSize } from "./context.js";
4
+ export type { FrameStats, PasteMsg, RendererOptions, TuiReadStream, TuiRenderer, TuiWriteStream, } from "./types.js";
5
+ export declare function createRenderer(options?: RendererOptions): TuiRenderer;
6
+ export interface Root {
7
+ render(element: ReactNode, sync?: boolean): void;
8
+ unmount(): void;
9
+ }
10
+ export declare function createRoot(renderer: TuiRenderer): Root;
11
+ export interface RenderInstance {
12
+ renderer: TuiRenderer;
13
+ root: Root;
14
+ rerender(element: ReactNode): void;
15
+ unmount(): void;
16
+ waitUntilExit(): Promise<void>;
17
+ /** Cleanly exit the application, restoring terminal state before process.exit() */
18
+ quit(code?: number): void;
19
+ }
20
+ export type ImportMetaLike = {
21
+ url: string;
22
+ main?: boolean;
23
+ };
24
+ type RenderBaseOptions = {
25
+ /** Render mode: fullscreen (default) or inline. */
26
+ mode?: RendererOptions["mode"];
27
+ };
28
+ type RenderDevOptions = RenderBaseOptions & {
29
+ /** Enable dev runtime (HMR, console overlay, remote control). */
30
+ dev: true;
31
+ /** Required in dev mode. */
32
+ importMeta: ImportMetaLike;
33
+ };
34
+ type RenderRuntimeOptions = RenderBaseOptions & {
35
+ /** Dev mode disabled (default). */
36
+ dev?: false | undefined;
37
+ };
38
+ export type RenderOptions = RenderDevOptions | RenderRuntimeOptions;
39
+ export declare function render(element: ReactNode, options?: RenderOptions): RenderInstance;
40
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/internal/renderer/index.ts"],"names":[],"mappings":"AASA,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAe7C,OAAO,KAAK,EAIX,eAAe,EAEf,WAAW,EAGX,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE5E,YAAY,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,WAAW,EACX,cAAc,GACd,MAAM,YAAY,CAAA;AAInB,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,WAAW,CA+brE;AAED,MAAM,WAAW,IAAI;IACpB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;IAChD,OAAO,IAAI,IAAI,CAAA;CACf;AAED,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CA+CtD;AAGD,MAAM,WAAW,cAAc;IAC9B,QAAQ,EAAE,WAAW,CAAA;IACrB,IAAI,EAAE,IAAI,CAAA;IACV,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,IAAI,CAAA;IAClC,OAAO,IAAI,IAAI,CAAA;IACf,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IAC9B,mFAAmF;IACnF,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,cAAc,GAAG;IAC5B,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,CAAC,EAAE,OAAO,CAAA;CACd,CAAA;AAED,KAAK,iBAAiB,GAAG;IACxB,mDAAmD;IACnD,IAAI,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;CAC9B,CAAA;AAED,KAAK,gBAAgB,GAAG,iBAAiB,GAAG;IAC3C,iEAAiE;IACjE,GAAG,EAAE,IAAI,CAAA;IACT,4BAA4B;IAC5B,UAAU,EAAE,cAAc,CAAA;CAC1B,CAAA;AAED,KAAK,oBAAoB,GAAG,iBAAiB,GAAG;IAC/C,mCAAmC;IACnC,GAAG,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;CACvB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG,oBAAoB,CAAA;AAmEnE,wBAAgB,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,cAAc,CAqClF"}
@@ -0,0 +1,543 @@
1
+ import { performance } from "node:perf_hooks";
2
+ import { fileURLToPath } from "node:url";
3
+ import { ANSI, bufferToString, setEmojiWidth, } from "@effect-tui/core";
4
+ import React, {} from "react";
5
+ import { createTerminalWriter, writeToTerminal } from "../../console/ConsoleCapture.js";
6
+ import { DEFAULT_FPS } from "../../constants.js";
7
+ import { requestExit } from "../../exit.js";
8
+ import * as Prof from "../../profiler.js";
9
+ import { flushSync, reconciler } from "../../reconciler/host-config.js";
10
+ // Extracted modules
11
+ import { FrameBuilder, RendererState } from "./core/index.js";
12
+ import { InputProcessor } from "./input/index.js";
13
+ import { EventBus, getRenderCache, registerProcessHandlers } from "./lifecycle/index.js";
14
+ import { createKeyboardCapabilityProbe, TerminalSetup } from "./terminal/index.js";
15
+ import { FullscreenRenderer, InlineRenderer, StaticContentRenderer } from "./modes/index.js";
16
+ import { RendererContext } from "./context.js";
17
+ import { startDevRuntime } from "../dev/runtime.js";
18
+ export { RendererContext, useRenderer, useTerminalSize } from "./context.js";
19
+ export function createRenderer(options) {
20
+ const fps = options?.fps ?? DEFAULT_FPS;
21
+ const exitOnRenderError = options?.exitOnRenderError ?? true;
22
+ // Use custom stdout if provided, otherwise use process.stdout with bypassed capture
23
+ let stdout;
24
+ if (options?.stdout) {
25
+ // Use custom stdout as-is (e.g., for testing with MockStdout)
26
+ stdout = options.stdout;
27
+ }
28
+ else {
29
+ // Create a proxy that bypasses console capture for writes
30
+ // This ensures Effect.log etc. don't corrupt the TUI
31
+ const terminalWrite = createTerminalWriter();
32
+ stdout = new Proxy(process.stdout, {
33
+ get(target, prop) {
34
+ if (prop === "write") {
35
+ return terminalWrite;
36
+ }
37
+ const value = target[prop];
38
+ // Bind methods to preserve `this` context (critical for .on(), .removeListener(), etc.)
39
+ if (typeof value === "function") {
40
+ return value.bind(target);
41
+ }
42
+ return value;
43
+ },
44
+ });
45
+ }
46
+ const stdin = options?.stdin ?? process.stdin;
47
+ const mode = options?.mode ?? "fullscreen";
48
+ const exitOnCtrlC = options?.exitOnCtrlC ?? true;
49
+ const handleSignals = options?.handleSignals ?? true;
50
+ const exitOnSignal = options?.exitOnSignal ?? true;
51
+ const signalExitCodes = {
52
+ SIGINT: 130,
53
+ SIGTERM: 143,
54
+ ...options?.signalExitCodes,
55
+ };
56
+ const manualMode = options?.manualMode ?? false;
57
+ const enableDiff = options?.diff ?? !manualMode;
58
+ const skipTerminalSetup = options?.skipTerminalSetup ?? false;
59
+ const enablePaste = options?.enablePaste ?? true;
60
+ const enableMouse = options?.enableMouse ?? mode === "fullscreen";
61
+ const enableKittyKeyboard = options?.enableKittyKeyboard;
62
+ const debugHook = options?.debug?.onFrame;
63
+ const emojiWidthOption = options?.emojiWidth;
64
+ const envEmojiWidth = process.env.TUI_EMOJI_WIDTH ?? process.env.EFFECT_TUI_EMOJI_WIDTH ?? process.env.EMOJI_WIDTH;
65
+ const keyboardProbe = !skipTerminalSetup && enableKittyKeyboard !== false
66
+ ? createKeyboardCapabilityProbe({
67
+ stdout,
68
+ onResolved: (supportsKitty) => {
69
+ if (supportsKitty) {
70
+ stdout.write(ANSI.modifyOtherKeys.disable);
71
+ stdout.write(ANSI.keyboard.enable(1));
72
+ }
73
+ else {
74
+ stdout.write(ANSI.modifyOtherKeys.enable);
75
+ }
76
+ },
77
+ })
78
+ : null;
79
+ if (emojiWidthOption === 1 || emojiWidthOption === 2) {
80
+ setEmojiWidth(emojiWidthOption);
81
+ }
82
+ else if (envEmojiWidth === "1" || envEmojiWidth === "2") {
83
+ setEmojiWidth(envEmojiWidth === "1" ? 1 : 2);
84
+ }
85
+ // Initialize state
86
+ const state = new RendererState(stdout.columns || 80, stdout.rows || 24);
87
+ const events = new EventBus();
88
+ const frameBuilder = new FrameBuilder();
89
+ // Terminal setup/teardown
90
+ const terminal = new TerminalSetup(stdout, stdin, {
91
+ mode,
92
+ enablePaste,
93
+ enableMouse,
94
+ skipTerminalSetup,
95
+ });
96
+ // Render mode (fullscreen or inline)
97
+ const renderMode = mode === "fullscreen" ? new FullscreenRenderer() : new InlineRenderer();
98
+ // Static content renderer (inline mode only)
99
+ const staticRenderer = mode === "inline" ? new StaticContentRenderer(stdout, state.palette) : null;
100
+ let renderer;
101
+ let cleanedUp = false;
102
+ const cleanup = () => {
103
+ if (cleanedUp)
104
+ return;
105
+ cleanedUp = true;
106
+ renderer.stop();
107
+ };
108
+ const handleRenderError = (err) => {
109
+ const error = err instanceof Error ? err : new Error(String(err));
110
+ cleanup();
111
+ writeToTerminal(`\n[effect-tui] Render error:\n${error.stack || error.message}\n`);
112
+ if (exitOnRenderError)
113
+ process.exit(1);
114
+ };
115
+ const filterInput = keyboardProbe
116
+ ? (input) => {
117
+ let output = input;
118
+ if (keyboardProbe)
119
+ output = keyboardProbe.handleInput(output);
120
+ return output;
121
+ }
122
+ : undefined;
123
+ // Input processing
124
+ const inputProcessor = new InputProcessor({
125
+ exitOnCtrlC,
126
+ dispatchKey: (key) => {
127
+ events.dispatchKey(key);
128
+ return key.defaultPrevented ?? false;
129
+ },
130
+ dispatchMouse: (mouse) => events.dispatchMouse(mouse),
131
+ dispatchPaste: (text) => events.dispatchPaste(text),
132
+ flushSync: (fn) => flushSync(fn) ?? undefined,
133
+ onInputProcessed: () => {
134
+ if (!manualMode)
135
+ renderFrame();
136
+ },
137
+ onQuit: () => {
138
+ // Clean up terminal state before exiting
139
+ renderer.stop();
140
+ requestExit(0);
141
+ },
142
+ filterInput,
143
+ });
144
+ const handleInlineFullRerender = () => {
145
+ if (mode !== "inline" || !staticRenderer)
146
+ return "";
147
+ const inlineMode = renderMode;
148
+ if (!inlineMode.needsFullRerender())
149
+ return "";
150
+ let output = "";
151
+ // Clear screen + scrollback + cursor home
152
+ output += ANSI.screen.clear + ANSI.screen.clearScrollback + ANSI.cursor.home;
153
+ // Replay all cached static content
154
+ const cachedStatic = staticRenderer.getCachedOutput();
155
+ if (cachedStatic) {
156
+ output += cachedStatic;
157
+ }
158
+ // Reset state
159
+ inlineMode.clearFullRerenderFlag();
160
+ state.invalidateBuffers();
161
+ return output;
162
+ };
163
+ const flushInlineStatic = (container, frameWidth) => {
164
+ if (mode !== "inline" || !container?.staticDirty || !container.staticRoot || !staticRenderer) {
165
+ return "";
166
+ }
167
+ const inlineMode = renderMode;
168
+ const prevHeight = inlineMode.getPreviousHeight();
169
+ let output = "";
170
+ // Step 1: Clear the dynamic area (move up + clear to end of screen)
171
+ if (prevHeight > 0) {
172
+ output += ANSI.cursor.up(prevHeight) + ANSI.cursor.startOfLine + ANSI.screen.clearToEnd;
173
+ }
174
+ // Step 2: Append static content (cursor ends at bottom of static)
175
+ output += staticRenderer.render(container.staticRoot, frameWidth);
176
+ // Step 3: Reset previousHeight to 0 (we cleared dynamic, starting fresh)
177
+ inlineMode.reset();
178
+ inlineMode.forceFullOutputOnce(); // Force full output to resync cursor tracking after static
179
+ state.invalidateBuffers();
180
+ container.staticDirty = false;
181
+ return output;
182
+ };
183
+ // The render frame logic
184
+ const renderFrame = () => {
185
+ const frameStart = Prof.startFrame();
186
+ const frameStartMs = performance.now();
187
+ // Flush any pending React updates before measuring/layout.
188
+ // Ensures resize-driven state (useTerminalSize) is reflected in the host tree.
189
+ flushSync(() => { });
190
+ const frameWidth = state.width;
191
+ const frameHeight = state.height;
192
+ let contentH = frameHeight;
193
+ const container = renderer._container;
194
+ const root = container?.root ?? null;
195
+ // Must render if dirty OR if static content needs flushing
196
+ if ((!state.dirty && !container?.staticDirty) || !root)
197
+ return;
198
+ state.dirty = false;
199
+ try {
200
+ // Handle full rerender on resize (Ink-style: clear everything + replay static)
201
+ const fullRerenderOutput = handleInlineFullRerender();
202
+ // Handle static content: clear dynamic area, append static, then fresh dynamic render
203
+ // Note: IL (insert lines) won't work here because inline mode uses relative positioning
204
+ // and IL would desync the screen state from our buffer tracking.
205
+ const staticOutput = flushInlineStatic(container ?? null, frameWidth);
206
+ // For inline mode, measure content unconstrained to handle overflow
207
+ let actualContentHeight = frameHeight;
208
+ if (mode === "inline") {
209
+ const size = root.measure(frameWidth, Number.MAX_SAFE_INTEGER);
210
+ actualContentHeight = size.h;
211
+ }
212
+ // Buffer height: content height for inline (to capture all content), terminal height for fullscreen
213
+ const bufferHeight = mode === "inline" ? Math.max(actualContentHeight, frameHeight) : frameHeight;
214
+ // Ensure buffers exist
215
+ state.ensureBuffers(frameWidth, bufferHeight);
216
+ if (!state.nextBuffer)
217
+ return;
218
+ // Build frame (clear, layout, render)
219
+ const timings = frameBuilder.build(root, state.nextBuffer, state.palette, frameWidth, bufferHeight);
220
+ // Generate output
221
+ const t = Prof.startPhase();
222
+ const diffStartMs = performance.now();
223
+ const { output: modeOutput, contentHeight } = renderMode.generateOutput({
224
+ nextBuffer: state.nextBuffer,
225
+ prevBuffer: state.prevBuffer,
226
+ palette: state.palette,
227
+ frameWidth,
228
+ frameHeight,
229
+ contentHeight: actualContentHeight,
230
+ enableDiff,
231
+ stdout,
232
+ });
233
+ // Combine all output for single atomic write
234
+ // fullRerenderOutput (clear + replay static) goes BEFORE sync block
235
+ // Sync block wraps only the dynamic content to prevent tearing
236
+ const output = fullRerenderOutput +
237
+ ANSI.sync.begin +
238
+ staticOutput +
239
+ modeOutput +
240
+ state.palette.sgr(0) +
241
+ ANSI.sync.end;
242
+ contentH = contentHeight;
243
+ const diffAnsiMs = performance.now() - diffStartMs;
244
+ Prof.endPhase("diff+ansi", t);
245
+ // Write output (single atomic write prevents visual glitches)
246
+ const writeT = Prof.startPhase();
247
+ const writeStart = performance.now();
248
+ stdout.write(output);
249
+ const writeMs = performance.now() - writeStart;
250
+ Prof.endPhase("write", writeT);
251
+ Prof.endFrame(frameStart);
252
+ const frameMs = performance.now() - frameStartMs;
253
+ // Swap buffers
254
+ state.swapBuffers();
255
+ // Build stats
256
+ const stats = {
257
+ mode,
258
+ width: state.width,
259
+ height: state.height,
260
+ contentHeight: contentH,
261
+ bytes: Buffer.byteLength(output, "utf8"),
262
+ frameMs,
263
+ phases: {
264
+ clear: timings.clear,
265
+ layout: timings.layout,
266
+ render: timings.render,
267
+ diffMs: diffAnsiMs,
268
+ write: writeMs,
269
+ },
270
+ timestamp: performance.now(),
271
+ };
272
+ if (debugHook)
273
+ debugHook(stats);
274
+ if (events.hasFrameHandlers)
275
+ events.dispatchFrame(stats);
276
+ }
277
+ catch (err) {
278
+ handleRenderError(err);
279
+ }
280
+ };
281
+ const applyResize = (width, height, renderNow) => {
282
+ const prevWidth = state.lastWidth;
283
+ renderMode.handleResize(width, height, prevWidth);
284
+ state.updateDimensions(width, height);
285
+ state.invalidateBuffers();
286
+ state.markDirty();
287
+ flushSync(() => {
288
+ events.dispatchResize(width, height);
289
+ });
290
+ if (renderNow)
291
+ renderFrame();
292
+ };
293
+ let onExit = null;
294
+ let onSignal = null;
295
+ let onUncaughtException = null;
296
+ let onUnhandledRejection = null;
297
+ let unregisterProcessHandlers = null;
298
+ // Build renderer object
299
+ renderer = {
300
+ get width() {
301
+ return state.width;
302
+ },
303
+ get height() {
304
+ return state.height;
305
+ },
306
+ requestRender() {
307
+ state.markDirty();
308
+ },
309
+ onKey: (handler) => events.onKey(handler),
310
+ onMouse: (handler) => events.onMouse(handler),
311
+ onPaste: (handler) => events.onPaste(handler),
312
+ onResize: (handler) => events.onResize(handler),
313
+ onFrameStats: (handler) => events.onFrameStats(handler),
314
+ stop() {
315
+ state.running = false;
316
+ if (unregisterProcessHandlers) {
317
+ unregisterProcessHandlers();
318
+ unregisterProcessHandlers = null;
319
+ onExit = null;
320
+ onSignal = null;
321
+ onUncaughtException = null;
322
+ onUnhandledRejection = null;
323
+ }
324
+ if (state.loop) {
325
+ clearInterval(state.loop);
326
+ state.loop = null;
327
+ }
328
+ if (state.inputHandler) {
329
+ stdin.removeListener("data", state.inputHandler);
330
+ state.inputHandler = null;
331
+ }
332
+ if (state.resizeHandler) {
333
+ stdout.removeListener("resize", state.resizeHandler);
334
+ state.resizeHandler = null;
335
+ }
336
+ events.clear();
337
+ terminal.teardown();
338
+ },
339
+ renderNow() {
340
+ renderFrame();
341
+ },
342
+ getScreenshot() {
343
+ // Return the previous buffer as ANSI string (it has the last rendered frame)
344
+ if (state.prevBuffer) {
345
+ return bufferToString(state.prevBuffer, state.palette, state.width, state.height);
346
+ }
347
+ return "";
348
+ },
349
+ dispatchKey(key) {
350
+ events.dispatchKey(key);
351
+ if (!manualMode)
352
+ renderFrame();
353
+ },
354
+ dispatchPaste(text) {
355
+ events.dispatchPaste(text);
356
+ if (!manualMode)
357
+ renderFrame();
358
+ },
359
+ dispatchResize(width, height) {
360
+ applyResize(width, height, !manualMode);
361
+ },
362
+ };
363
+ // Terminal setup
364
+ terminal.setup();
365
+ // Input handling
366
+ state.inputHandler = (data) => inputProcessor.process(data);
367
+ stdin.on("data", state.inputHandler);
368
+ keyboardProbe?.start();
369
+ // No emoji width probing.
370
+ if (!keyboardProbe && !skipTerminalSetup) {
371
+ stdout.write(ANSI.modifyOtherKeys.enable);
372
+ }
373
+ // Resize handling
374
+ state.resizeHandler = () => {
375
+ const newWidth = stdout.columns || 80;
376
+ const newHeight = stdout.rows || 24;
377
+ applyResize(newWidth, newHeight, false);
378
+ };
379
+ stdout.on("resize", state.resizeHandler);
380
+ // Render loop
381
+ if (!manualMode) {
382
+ const frameMs = 1000 / fps;
383
+ state.loop = setInterval(() => {
384
+ if (!state.running) {
385
+ if (state.loop)
386
+ clearInterval(state.loop);
387
+ terminal.teardown();
388
+ return;
389
+ }
390
+ renderFrame();
391
+ }, frameMs);
392
+ }
393
+ // Process exit handlers - ensure terminal is restored on any exit
394
+ // These handlers are critical for proper cleanup when process.exit() is called
395
+ if (handleSignals) {
396
+ // Handle normal process exit (synchronous - runs before exit completes)
397
+ onExit = () => cleanup();
398
+ // Handle SIGINT (Ctrl+C from shell, not from TUI input) and SIGTERM
399
+ onSignal = (signal) => {
400
+ cleanup();
401
+ if (!exitOnSignal)
402
+ return;
403
+ const code = signalExitCodes[signal] ?? 0;
404
+ requestExit(code);
405
+ };
406
+ // Handle uncaught exceptions - ensure error is visible before exit
407
+ onUncaughtException = (err) => {
408
+ cleanup();
409
+ // Write directly to terminal, bypassing console capture
410
+ writeToTerminal(`\n[effect-tui] Uncaught exception:\n${err.stack || err.message}\n`);
411
+ process.exit(1);
412
+ };
413
+ // Handle unhandled promise rejections
414
+ onUnhandledRejection = (reason) => {
415
+ cleanup();
416
+ const message = reason instanceof Error ? reason.stack || reason.message : String(reason);
417
+ writeToTerminal(`\n[effect-tui] Unhandled rejection:\n${message}\n`);
418
+ process.exit(1);
419
+ };
420
+ unregisterProcessHandlers = registerProcessHandlers({
421
+ onExit,
422
+ onSignal,
423
+ onUncaughtException,
424
+ onUnhandledRejection,
425
+ });
426
+ }
427
+ ;
428
+ renderer._container = null;
429
+ return renderer;
430
+ }
431
+ export function createRoot(renderer) {
432
+ const hostContext = {
433
+ requestRender: () => renderer.requestRender(),
434
+ requestRenderNow: () => renderer.renderNow(),
435
+ };
436
+ const container = {
437
+ root: null,
438
+ ctx: hostContext,
439
+ };
440
+ const fiberRoot = reconciler.createContainer(container, 0, null, false, null, "", (err) => console.error(err), (err) => console.error(err), (err) => console.error(err), () => { }, null);
441
+ renderer._container = container;
442
+ return {
443
+ render(element, sync = false) {
444
+ const wrapped = React.createElement(RendererContext.Provider, { value: renderer }, element);
445
+ if (sync) {
446
+ flushSync(() => {
447
+ reconciler.updateContainer(wrapped, fiberRoot, null, null);
448
+ });
449
+ renderer.requestRender();
450
+ }
451
+ else {
452
+ reconciler.updateContainer(wrapped, fiberRoot, null, () => {
453
+ renderer.requestRender();
454
+ });
455
+ }
456
+ },
457
+ unmount() {
458
+ reconciler.updateContainer(null, fiberRoot, null, () => {
459
+ renderer.stop();
460
+ });
461
+ },
462
+ };
463
+ }
464
+ const stripQuery = (url) => url.split("?")[0];
465
+ const createRenderInstance = (renderer, root, element, stop, skipInitialRender = false) => {
466
+ if (!skipInitialRender) {
467
+ root.render(element, true);
468
+ }
469
+ let resolved = false;
470
+ let resolveExit = null;
471
+ let unregisterExitHandler = null;
472
+ const exitPromise = new Promise((resolve) => {
473
+ resolveExit = () => {
474
+ if (resolved)
475
+ return;
476
+ resolved = true;
477
+ resolve();
478
+ };
479
+ });
480
+ // Resolve the exit promise on process exit
481
+ // Note: Terminal cleanup is handled by createRenderer's exit handlers
482
+ const onExit = () => {
483
+ resolveExit?.();
484
+ };
485
+ unregisterExitHandler = registerProcessHandlers({ onExit });
486
+ const unmount = () => {
487
+ if (unregisterExitHandler) {
488
+ unregisterExitHandler();
489
+ unregisterExitHandler = null;
490
+ }
491
+ if (!resolved) {
492
+ resolved = true;
493
+ stop();
494
+ resolveExit?.();
495
+ }
496
+ };
497
+ const rerender = (next) => {
498
+ if (resolved)
499
+ return;
500
+ root.render(next);
501
+ };
502
+ // Clean quit function - stop() + process.exit()
503
+ // The createRenderer exit handler will also run, but it's idempotent
504
+ const quit = (code = 0) => {
505
+ stop();
506
+ requestExit(code);
507
+ };
508
+ return {
509
+ renderer,
510
+ root,
511
+ rerender,
512
+ unmount,
513
+ waitUntilExit: () => exitPromise,
514
+ quit,
515
+ };
516
+ };
517
+ export function render(element, options) {
518
+ if (options?.dev && !options.importMeta) {
519
+ throw new Error("[effect-tui] render(..., { dev: true, importMeta }) is required in dev mode");
520
+ }
521
+ if (!options?.dev) {
522
+ const renderer = createRenderer({ mode: options?.mode });
523
+ const root = createRoot(renderer);
524
+ return createRenderInstance(renderer, root, element, () => renderer.stop());
525
+ }
526
+ const importMeta = options.importMeta;
527
+ const baseUrl = stripQuery(importMeta.url);
528
+ const cacheKey = `${baseUrl}::${options.mode ?? "fullscreen"}`;
529
+ const renderCache = getRenderCache();
530
+ const cached = renderCache.get(cacheKey);
531
+ if (cached)
532
+ return cached;
533
+ const renderer = createRenderer({ mode: options.mode });
534
+ const root = createRoot(renderer);
535
+ const entryPath = fileURLToPath(new URL(baseUrl));
536
+ const devRuntime = startDevRuntime(entryPath, renderer, root, { mode: options.mode });
537
+ const instance = createRenderInstance(renderer, root, element, () => {
538
+ void devRuntime.stop();
539
+ }, true);
540
+ renderCache.set(cacheKey, instance);
541
+ return instance;
542
+ }
543
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/internal/renderer/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { type KeyMsg, type MouseMsg } from "@effect-tui/core";
2
+ export interface InputProcessorConfig {
3
+ exitOnCtrlC: boolean;
4
+ dispatchKey: (key: KeyMsg) => boolean;
5
+ dispatchMouse: (mouse: MouseMsg) => void;
6
+ dispatchPaste: (text: string) => void;
7
+ flushSync: <T>(fn: () => T) => T;
8
+ onInputProcessed: () => void;
9
+ onQuit?: () => void;
10
+ /** Optional filter to strip capability responses from raw input */
11
+ filterInput?: (input: string) => string;
12
+ }
13
+ /**
14
+ * Processes raw terminal input, handling keyboard, mouse, and bracketed paste.
15
+ */
16
+ export declare class InputProcessor {
17
+ private config;
18
+ private pasteActive;
19
+ private pasteBuffer;
20
+ private pendingInput;
21
+ constructor(config: InputProcessorConfig);
22
+ /**
23
+ * Process incoming data from stdin.
24
+ * Handles bracketed paste detection, key/mouse event decoding, and dispatch.
25
+ */
26
+ process(data: Buffer): void;
27
+ private emitInput;
28
+ private splitIncompleteCsi;
29
+ }
30
+ //# sourceMappingURL=InputProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputProcessor.d.ts","sourceRoot":"","sources":["../../../../../src/internal/renderer/input/InputProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,MAAM,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAGhF,MAAM,WAAW,oBAAoB;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAA;IACrC,aAAa,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAA;IACxC,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,SAAS,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAChC,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,mEAAmE;IACnE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;CACvC;AAED;;GAEG;AACH,qBAAa,cAAc;IAKd,OAAO,CAAC,MAAM;IAJ1B,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAK;gBAEL,MAAM,EAAE,oBAAoB;IAEhD;;;OAGG;IACH,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAiD3B,OAAO,CAAC,SAAS;IA+CjB,OAAO,CAAC,kBAAkB;CAY1B"}