@visulima/tui 1.0.0-alpha.6 → 1.0.0-alpha.8

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 (412) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/core/index.js +1 -5
  3. package/dist/ink/index.d.ts +15 -34
  4. package/dist/ink/index.js +1 -155
  5. package/dist/packem_chunks/devtools.js +3 -26
  6. package/dist/packem_shared/Accordion-BXsqchV-.js +1 -0
  7. package/dist/packem_shared/Alert-BhYVMHtR.js +1 -0
  8. package/dist/packem_shared/AnimatePresence-Eu7Z8KHc.js +1 -0
  9. package/dist/packem_shared/ApprovalPrompt-BSn0FT1g.js +1 -0
  10. package/dist/packem_shared/AreaChart-Chy-frI7.js +1 -0
  11. package/dist/packem_shared/Badge-B8WPyRsK.js +1 -0
  12. package/dist/packem_shared/BarChart-rpZtlMcF.js +1 -0
  13. package/dist/packem_shared/BigText-CRpwUzrt.js +1 -0
  14. package/dist/packem_shared/BlinkDot-BvnRuWP8.js +1 -0
  15. package/dist/packem_shared/Box-BwqSvWuq.js +1 -0
  16. package/dist/packem_shared/Breadcrumb-D0hClbRV.js +1 -0
  17. package/dist/packem_shared/Button-B89Yvbc6.js +1 -0
  18. package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-DqErf7XX.js +1 -0
  19. package/dist/packem_shared/Calendar-Dmflvm2S.js +1 -0
  20. package/dist/packem_shared/Canvas-CKg6WV47.js +1 -0
  21. package/dist/packem_shared/Card-B_9fXdtU.js +1 -0
  22. package/dist/packem_shared/Cell-BrXn3jxY.js +1 -0
  23. package/dist/packem_shared/Checkbox-BN71eCWU.js +1 -0
  24. package/dist/packem_shared/Code-HhevcyiH.js +2 -0
  25. package/dist/packem_shared/Collapsible-u6uf_FdV.js +1 -0
  26. package/dist/packem_shared/CommandBlock-B-nslpCv.js +4 -0
  27. package/dist/packem_shared/CommandPalette-CEFdaURo.js +1 -0
  28. package/dist/packem_shared/ConfirmDialog-5Jje_Xpu.js +1 -0
  29. package/dist/packem_shared/ConfirmInput-D44Mb9oo.js +1 -0
  30. package/dist/packem_shared/ConsoleOverlay-CM3APfgP.js +1 -0
  31. package/dist/packem_shared/ContentSwitcher-Dm5BkrCt.js +1 -0
  32. package/dist/packem_shared/ControlledScrollView-DI8KZOQB.js +1 -0
  33. package/dist/packem_shared/Cursor-BoLFIMol.js +1 -0
  34. package/dist/packem_shared/DatePicker-CnSrFFAE.js +1 -0
  35. package/dist/packem_shared/DefinitionList-v8RDuF_R.js +1 -0
  36. package/dist/packem_shared/DevTools-O8EbCfHa.js +1 -0
  37. package/dist/packem_shared/Dialog-CTaL8pn0.js +1 -0
  38. package/dist/packem_shared/DiffView-BUIFqUB0.js +1 -0
  39. package/dist/packem_shared/Divider-C47bKmqu.js +1 -0
  40. package/dist/packem_shared/FilePicker-CUo7R5Qb.js +1 -0
  41. package/dist/packem_shared/FocusContext-Xy0cwJpO.js +1 -0
  42. package/dist/packem_shared/FormField-af3aUpRL.js +1 -0
  43. package/dist/packem_shared/Fullscreen-CuJ8y0s0.js +1 -0
  44. package/dist/packem_shared/Gauge-Dz-usH__.js +1 -0
  45. package/dist/packem_shared/Gradient-DYNc0GZA.js +1 -0
  46. package/dist/packem_shared/Heading-mwEYza3Y.js +1 -0
  47. package/dist/packem_shared/Heatmap-ChL97U1-.js +1 -0
  48. package/dist/packem_shared/Help-Zcelyw_U.js +1 -0
  49. package/dist/packem_shared/Histogram-FIf2F83d.js +1 -0
  50. package/dist/packem_shared/IMECompositionBuffer-C89PhiOu.js +1 -0
  51. package/dist/packem_shared/InputParser-rZKjY_7Y.js +2 -0
  52. package/dist/packem_shared/KEY-Bk8B-3h_.js +1 -0
  53. package/dist/packem_shared/Kbd-DpkPp4jB.js +1 -0
  54. package/dist/packem_shared/LayoutNode-rxblE317.js +1 -0
  55. package/dist/packem_shared/LineChart-BXE_girm.js +1 -0
  56. package/dist/packem_shared/Link-i2o2EG4-.js +1 -0
  57. package/dist/packem_shared/LoadingIndicator-TC1Fjwyt.js +1 -0
  58. package/dist/packem_shared/Markdown-R1XqK63D.js +1 -0
  59. package/dist/packem_shared/MaskedInput-J01phOZs.js +1 -0
  60. package/dist/packem_shared/Menu-CfrH4ymk.js +1 -0
  61. package/dist/packem_shared/MessageBubble-BmBBU2Rm.js +1 -0
  62. package/dist/packem_shared/ModelBadge-D3wrXncu.js +1 -0
  63. package/dist/packem_shared/MouseProvider-pjza-lpc.js +1 -0
  64. package/dist/packem_shared/MultiSelect-Dqmn-bVo.js +1 -0
  65. package/dist/packem_shared/NAMED_COLORS-B9fJsYdg.js +1 -0
  66. package/dist/packem_shared/Newline-BSG4iUqp.js +2 -0
  67. package/dist/packem_shared/OperationTree-DksxjMIV.js +1 -0
  68. package/dist/packem_shared/OptionList-CNx7r9yN.js +1 -0
  69. package/dist/packem_shared/OrderedList-BeDy035w.js +1 -0
  70. package/dist/packem_shared/Paginator-B56s6bhS.js +1 -0
  71. package/dist/packem_shared/Paragraph-BqJlH0R-.js +1 -0
  72. package/dist/packem_shared/Placeholder-GMpHRGC8.js +1 -0
  73. package/dist/packem_shared/ProgressBar-Bj3fmORR.js +1 -0
  74. package/dist/packem_shared/RadioGroup-Br8BeEwS.js +1 -0
  75. package/dist/packem_shared/Renderer-DJXooAsp.js +1 -0
  76. package/dist/packem_shared/ResizeObserverEntry-Dq0dk8Kq.js +1 -0
  77. package/dist/packem_shared/ScatterPlot-OhfYco5l.js +1 -0
  78. package/dist/packem_shared/ScrollBar-Da5Y3z7N.js +1 -0
  79. package/dist/packem_shared/ScrollBarBox-Dz6F-Eat.js +1 -0
  80. package/dist/packem_shared/ScrollList-DiVGyEjv.js +1 -0
  81. package/dist/packem_shared/ScrollView-BojONotI.js +1 -0
  82. package/dist/packem_shared/SearchInput-BoPTRbhV.js +1 -0
  83. package/dist/packem_shared/SelectInput-CAJ7SCBq.js +1 -0
  84. package/dist/packem_shared/SelectInputIndicator-N1n8ULHs.js +1 -0
  85. package/dist/packem_shared/SelectInputItem-BEkbmobs.js +1 -0
  86. package/dist/packem_shared/ShimmerText-CuGQ2NDC.js +1 -0
  87. package/dist/packem_shared/Slider-Cg_tJpKa.js +1 -0
  88. package/dist/packem_shared/Spacer-eT3HOrXk.js +1 -0
  89. package/dist/packem_shared/Sparkline-T6_FPVET.js +1 -0
  90. package/dist/packem_shared/Spinner-B0-A50pu.js +1 -0
  91. package/dist/packem_shared/Static-DLynr5pn.js +1 -0
  92. package/dist/packem_shared/Static-jzLPaHJF.js +1 -0
  93. package/dist/packem_shared/StaticRender-BgD61E7x.js +1 -0
  94. package/dist/packem_shared/StatusLine-Ch4jjef1.js +1 -0
  95. package/dist/packem_shared/StatusMessage-B1qfKeMM.js +1 -0
  96. package/dist/packem_shared/Stepper-CNPAqxiU.js +1 -0
  97. package/dist/packem_shared/Stopwatch-CAx2EWwq.js +1 -0
  98. package/dist/packem_shared/StreamingText-BYOKSB2T.js +1 -0
  99. package/dist/packem_shared/Switch-DzSpKYu7.js +1 -0
  100. package/dist/packem_shared/Tab-BcXzSUdj.js +1 -0
  101. package/dist/packem_shared/Table-DJp1TLrR.js +1 -0
  102. package/dist/packem_shared/Tabs-D68z0SOt.js +1 -0
  103. package/dist/packem_shared/Tag-BvLHnYRn.js +1 -0
  104. package/dist/packem_shared/Text-mTAve9R2.js +1 -0
  105. package/dist/packem_shared/TextInput-C_gYQlnF.js +1 -0
  106. package/dist/packem_shared/Textarea-C2ET_oMb.js +2 -0
  107. package/dist/packem_shared/Timer-CI3aQX65.js +1 -0
  108. package/dist/packem_shared/Toast-Drvc8XfG.js +1 -0
  109. package/dist/packem_shared/Tooltip-C5UnQlLd.js +1 -0
  110. package/dist/packem_shared/Transform-fYmcdqRT.js +1 -0
  111. package/dist/packem_shared/Transition-CJDBKYUB.js +1 -0
  112. package/dist/packem_shared/TreeNodeMap-CspqSCpb.js +1 -0
  113. package/dist/packem_shared/TreeView-DjhacGJ5.js +1 -0
  114. package/dist/packem_shared/TuiApp-DrjI_i-R.js +1 -0
  115. package/dist/packem_shared/TuiContext-BoJvG3NN.js +3 -0
  116. package/dist/packem_shared/UnorderedList-BnfqexZs.js +1 -0
  117. package/dist/packem_shared/accessibility-context-DDyHTwmA.js +1 -0
  118. package/dist/packem_shared/animation-context-DW3p-vpk.js +1 -0
  119. package/dist/packem_shared/ansi-parser-B6uXaq65.js +1 -0
  120. package/dist/packem_shared/ansi-tokenizer-DqX9nJuk.js +1 -0
  121. package/dist/packem_shared/app-context-BVpKlG1z.js +1 -0
  122. package/dist/packem_shared/background-context-rjOaWFki.js +1 -0
  123. package/dist/packem_shared/boxes-DyY_LXCi.js +1 -0
  124. package/dist/packem_shared/braille-BBjIoaN0.js +1 -0
  125. package/dist/packem_shared/colorize-DbTZMrJO.js +1 -0
  126. package/dist/packem_shared/comparePoints-C85EsmNz.js +1 -0
  127. package/dist/packem_shared/controlled-scroll-view-CmrAEvJk.js +1 -0
  128. package/dist/packem_shared/createInlineLoop-DRNZ7jqH.js +2 -0
  129. package/dist/packem_shared/createLinkedScrollGroup-BMTJ7rAj.js +1 -0
  130. package/dist/packem_shared/createMemoryStorage-QVZNXbWz.js +2 -0
  131. package/dist/packem_shared/createScreen-CrLrxA6t.js +3 -0
  132. package/dist/packem_shared/cursor-context-CFviBqPX.js +1 -0
  133. package/dist/packem_shared/dom-4y__5fWB.js +1 -0
  134. package/dist/packem_shared/focus-context-CsT69klR.js +1 -0
  135. package/dist/packem_shared/format-time-C7Q-hQZq.js +1 -0
  136. package/dist/packem_shared/getPathToRoot-B2tKmx3i.js +1 -0
  137. package/dist/packem_shared/getScrollHeight-BTEY8ewu.js +1 -0
  138. package/dist/packem_shared/input-utils-fAxzSlNh.js +1 -0
  139. package/dist/packem_shared/isIntersecting-B3KbKTmu.js +1 -0
  140. package/dist/packem_shared/isOsc52Supported-DKK7Uee6.js +1 -0
  141. package/dist/packem_shared/isTerminalPaletteQuerySupported-Dn2hFAZ_.js +1 -0
  142. package/dist/packem_shared/kittyFlags-C3rZLbcK.js +1 -0
  143. package/dist/packem_shared/line-chart-DrM8PwnI.js +1 -0
  144. package/dist/packem_shared/measure-element-DSp7YDus.js +2 -0
  145. package/dist/packem_shared/measure-text-DDjHT1jD.js +3 -0
  146. package/dist/packem_shared/measureElement-DA8WqFP_.js +1 -0
  147. package/dist/packem_shared/mouse-context-DaARgUu1.js +1 -0
  148. package/dist/packem_shared/parseSgrMouse-Ccj70ijb.js +1 -0
  149. package/dist/packem_shared/processLayout-DXDfFb_d.js +1 -0
  150. package/dist/packem_shared/reconciler-BuOP-TZ6.js +1 -0
  151. package/dist/packem_shared/reconciler-DSYCrIZs.js +1 -0
  152. package/dist/packem_shared/render-DDqtMAFN.js +1 -0
  153. package/dist/packem_shared/render-_r0K9K11.js +28 -0
  154. package/dist/packem_shared/renderToString-DeqOWRP8.js +4 -0
  155. package/dist/packem_shared/renderToString-IYYPyASm.js +2 -0
  156. package/dist/packem_shared/renderTreeToBuffer-DPkoCgP2.js +2 -0
  157. package/dist/packem_shared/renderer-D2p6av2X.js +17 -0
  158. package/dist/packem_shared/setEnableStyledLineCache-D2gZbwFM.js +1 -0
  159. package/dist/packem_shared/squashTextNodesWithMap-Cpqmc45i.js +1 -0
  160. package/dist/packem_shared/stderr-context-BzEaUICS.js +1 -0
  161. package/dist/packem_shared/stdin-context-BTaaFagk.js +1 -0
  162. package/dist/packem_shared/stdout-context-BnblEPez.js +1 -0
  163. package/dist/packem_shared/text-width-CZ9vPvM0.js +2 -0
  164. package/dist/packem_shared/token-to-elements-BYxT6J_Q.js +1 -0
  165. package/dist/packem_shared/treeViewTheme-1RIZyB4M.js +1 -0
  166. package/dist/packem_shared/useAnimation-B9we6ZzL.js +1 -0
  167. package/dist/packem_shared/useApp-B6fvM42d.js +1 -0
  168. package/dist/packem_shared/useBoxMetrics-D5pkIr6P.js +1 -0
  169. package/dist/packem_shared/useClipboard-CBxy0hT8.js +1 -0
  170. package/dist/packem_shared/useColorBlindness-BvWcu2Bb.js +1 -0
  171. package/dist/packem_shared/useConsoleCapture-BxiG8iLJ.js +1 -0
  172. package/dist/packem_shared/useCursor-CPu8T5Db.js +1 -0
  173. package/dist/packem_shared/useElementDimensions-qJ_WXFZ9.js +1 -0
  174. package/dist/packem_shared/useFocus-DSmziO_x.js +1 -0
  175. package/dist/packem_shared/useFocusManager-Uapn3LQo.js +1 -0
  176. package/dist/packem_shared/useForm-CzV-Oext.js +1 -0
  177. package/dist/packem_shared/useHotkey-D0dGey14.js +1 -0
  178. package/dist/packem_shared/useInput-D1_jG26Z.js +2 -0
  179. package/dist/packem_shared/useInterval-AobjZT3u.js +1 -0
  180. package/dist/packem_shared/useIsScreenReaderEnabled-DjWHh-II.js +1 -0
  181. package/dist/packem_shared/useKeyBindings-zabkEJQs.js +1 -0
  182. package/dist/packem_shared/useKeyChord-CICQIxXj.js +1 -0
  183. package/dist/packem_shared/useMouseAction-2dRfU1vE.js +1 -0
  184. package/dist/packem_shared/useMouseContext-C746G7kY.js +1 -0
  185. package/dist/packem_shared/useMousePosition-BTWfV4JK.js +1 -0
  186. package/dist/packem_shared/useOnMouseClick-nY8xLZmt.js +1 -0
  187. package/dist/packem_shared/useOnMouseHover-D3DczIol.js +1 -0
  188. package/dist/packem_shared/useOnMouseState-cRK8QvzD.js +1 -0
  189. package/dist/packem_shared/usePaste-CKKB9H-Z.js +1 -0
  190. package/dist/packem_shared/useScrollAcceleration-NrY1oVMs.js +1 -0
  191. package/dist/packem_shared/useScrollInput-Caghtn-Q.js +1 -0
  192. package/dist/packem_shared/useStderr-BDZb6InG.js +1 -0
  193. package/dist/packem_shared/useStdin-DKa4h35k.js +1 -0
  194. package/dist/packem_shared/useStdout-B-2lX4C5.js +1 -0
  195. package/dist/packem_shared/useStopwatch-DffK7iMh.js +1 -0
  196. package/dist/packem_shared/useTerminalPalette-Cv7tSduR.js +1 -0
  197. package/dist/packem_shared/useTextBuffer-DekkGLxI.js +4 -0
  198. package/dist/packem_shared/useTextSelection-CGT0GLDR.js +1 -0
  199. package/dist/packem_shared/useTimeout-7LEFYTnG.js +1 -0
  200. package/dist/packem_shared/useTimer-DyoqSyGi.js +1 -0
  201. package/dist/packem_shared/useTreeView-8UlTK6sW.js +1 -0
  202. package/dist/packem_shared/useTreeViewState-CRPCUWrb.js +1 -0
  203. package/dist/packem_shared/useWindowSize-yDZsXF8z.js +1 -0
  204. package/dist/packem_shared/utils-THUhYKG2.js +1 -0
  205. package/dist/packem_shared/variant-config-BJqpNo7H.js +1 -0
  206. package/dist/packem_shared/waitFor-Dj5zfL5s.js +4 -0
  207. package/dist/packem_shared/wrapOrTruncateStyledLine-BZ00SM8i.js +3 -0
  208. package/dist/react/index.js +1 -9
  209. package/dist/testing/index.js +1 -152
  210. package/package.json +9 -9
  211. package/dist/packem_shared/Accordion-BG-yfIkV.js +0 -80
  212. package/dist/packem_shared/Alert-BLcwIW8V.js +0 -17
  213. package/dist/packem_shared/AnimatePresence-D8nEOr_B.js +0 -98
  214. package/dist/packem_shared/ApprovalPrompt-BXdPros1.js +0 -104
  215. package/dist/packem_shared/AreaChart-CmTcxLum.js +0 -116
  216. package/dist/packem_shared/Badge-CUfbXwAB.js +0 -13
  217. package/dist/packem_shared/BarChart-DWRae67P.js +0 -87
  218. package/dist/packem_shared/BigText-CVq2X7B5.js +0 -24
  219. package/dist/packem_shared/BlinkDot-CrbHMR3L.js +0 -11
  220. package/dist/packem_shared/Box-W1w_NGin.js +0 -71
  221. package/dist/packem_shared/Breadcrumb-CPdNxVYs.js +0 -26
  222. package/dist/packem_shared/Button-CBmTbJ_D.js +0 -57
  223. package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-BsMy5Ewl.js +0 -81
  224. package/dist/packem_shared/Calendar-C2Qxt-LA.js +0 -139
  225. package/dist/packem_shared/Canvas-COttmLPX.js +0 -246
  226. package/dist/packem_shared/Card-D3tGkNCm.js +0 -24
  227. package/dist/packem_shared/Cell-DCg1kJY-.js +0 -48
  228. package/dist/packem_shared/Checkbox-Dpy_4Lws.js +0 -49
  229. package/dist/packem_shared/Code-CwzzbsLx.js +0 -53
  230. package/dist/packem_shared/Collapsible-BMDrXf5C.js +0 -45
  231. package/dist/packem_shared/CommandBlock-jdOGJPjY.js +0 -80
  232. package/dist/packem_shared/CommandPalette-B5IfUQwi.js +0 -146
  233. package/dist/packem_shared/ConfirmDialog-5XJv3Cc4.js +0 -67
  234. package/dist/packem_shared/ConfirmInput-CxUS0XAA.js +0 -44
  235. package/dist/packem_shared/ConsoleOverlay-BvnCEgjG.js +0 -57
  236. package/dist/packem_shared/ContentSwitcher-BHFpO5Za.js +0 -81
  237. package/dist/packem_shared/ControlledScrollView-C2wOOlJO.js +0 -5
  238. package/dist/packem_shared/Cursor-DiW7YoSK.js +0 -18
  239. package/dist/packem_shared/DatePicker-CPejKoqS.js +0 -73
  240. package/dist/packem_shared/DefinitionList-BAwr0l5J.js +0 -18
  241. package/dist/packem_shared/DevTools-BdxRSkhL.js +0 -63
  242. package/dist/packem_shared/Dialog-S9r7Izff.js +0 -71
  243. package/dist/packem_shared/DiffView-BR4T6-Sj.js +0 -329
  244. package/dist/packem_shared/Divider-DocXIqNn.js +0 -30
  245. package/dist/packem_shared/FilePicker-BZ55oF_n.js +0 -261
  246. package/dist/packem_shared/FocusContext-D5wFxSRz.js +0 -153
  247. package/dist/packem_shared/FormField-BSG16cnA.js +0 -29
  248. package/dist/packem_shared/Fullscreen-DO7voOq5.js +0 -11
  249. package/dist/packem_shared/Gauge-CKXUXxft.js +0 -122
  250. package/dist/packem_shared/Gradient-Dg0NezWc.js +0 -136
  251. package/dist/packem_shared/Heading-BnR7McmP.js +0 -29
  252. package/dist/packem_shared/Heatmap-_jqISOU0.js +0 -79
  253. package/dist/packem_shared/Help-0yZ_IcQg.js +0 -105
  254. package/dist/packem_shared/Histogram-CB6XcmZW.js +0 -92
  255. package/dist/packem_shared/IMECompositionBuffer-Dl3S0KnF.js +0 -55
  256. package/dist/packem_shared/InputParser-BlsfeY9J.js +0 -158
  257. package/dist/packem_shared/KEY-STOdi-nc.js +0 -74
  258. package/dist/packem_shared/Kbd-BNDXQgey.js +0 -19
  259. package/dist/packem_shared/LayoutNode-DAkKg9TE.js +0 -129
  260. package/dist/packem_shared/LineChart-ef3HF816.js +0 -7
  261. package/dist/packem_shared/Link-DZ2Tiq1m.js +0 -66
  262. package/dist/packem_shared/LoadingIndicator-DzbLGfyJ.js +0 -13
  263. package/dist/packem_shared/Markdown-33bpCUoe.js +0 -212
  264. package/dist/packem_shared/MaskedInput-Ctr6v2dO.js +0 -119
  265. package/dist/packem_shared/Menu-CeKxhEix.js +0 -112
  266. package/dist/packem_shared/MessageBubble-BMoU8L2Q.js +0 -26
  267. package/dist/packem_shared/ModelBadge-CNIxPs7v.js +0 -40
  268. package/dist/packem_shared/MouseProvider-CekPbXCh.js +0 -136
  269. package/dist/packem_shared/MultiSelect-yz7-w0Zv.js +0 -129
  270. package/dist/packem_shared/NAMED_COLORS-DcI3erCu.js +0 -300
  271. package/dist/packem_shared/Newline-DBtYEg8x.js +0 -7
  272. package/dist/packem_shared/OperationTree-Dudx5o1o.js +0 -67
  273. package/dist/packem_shared/OptionList-CTyqQaZ1.js +0 -24
  274. package/dist/packem_shared/OrderedList-VsvSmHUC.js +0 -26
  275. package/dist/packem_shared/Paginator-DmGogvEI.js +0 -104
  276. package/dist/packem_shared/Paragraph-CNNhfepo.js +0 -9
  277. package/dist/packem_shared/Placeholder-DkM69Q8Z.js +0 -29
  278. package/dist/packem_shared/ProgressBar-B7cS4uQm.js +0 -22
  279. package/dist/packem_shared/RadioGroup-B4F9PUyL.js +0 -108
  280. package/dist/packem_shared/Renderer-zZ5O3vxc.js +0 -31
  281. package/dist/packem_shared/ResizeObserverEntry-Vr8GZ74x.js +0 -102
  282. package/dist/packem_shared/ScatterPlot-CWOg4G5h.js +0 -63
  283. package/dist/packem_shared/ScrollBar-DFeWH43I.js +0 -106
  284. package/dist/packem_shared/ScrollBarBox-C7VL6Izd.js +0 -72
  285. package/dist/packem_shared/ScrollList-DRcr_RrN.js +0 -227
  286. package/dist/packem_shared/ScrollView-C6rdlGwU.js +0 -196
  287. package/dist/packem_shared/SearchInput-cB8zFhSg.js +0 -32
  288. package/dist/packem_shared/SelectInput-WzZSqp72.js +0 -260
  289. package/dist/packem_shared/SelectInputIndicator-DKeN6v5Z.js +0 -9
  290. package/dist/packem_shared/SelectInputItem-CxFL3spM.js +0 -8
  291. package/dist/packem_shared/ShimmerText-B2VbPUSB.js +0 -34
  292. package/dist/packem_shared/Slider-BOrNTOQe.js +0 -116
  293. package/dist/packem_shared/Spacer-DhmXyTb8.js +0 -8
  294. package/dist/packem_shared/Sparkline-BSbjPrwK.js +0 -44
  295. package/dist/packem_shared/Spinner-BcO5BCAa.js +0 -1942
  296. package/dist/packem_shared/Static-DpTd6Eed.js +0 -22
  297. package/dist/packem_shared/Static-xmD9giJj.js +0 -18
  298. package/dist/packem_shared/StaticRender-C3XWvJdC.js +0 -69
  299. package/dist/packem_shared/StatusLine-DQNUstN9.js +0 -22
  300. package/dist/packem_shared/StatusMessage-BYTL6Pl-.js +0 -14
  301. package/dist/packem_shared/Stepper-CmUPRK3z.js +0 -60
  302. package/dist/packem_shared/Stopwatch-zqLQAxXC.js +0 -21
  303. package/dist/packem_shared/StreamingText-BmuoJtGu.js +0 -38
  304. package/dist/packem_shared/Switch-DcPdy8nm.js +0 -59
  305. package/dist/packem_shared/Tab-C6r5q4hR.js +0 -7
  306. package/dist/packem_shared/Table-Bgxo87Df.js +0 -88
  307. package/dist/packem_shared/Tabs-DubuHdYV.js +0 -164
  308. package/dist/packem_shared/Tag-CCqM7Ee9.js +0 -35
  309. package/dist/packem_shared/Text-CtUwV89_.js +0 -65
  310. package/dist/packem_shared/TextInput-C9r7zT0U.js +0 -137
  311. package/dist/packem_shared/Textarea-CGmgt-Nl.js +0 -272
  312. package/dist/packem_shared/Timer-D7ZZ0_wz.js +0 -20
  313. package/dist/packem_shared/Toast-DXSCXFPY.js +0 -37
  314. package/dist/packem_shared/Tooltip-SvVjj-2k.js +0 -32
  315. package/dist/packem_shared/Transform-Cfyva2wd.js +0 -14
  316. package/dist/packem_shared/Transition-CbNfKhaj.js +0 -108
  317. package/dist/packem_shared/TreeNodeMap-CtJUvBnd.js +0 -155
  318. package/dist/packem_shared/TreeView-DGlZeSsK.js +0 -148
  319. package/dist/packem_shared/TuiApp-DtdgNRWa.js +0 -122
  320. package/dist/packem_shared/TuiContext-lXmJFd-x.js +0 -418
  321. package/dist/packem_shared/UnorderedList-D8RPaEAW.js +0 -33
  322. package/dist/packem_shared/accessibility-context-BLelHhNU.js +0 -7
  323. package/dist/packem_shared/animation-context-BcJg8Jr6.js +0 -15
  324. package/dist/packem_shared/ansi-parser-BOP8fNdT.js +0 -43
  325. package/dist/packem_shared/ansi-tokenizer-LHq2LUWA.js +0 -307
  326. package/dist/packem_shared/app-context-CP0U6H7O.js +0 -11
  327. package/dist/packem_shared/background-context-BAUaxfOb.js +0 -5
  328. package/dist/packem_shared/boxes-oi3WUbyR.js +0 -92
  329. package/dist/packem_shared/braille-BoEWoH2I.js +0 -93
  330. package/dist/packem_shared/colorize-88_Vk8cn.js +0 -48
  331. package/dist/packem_shared/comparePoints-CAAlhiMS.js +0 -287
  332. package/dist/packem_shared/controlled-scroll-view-DJXfdWMm.js +0 -286
  333. package/dist/packem_shared/createInlineLoop-Dnfm1ZSJ.js +0 -99
  334. package/dist/packem_shared/createLinkedScrollGroup-Djw4Ceo0.js +0 -44
  335. package/dist/packem_shared/createMemoryStorage-esFJ61La.js +0 -115
  336. package/dist/packem_shared/createScreen-Dh0sZlQ0.js +0 -38
  337. package/dist/packem_shared/cursor-context-JxRzlqAx.js +0 -9
  338. package/dist/packem_shared/dom-CrbpQgat.js +0 -228
  339. package/dist/packem_shared/focus-context-CWkYtgcm.js +0 -26
  340. package/dist/packem_shared/format-time-BGmnDukX.js +0 -12
  341. package/dist/packem_shared/getPathToRoot-BbvlppLC.js +0 -4
  342. package/dist/packem_shared/getScrollHeight-Cz3CDQN2.js +0 -63
  343. package/dist/packem_shared/input-utils-ViAEXa0Z.js +0 -19
  344. package/dist/packem_shared/isIntersecting-fEXHJN5R.js +0 -10
  345. package/dist/packem_shared/isOsc52Supported-G0k4sXJx.js +0 -36
  346. package/dist/packem_shared/isTerminalPaletteQuerySupported-EeiwMKbr.js +0 -93
  347. package/dist/packem_shared/kittyFlags-bNNf_9kX.js +0 -26
  348. package/dist/packem_shared/line-chart-VGU2l7pu.js +0 -139
  349. package/dist/packem_shared/measure-element-Bc6PEaIe.js +0 -405
  350. package/dist/packem_shared/measure-text-BdOhbOeh.js +0 -1256
  351. package/dist/packem_shared/measureElement-DTELRaij.js +0 -4
  352. package/dist/packem_shared/mouse-context-BUHWKEIe.js +0 -6
  353. package/dist/packem_shared/parseSgrMouse-4hpBJBsW.js +0 -1
  354. package/dist/packem_shared/processLayout-B0Coz0Ua.js +0 -2
  355. package/dist/packem_shared/reconciler-Dd7Z0A97.js +0 -696
  356. package/dist/packem_shared/reconciler-mzMwSOft.js +0 -221
  357. package/dist/packem_shared/render-Bm9Oa1sG.js +0 -2799
  358. package/dist/packem_shared/render-CjlKdg4m.js +0 -199
  359. package/dist/packem_shared/renderToString-CWYS1ZXE.js +0 -86
  360. package/dist/packem_shared/renderToString-DB3ILWFm.js +0 -62
  361. package/dist/packem_shared/renderTreeToBuffer-CDDTGyZn.js +0 -311
  362. package/dist/packem_shared/renderer-GE9OLNNM.js +0 -1437
  363. package/dist/packem_shared/setEnableStyledLineCache-D5f4favX.js +0 -2
  364. package/dist/packem_shared/squashTextNodesWithMap-iqm6OMMT.js +0 -100
  365. package/dist/packem_shared/stderr-context-Bj4Mf7v7.js +0 -17
  366. package/dist/packem_shared/stdin-context-Bq_GNJ3z.js +0 -38
  367. package/dist/packem_shared/stdout-context-CgjWeCdO.js +0 -17
  368. package/dist/packem_shared/text-width-Db-AxMea.js +0 -43
  369. package/dist/packem_shared/token-to-elements-CK4s8MJd.js +0 -249
  370. package/dist/packem_shared/treeViewTheme-BpSw9TMf.js +0 -52
  371. package/dist/packem_shared/useAnimation-DV22qxiJ.js +0 -62
  372. package/dist/packem_shared/useApp-Cbi788rV.js +0 -6
  373. package/dist/packem_shared/useBoxMetrics-_5icypir.js +0 -54
  374. package/dist/packem_shared/useClipboard-MNj6MNR-.js +0 -23
  375. package/dist/packem_shared/useColorBlindness-D_sTIhcb.js +0 -30
  376. package/dist/packem_shared/useConsoleCapture-Dvt7G1W1.js +0 -61
  377. package/dist/packem_shared/useCursor-DS6LjIgv.js +0 -19
  378. package/dist/packem_shared/useElementDimensions-CAoKitVD.js +0 -67
  379. package/dist/packem_shared/useFocus-DLoGQJd9.js +0 -37
  380. package/dist/packem_shared/useFocusManager-UeZWtnNc.js +0 -16
  381. package/dist/packem_shared/useForm-sQENbEuv.js +0 -88
  382. package/dist/packem_shared/useHotkey-D9giUX3q.js +0 -112
  383. package/dist/packem_shared/useInput-DKZbqMRc.js +0 -594
  384. package/dist/packem_shared/useInterval-CSXM8c2I.js +0 -32
  385. package/dist/packem_shared/useIsScreenReaderEnabled-BeoVqo1R.js +0 -9
  386. package/dist/packem_shared/useKeyBindings-S4fSIEAk.js +0 -66
  387. package/dist/packem_shared/useKeyChord-BmXGNuEO.js +0 -114
  388. package/dist/packem_shared/useMouseAction-C5gZ2nj7.js +0 -29
  389. package/dist/packem_shared/useMouseContext-D-rFy60Q.js +0 -12
  390. package/dist/packem_shared/useMousePosition-BHBJ-kBk.js +0 -25
  391. package/dist/packem_shared/useOnMouseClick--ZIyBOBO.js +0 -35
  392. package/dist/packem_shared/useOnMouseHover-26diuXUC.js +0 -32
  393. package/dist/packem_shared/useOnMouseState-NO_Kda_C.js +0 -13
  394. package/dist/packem_shared/usePaste-png73gvT.js +0 -35
  395. package/dist/packem_shared/useScrollAcceleration-R9LfrPVG.js +0 -73
  396. package/dist/packem_shared/useScrollInput-DfzRGQFe.js +0 -72
  397. package/dist/packem_shared/useStderr-BSWerMZ7.js +0 -6
  398. package/dist/packem_shared/useStdin-Rf0zPzVA.js +0 -7
  399. package/dist/packem_shared/useStdout-B5yRcg9N.js +0 -6
  400. package/dist/packem_shared/useStopwatch-C__Zu6hd.js +0 -33
  401. package/dist/packem_shared/useTerminalPalette-CtFG2JTq.js +0 -38
  402. package/dist/packem_shared/useTextBuffer-C8fEe9Ly.js +0 -398
  403. package/dist/packem_shared/useTextSelection-ChrYZXsn.js +0 -50
  404. package/dist/packem_shared/useTimeout-DuCqgWPX.js +0 -34
  405. package/dist/packem_shared/useTimer-DnBtbhB5.js +0 -46
  406. package/dist/packem_shared/useTreeView-mkN5Di7w.js +0 -101
  407. package/dist/packem_shared/useTreeViewState-BpS_KZ-K.js +0 -502
  408. package/dist/packem_shared/useWindowSize-D3UU41mv.js +0 -20
  409. package/dist/packem_shared/utils-BgdlrbOH.js +0 -140
  410. package/dist/packem_shared/variant-config-DSZoX5TM.js +0 -8
  411. package/dist/packem_shared/waitFor-Cv9M2jKA.js +0 -39
  412. package/dist/packem_shared/wrapOrTruncateStyledLine-49Mne3t3.js +0 -147
@@ -1,199 +0,0 @@
1
- import React from 'react';
2
- import { FocusProvider, useFocusManager } from './FocusContext-D5wFxSRz.js';
3
- import { TuiContext, useInput } from './TuiContext-lXmJFd-x.js';
4
- import { LayoutNode } from './LayoutNode-DAkKg9TE.js';
5
- import { T as TuiReconciler, s as setOnAfterCommit } from './reconciler-mzMwSOft.js';
6
- import { renderTreeToBuffer } from './renderTreeToBuffer-CDDTGyZn.js';
7
- import { TuiApp } from './TuiApp-DtdgNRWa.js';
8
- import { InputParser } from './InputParser-BlsfeY9J.js';
9
- import { terminalSize } from './Renderer-zZ5O3vxc.js';
10
- import { createInlineLoop } from './createInlineLoop-Dnfm1ZSJ.js';
11
-
12
- const _Box = (props) => React.createElement("box", props, props.children);
13
- const _Text = (props) => React.createElement("text", props, props.children);
14
- const _Spacer = () => React.createElement(_Box, { flexGrow: 1 });
15
- const TabHandler = ({ children }) => {
16
- const { disableFocus, enableFocus, focusNext, focusPrevious } = useFocusManager();
17
- useInput((_input, key) => {
18
- if (key.tab && !key.shift) {
19
- focusNext();
20
- }
21
- if (key.tab && key.shift) {
22
- focusPrevious();
23
- }
24
- if (key.escape) {
25
- disableFocus();
26
- enableFocus();
27
- }
28
- });
29
- return React.createElement(React.Fragment, null, children);
30
- };
31
- function render(element, options) {
32
- const app = new TuiApp();
33
- const input = new InputParser(process.stdin);
34
- const rootNode = new LayoutNode();
35
- const { height, width } = app.getSize();
36
- rootNode.yogaNode.setWidth(width);
37
- rootNode.yogaNode.setHeight(height);
38
- const container = TuiReconciler.createContainer(
39
- rootNode,
40
- 0,
41
- // Legacy root
42
- null,
43
- // hydrate
44
- false,
45
- null,
46
- "",
47
- // prefix
48
- (error) => console.error(error),
49
- null
50
- );
51
- const wrap = (element_) => React.createElement(
52
- TuiContext.Provider,
53
- {
54
- value: {
55
- app,
56
- input,
57
- writeStderr: (t) => app.writeStderr(t),
58
- writeStdout: (t) => app.writeStdout(t)
59
- }
60
- },
61
- React.createElement(FocusProvider, null, React.createElement(TabHandler, null, element_))
62
- );
63
- TuiReconciler.updateContainer(wrap(element), container, null, () => {
64
- });
65
- const calcLayout = (w, h) => rootNode.calculateLayout(w, h);
66
- const renderBuf = (buf, w, h) => renderTreeToBuffer(rootNode, buf, w, h);
67
- const paintNow = () => app.paintNow(calcLayout, renderBuf);
68
- let pendingCommit = false;
69
- setOnAfterCommit(() => {
70
- pendingCommit = true;
71
- });
72
- const frameMs = Math.round(1e3 / (options?.maxFps ?? 60));
73
- const renderLoop = setInterval(() => {
74
- if (pendingCommit) {
75
- pendingCommit = false;
76
- paintNow();
77
- }
78
- }, frameMs);
79
- let resolveExit;
80
- const exitPromise = new Promise((resolve) => {
81
- resolveExit = resolve;
82
- });
83
- const cleanup = () => {
84
- clearInterval(renderLoop);
85
- TuiReconciler.updateContainer(null, container, null, () => {
86
- });
87
- rootNode.destroy();
88
- app.stop();
89
- input.stop();
90
- process.off("SIGWINCH", onSigwinch);
91
- resolveExit();
92
- };
93
- input.on("exit", () => {
94
- cleanup();
95
- process.exit(0);
96
- });
97
- app.on("quit", () => {
98
- cleanup();
99
- process.exit(0);
100
- });
101
- input.start();
102
- app.start();
103
- const onSigwinch = () => {
104
- const width2 = process.stdout.columns || 80;
105
- const height2 = process.stdout.rows || 24;
106
- app.resize(width2, height2);
107
- rootNode.yogaNode.setWidth(width2);
108
- rootNode.yogaNode.setHeight(height2);
109
- app.emit("resize");
110
- paintNow();
111
- };
112
- process.on("SIGWINCH", onSigwinch);
113
- paintNow();
114
- return {
115
- // Internal access — not part of Ink's public API but useful for native renderer code
116
- app,
117
- input,
118
- /** Re-render with a new root element */
119
- rerender(newElement) {
120
- TuiReconciler.updateContainer(wrap(newElement), container, null, () => {
121
- });
122
- },
123
- /** Unmount the app and restore the terminal */
124
- unmount() {
125
- cleanup();
126
- },
127
- /** Resolves when unmount() is called or the app exits */
128
- waitUntilExit() {
129
- return exitPromise;
130
- }
131
- };
132
- }
133
- function renderInline(element, options) {
134
- const size = terminalSize();
135
- const reservedRows = options?.rows ?? 10;
136
- const { cols } = size;
137
- const rows = Math.min(reservedRows, size.rows);
138
- const input = new InputParser(process.stdin);
139
- const rootNode = new LayoutNode();
140
- rootNode.yogaNode.setWidth(cols);
141
- rootNode.yogaNode.setHeight(rows);
142
- const stdoutLines = [];
143
- const stderrLines = [];
144
- const appLike = {
145
- quit: () => loop.stop(),
146
- writeStderr: (t) => stderrLines.push(t),
147
- writeStdout: (t) => stdoutLines.push(t)
148
- };
149
- const container = TuiReconciler.createContainer(rootNode, 0, null, false, null, "", (error) => console.error(error), null);
150
- const wrap = (element_) => React.createElement(
151
- TuiContext.Provider,
152
- {
153
- value: {
154
- app: appLike,
155
- input,
156
- writeStderr: appLike.writeStderr,
157
- writeStdout: appLike.writeStdout
158
- }
159
- },
160
- React.createElement(FocusProvider, null, React.createElement(TabHandler, null, element_))
161
- );
162
- TuiReconciler.updateContainer(wrap(element), container, null, () => {
163
- });
164
- setOnAfterCommit(() => {
165
- });
166
- const loop = createInlineLoop(
167
- (buf, w, h) => {
168
- rootNode.calculateLayout(w, h);
169
- renderTreeToBuffer(rootNode, buf, w, h);
170
- },
171
- { ...options, fps: options?.maxFps ?? options?.fps ?? 60, rows }
172
- );
173
- input.on("exit", () => loop.stop());
174
- let resolveExit;
175
- const exitPromise = new Promise((r) => {
176
- resolveExit = r;
177
- });
178
- process.on("exit", () => {
179
- if (stdoutLines.length > 0) {
180
- process.stdout.write(stdoutLines.join(""));
181
- }
182
- if (stderrLines.length > 0) {
183
- process.stderr.write(stderrLines.join(""));
184
- }
185
- resolveExit();
186
- });
187
- loop.start();
188
- input.start();
189
- return {
190
- unmount() {
191
- loop.stop();
192
- },
193
- waitUntilExit() {
194
- return exitPromise;
195
- }
196
- };
197
- }
198
-
199
- export { _Box, _Spacer, _Text, render, renderInline };
@@ -1,86 +0,0 @@
1
- import { LegacyRoot } from 'react-reconciler/constants.js';
2
- import Yoga from 'yoga-layout';
3
- import { c as createNode } from './dom-CrbpQgat.js';
4
- import { r as reconcilerInstance } from './reconciler-Dd7Z0A97.js';
5
- import { r as renderer } from './renderer-GE9OLNNM.js';
6
- import { calculateScroll } from './getScrollHeight-Cz3CDQN2.js';
7
-
8
- const renderToString = (node, options) => {
9
- const columns = options?.columns ?? 80;
10
- const rootNode = createNode("ink-root");
11
- let capturedStaticOutput = "";
12
- rootNode.onComputeLayout = () => {
13
- rootNode.yogaNode.setWidth(columns);
14
- rootNode.yogaNode.calculateLayout(void 0, void 0, Yoga.DIRECTION_LTR);
15
- const walkScroll = (element) => {
16
- if (element.nodeName === "ink-box") {
17
- const overflow = element.style.overflow ?? "visible";
18
- const overflowX = element.style.overflowX ?? overflow;
19
- const overflowY = element.style.overflowY ?? overflow;
20
- if (overflowX === "scroll" || overflowY === "scroll") {
21
- calculateScroll(element);
22
- }
23
- }
24
- for (const child of element.childNodes) {
25
- if (child.nodeName !== "#text") {
26
- walkScroll(child);
27
- }
28
- }
29
- };
30
- walkScroll(rootNode);
31
- };
32
- rootNode.onImmediateRender = () => {
33
- const { staticOutput } = renderer(rootNode, false);
34
- if (staticOutput && staticOutput !== "\n") {
35
- capturedStaticOutput += staticOutput;
36
- }
37
- };
38
- let uncaughtError;
39
- const container = reconcilerInstance.createContainer(
40
- rootNode,
41
- LegacyRoot,
42
- null,
43
- false,
44
- null,
45
- "render-to-string",
46
- (error) => {
47
- uncaughtError ??= error;
48
- },
49
- () => {
50
- },
51
- () => {
52
- },
53
- () => {
54
- }
55
- );
56
- let teardownSucceeded = false;
57
- try {
58
- reconcilerInstance.updateContainerSync(node, container, null, () => {
59
- });
60
- reconcilerInstance.flushSyncWork();
61
- const { output } = renderer(rootNode, false);
62
- reconcilerInstance.updateContainerSync(null, container, null, () => {
63
- });
64
- reconcilerInstance.flushSyncWork();
65
- teardownSucceeded = true;
66
- rootNode.yogaNode.free();
67
- if (uncaughtError !== void 0) {
68
- throw uncaughtError instanceof Error ? uncaughtError : new Error(String(uncaughtError));
69
- }
70
- const normalizedStaticOutput = capturedStaticOutput.endsWith("\n") ? capturedStaticOutput.slice(0, -1) : capturedStaticOutput;
71
- if (normalizedStaticOutput && output) {
72
- return `${normalizedStaticOutput}
73
- ${output}`;
74
- }
75
- return normalizedStaticOutput || output;
76
- } finally {
77
- if (!teardownSucceeded && rootNode.yogaNode) {
78
- try {
79
- rootNode.yogaNode.freeRecursive();
80
- } catch {
81
- }
82
- }
83
- }
84
- };
85
-
86
- export { renderToString as default };
@@ -1,62 +0,0 @@
1
- import React from 'react';
2
- import { FocusProvider } from './FocusContext-D5wFxSRz.js';
3
- import { TuiContext } from './TuiContext-lXmJFd-x.js';
4
- import { LayoutNode } from './LayoutNode-DAkKg9TE.js';
5
- import { T as TuiReconciler } from './reconciler-mzMwSOft.js';
6
- import { renderTreeToBuffer } from './renderTreeToBuffer-CDDTGyZn.js';
7
- import { Cell } from './Cell-DCg1kJY-.js';
8
-
9
- function renderToString(element, options) {
10
- const cols = options?.columns ?? 80;
11
- const rows = options?.rows ?? 24;
12
- const rootNode = new LayoutNode();
13
- rootNode.yogaNode.setWidth(cols);
14
- rootNode.yogaNode.setHeight(rows);
15
- const noopContext = {
16
- app: null,
17
- input: null,
18
- writeStderr: (_t) => {
19
- },
20
- writeStdout: (_t) => {
21
- }
22
- };
23
- const wrapped = React.createElement(TuiContext.Provider, { value: noopContext }, React.createElement(FocusProvider, null, element));
24
- const container = TuiReconciler.createContainer(
25
- rootNode,
26
- 0,
27
- // LegacyRoot
28
- null,
29
- false,
30
- null,
31
- "renderToString",
32
- () => {
33
- },
34
- null
35
- );
36
- TuiReconciler.updateContainerSync(wrapped, container, null, () => {
37
- });
38
- TuiReconciler.flushSyncWork();
39
- rootNode.calculateLayout(cols, rows);
40
- const buffer = new Uint32Array(cols * rows * 2);
41
- renderTreeToBuffer(rootNode, buffer, cols, rows);
42
- const lines = [];
43
- for (let row = 0; row < rows; row++) {
44
- let line = "";
45
- for (let col = 0; col < cols; col++) {
46
- const ch = buffer[(row * cols + col) * 2];
47
- const charString = Cell.getChar(ch);
48
- line += charString === "" ? " " : charString;
49
- }
50
- lines.push(line.trimEnd());
51
- }
52
- while (lines.length > 0 && lines.at(-1) === "") {
53
- lines.pop();
54
- }
55
- TuiReconciler.updateContainerSync(null, container, null, () => {
56
- });
57
- TuiReconciler.flushSyncWork();
58
- rootNode.destroy();
59
- return lines.join("\n");
60
- }
61
-
62
- export { renderToString };
@@ -1,311 +0,0 @@
1
- import { c as cliBoxes } from './boxes-oi3WUbyR.js';
2
- import { resolveColor } from './NAMED_COLORS-DcI3erCu.js';
3
- import { a as getCodePointWidth } from './text-width-Db-AxMea.js';
4
-
5
- const CONTINUATION_CELL_CODE = 1114112;
6
- const SCROLLBAR_FULL = 9608;
7
- const SCROLLBAR_UPPER = 9600;
8
- const SCROLLBAR_LOWER = 9604;
9
- function getEffectiveBorderWidths(nodeStyle) {
10
- const base = nodeStyle?.borderStyle ? 1 : 0;
11
- return {
12
- bottom: nodeStyle?.borderBottom === false ? 0 : base,
13
- left: nodeStyle?.borderLeft === false ? 0 : base,
14
- right: nodeStyle?.borderRight === false ? 0 : base,
15
- top: nodeStyle?.borderTop === false ? 0 : base
16
- };
17
- }
18
- function getScrollContentHeight(node) {
19
- let maxBottom = 0;
20
- for (const child of node.children) {
21
- const layout = child.getLayout();
22
- const bottom = layout.top + layout.height;
23
- if (bottom > maxBottom) {
24
- maxBottom = bottom;
25
- }
26
- }
27
- const style = node._style;
28
- const paddingBottom = style?.paddingBottom ?? style?.paddingY ?? style?.padding ?? 0;
29
- return maxBottom + paddingBottom;
30
- }
31
- function paintScrollbar(node, buffer, cols, rows, absX, absY, w, h, fg, parentStyles, clip, nodeStyle) {
32
- const borders = getEffectiveBorderWidths(nodeStyle);
33
- const innerHeight = h - borders.top - borders.bottom;
34
- const scrollTop = nodeStyle.scrollTop ?? 0;
35
- const scrollHeight = getScrollContentHeight(node);
36
- const clientHeight = innerHeight;
37
- if (scrollHeight <= clientHeight || innerHeight <= 0) {
38
- return;
39
- }
40
- const halves = innerHeight * 2;
41
- const thumbHalves = Math.max(2, Math.round(clientHeight / scrollHeight * halves));
42
- const maxScroll = scrollHeight - clientHeight;
43
- const maxThumbPos = halves - thumbHalves;
44
- const thumbPos = maxScroll > 0 ? Math.round(scrollTop / maxScroll * maxThumbPos) : 0;
45
- const thumbColor = typeof nodeStyle.scrollbarThumbColor === "string" ? resolveColor(nodeStyle.scrollbarThumbColor) : fg;
46
- const scrollbarX = absX + w - 1 - borders.right;
47
- const attributeCode = parentStyles << 16 | 255 << 8 | thumbColor;
48
- for (let index = 0; index < innerHeight; index++) {
49
- const halfTop = index * 2;
50
- const halfBottom = halfTop + 1;
51
- const hasUpper = halfTop >= thumbPos && halfTop < thumbPos + thumbHalves;
52
- const hasLower = halfBottom >= thumbPos && halfBottom < thumbPos + thumbHalves;
53
- if (!hasUpper && !hasLower) {
54
- continue;
55
- }
56
- let charCode = SCROLLBAR_FULL;
57
- if (hasUpper && !hasLower) {
58
- charCode = SCROLLBAR_UPPER;
59
- } else if (!hasUpper && hasLower) {
60
- charCode = SCROLLBAR_LOWER;
61
- }
62
- writeCell(buffer, cols, rows, scrollbarX, absY + borders.top + index, charCode, attributeCode, clip);
63
- }
64
- }
65
- function paintStickyHeaders(node, buffer, cols, rows, absX, absY, _w, _h, fg, bg, parentStyles, borderJobs, clip, nodeStyle) {
66
- const borders = getEffectiveBorderWidths(nodeStyle);
67
- const scrollTop = nodeStyle.scrollTop ?? 0;
68
- const contentY = absY + borders.top;
69
- for (const child of node.children) {
70
- if (!child._style?.sticky) {
71
- continue;
72
- }
73
- const childLayout = child.getLayout();
74
- const childNaturalY = childLayout.top;
75
- if (childNaturalY >= scrollTop) {
76
- continue;
77
- }
78
- const childParent = child.parent;
79
- if (childParent && childParent !== node) {
80
- const parentLayout = childParent.getLayout();
81
- const parentBottom = parentLayout.top + parentLayout.height;
82
- if (parentBottom <= scrollTop) {
83
- continue;
84
- }
85
- }
86
- const stickyY = contentY;
87
- const childFg = child.fg === 255 ? fg : child.fg;
88
- const childBg = child.bg === 255 ? bg : child.bg;
89
- const childStyles = child.styles === 0 ? parentStyles : child.styles;
90
- paintNode(child, buffer, cols, rows, absX - childLayout.left, stickyY - childLayout.top, childFg, childBg, childStyles, borderJobs, clip);
91
- }
92
- }
93
- function renderTreeToBuffer(root, buffer, cols, rows) {
94
- for (let i = 0; i < buffer.length; i += 2) {
95
- buffer[i] = 32;
96
- buffer[i + 1] = 0 << 16 | 255 << 8 | 255;
97
- }
98
- const borderJobs = [];
99
- const rootClip = { x0: 0, x1: cols, y0: 0, y1: rows };
100
- try {
101
- paintNode(root, buffer, cols, rows, 0, 0, root.fg, root.bg, root.styles, borderJobs, rootClip);
102
- for (const job of borderJobs) {
103
- paintBorder(job.node, buffer, cols, rows, job.absX, job.absY, job.w, job.h, job.fg, job.bg, job.styles, job.clip);
104
- }
105
- } catch (error) {
106
- console.error("Renderer Error:", error);
107
- }
108
- }
109
- function writeCell(buffer, cols, rows, sx, sy, charCode, attributeCode, clip) {
110
- if (sx < clip.x0 || sx >= clip.x1 || sy < clip.y0 || sy >= clip.y1) {
111
- return;
112
- }
113
- if (sx < 0 || sx >= cols || sy < 0 || sy >= rows) {
114
- return;
115
- }
116
- const index = (sy * cols + sx) * 2;
117
- buffer[index] = charCode;
118
- buffer[index + 1] = attributeCode;
119
- }
120
- function paintBorder(node, buffer, cols, rows, absX, absY, w, h, fg, bg, styles, clip) {
121
- if (!node._style?.borderStyle) {
122
- return;
123
- }
124
- if (w <= 0 || h <= 0) {
125
- return;
126
- }
127
- const box = cliBoxes[node._style.borderStyle];
128
- const borderFg = node._style.borderColor === void 0 ? fg : resolveColor(node._style.borderColor);
129
- const borderAttribute = styles << 16 | bg << 8 | borderFg;
130
- const showTop = node._style.borderTop !== false;
131
- const showBottom = node._style.borderBottom !== false;
132
- const showLeft = node._style.borderLeft !== false;
133
- const showRight = node._style.borderRight !== false;
134
- const canShowBottom = showBottom && (h > 1 || !showTop);
135
- if (showTop) {
136
- for (let x = 0; x < w; x++) {
137
- let ch;
138
- if (w === 1) {
139
- ch = showLeft && showRight ? box.left : showLeft ? box.topLeft : showRight ? box.topRight : box.top;
140
- } else if (x === 0 && showLeft) {
141
- ch = box.topLeft;
142
- } else if (x === w - 1 && showRight) {
143
- ch = box.topRight;
144
- } else {
145
- ch = box.top;
146
- }
147
- writeCell(buffer, cols, rows, absX + x, absY, ch.codePointAt(0), borderAttribute, clip);
148
- }
149
- }
150
- if (canShowBottom) {
151
- for (let x = 0; x < w; x++) {
152
- let ch;
153
- if (w === 1) {
154
- ch = showLeft && showRight ? box.left : showLeft ? box.bottomLeft : showRight ? box.bottomRight : box.bottom;
155
- } else if (x === 0 && showLeft) {
156
- ch = box.bottomLeft;
157
- } else if (x === w - 1 && showRight) {
158
- ch = box.bottomRight;
159
- } else {
160
- ch = box.bottom;
161
- }
162
- writeCell(buffer, cols, rows, absX + x, absY + h - 1, ch.codePointAt(0), borderAttribute, clip);
163
- }
164
- }
165
- const yStart = showTop ? 1 : 0;
166
- const yEnd = canShowBottom ? h - 1 : h;
167
- for (let y = yStart; y < yEnd; y++) {
168
- if (showLeft) {
169
- writeCell(buffer, cols, rows, absX, absY + y, box.left.codePointAt(0), borderAttribute, clip);
170
- }
171
- if (showRight) {
172
- writeCell(buffer, cols, rows, absX + w - 1, absY + y, box.right.codePointAt(0), borderAttribute, clip);
173
- }
174
- }
175
- }
176
- function collectText(node) {
177
- if (node._hidden) {
178
- return "";
179
- }
180
- if (node.text !== void 0) {
181
- return node.text;
182
- }
183
- const raw = node.children.map(collectText).join("");
184
- if (typeof node.transform === "function") {
185
- return node.transform(raw, 0);
186
- }
187
- return raw;
188
- }
189
- function paintText(text, buffer, cols, rows, absX, absY, w, h, attributeCode, clip) {
190
- if (w <= 0 || h <= 0) {
191
- return;
192
- }
193
- let cursorX = 0;
194
- let cursorY = 0;
195
- for (const char of text) {
196
- if (char === "\n") {
197
- cursorX = 0;
198
- cursorY++;
199
- continue;
200
- }
201
- const charCode = char.codePointAt(0) ?? 32;
202
- const charWidth = getCodePointWidth(char);
203
- if (cursorX + charWidth > w) {
204
- cursorX = 0;
205
- cursorY++;
206
- }
207
- if (cursorY >= h) {
208
- break;
209
- }
210
- if (charWidth > w) {
211
- writeCell(buffer, cols, rows, absX + cursorX, absY + cursorY, 32, attributeCode, clip);
212
- cursorX += 1;
213
- continue;
214
- }
215
- writeCell(buffer, cols, rows, absX + cursorX, absY + cursorY, charCode, attributeCode, clip);
216
- if (charWidth === 2 && cursorX + 1 < w) {
217
- writeCell(buffer, cols, rows, absX + cursorX + 1, absY + cursorY, CONTINUATION_CELL_CODE, attributeCode, clip);
218
- }
219
- cursorX += charWidth;
220
- }
221
- }
222
- function paintNode(node, buffer, cols, rows, parentX, parentY, parentFg, parentBg, parentStyles, borderJobs, clip) {
223
- if (node._hidden) {
224
- return;
225
- }
226
- const layout = node.getLayout();
227
- const absX = Math.round(parentX + layout.left);
228
- const absY = Math.round(parentY + layout.top);
229
- const w = Math.round(layout.width);
230
- const h = Math.round(layout.height);
231
- const fg = node.fg === 255 ? parentFg : node.fg;
232
- const bg = node.bg === 255 ? parentBg : node.bg;
233
- const styles = node.styles === 0 ? parentStyles : node.styles;
234
- const nodeClip = {
235
- x0: Math.max(clip.x0, absX),
236
- x1: Math.min(clip.x1, absX + w),
237
- y0: Math.max(clip.y0, absY),
238
- y1: Math.min(clip.y1, absY + h)
239
- };
240
- if (nodeClip.x0 >= nodeClip.x1 || nodeClip.y0 >= nodeClip.y1) {
241
- return;
242
- }
243
- if (typeof node.transform === "function") {
244
- const raw = collectText(node);
245
- const transformed = node.transform(raw, 0);
246
- const attributeCode = styles << 16 | bg << 8 | fg;
247
- paintText(transformed, buffer, cols, rows, absX, absY, w, h, attributeCode, nodeClip);
248
- return;
249
- }
250
- if (node.text === void 0) {
251
- if (bg !== 255 || styles !== 0) {
252
- const attributeCode = styles << 16 | bg << 8 | fg;
253
- for (let y = 0; y < h; y++) {
254
- for (let x = 0; x < w; x++) {
255
- writeCell(buffer, cols, rows, absX + x, absY + y, 32, attributeCode, nodeClip);
256
- }
257
- }
258
- }
259
- if (node._style?.borderStyle) {
260
- borderJobs.push({ absX, absY, bg, clip: nodeClip, fg, h, node, styles, w });
261
- }
262
- } else {
263
- const attributeCode = styles << 16 | bg << 8 | fg;
264
- if (node.bg !== 255) {
265
- for (let y = 0; y < h; y++) {
266
- for (let x = 0; x < w; x++) {
267
- writeCell(buffer, cols, rows, absX + x, absY + y, 32, attributeCode, nodeClip);
268
- }
269
- }
270
- }
271
- paintText(node.text, buffer, cols, rows, absX, absY, w, h, attributeCode, nodeClip);
272
- }
273
- const nodeStyle = node._style;
274
- const overflow = nodeStyle?.overflow ?? "visible";
275
- const overflowX = nodeStyle?.overflowX ?? overflow;
276
- const overflowY = nodeStyle?.overflowY ?? overflow;
277
- const clipH = overflowX === "hidden" || overflowX === "scroll";
278
- const clipV = overflowY === "hidden" || overflowY === "scroll";
279
- let childClip = nodeClip;
280
- let scrollOffsetX = 0;
281
- let scrollOffsetY = 0;
282
- if (clipH || clipV) {
283
- const borders = getEffectiveBorderWidths(nodeStyle);
284
- childClip = {
285
- x0: clipH ? Math.max(nodeClip.x0, absX + borders.left) : nodeClip.x0,
286
- x1: clipH ? Math.min(nodeClip.x1, absX + w - borders.right) : nodeClip.x1,
287
- y0: clipV ? Math.max(nodeClip.y0, absY + borders.top) : nodeClip.y0,
288
- y1: clipV ? Math.min(nodeClip.y1, absY + h - borders.bottom) : nodeClip.y1
289
- };
290
- if (overflowY === "scroll" && typeof nodeStyle?.scrollTop === "number") {
291
- scrollOffsetY = -nodeStyle.scrollTop;
292
- }
293
- if (overflowX === "scroll" && typeof nodeStyle?.scrollLeft === "number") {
294
- scrollOffsetX = -nodeStyle.scrollLeft;
295
- }
296
- }
297
- for (const child of node.children) {
298
- if (child._style?.internalStickyAlternate) {
299
- continue;
300
- }
301
- paintNode(child, buffer, cols, rows, absX + scrollOffsetX, absY + scrollOffsetY, fg, bg, styles, borderJobs, childClip);
302
- }
303
- if ((overflowY === "scroll" || overflowX === "scroll") && nodeStyle?.scrollbar !== false) {
304
- paintScrollbar(node, buffer, cols, rows, absX, absY, w, h, fg, styles, nodeClip, nodeStyle);
305
- }
306
- if (overflowY === "scroll" && typeof nodeStyle?.scrollTop === "number") {
307
- paintStickyHeaders(node, buffer, cols, rows, absX, absY, w, h, fg, bg, styles, borderJobs, childClip, nodeStyle);
308
- }
309
- }
310
-
311
- export { renderTreeToBuffer };