@visulima/tui 0.0.1 → 1.0.0-alpha.2

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 (338) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/LICENSE.md +303 -0
  3. package/README.md +173 -29
  4. package/dist/core/app.d.ts +50 -0
  5. package/dist/core/cell.d.ts +33 -0
  6. package/dist/core/index.d.ts +5 -0
  7. package/dist/core/index.js +5 -0
  8. package/dist/core/inline.d.ts +22 -0
  9. package/dist/core/input.d.ts +18 -0
  10. package/dist/core/native-binding.d.ts +22 -0
  11. package/dist/ink/ansi-to-cell.d.ts +5 -0
  12. package/dist/ink/ansi-tokenizer.d.ts +38 -0
  13. package/dist/ink/clipboard.d.ts +29 -0
  14. package/dist/ink/color-matrix.d.ts +49 -0
  15. package/dist/ink/color-utils.d.ts +30 -0
  16. package/dist/ink/colorize.d.ts +4 -0
  17. package/dist/ink/components/AccessibilityContext.d.ts +4 -0
  18. package/dist/ink/components/Alert.d.ts +30 -0
  19. package/dist/ink/components/AnimationContext.d.ts +10 -0
  20. package/dist/ink/components/App.d.ts +19 -0
  21. package/dist/ink/components/AppContext.d.ts +38 -0
  22. package/dist/ink/components/BackgroundContext.d.ts +5 -0
  23. package/dist/ink/components/Badge.d.ts +27 -0
  24. package/dist/ink/components/BigText.d.ts +71 -0
  25. package/dist/ink/components/Box.d.ts +58 -0
  26. package/dist/ink/components/Code.d.ts +46 -0
  27. package/dist/ink/components/ConfirmInput.d.ts +40 -0
  28. package/dist/ink/components/ConsoleOverlay.d.ts +52 -0
  29. package/dist/ink/components/Cursor.d.ts +43 -0
  30. package/dist/ink/components/CursorContext.d.ts +12 -0
  31. package/dist/ink/components/Dialog.d.ts +93 -0
  32. package/dist/ink/components/DiffView.d.ts +71 -0
  33. package/dist/ink/components/ErrorBoundary.d.ts +17 -0
  34. package/dist/ink/components/ErrorOverview.d.ts +6 -0
  35. package/dist/ink/components/FocusContext.d.ts +17 -0
  36. package/dist/ink/components/Gradient.d.ts +38 -0
  37. package/dist/ink/components/Help.d.ts +49 -0
  38. package/dist/ink/components/Link.d.ts +34 -0
  39. package/dist/ink/components/Markdown.d.ts +34 -0
  40. package/dist/ink/components/MultiSelect.d.ts +63 -0
  41. package/dist/ink/components/Newline.d.ts +12 -0
  42. package/dist/ink/components/OrderedList.d.ts +30 -0
  43. package/dist/ink/components/Paginator.d.ts +75 -0
  44. package/dist/ink/components/ProgressBar.d.ts +51 -0
  45. package/dist/ink/components/SelectInput.d.ts +96 -0
  46. package/dist/ink/components/SelectInputIndicator.d.ts +36 -0
  47. package/dist/ink/components/SelectInputItem.d.ts +43 -0
  48. package/dist/ink/components/Slider.d.ts +92 -0
  49. package/dist/ink/components/Spacer.d.ts +7 -0
  50. package/dist/ink/components/Spinner.d.ts +42 -0
  51. package/dist/ink/components/Static.d.ts +24 -0
  52. package/dist/ink/components/StaticRender.d.ts +28 -0
  53. package/dist/ink/components/StatusMessage.d.ts +26 -0
  54. package/dist/ink/components/StderrContext.d.ts +16 -0
  55. package/dist/ink/components/StdinContext.d.ts +29 -0
  56. package/dist/ink/components/StdoutContext.d.ts +16 -0
  57. package/dist/ink/components/Stopwatch.d.ts +44 -0
  58. package/dist/ink/components/Tab.d.ts +25 -0
  59. package/dist/ink/components/Table.d.ts +80 -0
  60. package/dist/ink/components/Tabs.d.ts +104 -0
  61. package/dist/ink/components/Text.d.ts +63 -0
  62. package/dist/ink/components/TextInput.d.ts +48 -0
  63. package/dist/ink/components/Textarea.d.ts +62 -0
  64. package/dist/ink/components/Timer.d.ts +52 -0
  65. package/dist/ink/components/Transform.d.ts +16 -0
  66. package/dist/ink/components/UnorderedList.d.ts +35 -0
  67. package/dist/ink/components/file-picker/FilePicker.d.ts +75 -0
  68. package/dist/ink/components/file-picker/index.d.ts +3 -0
  69. package/dist/ink/components/file-picker/types.d.ts +38 -0
  70. package/dist/ink/components/file-picker/use-file-system.d.ts +16 -0
  71. package/dist/ink/components/scroll/ControlledScrollView.d.ts +43 -0
  72. package/dist/ink/components/scroll/ScrollBar.d.ts +20 -0
  73. package/dist/ink/components/scroll/ScrollBarBox.d.ts +15 -0
  74. package/dist/ink/components/scroll/ScrollList.d.ts +12 -0
  75. package/dist/ink/components/scroll/ScrollView.d.ts +98 -0
  76. package/dist/ink/components/scroll/index.d.ts +10 -0
  77. package/dist/ink/components/scroll/use-state-ref.d.ts +8 -0
  78. package/dist/ink/components/tree-view/TreeView.d.ts +89 -0
  79. package/dist/ink/components/tree-view/TreeViewNode.d.ts +29 -0
  80. package/dist/ink/components/tree-view/index.d.ts +11 -0
  81. package/dist/ink/components/tree-view/theme.d.ts +24 -0
  82. package/dist/ink/components/tree-view/tree-node-map.d.ts +72 -0
  83. package/dist/ink/components/tree-view/types.d.ts +55 -0
  84. package/dist/ink/components/tree-view/use-tree-view-state.d.ts +135 -0
  85. package/dist/ink/components/tree-view/use-tree-view.d.ts +26 -0
  86. package/dist/ink/components/variant-config.d.ts +10 -0
  87. package/dist/ink/cursor-helpers.d.ts +38 -0
  88. package/dist/ink/data-limited-lru-map.d.ts +21 -0
  89. package/dist/ink/devtools-window-polyfill.d.ts +1 -0
  90. package/dist/ink/devtools.d.ts +1 -0
  91. package/dist/ink/dom.d.ts +213 -0
  92. package/dist/ink/get-max-width.d.ts +3 -0
  93. package/dist/ink/highlighter.d.ts +28 -0
  94. package/dist/ink/hooks/use-animation.d.ts +43 -0
  95. package/dist/ink/hooks/use-app.d.ts +6 -0
  96. package/dist/ink/hooks/use-box-metrics.d.ts +58 -0
  97. package/dist/ink/hooks/use-clipboard.d.ts +29 -0
  98. package/dist/ink/hooks/use-color-blindness.d.ts +33 -0
  99. package/dist/ink/hooks/use-console-capture.d.ts +43 -0
  100. package/dist/ink/hooks/use-cursor.d.ts +12 -0
  101. package/dist/ink/hooks/use-focus-manager.d.ts +42 -0
  102. package/dist/ink/hooks/use-focus.d.ts +30 -0
  103. package/dist/ink/hooks/use-input.d.ts +149 -0
  104. package/dist/ink/hooks/use-is-screen-reader-enabled.d.ts +6 -0
  105. package/dist/ink/hooks/use-key-bindings.d.ts +61 -0
  106. package/dist/ink/hooks/use-linked-scroll.d.ts +41 -0
  107. package/dist/ink/hooks/use-paste.d.ts +44 -0
  108. package/dist/ink/hooks/use-scroll-acceleration.d.ts +47 -0
  109. package/dist/ink/hooks/use-scroll-input.d.ts +34 -0
  110. package/dist/ink/hooks/use-stderr.d.ts +6 -0
  111. package/dist/ink/hooks/use-stdin.d.ts +7 -0
  112. package/dist/ink/hooks/use-stdout.d.ts +6 -0
  113. package/dist/ink/hooks/use-stopwatch.d.ts +40 -0
  114. package/dist/ink/hooks/use-terminal-palette.d.ts +19 -0
  115. package/dist/ink/hooks/use-text-buffer.d.ts +42 -0
  116. package/dist/ink/hooks/use-text-selection.d.ts +45 -0
  117. package/dist/ink/hooks/use-timer.d.ts +49 -0
  118. package/dist/ink/hooks/use-window-size.d.ts +18 -0
  119. package/dist/ink/ime-utils.d.ts +25 -0
  120. package/dist/ink/index.d.ts +159 -0
  121. package/dist/ink/index.js +100 -0
  122. package/dist/ink/ink.d.ts +189 -0
  123. package/dist/ink/input-parser.d.ts +10 -0
  124. package/dist/ink/input-utils.d.ts +16 -0
  125. package/dist/ink/instances.d.ts +3 -0
  126. package/dist/ink/kitty-keyboard.d.ts +23 -0
  127. package/dist/ink/layout.d.ts +26 -0
  128. package/dist/ink/log-update-native.d.ts +14 -0
  129. package/dist/ink/log-update.d.ts +21 -0
  130. package/dist/ink/measure-element.d.ts +147 -0
  131. package/dist/ink/measure-text.d.ts +56 -0
  132. package/dist/ink/mouse/Fullscreen.d.ts +8 -0
  133. package/dist/ink/mouse/MouseProvider.d.ts +11 -0
  134. package/dist/ink/mouse/ansi-parser.d.ts +37 -0
  135. package/dist/ink/mouse/constants.d.ts +59 -0
  136. package/dist/ink/mouse/index.d.ts +20 -0
  137. package/dist/ink/mouse/is-intersecting.d.ts +18 -0
  138. package/dist/ink/mouse/mouse-context.d.ts +36 -0
  139. package/dist/ink/mouse/use-element-position.d.ts +29 -0
  140. package/dist/ink/mouse/use-mouse-action.d.ts +7 -0
  141. package/dist/ink/mouse/use-mouse-position.d.ts +7 -0
  142. package/dist/ink/mouse/use-mouse.d.ts +7 -0
  143. package/dist/ink/mouse/use-on-mouse-click.d.ts +14 -0
  144. package/dist/ink/mouse/use-on-mouse-hover.d.ts +8 -0
  145. package/dist/ink/mouse/use-on-mouse-state.d.ts +11 -0
  146. package/dist/ink/output.d.ts +74 -0
  147. package/dist/ink/parse-keypress.d.ts +22 -0
  148. package/dist/ink/reconciler.d.ts +3 -0
  149. package/dist/ink/region.d.ts +99 -0
  150. package/dist/ink/render-background.d.ts +4 -0
  151. package/dist/ink/render-border.d.ts +4 -0
  152. package/dist/ink/render-node-to-output.d.ts +38 -0
  153. package/dist/ink/render-scrollbar.d.ts +9 -0
  154. package/dist/ink/render-sticky.d.ts +44 -0
  155. package/dist/ink/render-to-string.d.ts +37 -0
  156. package/dist/ink/render.d.ts +191 -0
  157. package/dist/ink/renderer.d.ts +17 -0
  158. package/dist/ink/resize-observer.d.ts +44 -0
  159. package/dist/ink/sanitize-ansi.d.ts +2 -0
  160. package/dist/ink/scroll.d.ts +23 -0
  161. package/dist/ink/selection.d.ts +70 -0
  162. package/dist/ink/squash-text-nodes.d.ts +18 -0
  163. package/dist/ink/style-flags.d.ts +17 -0
  164. package/dist/ink/styled-line-factory.d.ts +25 -0
  165. package/dist/ink/styled-line-serializer.d.ts +18 -0
  166. package/dist/ink/styled-line.d.ts +109 -0
  167. package/dist/ink/styles.d.ts +369 -0
  168. package/dist/ink/terminal-palette.d.ts +25 -0
  169. package/dist/ink/text-wrap.d.ts +10 -0
  170. package/dist/ink/token-to-elements.d.ts +22 -0
  171. package/dist/ink/utils/format-time.d.ts +4 -0
  172. package/dist/ink/utils.d.ts +9 -0
  173. package/dist/ink/wrap-text.d.ts +3 -0
  174. package/dist/ink/write-synchronized.d.ts +4 -0
  175. package/dist/packem_chunks/devtools.js +27 -0
  176. package/dist/packem_shared/AccessibilityContext-BLelHhNU.js +7 -0
  177. package/dist/packem_shared/Alert-Dr3s_LD9.js +17 -0
  178. package/dist/packem_shared/AnimationContext-BcJg8Jr6.js +15 -0
  179. package/dist/packem_shared/AppContext-CP0U6H7O.js +11 -0
  180. package/dist/packem_shared/BackgroundContext-BAUaxfOb.js +5 -0
  181. package/dist/packem_shared/Badge-Dk7EGGM6.js +13 -0
  182. package/dist/packem_shared/BigText-CjMdY63X.js +24 -0
  183. package/dist/packem_shared/Box-D_pSJ9Jp.js +73 -0
  184. package/dist/packem_shared/COLOR_BLINDNESS_SIMULATION-BsMy5Ewl.js +81 -0
  185. package/dist/packem_shared/Cell-DCg1kJY-.js +48 -0
  186. package/dist/packem_shared/Code-DjQvPBD9.js +53 -0
  187. package/dist/packem_shared/ConfirmInput-85Y4kRQW.js +44 -0
  188. package/dist/packem_shared/ConsoleOverlay-DBNa4vtj.js +57 -0
  189. package/dist/packem_shared/ControlledScrollView-BlOaxcsN.js +286 -0
  190. package/dist/packem_shared/ControlledScrollView-DfAhcufF.js +5 -0
  191. package/dist/packem_shared/Cursor-DiW7YoSK.js +18 -0
  192. package/dist/packem_shared/CursorContext-JxRzlqAx.js +9 -0
  193. package/dist/packem_shared/DevTools-aMPIsaHx.js +61 -0
  194. package/dist/packem_shared/Dialog-DsSNAVgC.js +71 -0
  195. package/dist/packem_shared/DiffView-hqaw-2S6.js +329 -0
  196. package/dist/packem_shared/FilePicker-DNwFxRhq.js +254 -0
  197. package/dist/packem_shared/FocusContext-CWkYtgcm.js +26 -0
  198. package/dist/packem_shared/FocusContext-D5wFxSRz.js +153 -0
  199. package/dist/packem_shared/Fullscreen-DrElAE1o.js +11 -0
  200. package/dist/packem_shared/Gradient-Ql5P0GUd.js +136 -0
  201. package/dist/packem_shared/Help-6wanGG38.js +112 -0
  202. package/dist/packem_shared/IMECompositionBuffer-Dl3S0KnF.js +55 -0
  203. package/dist/packem_shared/InputParser-BKHpWfvN.js +156 -0
  204. package/dist/packem_shared/LayoutNode-Cjnsodiy.js +131 -0
  205. package/dist/packem_shared/Link-COcKYfGT.js +66 -0
  206. package/dist/packem_shared/Markdown-y1ISztof.js +212 -0
  207. package/dist/packem_shared/MouseProvider-Y9TSSEGl.js +136 -0
  208. package/dist/packem_shared/MultiSelect-ChoLUcDI.js +129 -0
  209. package/dist/packem_shared/NAMED_COLORS-a4QBvb5r.js +262 -0
  210. package/dist/packem_shared/Newline-DBtYEg8x.js +7 -0
  211. package/dist/packem_shared/OrderedList-Cp7pXr6m.js +26 -0
  212. package/dist/packem_shared/Paginator-D1AuD-kj.js +104 -0
  213. package/dist/packem_shared/ProgressBar-DOfpVagn.js +22 -0
  214. package/dist/packem_shared/Renderer-zZ5O3vxc.js +31 -0
  215. package/dist/packem_shared/ResizeObserverEntry-Br4seLeQ.js +102 -0
  216. package/dist/packem_shared/ScrollBar-EWAs2Uc7.js +106 -0
  217. package/dist/packem_shared/ScrollBarBox-DTNNlh7R.js +72 -0
  218. package/dist/packem_shared/ScrollList-DCeIFL8M.js +227 -0
  219. package/dist/packem_shared/ScrollView-v3MCNIyX.js +196 -0
  220. package/dist/packem_shared/SelectInput-BN2TMyxp.js +260 -0
  221. package/dist/packem_shared/SelectInputIndicator-DkRMoH_b.js +9 -0
  222. package/dist/packem_shared/SelectInputItem-BF9LQgKu.js +8 -0
  223. package/dist/packem_shared/Slider-BWD7xZX6.js +116 -0
  224. package/dist/packem_shared/Spacer-Bs4ER-HK.js +8 -0
  225. package/dist/packem_shared/Spinner-BuI-kN4p.js +1799 -0
  226. package/dist/packem_shared/Static-DpTd6Eed.js +22 -0
  227. package/dist/packem_shared/Static-xmD9giJj.js +18 -0
  228. package/dist/packem_shared/StaticRender-tYwH6QXl.js +33 -0
  229. package/dist/packem_shared/StatusMessage-BtSYxzwb.js +14 -0
  230. package/dist/packem_shared/StderrContext-Bj4Mf7v7.js +17 -0
  231. package/dist/packem_shared/StdinContext-Bq_GNJ3z.js +38 -0
  232. package/dist/packem_shared/StdoutContext-CgjWeCdO.js +17 -0
  233. package/dist/packem_shared/Stopwatch-DjtTCyHn.js +23 -0
  234. package/dist/packem_shared/Tab-C6r5q4hR.js +7 -0
  235. package/dist/packem_shared/Table-D-rSVlzb.js +82 -0
  236. package/dist/packem_shared/Tabs-hki-KRnx.js +153 -0
  237. package/dist/packem_shared/Text-DvAUdZcK.js +65 -0
  238. package/dist/packem_shared/TextInput-C79WEQ5U.js +137 -0
  239. package/dist/packem_shared/Textarea-Dj06R6Zd.js +272 -0
  240. package/dist/packem_shared/Timer-wi9zuh4n.js +22 -0
  241. package/dist/packem_shared/Transform-BHxY_dAM.js +14 -0
  242. package/dist/packem_shared/TreeNodeMap-CtJUvBnd.js +155 -0
  243. package/dist/packem_shared/TreeView-C2062dtj.js +148 -0
  244. package/dist/packem_shared/TuiApp-DfxOnXqi.js +120 -0
  245. package/dist/packem_shared/TuiContext-CqEjMyXd.js +415 -0
  246. package/dist/packem_shared/UnorderedList-DhnadWjX.js +33 -0
  247. package/dist/packem_shared/ansi-parser-0BdVTKho.js +41 -0
  248. package/dist/packem_shared/ansi-tokenizer-LHq2LUWA.js +307 -0
  249. package/dist/packem_shared/boxes-oi3WUbyR.js +92 -0
  250. package/dist/packem_shared/colorize-88_Vk8cn.js +48 -0
  251. package/dist/packem_shared/comparePoints-CGMDnd3_.js +287 -0
  252. package/dist/packem_shared/createInlineLoop-BxMmcq9D.js +93 -0
  253. package/dist/packem_shared/createLinkedScrollGroup-Djw4Ceo0.js +44 -0
  254. package/dist/packem_shared/dom-DvzhsAez.js +225 -0
  255. package/dist/packem_shared/format-time-BGmnDukX.js +12 -0
  256. package/dist/packem_shared/getPathToRoot-a1wbwxfL.js +4 -0
  257. package/dist/packem_shared/getScrollHeight-BubfU_df.js +63 -0
  258. package/dist/packem_shared/input-utils-ViAEXa0Z.js +19 -0
  259. package/dist/packem_shared/isIntersecting-fEXHJN5R.js +10 -0
  260. package/dist/packem_shared/isOsc52Supported-G0k4sXJx.js +36 -0
  261. package/dist/packem_shared/isTerminalPaletteQuerySupported-EeiwMKbr.js +93 -0
  262. package/dist/packem_shared/kittyFlags-bNNf_9kX.js +26 -0
  263. package/dist/packem_shared/measure-element-Reza_yfC.js +396 -0
  264. package/dist/packem_shared/measure-text-DItZYotK.js +1189 -0
  265. package/dist/packem_shared/measureElement-CTgFCmKd.js +4 -0
  266. package/dist/packem_shared/mouse-context-BUHWKEIe.js +6 -0
  267. package/dist/packem_shared/parseSgrMouse-BHVBPP9G.js +1 -0
  268. package/dist/packem_shared/processLayout-BQ9kXfd3.js +2 -0
  269. package/dist/packem_shared/reconciler-BXf6miSS.js +211 -0
  270. package/dist/packem_shared/reconciler-gfmqURLy.js +680 -0
  271. package/dist/packem_shared/render-BAwdjfki.js +2806 -0
  272. package/dist/packem_shared/render-Bpjhf0lD.js +195 -0
  273. package/dist/packem_shared/renderToString-Cfg55DRD.js +62 -0
  274. package/dist/packem_shared/renderToString-ClIaXgrC.js +86 -0
  275. package/dist/packem_shared/renderTreeToBuffer-D3mo7M7m.js +308 -0
  276. package/dist/packem_shared/renderer-B3wROkeg.js +1431 -0
  277. package/dist/packem_shared/setEnableStyledLineCache-BpskngSJ.js +2 -0
  278. package/dist/packem_shared/squashTextNodesWithMap-iqm6OMMT.js +100 -0
  279. package/dist/packem_shared/text-width-DhuarWcB.js +42 -0
  280. package/dist/packem_shared/token-to-elements-BRFl_rzw.js +249 -0
  281. package/dist/packem_shared/treeViewTheme-BpSw9TMf.js +52 -0
  282. package/dist/packem_shared/useAnimation-kj31sA-T.js +62 -0
  283. package/dist/packem_shared/useApp-DPQlRzi5.js +6 -0
  284. package/dist/packem_shared/useBoxMetrics-rBjKc-g4.js +54 -0
  285. package/dist/packem_shared/useClipboard-B_9-adw1.js +23 -0
  286. package/dist/packem_shared/useColorBlindness-D_sTIhcb.js +30 -0
  287. package/dist/packem_shared/useConsoleCapture-Dvt7G1W1.js +61 -0
  288. package/dist/packem_shared/useCursor-BIJzc8k9.js +19 -0
  289. package/dist/packem_shared/useElementDimensions-CAoKitVD.js +67 -0
  290. package/dist/packem_shared/useFocus-CNl5QHHf.js +37 -0
  291. package/dist/packem_shared/useFocusManager-BPYaUuKQ.js +16 -0
  292. package/dist/packem_shared/useInput-Cfp5zB2s.js +594 -0
  293. package/dist/packem_shared/useIsScreenReaderEnabled-CnGKCe0f.js +9 -0
  294. package/dist/packem_shared/useKeyBindings-B78l1E1n.js +66 -0
  295. package/dist/packem_shared/useMouseAction-C5gZ2nj7.js +29 -0
  296. package/dist/packem_shared/useMouseContext-D-rFy60Q.js +12 -0
  297. package/dist/packem_shared/useMousePosition-BHBJ-kBk.js +25 -0
  298. package/dist/packem_shared/useOnMouseClick--ZIyBOBO.js +35 -0
  299. package/dist/packem_shared/useOnMouseHover-26diuXUC.js +32 -0
  300. package/dist/packem_shared/useOnMouseState-NO_Kda_C.js +13 -0
  301. package/dist/packem_shared/usePaste-Ct8J4AGR.js +35 -0
  302. package/dist/packem_shared/useScrollAcceleration-R9LfrPVG.js +73 -0
  303. package/dist/packem_shared/useScrollInput-D3CpBq_a.js +72 -0
  304. package/dist/packem_shared/useStderr-CAOVUh4E.js +6 -0
  305. package/dist/packem_shared/useStdin-X-O0kd-n.js +7 -0
  306. package/dist/packem_shared/useStdout-DyF6DSH0.js +6 -0
  307. package/dist/packem_shared/useStopwatch-qC4Beai4.js +33 -0
  308. package/dist/packem_shared/useTerminalPalette-BaWO2c4Q.js +38 -0
  309. package/dist/packem_shared/useTextBuffer-C8fEe9Ly.js +398 -0
  310. package/dist/packem_shared/useTextSelection-mXtxgsPK.js +50 -0
  311. package/dist/packem_shared/useTimer-CPQ7j827.js +46 -0
  312. package/dist/packem_shared/useTreeView-BT57P3Kx.js +101 -0
  313. package/dist/packem_shared/useTreeViewState-BpS_KZ-K.js +502 -0
  314. package/dist/packem_shared/useWindowSize-ugEmGZJm.js +20 -0
  315. package/dist/packem_shared/utils-BgdlrbOH.js +140 -0
  316. package/dist/packem_shared/variant-config-DSZoX5TM.js +8 -0
  317. package/dist/packem_shared/wrapOrTruncateStyledLine-DN3Nogoc.js +147 -0
  318. package/dist/react/devtools.d.ts +27 -0
  319. package/dist/react/focus.d.ts +39 -0
  320. package/dist/react/hooks.d.ts +238 -0
  321. package/dist/react/index.d.ts +8 -0
  322. package/dist/react/index.js +9 -0
  323. package/dist/react/layout.d.ts +35 -0
  324. package/dist/react/react.d.ts +57 -0
  325. package/dist/react/reconciler.d.ts +4 -0
  326. package/dist/react/render-to-string.d.ts +21 -0
  327. package/dist/react/renderer.d.ts +2 -0
  328. package/dist/react/scene.d.ts +3 -0
  329. package/dist/react/static.d.ts +39 -0
  330. package/dist/react/styles.d.ts +83 -0
  331. package/dist/react/text-width.d.ts +20 -0
  332. package/dist/testing/index.d.ts +144 -0
  333. package/dist/testing/index.js +260 -0
  334. package/dist/testing/keys.d.ts +89 -0
  335. package/dist/testing/screen.d.ts +35 -0
  336. package/dist/testing/wait-for.d.ts +21 -0
  337. package/index.js +585 -0
  338. package/package.json +117 -7
@@ -0,0 +1,594 @@
1
+ import { createRequire as __cjs_createRequire } from "node:module";
2
+
3
+ const __cjs_require = __cjs_createRequire(import.meta.url);
4
+
5
+ const __cjs_getProcess = typeof globalThis !== "undefined" && typeof globalThis.process !== "undefined" ? globalThis.process : process;
6
+
7
+ const __cjs_getBuiltinModule = (module) => {
8
+ // Check if we're in Node.js and version supports getBuiltinModule
9
+ if (typeof __cjs_getProcess !== "undefined" && __cjs_getProcess.versions && __cjs_getProcess.versions.node) {
10
+ const [major, minor] = __cjs_getProcess.versions.node.split(".").map(Number);
11
+ // Node.js 20.16.0+ and 22.3.0+
12
+ if (major > 22 || (major === 22 && minor >= 3) || (major === 20 && minor >= 16)) {
13
+ return __cjs_getProcess.getBuiltinModule(module);
14
+ }
15
+ }
16
+ // Fallback to createRequire
17
+ return __cjs_require(module);
18
+ };
19
+
20
+ import { useRef, useEffectEvent, useEffect } from 'react';
21
+ import { IMECompositionBuffer, isIMEInput } from './IMECompositionBuffer-Dl3S0KnF.js';
22
+ const {
23
+ Buffer
24
+ } = __cjs_getBuiltinModule("node:buffer");
25
+ import { kittyModifiers } from './kittyFlags-bNNf_9kX.js';
26
+ import { r as reconcilerInstance } from './reconciler-gfmqURLy.js';
27
+ import { useStdinContext } from './useStdin-X-O0kd-n.js';
28
+
29
+ const metaKeyCodeRe = /^\u001B([a-z0-9])$/i;
30
+ const functionKeyRe = /^\u001B+([ON[]|\[\[)(?:(\d+)(?:;(\d+))?([~^$])|(?:1;)?(\d+)?([a-zA-Z]))/;
31
+ const keyName = {
32
+ /* xterm/rxvt ESC [ number ~ */
33
+ "[1~": "home",
34
+ "[2$": "insert",
35
+ "[2^": "insert",
36
+ "[2~": "insert",
37
+ "[3$": "delete",
38
+ "[3^": "delete",
39
+ "[3~": "delete",
40
+ "[4~": "end",
41
+ "[5$": "pageup",
42
+ "[5^": "pageup",
43
+ "[5~": "pageup",
44
+ "[6$": "pagedown",
45
+ "[6^": "pagedown",
46
+ "[6~": "pagedown",
47
+ "[7$": "home",
48
+ "[7^": "home",
49
+ /* rxvt */
50
+ "[7~": "home",
51
+ "[8$": "end",
52
+ "[8^": "end",
53
+ "[8~": "end",
54
+ /* xterm/rxvt ESC [ number ~ */
55
+ "[11~": "f1",
56
+ "[12~": "f2",
57
+ "[13~": "f3",
58
+ "[14~": "f4",
59
+ /* common */
60
+ "[15~": "f5",
61
+ "[17~": "f6",
62
+ "[18~": "f7",
63
+ "[19~": "f8",
64
+ "[20~": "f9",
65
+ "[21~": "f10",
66
+ "[23~": "f11",
67
+ "[24~": "f12",
68
+ /* putty */
69
+ "[[5~": "pageup",
70
+ "[[6~": "pagedown",
71
+ /* from Cygwin and used in libuv */
72
+ "[[A": "f1",
73
+ "[[B": "f2",
74
+ "[[C": "f3",
75
+ "[[D": "f4",
76
+ "[[E": "f5",
77
+ /* xterm ESC [ letter */
78
+ "[A": "up",
79
+ /* rxvt keys with modifiers */
80
+ "[a": "up",
81
+ "[B": "down",
82
+ "[b": "down",
83
+ "[C": "right",
84
+ "[c": "right",
85
+ "[D": "left",
86
+ "[d": "left",
87
+ "[E": "clear",
88
+ "[e": "clear",
89
+ "[F": "end",
90
+ "[H": "home",
91
+ /* VT220-style modifier sequences: ESC [ 1 ; mod P/Q/R/S */
92
+ "[P": "f1",
93
+ "[Q": "f2",
94
+ "[R": "f3",
95
+ "[S": "f4",
96
+ /* misc. */
97
+ "[Z": "tab",
98
+ /* xterm/gnome ESC O letter */
99
+ OA: "up",
100
+ Oa: "up",
101
+ OB: "down",
102
+ Ob: "down",
103
+ OC: "right",
104
+ Oc: "right",
105
+ OD: "left",
106
+ Od: "left",
107
+ OE: "clear",
108
+ Oe: "clear",
109
+ OF: "end",
110
+ OH: "home",
111
+ /* xterm/gnome ESC O letter */
112
+ OP: "f1",
113
+ OQ: "f2",
114
+ OR: "f3",
115
+ OS: "f4"
116
+ };
117
+ const nonAlphanumericKeys = [...Object.values(keyName), "backspace"];
118
+ const isShiftKey = (code) => ["[2$", "[3$", "[5$", "[6$", "[7$", "[8$", "[a", "[b", "[c", "[d", "[e", "[Z"].includes(code);
119
+ const isCtrlKey = (code) => ["[2^", "[3^", "[5^", "[6^", "[7^", "[8^", "Oa", "Ob", "Oc", "Od", "Oe"].includes(code);
120
+ const kittyKeyRe = /^\u001B\[(\d+)(?:;(\d+)(?::(\d+))?(?:;([\d:]+))?)?u$/;
121
+ const kittySpecialKeyRe = /^\u001B\[(\d+);(\d+):(\d+)([A-Z~])$/i;
122
+ const kittySpecialLetterKeys = {
123
+ A: "up",
124
+ B: "down",
125
+ C: "right",
126
+ D: "left",
127
+ E: "clear",
128
+ F: "end",
129
+ H: "home",
130
+ P: "f1",
131
+ Q: "f2",
132
+ R: "f3",
133
+ S: "f4"
134
+ };
135
+ const kittySpecialNumberKeys = {
136
+ 2: "insert",
137
+ 3: "delete",
138
+ 5: "pageup",
139
+ 6: "pagedown",
140
+ 7: "home",
141
+ 8: "end",
142
+ 11: "f1",
143
+ 12: "f2",
144
+ 13: "f3",
145
+ 14: "f4",
146
+ 15: "f5",
147
+ 17: "f6",
148
+ 18: "f7",
149
+ 19: "f8",
150
+ 20: "f9",
151
+ 21: "f10",
152
+ 23: "f11",
153
+ 24: "f12"
154
+ };
155
+ const kittyCodepointNames = {
156
+ 8: "backspace",
157
+ // 13 (return) and 32 (space) are handled before this lookup
158
+ // in parseKittyKeypress so they can be marked as printable.
159
+ 9: "tab",
160
+ 27: "escape",
161
+ 127: "backspace",
162
+ 57358: "capslock",
163
+ 57359: "scrolllock",
164
+ 57360: "numlock",
165
+ 57361: "printscreen",
166
+ 57362: "pause",
167
+ 57363: "menu",
168
+ 57376: "f13",
169
+ 57377: "f14",
170
+ 57378: "f15",
171
+ 57379: "f16",
172
+ 57380: "f17",
173
+ 57381: "f18",
174
+ 57382: "f19",
175
+ 57383: "f20",
176
+ 57384: "f21",
177
+ 57385: "f22",
178
+ 57386: "f23",
179
+ 57387: "f24",
180
+ 57388: "f25",
181
+ 57389: "f26",
182
+ 57390: "f27",
183
+ 57391: "f28",
184
+ 57392: "f29",
185
+ 57393: "f30",
186
+ 57394: "f31",
187
+ 57395: "f32",
188
+ 57396: "f33",
189
+ 57397: "f34",
190
+ 57398: "f35",
191
+ 57399: "kp0",
192
+ 57400: "kp1",
193
+ 57401: "kp2",
194
+ 57402: "kp3",
195
+ 57403: "kp4",
196
+ 57404: "kp5",
197
+ 57405: "kp6",
198
+ 57406: "kp7",
199
+ 57407: "kp8",
200
+ 57408: "kp9",
201
+ 57409: "kpdecimal",
202
+ 57410: "kpdivide",
203
+ 57411: "kpmultiply",
204
+ 57412: "kpsubtract",
205
+ 57413: "kpadd",
206
+ 57414: "kpenter",
207
+ 57415: "kpequal",
208
+ 57416: "kpseparator",
209
+ 57417: "kpleft",
210
+ 57418: "kpright",
211
+ 57419: "kpup",
212
+ 57420: "kpdown",
213
+ 57421: "kppageup",
214
+ 57422: "kppagedown",
215
+ 57423: "kphome",
216
+ 57424: "kpend",
217
+ 57425: "kpinsert",
218
+ 57426: "kpdelete",
219
+ 57427: "kpbegin",
220
+ 57428: "mediaplay",
221
+ 57429: "mediapause",
222
+ 57430: "mediaplaypause",
223
+ 57431: "mediareverse",
224
+ 57432: "mediastop",
225
+ 57433: "mediafastforward",
226
+ 57434: "mediarewind",
227
+ 57435: "mediatracknext",
228
+ 57436: "mediatrackprevious",
229
+ 57437: "mediarecord",
230
+ 57438: "lowervolume",
231
+ 57439: "raisevolume",
232
+ 57440: "mutevolume",
233
+ 57441: "leftshift",
234
+ 57442: "leftcontrol",
235
+ 57443: "leftalt",
236
+ 57444: "leftsuper",
237
+ 57445: "lefthyper",
238
+ 57446: "leftmeta",
239
+ 57447: "rightshift",
240
+ 57448: "rightcontrol",
241
+ 57449: "rightalt",
242
+ 57450: "rightsuper",
243
+ 57451: "righthyper",
244
+ 57452: "rightmeta",
245
+ 57453: "isoLevel3Shift",
246
+ 57454: "isoLevel5Shift"
247
+ };
248
+ const isValidCodepoint = (cp) => cp >= 0 && cp <= 1114111 && !(cp >= 55296 && cp <= 57343);
249
+ const safeFromCodePoint = (cp) => isValidCodepoint(cp) ? String.fromCodePoint(cp) : "?";
250
+ function resolveEventType(value) {
251
+ if (value === 3) {
252
+ return "release";
253
+ }
254
+ if (value === 2) {
255
+ return "repeat";
256
+ }
257
+ return "press";
258
+ }
259
+ function parseKittyModifiers(modifiers) {
260
+ return {
261
+ capsLock: !!(modifiers & kittyModifiers.capsLock),
262
+ ctrl: !!(modifiers & kittyModifiers.ctrl),
263
+ hyper: !!(modifiers & kittyModifiers.hyper),
264
+ meta: !!(modifiers & kittyModifiers.meta),
265
+ numLock: !!(modifiers & kittyModifiers.numLock),
266
+ option: !!(modifiers & kittyModifiers.alt),
267
+ shift: !!(modifiers & kittyModifiers.shift),
268
+ super: !!(modifiers & kittyModifiers.super)
269
+ };
270
+ }
271
+ const parseKittyKeypress = (s) => {
272
+ const match = kittyKeyRe.exec(s);
273
+ if (!match) {
274
+ return null;
275
+ }
276
+ const codepoint = Number.parseInt(match[1], 10);
277
+ const modifiers = match[2] ? Math.max(0, Number.parseInt(match[2], 10) - 1) : 0;
278
+ const eventType = match[3] ? Number.parseInt(match[3], 10) : 1;
279
+ const textField = match[4];
280
+ if (!isValidCodepoint(codepoint)) {
281
+ return null;
282
+ }
283
+ let text;
284
+ if (textField) {
285
+ text = textField.split(":").map((cp) => safeFromCodePoint(Number.parseInt(cp, 10))).join("");
286
+ }
287
+ let name;
288
+ let isPrintable;
289
+ if (codepoint === 32) {
290
+ name = "space";
291
+ isPrintable = true;
292
+ } else if (codepoint === 13) {
293
+ name = "return";
294
+ isPrintable = true;
295
+ } else if (kittyCodepointNames[codepoint]) {
296
+ name = kittyCodepointNames[codepoint];
297
+ isPrintable = false;
298
+ } else if (codepoint >= 1 && codepoint <= 26) {
299
+ name = String.fromCodePoint(codepoint + 96);
300
+ isPrintable = false;
301
+ } else {
302
+ name = safeFromCodePoint(codepoint).toLowerCase();
303
+ isPrintable = true;
304
+ }
305
+ if (isPrintable && !text) {
306
+ text = safeFromCodePoint(codepoint);
307
+ }
308
+ return {
309
+ name,
310
+ ...parseKittyModifiers(modifiers),
311
+ eventType: resolveEventType(eventType),
312
+ isKittyProtocol: true,
313
+ isPrintable,
314
+ raw: s,
315
+ sequence: s,
316
+ text
317
+ };
318
+ };
319
+ const parseKittySpecialKey = (s) => {
320
+ const match = kittySpecialKeyRe.exec(s);
321
+ if (!match) {
322
+ return null;
323
+ }
324
+ const number = Number.parseInt(match[1], 10);
325
+ const modifiers = Math.max(0, Number.parseInt(match[2], 10) - 1);
326
+ const eventType = Number.parseInt(match[3], 10);
327
+ const terminator = match[4];
328
+ const name = terminator === "~" ? kittySpecialNumberKeys[number] : kittySpecialLetterKeys[terminator];
329
+ if (!name) {
330
+ return null;
331
+ }
332
+ return {
333
+ name,
334
+ ...parseKittyModifiers(modifiers),
335
+ eventType: resolveEventType(eventType),
336
+ isKittyProtocol: true,
337
+ isPrintable: false,
338
+ raw: s,
339
+ sequence: s
340
+ };
341
+ };
342
+ const parseKeypress = (s = "") => {
343
+ let parts;
344
+ if (Buffer.isBuffer(s)) {
345
+ if (s[0] > 127 && s[1] === void 0) {
346
+ s[0] -= 128;
347
+ s = `\x1B${String(s)}`;
348
+ } else {
349
+ s = String(s);
350
+ }
351
+ } else if (s !== void 0 && typeof s !== "string") {
352
+ s = String(s);
353
+ } else if (!s) {
354
+ s = "";
355
+ }
356
+ const kittyResult = parseKittyKeypress(s);
357
+ if (kittyResult) {
358
+ return kittyResult;
359
+ }
360
+ const kittySpecialResult = parseKittySpecialKey(s);
361
+ if (kittySpecialResult) {
362
+ return kittySpecialResult;
363
+ }
364
+ if (kittyKeyRe.test(s)) {
365
+ return {
366
+ ctrl: false,
367
+ isKittyProtocol: true,
368
+ isPrintable: false,
369
+ meta: false,
370
+ name: "",
371
+ option: false,
372
+ raw: s,
373
+ sequence: s,
374
+ shift: false
375
+ };
376
+ }
377
+ const key = {
378
+ ctrl: false,
379
+ meta: false,
380
+ name: "",
381
+ option: false,
382
+ raw: s,
383
+ sequence: s,
384
+ shift: false
385
+ };
386
+ key.sequence = key.sequence || s || key.name;
387
+ switch (s) {
388
+ case "\r":
389
+ case "\x1B\r": {
390
+ key.raw = void 0;
391
+ key.name = "return";
392
+ key.option = s.length === 2;
393
+ break;
394
+ }
395
+ case "\n": {
396
+ key.name = "enter";
397
+ break;
398
+ }
399
+ case " ": {
400
+ key.name = "tab";
401
+ break;
402
+ }
403
+ case " ":
404
+ case "\x1B ": {
405
+ key.name = "space";
406
+ key.meta = s.length === 2;
407
+ break;
408
+ }
409
+ case "\b":
410
+ case "\x1B\b": {
411
+ key.name = "backspace";
412
+ key.meta = s.charAt(0) === "\x1B";
413
+ break;
414
+ }
415
+ case "\x1B":
416
+ case "\x1B\x1B": {
417
+ key.name = "escape";
418
+ key.meta = s.length === 2;
419
+ break;
420
+ }
421
+ case "\x1B":
422
+ case "": {
423
+ key.name = "backspace";
424
+ key.meta = s.charAt(0) === "\x1B";
425
+ break;
426
+ }
427
+ default: {
428
+ if (s.length === 1 && s <= "") {
429
+ key.name = String.fromCharCode(s.charCodeAt(0) + "a".charCodeAt(0) - 1);
430
+ key.ctrl = true;
431
+ } else if (s.length === 1 && s >= "0" && s <= "9") {
432
+ key.name = "number";
433
+ } else if (s.length === 1 && s >= "a" && s <= "z") {
434
+ key.name = s;
435
+ } else if (s.length === 1 && s >= "A" && s <= "Z") {
436
+ key.name = s.toLowerCase();
437
+ key.shift = true;
438
+ } else if (parts = metaKeyCodeRe.exec(s)) {
439
+ key.meta = true;
440
+ key.shift = /^[A-Z]$/.test(parts[1]);
441
+ } else if (parts = functionKeyRe.exec(s)) {
442
+ const segs = [...s];
443
+ if (segs[0] === "\x1B" && segs[1] === "\x1B") {
444
+ key.option = true;
445
+ }
446
+ const code = [parts[1], parts[2], parts[4], parts[6]].filter(Boolean).join("");
447
+ const modifier = (parts[3] || parts[5] || 1) - 1;
448
+ key.ctrl = !!(modifier & 4);
449
+ key.meta = !!(modifier & 10);
450
+ key.shift = !!(modifier & 1);
451
+ key.code = code;
452
+ key.name = keyName[code] ?? "";
453
+ key.shift = isShiftKey(code) || key.shift;
454
+ key.ctrl = isCtrlKey(code) || key.ctrl;
455
+ }
456
+ }
457
+ }
458
+ return key;
459
+ };
460
+
461
+ const useInput = (inputHandler, options = {}) => {
462
+ const { internal_eventEmitter, internal_exitOnCtrlC, setRawMode, stdin } = useStdinContext();
463
+ const imeEnabled = options.imeEnabled ?? true;
464
+ const imeTimeout = options.imeTimeout ?? 50;
465
+ const imeBufferRef = useRef(void 0);
466
+ const stableInputHandler = useEffectEvent(inputHandler);
467
+ useEffect(() => {
468
+ if (!imeEnabled) {
469
+ return;
470
+ }
471
+ imeBufferRef.current = new IMECompositionBuffer({
472
+ onFlush: (text) => {
473
+ const key = {
474
+ backspace: false,
475
+ capsLock: false,
476
+ ctrl: false,
477
+ delete: false,
478
+ downArrow: false,
479
+ end: false,
480
+ escape: false,
481
+ home: false,
482
+ hyper: false,
483
+ leftArrow: false,
484
+ meta: false,
485
+ numLock: false,
486
+ pageDown: false,
487
+ pageUp: false,
488
+ return: false,
489
+ rightArrow: false,
490
+ shift: false,
491
+ super: false,
492
+ tab: false,
493
+ upArrow: false
494
+ };
495
+ reconcilerInstance.discreteUpdates(() => {
496
+ stableInputHandler(text, key);
497
+ });
498
+ },
499
+ timeout: imeTimeout
500
+ });
501
+ return () => {
502
+ imeBufferRef.current?.destroy();
503
+ imeBufferRef.current = void 0;
504
+ };
505
+ }, [imeEnabled, imeTimeout]);
506
+ useEffect(() => {
507
+ if (options.isActive === false) {
508
+ return;
509
+ }
510
+ setRawMode(true);
511
+ return () => {
512
+ setRawMode(false);
513
+ };
514
+ }, [options.isActive, setRawMode]);
515
+ useEffect(() => {
516
+ if (options.isActive === false) {
517
+ return;
518
+ }
519
+ const handleData = (data) => {
520
+ if (imeEnabled && isIMEInput(data)) {
521
+ imeBufferRef.current?.add(data);
522
+ return;
523
+ }
524
+ imeBufferRef.current?.flush();
525
+ const keypress = parseKeypress(data);
526
+ const key = {
527
+ backspace: keypress.name === "backspace",
528
+ capsLock: keypress.capsLock ?? false,
529
+ ctrl: keypress.ctrl,
530
+ delete: keypress.name === "delete",
531
+ downArrow: keypress.name === "down",
532
+ end: keypress.name === "end",
533
+ escape: keypress.name === "escape",
534
+ eventType: keypress.eventType,
535
+ home: keypress.name === "home",
536
+ hyper: keypress.hyper ?? false,
537
+ leftArrow: keypress.name === "left",
538
+ // `parseKeypress` parses \u001B\u001B[A (meta + up arrow) as meta = false
539
+ // but with option = true, so we need to take this into account here.
540
+ // Plain Escape no longer sets meta — only actual Alt/Meta modifier
541
+ // combinations do.
542
+ meta: keypress.meta || keypress.option,
543
+ numLock: keypress.numLock ?? false,
544
+ pageDown: keypress.name === "pagedown",
545
+ pageUp: keypress.name === "pageup",
546
+ return: keypress.name === "return",
547
+ rightArrow: keypress.name === "right",
548
+ shift: keypress.shift,
549
+ // Kitty keyboard protocol modifiers
550
+ super: keypress.super ?? false,
551
+ tab: keypress.name === "tab",
552
+ upArrow: keypress.name === "up"
553
+ };
554
+ let input;
555
+ if (keypress.isKittyProtocol) {
556
+ if (keypress.isPrintable) {
557
+ input = keypress.text ?? keypress.name;
558
+ } else if (keypress.ctrl && keypress.name.length === 1) {
559
+ input = keypress.name;
560
+ } else {
561
+ input = "";
562
+ }
563
+ } else if (keypress.ctrl) {
564
+ input = keypress.name;
565
+ } else {
566
+ input = keypress.sequence;
567
+ }
568
+ if (!keypress.isKittyProtocol && nonAlphanumericKeys.includes(keypress.name)) {
569
+ input = "";
570
+ }
571
+ if (input.startsWith("\x1B")) {
572
+ input = input.slice(1);
573
+ }
574
+ if (input.length === 1 && typeof input[0] === "string" && /[A-Z]/.test(input[0])) {
575
+ key.shift = true;
576
+ }
577
+ if (input === "c" && key.ctrl && internal_exitOnCtrlC) {
578
+ return;
579
+ }
580
+ if (!keypress.name && input === "") {
581
+ return;
582
+ }
583
+ reconcilerInstance.discreteUpdates(() => {
584
+ stableInputHandler(input, key);
585
+ });
586
+ };
587
+ internal_eventEmitter.on("input", handleData);
588
+ return () => {
589
+ internal_eventEmitter.removeListener("input", handleData);
590
+ };
591
+ }, [options.isActive, stdin, internal_exitOnCtrlC, imeEnabled]);
592
+ };
593
+
594
+ export { useInput as default };
@@ -0,0 +1,9 @@
1
+ import { useContext } from 'react';
2
+ import { a as accessibilityContext } from './AccessibilityContext-BLelHhNU.js';
3
+
4
+ const useIsScreenReaderEnabled = () => {
5
+ const { isScreenReaderEnabled } = useContext(accessibilityContext);
6
+ return isScreenReaderEnabled;
7
+ };
8
+
9
+ export { useIsScreenReaderEnabled as default };
@@ -0,0 +1,66 @@
1
+ import { useRef, useCallback, useMemo } from 'react';
2
+ import useInput from './useInput-Cfp5zB2s.js';
3
+
4
+ const specialKeyFields = /* @__PURE__ */ new Set([
5
+ "backspace",
6
+ "delete",
7
+ "downArrow",
8
+ "end",
9
+ "escape",
10
+ "home",
11
+ "leftArrow",
12
+ "pageDown",
13
+ "pageUp",
14
+ "return",
15
+ "rightArrow",
16
+ "tab",
17
+ "upArrow"
18
+ ]);
19
+ const modifierFields = /* @__PURE__ */ new Set(["ctrl", "meta", "shift", "super", "hyper"]);
20
+ function matchesKey(spec, input, key) {
21
+ const plusIndex = spec.indexOf("+");
22
+ if (plusIndex !== -1) {
23
+ const modifier = spec.slice(0, plusIndex);
24
+ const rest = spec.slice(plusIndex + 1);
25
+ if (!modifierFields.has(modifier)) {
26
+ return false;
27
+ }
28
+ if (!key[modifier]) {
29
+ return false;
30
+ }
31
+ if (specialKeyFields.has(rest)) {
32
+ return key[rest] === true;
33
+ }
34
+ return input === rest;
35
+ }
36
+ if (specialKeyFields.has(spec)) {
37
+ return key[spec] === true;
38
+ }
39
+ return input === spec;
40
+ }
41
+ function useKeyBindings(handlers, options) {
42
+ const { isActive = true } = options ?? {};
43
+ const handlersRef = useRef(handlers);
44
+ handlersRef.current = handlers;
45
+ useInput(
46
+ useCallback((input, key) => {
47
+ for (const { binding, handler } of handlersRef.current) {
48
+ if (binding.enabled === false) {
49
+ continue;
50
+ }
51
+ const keys = typeof binding.key === "string" ? [binding.key] : binding.key;
52
+ for (const k of keys) {
53
+ if (matchesKey(k, input, key)) {
54
+ handler();
55
+ return;
56
+ }
57
+ }
58
+ }
59
+ }, []),
60
+ { isActive }
61
+ );
62
+ const bindings = useMemo(() => handlers.filter((h) => h.binding.enabled !== false).map((h) => h.binding), [handlers]);
63
+ return { bindings };
64
+ }
65
+
66
+ export { useKeyBindings as default };
@@ -0,0 +1,29 @@
1
+ import { useState, useEffect } from 'react';
2
+ import useMouseContext from './useMouseContext-D-rFy60Q.js';
3
+
4
+ const useMouseAction = () => {
5
+ const mouse = useMouseContext();
6
+ const [action, setAction] = useState(null);
7
+ useEffect(() => {
8
+ const onClickHandler = (_position, clickAction) => {
9
+ setAction(clickAction);
10
+ };
11
+ const onScrollHandler = (_position, scrollAction) => {
12
+ setAction(scrollAction);
13
+ };
14
+ const onDragHandler = (_position, dragAction) => {
15
+ setAction(dragAction);
16
+ };
17
+ mouse.events.on("click", onClickHandler);
18
+ mouse.events.on("scroll", onScrollHandler);
19
+ mouse.events.on("drag", onDragHandler);
20
+ return () => {
21
+ mouse.events.off("click", onClickHandler);
22
+ mouse.events.off("scroll", onScrollHandler);
23
+ mouse.events.off("drag", onDragHandler);
24
+ };
25
+ }, [mouse.events]);
26
+ return action;
27
+ };
28
+
29
+ export { useMouseAction as default };
@@ -0,0 +1,12 @@
1
+ import { useContext } from 'react';
2
+ import { M as MouseContext } from './mouse-context-BUHWKEIe.js';
3
+
4
+ const useMouseContext = () => {
5
+ const context = useContext(MouseContext);
6
+ if (!context) {
7
+ throw new Error("useMouseContext must only be used within children of <MouseProvider/>");
8
+ }
9
+ return context;
10
+ };
11
+
12
+ export { useMouseContext as default };