@visulima/tui 1.0.0-alpha.9 → 1.0.1

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 (549) hide show
  1. package/CHANGELOG.md +650 -0
  2. package/LICENSE.md +2414 -187
  3. package/README.md +49 -4
  4. package/dist/components/accordion.d.ts +59 -0
  5. package/dist/components/accordion.js +1 -0
  6. package/dist/components/alert.d.ts +26 -0
  7. package/dist/components/alert.js +1 -0
  8. package/dist/components/animate-presence.d.ts +18 -0
  9. package/dist/components/animate-presence.js +1 -0
  10. package/dist/components/approval-prompt.d.ts +65 -0
  11. package/dist/components/approval-prompt.js +1 -0
  12. package/dist/components/area-chart.d.ts +66 -0
  13. package/dist/components/area-chart.js +1 -0
  14. package/dist/components/badge.d.ts +22 -0
  15. package/dist/components/badge.js +1 -0
  16. package/dist/components/bar-chart.d.ts +67 -0
  17. package/dist/components/bar-chart.js +1 -0
  18. package/dist/components/big-text.d.ts +81 -0
  19. package/dist/components/big-text.js +1 -0
  20. package/dist/components/blink-dot.d.ts +36 -0
  21. package/dist/components/blink-dot.js +1 -0
  22. package/dist/components/box.d.ts +62 -0
  23. package/dist/components/box.js +1 -0
  24. package/dist/components/breadcrumb.d.ts +33 -0
  25. package/dist/components/breadcrumb.js +1 -0
  26. package/dist/components/button.d.ts +45 -0
  27. package/dist/components/button.js +1 -0
  28. package/dist/components/calendar.d.ts +72 -0
  29. package/dist/components/calendar.js +1 -0
  30. package/dist/components/canvas.d.ts +44 -0
  31. package/dist/components/canvas.js +1 -0
  32. package/dist/components/card.d.ts +57 -0
  33. package/dist/components/card.js +1 -0
  34. package/dist/components/checkbox.d.ts +48 -0
  35. package/dist/components/checkbox.js +1 -0
  36. package/dist/components/code.d.ts +48 -0
  37. package/dist/components/code.js +2 -0
  38. package/dist/components/collapsible.d.ts +53 -0
  39. package/dist/components/collapsible.js +1 -0
  40. package/dist/components/command-block.d.ts +47 -0
  41. package/dist/components/command-block.js +4 -0
  42. package/dist/components/command-palette.d.ts +82 -0
  43. package/dist/components/command-palette.js +1 -0
  44. package/dist/components/confirm-dialog.d.ts +75 -0
  45. package/dist/components/confirm-dialog.js +1 -0
  46. package/dist/components/confirm-input.d.ts +38 -0
  47. package/dist/components/confirm-input.js +1 -0
  48. package/dist/components/console-overlay.d.ts +54 -0
  49. package/dist/components/console-overlay.js +1 -0
  50. package/dist/components/content-switcher.d.ts +57 -0
  51. package/dist/components/content-switcher.js +1 -0
  52. package/dist/components/controlled-scroll-view.d.ts +61 -0
  53. package/dist/components/controlled-scroll-view.js +1 -0
  54. package/dist/components/cursor.d.ts +62 -0
  55. package/dist/components/cursor.js +1 -0
  56. package/dist/components/date-picker.d.ts +65 -0
  57. package/dist/components/date-picker.js +1 -0
  58. package/dist/components/definition-list.d.ts +44 -0
  59. package/dist/components/definition-list.js +1 -0
  60. package/dist/components/dialog.d.ts +117 -0
  61. package/dist/components/dialog.js +1 -0
  62. package/dist/components/diff-view.d.ts +85 -0
  63. package/dist/components/diff-view.js +1 -0
  64. package/dist/components/divider.d.ts +49 -0
  65. package/dist/components/divider.js +1 -0
  66. package/dist/components/file-picker-entry.d.ts +104 -0
  67. package/dist/components/file-picker-entry.js +1 -0
  68. package/dist/components/form.d.ts +81 -0
  69. package/dist/components/form.js +1 -0
  70. package/dist/components/gauge.d.ts +87 -0
  71. package/dist/components/gauge.js +1 -0
  72. package/dist/components/gradient.d.ts +42 -0
  73. package/dist/components/gradient.js +1 -0
  74. package/dist/components/heading.d.ts +33 -0
  75. package/dist/components/heading.js +1 -0
  76. package/dist/components/heatmap.d.ts +62 -0
  77. package/dist/components/heatmap.js +1 -0
  78. package/dist/components/help.d.ts +52 -0
  79. package/dist/components/help.js +1 -0
  80. package/dist/components/histogram.d.ts +62 -0
  81. package/dist/components/histogram.js +1 -0
  82. package/dist/components/kbd.d.ts +31 -0
  83. package/dist/components/kbd.js +1 -0
  84. package/dist/components/line-chart.d.ts +109 -0
  85. package/dist/components/line-chart.js +1 -0
  86. package/dist/components/link.d.ts +38 -0
  87. package/dist/components/link.js +1 -0
  88. package/dist/components/loading-indicator.d.ts +29 -0
  89. package/dist/components/loading-indicator.js +1 -0
  90. package/dist/components/markdown.d.ts +40 -0
  91. package/dist/components/markdown.js +1 -0
  92. package/dist/components/masked-input.d.ts +50 -0
  93. package/dist/components/masked-input.js +1 -0
  94. package/dist/components/menu.d.ts +78 -0
  95. package/dist/components/menu.js +1 -0
  96. package/dist/components/message-bubble.d.ts +43 -0
  97. package/dist/components/message-bubble.js +1 -0
  98. package/dist/components/model-badge.d.ts +39 -0
  99. package/dist/components/model-badge.js +1 -0
  100. package/dist/components/multi-select.d.ts +65 -0
  101. package/dist/components/multi-select.js +1 -0
  102. package/dist/components/newline.d.ts +15 -0
  103. package/dist/components/newline.js +2 -0
  104. package/dist/components/operation-tree.d.ts +49 -0
  105. package/dist/components/operation-tree.js +1 -0
  106. package/dist/components/option-list.d.ts +47 -0
  107. package/dist/components/option-list.js +1 -0
  108. package/dist/components/ordered-list.d.ts +24 -0
  109. package/dist/components/ordered-list.js +1 -0
  110. package/dist/components/paginator.d.ts +69 -0
  111. package/dist/components/paginator.js +1 -0
  112. package/dist/components/paragraph.d.ts +38 -0
  113. package/dist/components/paragraph.js +1 -0
  114. package/dist/components/placeholder.d.ts +55 -0
  115. package/dist/components/placeholder.js +1 -0
  116. package/dist/components/progress-bar.d.ts +56 -0
  117. package/dist/components/progress-bar.js +1 -0
  118. package/dist/components/radio-group.d.ts +74 -0
  119. package/dist/components/radio-group.js +1 -0
  120. package/dist/components/scatter-plot.d.ts +35 -0
  121. package/dist/components/scatter-plot.js +1 -0
  122. package/dist/components/scroll-bar-box.d.ts +37 -0
  123. package/dist/components/scroll-bar-box.js +1 -0
  124. package/dist/components/scroll-bar.d.ts +25 -0
  125. package/dist/components/scroll-bar.js +1 -0
  126. package/dist/components/scroll-list.d.ts +20 -0
  127. package/dist/components/scroll-list.js +1 -0
  128. package/dist/components/scroll-view.d.ts +10 -0
  129. package/dist/components/scroll-view.js +1 -0
  130. package/dist/components/search-input.d.ts +55 -0
  131. package/dist/components/search-input.js +1 -0
  132. package/dist/components/select-input-indicator.d.ts +32 -0
  133. package/dist/components/select-input-indicator.js +1 -0
  134. package/dist/components/select-input-item.d.ts +41 -0
  135. package/dist/components/select-input-item.js +1 -0
  136. package/dist/components/select-input.d.ts +110 -0
  137. package/dist/components/select-input.js +1 -0
  138. package/dist/components/shimmer-text.d.ts +47 -0
  139. package/dist/components/shimmer-text.js +1 -0
  140. package/dist/components/slider.d.ts +103 -0
  141. package/dist/components/slider.js +1 -0
  142. package/dist/components/spacer.d.ts +8 -0
  143. package/dist/components/spacer.js +1 -0
  144. package/dist/components/sparkline.d.ts +35 -0
  145. package/dist/components/sparkline.js +1 -0
  146. package/dist/components/spinner.d.ts +17 -0
  147. package/dist/components/spinner.js +1 -0
  148. package/dist/components/static-render.d.ts +55 -0
  149. package/dist/components/static-render.js +1 -0
  150. package/dist/components/static.d.ts +29 -0
  151. package/dist/components/static.js +1 -0
  152. package/dist/components/status-line.d.ts +37 -0
  153. package/dist/components/status-line.js +1 -0
  154. package/dist/components/status-message.d.ts +21 -0
  155. package/dist/components/status-message.js +1 -0
  156. package/dist/components/stepper.d.ts +48 -0
  157. package/dist/components/stepper.js +1 -0
  158. package/dist/components/stopwatch.d.ts +49 -0
  159. package/dist/components/stopwatch.js +1 -0
  160. package/dist/components/streaming-text.d.ts +46 -0
  161. package/dist/components/streaming-text.js +1 -0
  162. package/dist/components/switch.d.ts +55 -0
  163. package/dist/components/switch.js +1 -0
  164. package/dist/components/tab.d.ts +19 -0
  165. package/dist/components/tab.js +1 -0
  166. package/dist/components/table.d.ts +119 -0
  167. package/dist/components/table.js +1 -0
  168. package/dist/components/tabs.d.ts +107 -0
  169. package/dist/components/tabs.js +1 -0
  170. package/dist/components/tag.d.ts +35 -0
  171. package/dist/components/tag.js +1 -0
  172. package/dist/components/text-input.d.ts +48 -0
  173. package/dist/components/text-input.js +1 -0
  174. package/dist/components/text.d.ts +79 -0
  175. package/dist/components/text.js +1 -0
  176. package/dist/components/textarea.d.ts +68 -0
  177. package/dist/components/textarea.js +2 -0
  178. package/dist/components/timer.d.ts +59 -0
  179. package/dist/components/timer.js +1 -0
  180. package/dist/components/toast.d.ts +49 -0
  181. package/dist/components/toast.js +1 -0
  182. package/dist/components/tooltip.d.ts +43 -0
  183. package/dist/components/tooltip.js +1 -0
  184. package/dist/components/transform.d.ts +21 -0
  185. package/dist/components/transform.js +1 -0
  186. package/dist/components/transition.d.ts +74 -0
  187. package/dist/components/transition.js +1 -0
  188. package/dist/components/tree-view-entry.d.ts +357 -0
  189. package/dist/components/tree-view-entry.js +1 -0
  190. package/dist/components/unordered-list.d.ts +30 -0
  191. package/dist/components/unordered-list.js +1 -0
  192. package/dist/core/index.d.ts +2 -2
  193. package/dist/core/index.js +1 -1
  194. package/dist/ink/hooks/use-animation.d.ts +41 -0
  195. package/dist/ink/hooks/use-animation.js +1 -0
  196. package/dist/ink/hooks/use-app.d.ts +38 -0
  197. package/dist/ink/hooks/use-app.js +1 -0
  198. package/dist/ink/hooks/use-box-metrics.d.ts +66 -0
  199. package/dist/ink/hooks/use-box-metrics.js +1 -0
  200. package/dist/ink/hooks/use-clipboard.d.ts +30 -0
  201. package/dist/ink/hooks/use-clipboard.js +1 -0
  202. package/dist/ink/hooks/use-color-blindness.d.ts +33 -0
  203. package/dist/ink/hooks/use-color-blindness.js +1 -0
  204. package/dist/ink/hooks/use-console-capture.d.ts +43 -0
  205. package/dist/ink/hooks/use-console-capture.js +1 -0
  206. package/dist/ink/hooks/use-cursor.d.ts +13 -0
  207. package/dist/ink/hooks/use-cursor.js +1 -0
  208. package/dist/ink/hooks/use-focus-manager.d.ts +57 -0
  209. package/dist/ink/hooks/use-focus-manager.js +1 -0
  210. package/dist/ink/hooks/use-focus.d.ts +34 -0
  211. package/dist/ink/hooks/use-focus.js +1 -0
  212. package/dist/ink/hooks/use-form.d.ts +68 -0
  213. package/dist/ink/hooks/use-form.js +1 -0
  214. package/dist/ink/hooks/use-hotkey.d.ts +37 -0
  215. package/dist/ink/hooks/use-hotkey.js +1 -0
  216. package/dist/ink/hooks/use-input.d.ts +149 -0
  217. package/dist/ink/hooks/use-input.js +2 -0
  218. package/dist/ink/hooks/use-interval.d.ts +25 -0
  219. package/dist/ink/hooks/use-interval.js +1 -0
  220. package/dist/ink/hooks/use-is-screen-reader-enabled.d.ts +6 -0
  221. package/dist/ink/hooks/use-is-screen-reader-enabled.js +1 -0
  222. package/dist/ink/hooks/use-key-bindings.d.ts +59 -0
  223. package/dist/ink/hooks/use-key-bindings.js +1 -0
  224. package/dist/ink/hooks/use-key-chord.d.ts +25 -0
  225. package/dist/ink/hooks/use-key-chord.js +1 -0
  226. package/dist/ink/hooks/use-linked-scroll.d.ts +49 -0
  227. package/dist/ink/hooks/use-linked-scroll.js +1 -0
  228. package/dist/ink/hooks/use-paste.d.ts +45 -0
  229. package/dist/ink/hooks/use-paste.js +1 -0
  230. package/dist/ink/hooks/use-persistent-state.d.ts +65 -0
  231. package/dist/ink/hooks/use-persistent-state.js +2 -0
  232. package/dist/ink/hooks/use-scroll-acceleration.d.ts +47 -0
  233. package/dist/ink/hooks/use-scroll-acceleration.js +1 -0
  234. package/dist/ink/hooks/use-scroll-input.d.ts +34 -0
  235. package/dist/ink/hooks/use-scroll-input.js +1 -0
  236. package/dist/ink/hooks/use-stderr.d.ts +16 -0
  237. package/dist/ink/hooks/use-stderr.js +1 -0
  238. package/dist/ink/hooks/use-stdin.d.ts +30 -0
  239. package/dist/ink/hooks/use-stdin.js +1 -0
  240. package/dist/ink/hooks/use-stdout.d.ts +16 -0
  241. package/dist/ink/hooks/use-stdout.js +1 -0
  242. package/dist/ink/hooks/use-stopwatch.d.ts +39 -0
  243. package/dist/ink/hooks/use-stopwatch.js +1 -0
  244. package/dist/ink/hooks/use-terminal-palette.d.ts +20 -0
  245. package/dist/ink/hooks/use-terminal-palette.js +1 -0
  246. package/dist/ink/hooks/use-text-buffer.d.ts +42 -0
  247. package/dist/ink/hooks/use-text-buffer.js +4 -0
  248. package/dist/ink/hooks/use-text-selection.d.ts +45 -0
  249. package/dist/ink/hooks/use-text-selection.js +1 -0
  250. package/dist/ink/hooks/use-timeout.d.ts +24 -0
  251. package/dist/ink/hooks/use-timeout.js +1 -0
  252. package/dist/ink/hooks/use-timer.d.ts +48 -0
  253. package/dist/ink/hooks/use-timer.js +1 -0
  254. package/dist/ink/hooks/use-window-size.d.ts +18 -0
  255. package/dist/ink/hooks/use-window-size.js +1 -0
  256. package/dist/ink/index.d.ts +30 -6251
  257. package/dist/ink/index.js +1 -1
  258. package/dist/ink/mouse/use-element-position.d.ts +31 -0
  259. package/dist/ink/mouse/use-element-position.js +1 -0
  260. package/dist/ink/mouse/use-mouse-action.d.ts +5 -0
  261. package/dist/ink/mouse/use-mouse-action.js +1 -0
  262. package/dist/ink/mouse/use-mouse-position.d.ts +5 -0
  263. package/dist/ink/mouse/use-mouse-position.js +1 -0
  264. package/dist/ink/mouse/use-mouse.d.ts +5 -0
  265. package/dist/ink/mouse/use-mouse.js +1 -0
  266. package/dist/ink/mouse/use-on-mouse-click.d.ts +16 -0
  267. package/dist/ink/mouse/use-on-mouse-click.js +1 -0
  268. package/dist/ink/mouse/use-on-mouse-hover.d.ts +10 -0
  269. package/dist/ink/mouse/use-on-mouse-hover.js +1 -0
  270. package/dist/ink/mouse/use-on-mouse-state.d.ts +13 -0
  271. package/dist/ink/mouse/use-on-mouse-state.js +1 -0
  272. package/dist/packem_chunks/devtools.js +1 -1
  273. package/dist/packem_shared/COLOR_BLINDNESS_COMPENSATION-Ilnoyeqc.js +1 -0
  274. package/dist/packem_shared/ControlledScrollView-Cn4byU2n.js +1 -0
  275. package/dist/packem_shared/DevTools-k6uiVzqv.js +1 -0
  276. package/dist/packem_shared/FilePicker-BLS9nOPz.js +1 -0
  277. package/dist/packem_shared/FocusContext-C2Sosxa4.js +1 -0
  278. package/dist/packem_shared/Fullscreen-BRhuBLBh.js +1 -0
  279. package/dist/packem_shared/IMECompositionBuffer-VhC9HRCv.js +1 -0
  280. package/dist/packem_shared/InputParser-CtwkCbrQ.js +2 -0
  281. package/dist/packem_shared/KEY-C--kOw41.js +1 -0
  282. package/dist/packem_shared/LayoutNode-LPYsuzBg.js +1 -0
  283. package/dist/packem_shared/MouseProvider-DUqQ3Eaa.js +1 -0
  284. package/dist/packem_shared/NAMED_COLORS-82DpREQV.js +1 -0
  285. package/dist/packem_shared/Range-BsVYNWtg.js +1 -0
  286. package/dist/packem_shared/Renderer-DsskdkUd.js +1 -0
  287. package/dist/packem_shared/ResizeObserver-BI9bDy-j.js +1 -0
  288. package/dist/packem_shared/ScrollBar-qa1IzDDv.js +1 -0
  289. package/dist/packem_shared/ScrollBarBox-DchESZWv.js +1 -0
  290. package/dist/packem_shared/ScrollList-BBAnRsrC.js +1 -0
  291. package/dist/packem_shared/ScrollView-CHAo7Epj.js +1 -0
  292. package/dist/packem_shared/Static-DSzsElz4.js +1 -0
  293. package/dist/packem_shared/TreeNodeMap-cJlYqckB.js +1 -0
  294. package/dist/packem_shared/TreeView-BsvLCsf0.js +1 -0
  295. package/dist/packem_shared/TuiApp-BPL8v1i1.js +1 -0
  296. package/dist/packem_shared/TuiContext-BNmP0lMY.js +3 -0
  297. package/dist/packem_shared/ansi-parser-DlgLtOYO.js +1 -0
  298. package/dist/packem_shared/ansi-tokenizer-BU67A126.js +1 -0
  299. package/dist/packem_shared/braille-ch3O5D7I.js +1 -0
  300. package/dist/packem_shared/buffer.d-EJkZr8uH.d.ts +39 -0
  301. package/dist/packem_shared/calculateScroll-D4Y_JR4H.js +1 -0
  302. package/dist/packem_shared/{measureElement-DA8WqFP_.js → calculateScrollbarLayout-Lf6i24c9.js} +1 -1
  303. package/dist/packem_shared/clearOsc52-BUpnQOav.js +1 -0
  304. package/dist/packem_shared/clearStringWidthCache-DKFjfJuB.js +1 -0
  305. package/dist/packem_shared/clipboard.d-D6lZTQ21.d.ts +23 -0
  306. package/dist/packem_shared/color-matrix.d-DSXLsB64.d.ts +50 -0
  307. package/dist/packem_shared/colorize-DU4YZkp3.js +1 -0
  308. package/dist/packem_shared/controlled-scroll-view-BVg7ywNW.js +1 -0
  309. package/dist/packem_shared/createInlineLoop-BT40Wpmx.js +2 -0
  310. package/dist/packem_shared/createScreen-DoYpyL0V.js +3 -0
  311. package/dist/packem_shared/cursor-helpers.d-BONB9tky.d.ts +12 -0
  312. package/dist/packem_shared/dom-rphpG0kf.js +1 -0
  313. package/dist/packem_shared/dom.d-B4kXbaVY.d.ts +449 -0
  314. package/dist/packem_shared/format-time-fjoQHMxD.js +1 -0
  315. package/dist/packem_shared/{getPathToRoot-B2tKmx3i.js → getPathToRoot-PDJeqiEH.js} +1 -1
  316. package/dist/packem_shared/input-utils-BSWCb4F_.js +1 -0
  317. package/dist/packem_shared/{input.d-Bfq7oc06.d.ts → input.d-CgxV2e8U.d.ts} +1 -1
  318. package/dist/packem_shared/isIntersecting-Bo2npvMR.js +1 -0
  319. package/dist/packem_shared/isTerminalPaletteQuerySupported-BYzmqq9-.js +1 -0
  320. package/dist/packem_shared/kittyFlags-g8ALyoCU.js +1 -0
  321. package/dist/packem_shared/line-chart-C7CUrvVs.js +1 -0
  322. package/dist/packem_shared/load-native-root-binding-DDikxNox.js +1 -0
  323. package/dist/packem_shared/measure-element-D4M9iSYp.js +1 -0
  324. package/dist/packem_shared/measure-text-B7juNq4Y.js +3 -0
  325. package/dist/packem_shared/mouse-context.d-BfL9xGk_.d.ts +30 -0
  326. package/dist/packem_shared/parseSgrMouse-bUrqPrh-.js +1 -0
  327. package/dist/packem_shared/processLayout-I83k6vXE.js +2 -0
  328. package/dist/packem_shared/reconciler-CFyBVf7l.js +1 -0
  329. package/dist/packem_shared/reconciler-ClpU7Y-V.js +1 -0
  330. package/dist/packem_shared/render-CuQecTAs.js +24 -0
  331. package/dist/packem_shared/render-DFZ8NHlG.js +1 -0
  332. package/dist/packem_shared/render.d-CBnYBDk2.d.ts +417 -0
  333. package/dist/packem_shared/renderToString-DwXFY8Qh.js +4 -0
  334. package/dist/packem_shared/renderToString-L_bpw4OQ.js +2 -0
  335. package/dist/packem_shared/renderTreeToBuffer-C8lS0lJ2.js +2 -0
  336. package/dist/packem_shared/renderer-k-xShm1P.js +17 -0
  337. package/dist/packem_shared/scroll-view.d-DtpsgHLg.d.ts +119 -0
  338. package/dist/packem_shared/selection.d-CI3_p8wg.d.ts +62 -0
  339. package/dist/packem_shared/squashTextNodesWithMap-BmUSBPfc.js +1 -0
  340. package/dist/packem_shared/stderr-context-Bvnik0hL.js +1 -0
  341. package/dist/packem_shared/stdin-context-88AhuztD.js +1 -0
  342. package/dist/packem_shared/styles.d-cMo36xQz.d.ts +396 -0
  343. package/dist/packem_shared/terminal-palette.d-D2SQjfn-.d.ts +19 -0
  344. package/dist/packem_shared/text-width-e49vlbQH.js +2 -0
  345. package/dist/packem_shared/token-to-elements-D6J6-P2A.js +1 -0
  346. package/dist/packem_shared/treeViewTheme-Dq3ekRAC.js +1 -0
  347. package/dist/packem_shared/useTreeView-D5ifGwG3.js +1 -0
  348. package/dist/packem_shared/useTreeViewState-BiTJakkh.js +1 -0
  349. package/dist/packem_shared/utils-Bup8lyK8.js +1 -0
  350. package/dist/packem_shared/variant-config.d-D5NnrrQK.d.ts +2 -0
  351. package/dist/packem_shared/waitFor-CTAki32d.js +4 -0
  352. package/dist/packem_shared/wrapOrTruncateStyledLine-46W8bTtv.js +3 -0
  353. package/dist/react/index.d.ts +2 -2
  354. package/dist/react/index.js +1 -1
  355. package/dist/testing/index.d.ts +5 -1
  356. package/dist/testing/index.js +1 -1
  357. package/index.js +65 -156
  358. package/package.json +601 -47
  359. package/dist/packem_shared/Accordion-BXsqchV-.js +0 -1
  360. package/dist/packem_shared/Alert-BhYVMHtR.js +0 -1
  361. package/dist/packem_shared/AnimatePresence-Eu7Z8KHc.js +0 -1
  362. package/dist/packem_shared/ApprovalPrompt-BSn0FT1g.js +0 -1
  363. package/dist/packem_shared/AreaChart-Chy-frI7.js +0 -1
  364. package/dist/packem_shared/Badge-B8WPyRsK.js +0 -1
  365. package/dist/packem_shared/BarChart-rpZtlMcF.js +0 -1
  366. package/dist/packem_shared/BigText-CRpwUzrt.js +0 -1
  367. package/dist/packem_shared/BlinkDot-BvnRuWP8.js +0 -1
  368. package/dist/packem_shared/Box-BwqSvWuq.js +0 -1
  369. package/dist/packem_shared/Breadcrumb-D0hClbRV.js +0 -1
  370. package/dist/packem_shared/Button-B89Yvbc6.js +0 -1
  371. package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-DqErf7XX.js +0 -1
  372. package/dist/packem_shared/Calendar-Dmflvm2S.js +0 -1
  373. package/dist/packem_shared/Canvas-CKg6WV47.js +0 -1
  374. package/dist/packem_shared/Card-B_9fXdtU.js +0 -1
  375. package/dist/packem_shared/Checkbox-BN71eCWU.js +0 -1
  376. package/dist/packem_shared/Code-HhevcyiH.js +0 -2
  377. package/dist/packem_shared/Collapsible-u6uf_FdV.js +0 -1
  378. package/dist/packem_shared/CommandBlock-B-nslpCv.js +0 -4
  379. package/dist/packem_shared/CommandPalette-CEFdaURo.js +0 -1
  380. package/dist/packem_shared/ConfirmDialog-5Jje_Xpu.js +0 -1
  381. package/dist/packem_shared/ConfirmInput-D44Mb9oo.js +0 -1
  382. package/dist/packem_shared/ConsoleOverlay-CM3APfgP.js +0 -1
  383. package/dist/packem_shared/ContentSwitcher-Dm5BkrCt.js +0 -1
  384. package/dist/packem_shared/ControlledScrollView-DI8KZOQB.js +0 -1
  385. package/dist/packem_shared/Cursor-BoLFIMol.js +0 -1
  386. package/dist/packem_shared/DatePicker-CnSrFFAE.js +0 -1
  387. package/dist/packem_shared/DefinitionList-v8RDuF_R.js +0 -1
  388. package/dist/packem_shared/DevTools-O8EbCfHa.js +0 -1
  389. package/dist/packem_shared/Dialog-CTaL8pn0.js +0 -1
  390. package/dist/packem_shared/DiffView-BUIFqUB0.js +0 -1
  391. package/dist/packem_shared/Divider-C47bKmqu.js +0 -1
  392. package/dist/packem_shared/FilePicker-CUo7R5Qb.js +0 -1
  393. package/dist/packem_shared/FocusContext-Xy0cwJpO.js +0 -1
  394. package/dist/packem_shared/FormField-af3aUpRL.js +0 -1
  395. package/dist/packem_shared/Fullscreen-CuJ8y0s0.js +0 -1
  396. package/dist/packem_shared/Gauge-Dz-usH__.js +0 -1
  397. package/dist/packem_shared/Gradient-DYNc0GZA.js +0 -1
  398. package/dist/packem_shared/Heading-mwEYza3Y.js +0 -1
  399. package/dist/packem_shared/Heatmap-ChL97U1-.js +0 -1
  400. package/dist/packem_shared/Help-Zcelyw_U.js +0 -1
  401. package/dist/packem_shared/Histogram-FIf2F83d.js +0 -1
  402. package/dist/packem_shared/IMECompositionBuffer-C89PhiOu.js +0 -1
  403. package/dist/packem_shared/InputParser-rZKjY_7Y.js +0 -2
  404. package/dist/packem_shared/KEY-Bk8B-3h_.js +0 -1
  405. package/dist/packem_shared/Kbd-DpkPp4jB.js +0 -1
  406. package/dist/packem_shared/LayoutNode-rxblE317.js +0 -1
  407. package/dist/packem_shared/LineChart-BXE_girm.js +0 -1
  408. package/dist/packem_shared/Link-i2o2EG4-.js +0 -1
  409. package/dist/packem_shared/LoadingIndicator-TC1Fjwyt.js +0 -1
  410. package/dist/packem_shared/Markdown-R1XqK63D.js +0 -1
  411. package/dist/packem_shared/MaskedInput-J01phOZs.js +0 -1
  412. package/dist/packem_shared/Menu-CfrH4ymk.js +0 -1
  413. package/dist/packem_shared/MessageBubble-BmBBU2Rm.js +0 -1
  414. package/dist/packem_shared/ModelBadge-D3wrXncu.js +0 -1
  415. package/dist/packem_shared/MouseProvider-pjza-lpc.js +0 -1
  416. package/dist/packem_shared/MultiSelect-Dqmn-bVo.js +0 -1
  417. package/dist/packem_shared/NAMED_COLORS-B9fJsYdg.js +0 -1
  418. package/dist/packem_shared/Newline-BSG4iUqp.js +0 -2
  419. package/dist/packem_shared/OperationTree-DksxjMIV.js +0 -1
  420. package/dist/packem_shared/OptionList-CNx7r9yN.js +0 -1
  421. package/dist/packem_shared/OrderedList-BeDy035w.js +0 -1
  422. package/dist/packem_shared/Paginator-B56s6bhS.js +0 -1
  423. package/dist/packem_shared/Paragraph-BqJlH0R-.js +0 -1
  424. package/dist/packem_shared/Placeholder-GMpHRGC8.js +0 -1
  425. package/dist/packem_shared/ProgressBar-Bj3fmORR.js +0 -1
  426. package/dist/packem_shared/RadioGroup-Br8BeEwS.js +0 -1
  427. package/dist/packem_shared/Renderer-DJXooAsp.js +0 -1
  428. package/dist/packem_shared/ResizeObserverEntry-Dq0dk8Kq.js +0 -1
  429. package/dist/packem_shared/ScatterPlot-OhfYco5l.js +0 -1
  430. package/dist/packem_shared/ScrollBar-Da5Y3z7N.js +0 -1
  431. package/dist/packem_shared/ScrollBarBox-Dz6F-Eat.js +0 -1
  432. package/dist/packem_shared/ScrollList-DiVGyEjv.js +0 -1
  433. package/dist/packem_shared/ScrollView-BojONotI.js +0 -1
  434. package/dist/packem_shared/SearchInput-BoPTRbhV.js +0 -1
  435. package/dist/packem_shared/SelectInput-CAJ7SCBq.js +0 -1
  436. package/dist/packem_shared/SelectInputIndicator-N1n8ULHs.js +0 -1
  437. package/dist/packem_shared/SelectInputItem-BEkbmobs.js +0 -1
  438. package/dist/packem_shared/ShimmerText-CuGQ2NDC.js +0 -1
  439. package/dist/packem_shared/Slider-Cg_tJpKa.js +0 -1
  440. package/dist/packem_shared/Spacer-eT3HOrXk.js +0 -1
  441. package/dist/packem_shared/Sparkline-T6_FPVET.js +0 -1
  442. package/dist/packem_shared/Spinner-B0-A50pu.js +0 -1
  443. package/dist/packem_shared/Static-DLynr5pn.js +0 -1
  444. package/dist/packem_shared/Static-jzLPaHJF.js +0 -1
  445. package/dist/packem_shared/StaticRender-BgD61E7x.js +0 -1
  446. package/dist/packem_shared/StatusLine-Ch4jjef1.js +0 -1
  447. package/dist/packem_shared/StatusMessage-B1qfKeMM.js +0 -1
  448. package/dist/packem_shared/Stepper-CNPAqxiU.js +0 -1
  449. package/dist/packem_shared/Stopwatch-CAx2EWwq.js +0 -1
  450. package/dist/packem_shared/StreamingText-BYOKSB2T.js +0 -1
  451. package/dist/packem_shared/Switch-DzSpKYu7.js +0 -1
  452. package/dist/packem_shared/Tab-BcXzSUdj.js +0 -1
  453. package/dist/packem_shared/Table-DJp1TLrR.js +0 -1
  454. package/dist/packem_shared/Tabs-D68z0SOt.js +0 -1
  455. package/dist/packem_shared/Tag-BvLHnYRn.js +0 -1
  456. package/dist/packem_shared/Text-mTAve9R2.js +0 -1
  457. package/dist/packem_shared/TextInput-C_gYQlnF.js +0 -1
  458. package/dist/packem_shared/Textarea-C2ET_oMb.js +0 -2
  459. package/dist/packem_shared/Timer-CI3aQX65.js +0 -1
  460. package/dist/packem_shared/Toast-Drvc8XfG.js +0 -1
  461. package/dist/packem_shared/Tooltip-C5UnQlLd.js +0 -1
  462. package/dist/packem_shared/Transform-fYmcdqRT.js +0 -1
  463. package/dist/packem_shared/Transition-CJDBKYUB.js +0 -1
  464. package/dist/packem_shared/TreeNodeMap-CspqSCpb.js +0 -1
  465. package/dist/packem_shared/TreeView-DjhacGJ5.js +0 -1
  466. package/dist/packem_shared/TuiApp-DrjI_i-R.js +0 -1
  467. package/dist/packem_shared/TuiContext-BoJvG3NN.js +0 -3
  468. package/dist/packem_shared/UnorderedList-BnfqexZs.js +0 -1
  469. package/dist/packem_shared/ansi-parser-B6uXaq65.js +0 -1
  470. package/dist/packem_shared/ansi-tokenizer-DqX9nJuk.js +0 -1
  471. package/dist/packem_shared/boxes-DyY_LXCi.js +0 -1
  472. package/dist/packem_shared/braille-BBjIoaN0.js +0 -1
  473. package/dist/packem_shared/colorize-DbTZMrJO.js +0 -1
  474. package/dist/packem_shared/comparePoints-C85EsmNz.js +0 -1
  475. package/dist/packem_shared/controlled-scroll-view-CmrAEvJk.js +0 -1
  476. package/dist/packem_shared/createInlineLoop-DRNZ7jqH.js +0 -2
  477. package/dist/packem_shared/createLinkedScrollGroup-BMTJ7rAj.js +0 -1
  478. package/dist/packem_shared/createMemoryStorage-QVZNXbWz.js +0 -2
  479. package/dist/packem_shared/createScreen-CrLrxA6t.js +0 -3
  480. package/dist/packem_shared/dom-4y__5fWB.js +0 -1
  481. package/dist/packem_shared/format-time-C7Q-hQZq.js +0 -1
  482. package/dist/packem_shared/getScrollHeight-BTEY8ewu.js +0 -1
  483. package/dist/packem_shared/input-utils-fAxzSlNh.js +0 -1
  484. package/dist/packem_shared/isIntersecting-B3KbKTmu.js +0 -1
  485. package/dist/packem_shared/isOsc52Supported-DKK7Uee6.js +0 -1
  486. package/dist/packem_shared/isTerminalPaletteQuerySupported-Dn2hFAZ_.js +0 -1
  487. package/dist/packem_shared/kittyFlags-C3rZLbcK.js +0 -1
  488. package/dist/packem_shared/line-chart-DrM8PwnI.js +0 -1
  489. package/dist/packem_shared/measure-element-DSp7YDus.js +0 -2
  490. package/dist/packem_shared/measure-text-DDjHT1jD.js +0 -3
  491. package/dist/packem_shared/parseSgrMouse-Ccj70ijb.js +0 -1
  492. package/dist/packem_shared/processLayout-DXDfFb_d.js +0 -1
  493. package/dist/packem_shared/reconciler-BuOP-TZ6.js +0 -1
  494. package/dist/packem_shared/reconciler-DSYCrIZs.js +0 -1
  495. package/dist/packem_shared/render-DDqtMAFN.js +0 -1
  496. package/dist/packem_shared/render-_r0K9K11.js +0 -28
  497. package/dist/packem_shared/render.d-CNIzVQTh.d.ts +0 -1257
  498. package/dist/packem_shared/renderToString-DeqOWRP8.js +0 -4
  499. package/dist/packem_shared/renderToString-IYYPyASm.js +0 -2
  500. package/dist/packem_shared/renderTreeToBuffer-DPkoCgP2.js +0 -2
  501. package/dist/packem_shared/renderer-D2p6av2X.js +0 -17
  502. package/dist/packem_shared/setEnableStyledLineCache-D2gZbwFM.js +0 -1
  503. package/dist/packem_shared/squashTextNodesWithMap-Cpqmc45i.js +0 -1
  504. package/dist/packem_shared/stderr-context-BzEaUICS.js +0 -1
  505. package/dist/packem_shared/stdin-context-BTaaFagk.js +0 -1
  506. package/dist/packem_shared/text-width-CZ9vPvM0.js +0 -2
  507. package/dist/packem_shared/token-to-elements-BYxT6J_Q.js +0 -1
  508. package/dist/packem_shared/treeViewTheme-1RIZyB4M.js +0 -1
  509. package/dist/packem_shared/useAnimation-B9we6ZzL.js +0 -1
  510. package/dist/packem_shared/useApp-B6fvM42d.js +0 -1
  511. package/dist/packem_shared/useBoxMetrics-D5pkIr6P.js +0 -1
  512. package/dist/packem_shared/useClipboard-CBxy0hT8.js +0 -1
  513. package/dist/packem_shared/useColorBlindness-BvWcu2Bb.js +0 -1
  514. package/dist/packem_shared/useConsoleCapture-BxiG8iLJ.js +0 -1
  515. package/dist/packem_shared/useCursor-CPu8T5Db.js +0 -1
  516. package/dist/packem_shared/useElementDimensions-qJ_WXFZ9.js +0 -1
  517. package/dist/packem_shared/useFocus-DSmziO_x.js +0 -1
  518. package/dist/packem_shared/useFocusManager-Uapn3LQo.js +0 -1
  519. package/dist/packem_shared/useForm-CzV-Oext.js +0 -1
  520. package/dist/packem_shared/useHotkey-D0dGey14.js +0 -1
  521. package/dist/packem_shared/useInput-D1_jG26Z.js +0 -2
  522. package/dist/packem_shared/useInterval-AobjZT3u.js +0 -1
  523. package/dist/packem_shared/useIsScreenReaderEnabled-DjWHh-II.js +0 -1
  524. package/dist/packem_shared/useKeyBindings-zabkEJQs.js +0 -1
  525. package/dist/packem_shared/useKeyChord-CICQIxXj.js +0 -1
  526. package/dist/packem_shared/useMouseAction-2dRfU1vE.js +0 -1
  527. package/dist/packem_shared/useMouseContext-C746G7kY.js +0 -1
  528. package/dist/packem_shared/useMousePosition-BTWfV4JK.js +0 -1
  529. package/dist/packem_shared/useOnMouseClick-nY8xLZmt.js +0 -1
  530. package/dist/packem_shared/useOnMouseHover-D3DczIol.js +0 -1
  531. package/dist/packem_shared/useOnMouseState-cRK8QvzD.js +0 -1
  532. package/dist/packem_shared/usePaste-CKKB9H-Z.js +0 -1
  533. package/dist/packem_shared/useScrollAcceleration-NrY1oVMs.js +0 -1
  534. package/dist/packem_shared/useScrollInput-Caghtn-Q.js +0 -1
  535. package/dist/packem_shared/useStderr-BDZb6InG.js +0 -1
  536. package/dist/packem_shared/useStdin-DKa4h35k.js +0 -1
  537. package/dist/packem_shared/useStdout-B-2lX4C5.js +0 -1
  538. package/dist/packem_shared/useStopwatch-DffK7iMh.js +0 -1
  539. package/dist/packem_shared/useTerminalPalette-Cv7tSduR.js +0 -1
  540. package/dist/packem_shared/useTextBuffer-DekkGLxI.js +0 -4
  541. package/dist/packem_shared/useTextSelection-CGT0GLDR.js +0 -1
  542. package/dist/packem_shared/useTimeout-7LEFYTnG.js +0 -1
  543. package/dist/packem_shared/useTimer-DyoqSyGi.js +0 -1
  544. package/dist/packem_shared/useTreeView-8UlTK6sW.js +0 -1
  545. package/dist/packem_shared/useTreeViewState-CRPCUWrb.js +0 -1
  546. package/dist/packem_shared/useWindowSize-yDZsXF8z.js +0 -1
  547. package/dist/packem_shared/utils-THUhYKG2.js +0 -1
  548. package/dist/packem_shared/waitFor-Dj5zfL5s.js +0 -4
  549. package/dist/packem_shared/wrapOrTruncateStyledLine-BZ00SM8i.js +0 -3
@@ -0,0 +1,41 @@
1
+ type Options = {
2
+ /**
3
+ * Time between ticks in milliseconds.
4
+ * @default 100
5
+ */
6
+ readonly interval?: number;
7
+ /**
8
+ * Whether the animation is running. When set to `false`, the animation stops.
9
+ * When toggled back to `true`, all values reset to `0`.
10
+ * @default true
11
+ */
12
+ readonly isActive?: boolean;
13
+ };
14
+ type AnimationResult = {
15
+ /**
16
+ * Time in milliseconds since the previous rendered tick. Accounts for throttled renders.
17
+ * Useful for physics-based or velocity-driven motion: `position += speed * delta`.
18
+ */
19
+ readonly delta: number;
20
+ /**
21
+ * Discrete counter that increments by 1 each interval.
22
+ * Useful for indexed sequences like spinner frames.
23
+ */
24
+ readonly frame: number;
25
+ /**
26
+ * Resets `frame`, `time`, and `delta` to `0` and restarts timing from the current moment.
27
+ * Useful for one-shot animations triggered by events.
28
+ */
29
+ readonly reset: () => void;
30
+ /**
31
+ * Total elapsed time in milliseconds since the animation started or was last reset.
32
+ * Useful for continuous math-based animations like sine waves: `Math.sin(time / 1000 * Math.PI * 2)`.
33
+ */
34
+ readonly time: number;
35
+ };
36
+ /**
37
+ * A React hook that drives animations. Returns a frame counter, elapsed time, frame delta, and a reset function.
38
+ * All animations share a single timer internally, so multiple animated components consolidate into one render cycle.
39
+ */
40
+ declare function useAnimation(options?: Options): AnimationResult;
41
+ export { AnimationResult, useAnimation as default, useAnimation };
@@ -0,0 +1 @@
1
+ import{useContext as S,useState as A,useRef as o,useCallback as D,useLayoutEffect as M}from"react";import{e as E}from"../../packem_shared/animation-context-DW3p-vpk.js";const p=100,F=2147483647,m={delta:0,frame:0,time:0};function R(i){const{interval:x=p,isActive:t=!0}=i??{},e=L(x),{renderThrottleMs:s,subscribe:l}=S(E),[r,I]=A(0),[C,v]=A(m),a=o(0),c=o(0),b=o({isActive:t,resetKey:r,safeInterval:e}),f=b.current,K=t&&(e!==f.safeInterval||!f.isActive||r!==f.resetKey),d=D(()=>{I(n=>n+1)},[]);return M(()=>{if(!t)return;v(m);let n=0;const{startTime:h,unsubscribe:T}=l(u=>{if(s>0&&u<a.current)return;const y=u-n,k=u-c.current;c.current=u,a.current=u+s,v({delta:k,frame:Math.floor(y/e),time:y})},e);return n=h,c.current=h,a.current=n+s,T},[e,t,l,s,r]),M(()=>{b.current={isActive:t,resetKey:r,safeInterval:e}},[t,e,r]),K?{...m,reset:d}:{...C,reset:d}}function L(i){return Number.isFinite(i)?Math.min(F,Math.max(1,i)):p}export{R as default,R as useAnimation};
@@ -0,0 +1,38 @@
1
+ import 'react';
2
+ type Props = {
3
+ /**
4
+ * Exit (unmount) the whole Ink app.
5
+ *
6
+ * - `exit()` — resolves `waitUntilExit()` with `undefined`.
7
+ * - `exit(new Error('…'))` — rejects `waitUntilExit()` with the error.
8
+ * - `exit(value)` — resolves `waitUntilExit()` with `value`.
9
+ */
10
+ readonly exit: (errorOrResult?: Error | unknown) => void;
11
+ /**
12
+ * Returns a promise that settles after pending render output is flushed to stdout.
13
+ * @example
14
+ * ```jsx
15
+ * import {useEffect} from 'react';
16
+ * import {useApp} from '@visulima/tui/hooks/use-app';
17
+
18
+ const Example = () => {
19
+ const {waitUntilRenderFlush} = useApp();
20
+
21
+ useEffect(() => {
22
+ void (async () => {
23
+ await waitUntilRenderFlush();
24
+ runNextCommand();
25
+ })();
26
+ }, [waitUntilRenderFlush]);
27
+
28
+ return …;
29
+ };
30
+ ```
31
+ */
32
+ readonly waitUntilRenderFlush: () => Promise<void>;
33
+ };
34
+ /**
35
+ * A React hook that returns app lifecycle methods like `exit()` and `waitUntilRenderFlush()`.
36
+ */
37
+ declare const useApp: () => Props;
38
+ export { type Props as AppProps, useApp as default, useApp };
@@ -0,0 +1 @@
1
+ import{useContext as t}from"react";import{t as o}from"../../packem_shared/app-context-BVpKlG1z.js";const r=()=>t(o);export{r as default,r as useApp};
@@ -0,0 +1,66 @@
1
+ import { RefObject } from 'react';
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-B4kXbaVY.js";
3
+ import 'yoga-layout';
4
+ import "../../packem_shared/cursor-helpers.d-BONB9tky.js";
5
+ import '@visulima/colorize';
6
+ import 'cli-boxes';
7
+ import "../../packem_shared/styles.d-cMo36xQz.js";
8
+ import 'type-fest';
9
+ /**
10
+ * Metrics of a box element.
11
+ *
12
+ * All positions are relative to the element's parent.
13
+ */
14
+ type BoxMetrics = {
15
+ /**
16
+ * Element height.
17
+ */
18
+ readonly height: number;
19
+ /**
20
+ * Distance from the left edge of the parent.
21
+ */
22
+ readonly left: number;
23
+ /**
24
+ * Distance from the top edge of the parent.
25
+ */
26
+ readonly top: number;
27
+ /**
28
+ * Element width.
29
+ */
30
+ readonly width: number;
31
+ };
32
+ type UseBoxMetricsResult = BoxMetrics & {
33
+ /**
34
+ * Whether the currently tracked element has been measured in the latest layout pass.
35
+ */
36
+ readonly hasMeasured: boolean;
37
+ };
38
+ /**
39
+ * A React hook that returns the current layout metrics for a tracked box element.
40
+ * It updates when layout changes (for example terminal resize, sibling/content changes, or position changes).
41
+ *
42
+ * The hook returns `{width: 0, height: 0, left: 0, top: 0}` until the first layout pass completes. It also returns zeros when the tracked ref is detached.
43
+ *
44
+ * Use `hasMeasured` to detect when the currently tracked element has been measured.
45
+ * @example
46
+ * ```tsx
47
+ import {useRef} from 'react';
48
+ import {Box} from '@visulima/tui/components/box';
49
+ import {Text} from '@visulima/tui/components/text';
50
+ import {useBoxMetrics} from '@visulima/tui/hooks/use-box-metrics';
51
+
52
+ const Example = () => {
53
+ const ref = useRef(null);
54
+ const {width, height, left, top, hasMeasured} = useBoxMetrics(ref);
55
+ return (
56
+ <Box ref={ref}>
57
+ <Text>
58
+ {hasMeasured ? `${width}x${height} at ${left},${top}` : 'Measuring...'}
59
+ </Text>
60
+ </Box>
61
+ );
62
+ };
63
+ ```
64
+ */
65
+ declare const useBoxMetrics: (ref: RefObject<DOMElement | null>) => UseBoxMetricsResult;
66
+ export { BoxMetrics, UseBoxMetricsResult, useBoxMetrics as default, useBoxMetrics };
@@ -0,0 +1 @@
1
+ import{useState as n,useCallback as h,useEffect as u,useMemo as p}from"react";import{a as l}from"../../packem_shared/dom-rphpG0kf.js";const i={height:0,left:0,top:0,width:0},d=t=>{if(t)return t.parentNode?d(t.parentNode):t.nodeName==="ink-root"?t:void 0},N=t=>{const[o,c]=n(i),[a,f]=n(!1),s=h(()=>{const e=t.current?.yogaNode?.getComputedLayout()??i;c(r=>r.width!==e.width||r.height!==e.height||r.left!==e.left||r.top!==e.top?e:r),f(!!t.current)},[t]);return u(s),u(()=>{const e=d(t.current);if(e)return l(e,s)}),p(()=>({...o,hasMeasured:a}),[o,a])};export{N as default,N as useBoxMetrics};
@@ -0,0 +1,30 @@
1
+ import { C as ClipboardTarget } from "../../packem_shared/clipboard.d-D6lZTQ21.js";
2
+ import 'node:stream';
3
+ type UseClipboardOptions = {
4
+ /**
5
+ * The clipboard target to write to.
6
+ * @default "c"
7
+ */
8
+ readonly target?: ClipboardTarget;
9
+ };
10
+ type UseClipboardResult = {
11
+ /**
12
+ * Copy text to the system clipboard.
13
+ * No-op if the terminal does not support OSC 52.
14
+ */
15
+ readonly copy: (text: string) => void;
16
+ /**
17
+ * Whether the current terminal supports OSC 52 clipboard operations.
18
+ */
19
+ readonly isSupported: boolean;
20
+ };
21
+ /**
22
+ * Hook that provides clipboard write access via OSC 52.
23
+ *
24
+ * ```tsx
25
+ * const { copy, isSupported } = useClipboard();
26
+ * copy("Hello, clipboard!");
27
+ * ```
28
+ */
29
+ declare const useClipboard: (options?: UseClipboardOptions) => UseClipboardResult;
30
+ export { UseClipboardOptions, UseClipboardResult, useClipboard as default, useClipboard };
@@ -0,0 +1 @@
1
+ import{useMemo as e,useCallback as a}from"react";import{isOsc52Supported as c,writeOsc52 as i}from"../../packem_shared/clearOsc52-BUpnQOav.js";import m from"./use-stdout.js";const n=(p={})=>{const{target:r="c"}=p,{stdout:o}=m(),t=e(()=>c(),[]),s=a(u=>{!t||!o||i(o,u,r)},[t,o,r]);return e(()=>({copy:s,isSupported:t}),[s,t])};export{n as default,n as useClipboard};
@@ -0,0 +1,33 @@
1
+ import { C as ColorBlindnessType, a as ColorMatrix } from "../../packem_shared/color-matrix.d-DSXLsB64.js";
2
+ type UseColorBlindnessOptions = {
3
+ /**
4
+ * Use compensation mode (shift colors to distinguishable range)
5
+ * instead of simulation mode (show how colors appear to affected users).
6
+ * Not available for achromatopsia.
7
+ * @default false
8
+ */
9
+ readonly compensate?: boolean;
10
+ /**
11
+ * Type of color vision deficiency to simulate or compensate for.
12
+ * @default "none"
13
+ */
14
+ readonly mode?: ColorBlindnessType | "none";
15
+ };
16
+ type UseColorBlindnessResult = {
17
+ /** Whether a transform is active (mode is not "none"). */
18
+ readonly isActive: boolean;
19
+ /** The active color matrix. */
20
+ readonly matrix: ColorMatrix;
21
+ /** Transform a hex color string through the active matrix. */
22
+ readonly transformColor: (hex: string) => string;
23
+ };
24
+ /**
25
+ * Hook for color blindness simulation and compensation.
26
+ *
27
+ * ```tsx
28
+ * const { transformColor } = useColorBlindness({ mode: "deuteranopia" });
29
+ * &lt;Text color={transformColor("#ff0000")}>This text&lt;/Text>
30
+ * ```
31
+ */
32
+ declare const useColorBlindness: (options?: UseColorBlindnessOptions) => UseColorBlindnessResult;
33
+ export { UseColorBlindnessOptions, UseColorBlindnessResult, useColorBlindness as default, useColorBlindness };
@@ -0,0 +1 @@
1
+ import{useMemo as a,useCallback as i}from"react";import{IDENTITY_MATRIX as l,COLOR_BLINDNESS_COMPENSATION as I,COLOR_BLINDNESS_SIMULATION as N,transformHexColor as C}from"../../packem_shared/COLOR_BLINDNESS_COMPENSATION-Ilnoyeqc.js";const f=(m={})=>{const{compensate:n=!1,mode:o="none"}=m,e=a(()=>o==="none"?l:n&&o!=="achromatopsia"?I[o]:N[o],[o,n]),r=o!=="none",s=i(t=>r?C(t,e):t,[r,e]);return a(()=>({isActive:r,matrix:e,transformColor:s}),[r,e,s])};export{f as default,f as useColorBlindness};
@@ -0,0 +1,43 @@
1
+ type ConsoleLevel = "debug" | "error" | "info" | "log" | "warn";
2
+ type ConsoleEntry = {
3
+ readonly id: number;
4
+ readonly level: ConsoleLevel;
5
+ readonly message: string;
6
+ readonly timestamp: number;
7
+ };
8
+ type UseConsoleCaptureOptions = {
9
+ /**
10
+ * Which console levels to capture.
11
+ * @default ["log", "info", "warn", "error", "debug"]
12
+ */
13
+ readonly filter?: ReadonlyArray<ConsoleLevel>;
14
+ /**
15
+ * Enable or disable capture.
16
+ * @default true
17
+ */
18
+ readonly isActive?: boolean;
19
+ /**
20
+ * Maximum number of entries to keep in the buffer.
21
+ * @default 200
22
+ */
23
+ readonly maxEntries?: number;
24
+ };
25
+ type UseConsoleCaptureResult = {
26
+ /** Clear all captured entries. */
27
+ readonly clear: () => void;
28
+ /** Captured console entries (newest last). */
29
+ readonly entries: ReadonlyArray<ConsoleEntry>;
30
+ };
31
+ /**
32
+ * Hook that captures console output into a React state buffer.
33
+ *
34
+ * **Note:** Only one active `useConsoleCapture` instance should exist at a time.
35
+ * The `ConsoleOverlay` component uses this hook internally — do not use both
36
+ * simultaneously unless the hook instance has `isActive: false`.
37
+ *
38
+ * ```tsx
39
+ * const { entries, clear } = useConsoleCapture({ maxEntries: 100 });
40
+ * ```
41
+ */
42
+ declare const useConsoleCapture: (options?: UseConsoleCaptureOptions) => UseConsoleCaptureResult;
43
+ export { ConsoleEntry, ConsoleLevel, UseConsoleCaptureOptions, UseConsoleCaptureResult, useConsoleCapture as default, useConsoleCapture };
@@ -0,0 +1 @@
1
+ import{useState as w,useRef as x,useMemo as g,useEffect as A,useCallback as C}from"react";const c=["log","info","warn","error","debug"],b=(p={})=>{const{filter:n=c,isActive:a=!0,maxEntries:s=200}=p,[i,u]=w([]),y=x(0),d=Array.isArray(n)?n.toSorted().join(","):"",l=g(()=>n,[d]);A(()=>{if(!a)return;const r={},S=new Set(l);for(const e of c)S.has(e)&&(r[e]=console[e],console[e]=(...m)=>{r[e]?.apply(console,m);const h=m.map(t=>{if(typeof t=="string")return t;try{return JSON.stringify(t)}catch{return String(t)}}).join(" ");u(t=>{const v={id:++y.current,level:e,message:h,timestamp:Date.now()},o=[...t,v];return o.length>s?o.slice(-s):o})});return()=>{for(const e of c)r[e]&&(console[e]=r[e])}},[a,s,l]);const f=C(()=>{u([])},[]);return g(()=>({clear:f,entries:i}),[f,i])};export{b as default,b as useConsoleCapture};
@@ -0,0 +1,13 @@
1
+ import 'node:stream';
2
+ import { a as CursorPosition } from "../../packem_shared/cursor-helpers.d-BONB9tky.js";
3
+ /**
4
+ * A React hook that returns methods to control the terminal cursor position.
5
+ *
6
+ * Setting a cursor position makes the cursor visible at the specified coordinates (relative to the Ink output origin). This is useful for IME (Input Method Editor) support, where the composing character is displayed at the cursor location.
7
+ *
8
+ * Pass `undefined` to hide the cursor.
9
+ */
10
+ declare const useCursor: () => {
11
+ setCursorPosition: (position: CursorPosition | undefined) => void;
12
+ };
13
+ export { useCursor as default, useCursor };
@@ -0,0 +1 @@
1
+ import{useContext as e,useRef as u,useCallback as i,useInsertionEffect as n}from"react";import{o as c}from"../../packem_shared/cursor-context-CFviBqPX.js";const a=()=>{const o=e(c),r=u(void 0),s=i(t=>{r.current=t},[]);return n(()=>(o.setCursorPosition(r.current),()=>{o.setCursorPosition(void 0)})),{setCursorPosition:s}};export{a as default,a as useCursor};
@@ -0,0 +1,57 @@
1
+ import 'react';
2
+ type Props = {
3
+ readonly activate: (id: string) => void;
4
+ readonly activeId?: string;
5
+ readonly add: (id: string, options: {
6
+ autoFocus: boolean;
7
+ }) => void;
8
+ readonly deactivate: (id: string) => void;
9
+ readonly disableFocus: () => void;
10
+ readonly enableFocus: () => void;
11
+ readonly focus: (id: string) => void;
12
+ readonly focusNext: () => void;
13
+ readonly focusPrevious: () => void;
14
+ readonly remove: (id: string) => void;
15
+ };
16
+ type Output = {
17
+ /**
18
+ * The ID of the currently focused component, or `undefined` if no component is focused.
19
+ * @example
20
+ * ```tsx
21
+ * import {Text} from '@visulima/tui/components/text';
22
+ * import {useFocusManager} from '@visulima/tui/hooks/use-focus-manager';
23
+ *
24
+ * const Example = () => {
25
+ * const {activeId} = useFocusManager();
26
+ *
27
+ * return <Text>Focused: {activeId ?? 'none'}</Text>;
28
+ * };
29
+ * ```
30
+ */
31
+ activeId: Props["activeId"];
32
+ /**
33
+ * Disable focus management for all components. The currently active component (if there's one) will lose its focus.
34
+ */
35
+ disableFocus: Props["disableFocus"];
36
+ /**
37
+ * Enable focus management for all components.
38
+ */
39
+ enableFocus: Props["enableFocus"];
40
+ /**
41
+ * Switch focus to the element with provided `id`. If there's no element with that `id`, focus is not changed.
42
+ */
43
+ focus: Props["focus"];
44
+ /**
45
+ * Switch focus to the next focusable component. If there's no active component right now, focus will be given to the first focusable component. If the active component is the last in the list of focusable components, focus will be switched to the first focusable component.
46
+ */
47
+ focusNext: Props["focusNext"];
48
+ /**
49
+ * Switch focus to the previous focusable component. If there's no active component right now, focus will be given to the first focusable component. If the active component is the first in the list of focusable components, focus will be switched to the last focusable component.
50
+ */
51
+ focusPrevious: Props["focusPrevious"];
52
+ };
53
+ /**
54
+ * A React hook that returns methods to enable or disable focus management for all components or manually switch focus to the next or previous components.
55
+ */
56
+ declare const useFocusManager: () => Output;
57
+ export { useFocusManager as default, useFocusManager };
@@ -0,0 +1 @@
1
+ import{useContext as s}from"react";import{o as e}from"../../packem_shared/focus-context-CsT69klR.js";const t=()=>{const o=s(e);return{activeId:o.activeId,disableFocus:o.disableFocus,enableFocus:o.enableFocus,focus:o.focus,focusNext:o.focusNext,focusPrevious:o.focusPrevious}};export{t as default,t as useFocusManager};
@@ -0,0 +1,34 @@
1
+ type Input = {
2
+ /**
3
+ * Auto-focus this component if there's no active (focused) component right now.
4
+ */
5
+ autoFocus?: boolean;
6
+ /**
7
+ * Assign an ID to this component, so it can be programmatically focused with `focus(id)`.
8
+ */
9
+ id?: string;
10
+ /**
11
+ * Enable or disable this component's focus, while still maintaining its position in the list of focusable components.
12
+ */
13
+ isActive?: boolean;
14
+ };
15
+ type Output = {
16
+ /**
17
+ * Allows focusing a specific element with the provided `id`.
18
+ */
19
+ focus: (id: string) => void;
20
+ /**
21
+ * Determines whether this component is focused.
22
+ */
23
+ isFocused: boolean;
24
+ };
25
+ /**
26
+ * A React hook that returns focus state and focus controls for the current component.
27
+ * A component that uses the `useFocus` hook becomes "focusable" to Ink, so when the user presses &lt;kbd>Tab&lt;/kbd>, Ink will switch focus to this component. If there are multiple components that execute the `useFocus` hook, focus will be given to them in the order in which these components are rendered.
28
+ */
29
+ declare const useFocus: ({
30
+ autoFocus,
31
+ id: customId,
32
+ isActive
33
+ }?: Input) => Output;
34
+ export { useFocus as default, useFocus };
@@ -0,0 +1 @@
1
+ import{useContext as p,useMemo as l,useEffect as t}from"react";import{o as v}from"../../packem_shared/focus-context-CsT69klR.js";import F from"./use-stdin.js";const R=({autoFocus:s=!1,id:a,isActive:o=!0}={})=>{const{isRawModeSupported:r,setRawMode:u}=F(),{activate:c,activeId:i,add:d,deactivate:f,focus:m,remove:n}=p(v),e=l(()=>a??Math.random().toString().slice(2,7),[a]);return t(()=>(d(e,{autoFocus:s}),()=>{n(e)}),[e,s]),t(()=>{o?c(e):f(e)},[o,e]),t(()=>{if(!(!r||!o))return u(!0),()=>{u(!1)}},[o]),{focus:m,isFocused:!!e&&i===e}};export{R as default,R as useFocus};
@@ -0,0 +1,68 @@
1
+ type ValidationResult = string | undefined;
2
+ type FieldValidator<V> = (value: V, values: Readonly<Record<string, unknown>>) => ValidationResult;
3
+ type FieldConfig<V = unknown> = {
4
+ /**
5
+ * Initial value.
6
+ */
7
+ readonly initialValue: V;
8
+ /**
9
+ * Optional validator. Return a string to indicate an error; return
10
+ * `undefined` for valid.
11
+ */
12
+ readonly validate?: FieldValidator<V>;
13
+ };
14
+ type FormSchema = Readonly<Record<string, FieldConfig<never>>>;
15
+ type FormValues<S extends Readonly<Record<string, FieldConfig>>> = { [K in keyof S]: S[K] extends FieldConfig<infer V> ? V : never };
16
+ type UseFormOptions<S extends Readonly<Record<string, FieldConfig>>> = {
17
+ /**
18
+ * Field declarations.
19
+ */
20
+ readonly fields: S;
21
+ /**
22
+ * Called on submit if all fields validate.
23
+ */
24
+ readonly onSubmit?: (values: FormValues<S>) => void | Promise<void>;
25
+ };
26
+ type UseFormResult<S extends Readonly<Record<string, FieldConfig>>> = {
27
+ /**
28
+ * Map of fieldName -> validation error (if any).
29
+ */
30
+ readonly errors: Readonly<Partial<Record<keyof S, string>>>;
31
+ /**
32
+ * True while the last `submit()` is in-flight.
33
+ */
34
+ readonly isSubmitting: boolean;
35
+ /**
36
+ * Reset all fields back to their initial values and clear errors / touched.
37
+ */
38
+ readonly reset: () => void;
39
+ /**
40
+ * Mark a field as touched. Useful on blur.
41
+ */
42
+ readonly setTouched: <K extends keyof S>(name: K, touched?: boolean) => void;
43
+ /**
44
+ * Update a single field.
45
+ */
46
+ readonly setValue: <K extends keyof S>(name: K, value: FormValues<S>[K]) => void;
47
+ /**
48
+ * Trigger validation and call the `onSubmit` option. Returns true if
49
+ * submission succeeded (all fields valid).
50
+ */
51
+ readonly submit: () => Promise<boolean>;
52
+ /**
53
+ * Map of fieldName -> boolean. Field is considered touched after the
54
+ * first `setTouched(name)` or `submit()` invocation.
55
+ */
56
+ readonly touched: Readonly<Partial<Record<keyof S, boolean>>>;
57
+ /**
58
+ * Current values.
59
+ */
60
+ readonly values: FormValues<S>;
61
+ };
62
+ /**
63
+ * Minimal headless form state machine. Tracks values, touched state, errors,
64
+ * and submission in-flight. Pair with `&lt;Form />` for default layout, or wire
65
+ * up your own inputs directly.
66
+ */
67
+ declare const useForm: <S extends Readonly<Record<string, FieldConfig>>>(options: UseFormOptions<S>) => UseFormResult<S>;
68
+ export { FieldConfig, FieldValidator, FormSchema, FormValues, UseFormOptions, UseFormResult, ValidationResult, useForm as default, useForm };
@@ -0,0 +1 @@
1
+ import{useMemo as x,useState as f,useRef as C,useCallback as c}from"react";const F=a=>{const r={};for(const u of Object.keys(a))r[u]=a[u].initialValue;return r},K=a=>{const{fields:r,onSubmit:u}=a,l=x(()=>F(r),[r]),[d,m]=f(l),[g,b]=f({}),[h,y]=f({}),[j,k]=f(!1),n=C(d);n.current=d;const i=c((e,s,t=n.current)=>r[e]?.validate?.(s,t),[r]),p=c((e,s)=>{const t={...n.current,[e]:s};n.current=t,m(t);const o=i(e,s,t);b(v=>{if(o===void 0){const S={...v};return delete S[e],S}return{...v,[e]:o}})},[i]),O=c((e,s=!0)=>{y(t=>({...t,[e]:s}))},[]),V=c(()=>{m(l),b({}),y({})},[l]),w=c(async()=>{const e={},s={};for(const t of Object.keys(r)){s[t]=!0;const o=i(t,n.current[t]);o!==void 0&&(e[t]=o)}if(b(e),y(s),Object.keys(e).length>0)return!1;try{return k(!0),await u?.(n.current),!0}finally{k(!1)}},[r,i,u]);return{errors:g,isSubmitting:j,reset:V,setTouched:O,setValue:p,submit:w,touched:h,values:d}};export{K as default,K as useForm};
@@ -0,0 +1,37 @@
1
+ import { Key } from "./use-input.js";
2
+ type HotkeyDescriptor = {
3
+ /**
4
+ * Whether Ctrl must be held.
5
+ */
6
+ readonly ctrl?: boolean;
7
+ /**
8
+ * Character(s) to match after modifiers, e.g. `"s"`, `"?"`, `"k"`.
9
+ * Ignored if `name` is set.
10
+ */
11
+ readonly input?: string;
12
+ /**
13
+ * Whether Meta must be held.
14
+ */
15
+ readonly meta?: boolean;
16
+ /**
17
+ * Named special key, e.g. `"escape"`, `"return"`, `"tab"`, `"upArrow"`.
18
+ */
19
+ readonly name?: keyof Key;
20
+ /**
21
+ * Whether Shift must be held.
22
+ */
23
+ readonly shift?: boolean;
24
+ };
25
+ type UseHotkeyOptions = {
26
+ /**
27
+ * Disable the binding while keeping the component rendered.
28
+ * @default true
29
+ */
30
+ readonly isActive?: boolean;
31
+ };
32
+ /**
33
+ * Bind a keyboard shortcut to a callback. Accepts either a short string
34
+ * (`"ctrl+s"`, `"?"`, `"escape"`) or a structured descriptor.
35
+ */
36
+ declare const useHotkey: (shortcut: HotkeyDescriptor | string, callback: () => void, options?: UseHotkeyOptions) => void;
37
+ export { HotkeyDescriptor, UseHotkeyOptions, useHotkey as default, useHotkey };
@@ -0,0 +1 @@
1
+ import{useCallback as c}from"react";import n from"./use-input.js";const i=new Set(["backspace","delete","downArrow","end","escape","home","leftArrow","pageDown","pageUp","return","rightArrow","tab","upArrow"]),l=r=>{const t=r.split("+").map(a=>a.trim()).filter(a=>a.length>0),e={};for(const a of t){const s=a.toLowerCase();switch(s){case"alt":case"cmd":case"meta":{e.meta=!0;break}case"control":case"ctrl":{e.ctrl=!0;break}case"shift":{e.shift=!0;break}default:if(i.has(s))e.name=s;else switch(s){case"down":{e.name="downArrow";break}case"enter":{e.name="return";break}case"esc":{e.name="escape";break}case"left":{e.name="leftArrow";break}case"right":{e.name="rightArrow";break}case"up":{e.name="upArrow";break}default:e.input=a}}}return e},m=(r,t,e)=>r.ctrl!==void 0&&r.ctrl!==e.ctrl||r.shift!==void 0&&r.shift!==e.shift||r.meta!==void 0&&r.meta!==e.meta?!1:r.name!==void 0?!!e[r.name]:r.input!==void 0?t===r.input:!1,p=(r,t,e)=>{const a=typeof r=="string"?l(r):r;n(c((s,o)=>{m(a,s,o)&&t()},[r,t]),{isActive:e?.isActive??!0})};export{p as default,p as useHotkey};
@@ -0,0 +1,149 @@
1
+ /**
2
+ * Handy information about a key that was pressed.
3
+ */
4
+ type Key = {
5
+ /**
6
+ * Backspace key was pressed.
7
+ */
8
+ backspace: boolean;
9
+ /**
10
+ * Caps Lock is active.
11
+ *
12
+ * Only available with kitty keyboard protocol.
13
+ */
14
+ capsLock: boolean;
15
+ /**
16
+ * Ctrl key was pressed.
17
+ */
18
+ ctrl: boolean;
19
+ /**
20
+ * Delete key was pressed.
21
+ */
22
+ delete: boolean;
23
+ /**
24
+ * Down arrow key was pressed.
25
+ */
26
+ downArrow: boolean;
27
+ /**
28
+ * End key was pressed.
29
+ */
30
+ end: boolean;
31
+ /**
32
+ * Escape key was pressed.
33
+ */
34
+ escape: boolean;
35
+ /**
36
+ * Event type for key events.
37
+ *
38
+ * Only available with kitty keyboard protocol.
39
+ */
40
+ eventType?: "press" | "repeat" | "release";
41
+ /**
42
+ * Home key was pressed.
43
+ */
44
+ home: boolean;
45
+ /**
46
+ * Hyper key was pressed.
47
+ *
48
+ * Only available with kitty keyboard protocol.
49
+ */
50
+ hyper: boolean;
51
+ /**
52
+ * Left arrow key was pressed.
53
+ */
54
+ leftArrow: boolean;
55
+ /**
56
+ * [Meta key](https://en.wikipedia.org/wiki/Meta_key) was pressed.
57
+ */
58
+ meta: boolean;
59
+ /**
60
+ * Num Lock is active.
61
+ *
62
+ * Only available with kitty keyboard protocol.
63
+ */
64
+ numLock: boolean;
65
+ /**
66
+ * Page Down key was pressed.
67
+ */
68
+ pageDown: boolean;
69
+ /**
70
+ * Page Up key was pressed.
71
+ */
72
+ pageUp: boolean;
73
+ /**
74
+ * Return (Enter) key was pressed.
75
+ */
76
+ return: boolean;
77
+ /**
78
+ * Right arrow key was pressed.
79
+ */
80
+ rightArrow: boolean;
81
+ /**
82
+ * Shift key was pressed.
83
+ */
84
+ shift: boolean;
85
+ /**
86
+ * Super key (Cmd on Mac, Win on Windows) was pressed.
87
+ *
88
+ * Only available with kitty keyboard protocol.
89
+ */
90
+ super: boolean;
91
+ /**
92
+ * Tab key was pressed.
93
+ */
94
+ tab: boolean;
95
+ /**
96
+ * Up arrow key was pressed.
97
+ */
98
+ upArrow: boolean;
99
+ };
100
+ type Handler = (input: string, key: Key) => void;
101
+ type Options = {
102
+ /**
103
+ * Enable IME (Input Method Editor) composition buffering for Vietnamese, Chinese,
104
+ * Japanese, Korean, and other non-ASCII input methods.
105
+ * @default true
106
+ */
107
+ imeEnabled?: boolean;
108
+ /**
109
+ * Timeout in milliseconds to wait before flushing IME composition buffer.
110
+ * @default 50
111
+ */
112
+ imeTimeout?: number;
113
+ /**
114
+ * Enable or disable capturing of user input. Useful when there are multiple `useInput` hooks used at once to avoid handling the same input several times.
115
+ * @default true
116
+ */
117
+ isActive?: boolean;
118
+ };
119
+ /**
120
+ * A React hook that returns `void` and handles user input.
121
+ * It's a more convenient alternative to using `StdinContext` and listening for
122
+ * `data` events. The callback you pass to `useInput` is called for typed
123
+ * characters and key events.
124
+ *
125
+ * Bracketed paste payloads belong to `usePaste`. If no `usePaste` handler is
126
+ * active, Ink still forwards bracketed paste text to `useInput` for backward
127
+ * compatibility, but that fallback is deprecated and will be removed in the next
128
+ * major version.
129
+ *
130
+ * ```
131
+ * import {useInput} from '@visulima/tui/hooks/use-input';
132
+ *
133
+ * const UserInput = () => {
134
+ * useInput((input, key) => {
135
+ * if (input === 'q') {
136
+ * // Exit program
137
+ * }
138
+ *
139
+ * if (key.leftArrow) {
140
+ * // Left arrow key pressed
141
+ * }
142
+ * });
143
+ *
144
+ * return …
145
+ * };
146
+ * ```
147
+ */
148
+ declare const useInput: (inputHandler: Handler, options?: Options) => void;
149
+ export { Key, useInput as default, useInput };