@visulima/tui 4.0.0 → 4.0.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 (219) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/LICENSE.md +130 -1
  3. package/dist/components/box.d.ts +735 -3
  4. package/dist/components/box.js +1 -1
  5. package/dist/components/canvas.js +1 -1
  6. package/dist/components/cursor.d.ts +2 -3
  7. package/dist/components/cursor.js +1 -1
  8. package/dist/components/error-overview.js +1 -1
  9. package/dist/components/spacer.js +1 -1
  10. package/dist/components/static-render.d.ts +2 -3
  11. package/dist/components/static-render.js +1 -1
  12. package/dist/components/static.d.ts +1 -3
  13. package/dist/components/static.js +1 -1
  14. package/dist/components/text.d.ts +1 -3
  15. package/dist/components/text.js +1 -1
  16. package/dist/components/transform.js +1 -1
  17. package/dist/core/index.js +1 -1
  18. package/dist/ink/canvas/index.d.ts +14 -1
  19. package/dist/ink/canvas/index.js +1 -1
  20. package/dist/ink/hooks/use-animation.js +1 -1
  21. package/dist/ink/hooks/use-app.d.ts +1 -2
  22. package/dist/ink/hooks/use-app.js +1 -1
  23. package/dist/ink/hooks/use-box-metrics.d.ts +2 -3
  24. package/dist/ink/hooks/use-box-metrics.js +1 -1
  25. package/dist/ink/hooks/use-clipboard.js +1 -1
  26. package/dist/ink/hooks/use-color-blindness.js +1 -1
  27. package/dist/ink/hooks/use-console-capture.js +1 -1
  28. package/dist/ink/hooks/use-cursor.d.ts +0 -1
  29. package/dist/ink/hooks/use-cursor.js +1 -1
  30. package/dist/ink/hooks/use-focus-manager.d.ts +0 -1
  31. package/dist/ink/hooks/use-focus-manager.js +1 -1
  32. package/dist/ink/hooks/use-focus.js +1 -1
  33. package/dist/ink/hooks/use-form.js +1 -1
  34. package/dist/ink/hooks/use-hotkey.js +1 -1
  35. package/dist/ink/hooks/use-input.js +2 -2
  36. package/dist/ink/hooks/use-interval.js +1 -1
  37. package/dist/ink/hooks/use-key-bindings.js +1 -1
  38. package/dist/ink/hooks/use-key-chord.js +1 -1
  39. package/dist/ink/hooks/use-paste.js +1 -1
  40. package/dist/ink/hooks/use-persistent-state.js +2 -2
  41. package/dist/ink/hooks/use-scroll-acceleration.js +1 -1
  42. package/dist/ink/hooks/use-scroll-input.js +1 -1
  43. package/dist/ink/hooks/use-stderr.d.ts +0 -1
  44. package/dist/ink/hooks/use-stderr.js +1 -1
  45. package/dist/ink/hooks/use-stdin.d.ts +0 -1
  46. package/dist/ink/hooks/use-stdin.js +1 -1
  47. package/dist/ink/hooks/use-stdout.d.ts +0 -1
  48. package/dist/ink/hooks/use-stdout.js +1 -1
  49. package/dist/ink/hooks/use-stopwatch.js +1 -1
  50. package/dist/ink/hooks/use-terminal-palette.d.ts +1 -1
  51. package/dist/ink/hooks/use-terminal-palette.js +1 -1
  52. package/dist/ink/hooks/use-text-buffer.js +4 -4
  53. package/dist/ink/hooks/use-text-selection.d.ts +3 -4
  54. package/dist/ink/hooks/use-text-selection.js +1 -1
  55. package/dist/ink/hooks/use-timeout.js +1 -1
  56. package/dist/ink/hooks/use-timer.js +1 -1
  57. package/dist/ink/hooks/use-window-size.js +1 -1
  58. package/dist/ink/index.d.ts +23 -15
  59. package/dist/ink/index.js +1 -1
  60. package/dist/ink/mouse/use-element-position.d.ts +2 -3
  61. package/dist/ink/mouse/use-element-position.js +1 -1
  62. package/dist/ink/mouse/use-mouse-action.d.ts +1 -2
  63. package/dist/ink/mouse/use-mouse-action.js +1 -1
  64. package/dist/ink/mouse/use-mouse-position.d.ts +1 -2
  65. package/dist/ink/mouse/use-mouse-position.js +1 -1
  66. package/dist/ink/mouse/use-mouse.d.ts +1 -2
  67. package/dist/ink/mouse/use-mouse.js +1 -1
  68. package/dist/ink/mouse/use-on-mouse-click.d.ts +3 -4
  69. package/dist/ink/mouse/use-on-mouse-click.js +1 -1
  70. package/dist/ink/mouse/use-on-mouse-hover.d.ts +2 -3
  71. package/dist/ink/mouse/use-on-mouse-hover.js +1 -1
  72. package/dist/ink/mouse/use-on-mouse-state.d.ts +2 -3
  73. package/dist/ink/mouse/use-on-mouse-state.js +1 -1
  74. package/dist/ink/public/cursor.d.ts +22 -1
  75. package/dist/ink/public/cursor.js +1 -1
  76. package/dist/ink/public/dom.d.ts +2 -3
  77. package/dist/ink/public/highlighter.d.ts +49 -3
  78. package/dist/ink/public/highlighter.js +1 -1
  79. package/dist/ink/public/input.d.ts +19 -1
  80. package/dist/ink/public/styles.d.ts +1 -3
  81. package/dist/ink/public/utils.d.ts +8 -1
  82. package/dist/ink/public/utils.js +1 -1
  83. package/dist/packem_shared/COLOR_BLINDNESS_COMPENSATION-CaI93Rjj.js +1 -0
  84. package/dist/packem_shared/Cell-CbDQUAjW.js +1 -0
  85. package/dist/packem_shared/DevTools-DKYxA_wO.js +1 -0
  86. package/dist/packem_shared/FocusContext-mWFBWdli.js +1 -0
  87. package/dist/packem_shared/Fullscreen-DKKMVbkg.js +1 -0
  88. package/dist/packem_shared/{IMECompositionBuffer-VhC9HRCv.js → IMECompositionBuffer-uYiAz3jI.js} +1 -1
  89. package/dist/packem_shared/{InputParser-CUAGWKQQ.js → InputParser-O4nyWUuQ.js} +2 -2
  90. package/dist/packem_shared/{KEY-C--kOw41.js → KEY-DGV_trPu.js} +1 -1
  91. package/dist/packem_shared/LayoutNode-D4i45GQM.js +1 -0
  92. package/dist/packem_shared/MouseProvider-BSTuFqG9.js +1 -0
  93. package/dist/packem_shared/NAMED_COLORS-DvfPALxN.js +1 -0
  94. package/dist/packem_shared/Range-CMqYzhij.js +1 -0
  95. package/dist/packem_shared/Renderer-Dg5_-6TF.js +1 -0
  96. package/dist/packem_shared/ResizeObserver-ClWoCtGV.js +1 -0
  97. package/dist/packem_shared/Static-sqw4n2Fv.js +1 -0
  98. package/dist/packem_shared/{TuiApp-CCVaiKbf.js → TuiApp-D1How6sn.js} +1 -1
  99. package/dist/packem_shared/TuiContext-Bbq9JRCu.js +3 -0
  100. package/dist/packem_shared/animation-context-Icwf5tBE.js +1 -0
  101. package/dist/packem_shared/ansi-parser-CysVDsNz.js +1 -0
  102. package/dist/packem_shared/ansi-tokenizer-D5k5LzXg.js +1 -0
  103. package/dist/packem_shared/{app-context-DTm1_XBA.js → app-context-CfgsW0CV.js} +1 -1
  104. package/dist/packem_shared/{app-context.d-DMLw5Nxy.d.ts → app-context.d-DAF6oxKX.d.ts} +0 -1
  105. package/dist/packem_shared/{boxes-DyY_LXCi.js → boxes-CidWUOVk.js} +1 -1
  106. package/dist/packem_shared/buildCursorOnlySequence-D24o0D7-.js +1 -0
  107. package/dist/packem_shared/calculateScroll-jdxVlcmq.js +1 -0
  108. package/dist/packem_shared/calculateScrollbarLayout-DCVwJ0Cl.js +1 -0
  109. package/dist/packem_shared/clearOsc52-olbKg5Nw.js +1 -0
  110. package/dist/packem_shared/clearStringWidthCache-EWeHQcEb.js +1 -0
  111. package/dist/packem_shared/colorize-Dsbi0Wr0.js +1 -0
  112. package/dist/packem_shared/createBrailleGrid-B5uefhi4.js +1 -0
  113. package/dist/packem_shared/createCanvasBuffer-C7w6bGe4.js +1 -0
  114. package/dist/packem_shared/createInlineLoop-BPlBAXqd.js +2 -0
  115. package/dist/packem_shared/createScreen-BBvF-ZyU.js +3 -0
  116. package/dist/packem_shared/cursor-context-wLwblh2o.js +1 -0
  117. package/dist/packem_shared/{disposeHighlighter-D9OkrhwX.js → disposeHighlighter-BS4lDPP8.js} +1 -1
  118. package/dist/packem_shared/dom-xpeZzKuf.js +1 -0
  119. package/dist/packem_shared/{dom.d-CLGlidfI.d.ts → dom.d-BV2bnRcH.d.ts} +2 -3
  120. package/dist/packem_shared/{focus-context-CsT69klR.js → focus-context-8h3hmNxy.js} +1 -1
  121. package/dist/packem_shared/formatDuration-DcLMLZro.js +1 -0
  122. package/dist/packem_shared/getPathToRoot-DBqZKIzf.js +1 -0
  123. package/dist/packem_shared/index-7Qq5uu0d.js +75 -0
  124. package/dist/packem_shared/isIntersecting-C8tJIsvH.js +1 -0
  125. package/dist/packem_shared/isTerminalPaletteQuerySupported-X6YXYjSp.js +1 -0
  126. package/dist/packem_shared/kittyFlags-jpd_IAFL.js +1 -0
  127. package/dist/packem_shared/load-native-root-binding-B1WunHs4.js +1 -0
  128. package/dist/packem_shared/measure-element-pHwUPovG.js +1 -0
  129. package/dist/packem_shared/measure-text-DtlK6gar.js +3 -0
  130. package/dist/packem_shared/mouse-context-BEnaR3tG.js +1 -0
  131. package/dist/packem_shared/{mouse-context.d-W-nszUps.d.ts → mouse-context.d-5TGeZyIF.d.ts} +1 -2
  132. package/dist/packem_shared/parseSgrMouse-CHYo9gs6.js +1 -0
  133. package/dist/packem_shared/probe-terminal-mMqobBjP.js +1 -0
  134. package/dist/packem_shared/processLayout-DYdx6C3A.js +2 -0
  135. package/dist/packem_shared/reconciler-BPm7fZa6.js +1 -0
  136. package/dist/packem_shared/reconciler-DXp9qy6k.js +1 -0
  137. package/dist/packem_shared/render-B_NqU7AH.js +1 -0
  138. package/dist/packem_shared/render-DGiSemZa.js +22 -0
  139. package/dist/packem_shared/{render.d-DjQhFsiN.d.ts → render.d-tqP_-Le_.d.ts} +43 -43
  140. package/dist/packem_shared/renderToString-BLr8QvYq.js +2 -0
  141. package/dist/packem_shared/renderToString-D66vRHLQ.js +4 -0
  142. package/dist/packem_shared/renderToken-DFWLdYz_.js +1 -0
  143. package/dist/packem_shared/renderTreeToBuffer-MEHvKJc-.js +2 -0
  144. package/dist/packem_shared/renderer-D97BmOBO.js +17 -0
  145. package/dist/packem_shared/{selection.d-BSAWa4ey.d.ts → selection.d-DCMpXtpU.d.ts} +1 -1
  146. package/dist/packem_shared/squashTextNodesWithMap-CUJZZeW3.js +1 -0
  147. package/dist/packem_shared/stderr-context-Xeacf3Ir.js +1 -0
  148. package/dist/packem_shared/stdin-context-Ceh-YuU1.js +1 -0
  149. package/dist/packem_shared/stdout-context-BhxOwdNK.js +1 -0
  150. package/dist/packem_shared/{styles.d-CKGQFfm4.d.ts → styles.d-BCZOPl_g.d.ts} +37 -3
  151. package/dist/packem_shared/terminal-palette.d-DSgSpnMs.d.ts +44 -0
  152. package/dist/packem_shared/text-width-BXmBaLDv.js +2 -0
  153. package/dist/packem_shared/utils-BlDbvbdr.js +1 -0
  154. package/dist/packem_shared/waitFor-BjdYqkin.js +4 -0
  155. package/dist/packem_shared/wrapOrTruncateStyledLine-Gm21gYDr.js +3 -0
  156. package/dist/react/index.d.ts +1 -1
  157. package/dist/react/index.js +1 -1
  158. package/dist/testing/index.d.ts +4 -6
  159. package/dist/testing/index.js +1 -1
  160. package/index.js +26 -26
  161. package/package.json +13 -13
  162. package/dist/packem_shared/COLOR_BLINDNESS_COMPENSATION-Ilnoyeqc.js +0 -1
  163. package/dist/packem_shared/Cell-BrXn3jxY.js +0 -1
  164. package/dist/packem_shared/DevTools-CZ-O0Ckm.js +0 -1
  165. package/dist/packem_shared/FocusContext-BWFqf9kb.js +0 -1
  166. package/dist/packem_shared/Fullscreen-BRhuBLBh.js +0 -1
  167. package/dist/packem_shared/LayoutNode-LPYsuzBg.js +0 -1
  168. package/dist/packem_shared/MouseProvider-DOcWCRVq.js +0 -1
  169. package/dist/packem_shared/NAMED_COLORS-82DpREQV.js +0 -1
  170. package/dist/packem_shared/Range-BsVYNWtg.js +0 -1
  171. package/dist/packem_shared/Renderer-BeS49FNq.js +0 -1
  172. package/dist/packem_shared/ResizeObserver-BI9bDy-j.js +0 -1
  173. package/dist/packem_shared/Static-DSzsElz4.js +0 -1
  174. package/dist/packem_shared/TuiContext-BNmP0lMY.js +0 -3
  175. package/dist/packem_shared/animation-context-DW3p-vpk.js +0 -1
  176. package/dist/packem_shared/ansi-parser-DlgLtOYO.js +0 -1
  177. package/dist/packem_shared/ansi-tokenizer-BU67A126.js +0 -1
  178. package/dist/packem_shared/buildCursorOnlySequence-CerkmjWt.js +0 -1
  179. package/dist/packem_shared/calculateScroll-D4Y_JR4H.js +0 -1
  180. package/dist/packem_shared/calculateScrollbarLayout-Lf6i24c9.js +0 -1
  181. package/dist/packem_shared/clearOsc52-BUpnQOav.js +0 -1
  182. package/dist/packem_shared/clearStringWidthCache-DKFjfJuB.js +0 -1
  183. package/dist/packem_shared/colorize-DU4YZkp3.js +0 -1
  184. package/dist/packem_shared/createBrailleGrid-BTOQrujS.js +0 -1
  185. package/dist/packem_shared/createCanvasBuffer-CL6sAM-A.js +0 -1
  186. package/dist/packem_shared/createInlineLoop-BMDYJkRp.js +0 -2
  187. package/dist/packem_shared/createScreen-DoYpyL0V.js +0 -3
  188. package/dist/packem_shared/cursor-context-CFviBqPX.js +0 -1
  189. package/dist/packem_shared/dom-rphpG0kf.js +0 -1
  190. package/dist/packem_shared/formatDuration-Bdx4ZgRh.js +0 -1
  191. package/dist/packem_shared/getPathToRoot-PDJeqiEH.js +0 -1
  192. package/dist/packem_shared/index-Dl9I2_QH.js +0 -75
  193. package/dist/packem_shared/isIntersecting-Bo2npvMR.js +0 -1
  194. package/dist/packem_shared/isTerminalPaletteQuerySupported-BYzmqq9-.js +0 -1
  195. package/dist/packem_shared/kittyFlags-g8ALyoCU.js +0 -1
  196. package/dist/packem_shared/load-native-root-binding-CxJnHcac.js +0 -1
  197. package/dist/packem_shared/measure-element-D4M9iSYp.js +0 -1
  198. package/dist/packem_shared/measure-text-B7juNq4Y.js +0 -3
  199. package/dist/packem_shared/mouse-context-DaARgUu1.js +0 -1
  200. package/dist/packem_shared/parseSgrMouse-bUrqPrh-.js +0 -1
  201. package/dist/packem_shared/processLayout-I83k6vXE.js +0 -2
  202. package/dist/packem_shared/reconciler-D4fi5NfR.js +0 -1
  203. package/dist/packem_shared/reconciler-DkwOtC5B.js +0 -1
  204. package/dist/packem_shared/render-CPVY5vpQ.js +0 -1
  205. package/dist/packem_shared/render-CvhjGwOg.js +0 -24
  206. package/dist/packem_shared/renderToString-B1LgWcJe.js +0 -4
  207. package/dist/packem_shared/renderToString-Df6HST7u.js +0 -2
  208. package/dist/packem_shared/renderToken-DjiQ6dfv.js +0 -1
  209. package/dist/packem_shared/renderTreeToBuffer-BpSD0sBJ.js +0 -2
  210. package/dist/packem_shared/renderer-Cs0KEr1o.js +0 -17
  211. package/dist/packem_shared/squashTextNodesWithMap-BmUSBPfc.js +0 -1
  212. package/dist/packem_shared/stderr-context-CR2LLec6.js +0 -1
  213. package/dist/packem_shared/stdin-context-BjMA9Sbi.js +0 -1
  214. package/dist/packem_shared/stdout-context-DAAlQct2.js +0 -1
  215. package/dist/packem_shared/terminal-palette.d-JbWHISW-.d.ts +0 -19
  216. package/dist/packem_shared/text-width-e49vlbQH.js +0 -2
  217. package/dist/packem_shared/utils-CVgM8kTn.js +0 -1
  218. package/dist/packem_shared/waitFor-CTAki32d.js +0 -4
  219. package/dist/packem_shared/wrapOrTruncateStyledLine-46W8bTtv.js +0 -3
@@ -1,11 +1,10 @@
1
1
  import { RefObject } from 'react';
2
- import { D as DOMElement } from "../../packem_shared/dom.d-CLGlidfI.js";
3
- import { S as Selection } from "../../packem_shared/selection.d-BSAWa4ey.js";
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-BV2bnRcH.js";
3
+ import { S as Selection } from "../../packem_shared/selection.d-DCMpXtpU.js";
4
4
  import 'yoga-layout';
5
5
  import "../public/cursor.js";
6
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
6
7
  import '@visulima/colorize';
7
- import "../../packem_shared/styles.d-CKGQFfm4.js";
8
- import 'type-fest';
9
8
  type UseTextSelectionOptions = {
10
9
  /**
11
10
  * Automatically copy selected text to clipboard when selection changes.
@@ -1 +1 @@
1
- import{useRef as f,useState as p,useEffect as R,useCallback as g,useMemo as v}from"react";import{Selection as x,Range as A}from"../../packem_shared/Range-BsVYNWtg.js";import C from"./use-clipboard.js";const T=(o,d={})=>{const{copyOnSelect:c=!1,isActive:n=!0,onSelectionChange:r}=d,{copy:s}=C(),e=f(new x).current,[l,S]=p(""),a=f(r);a.current=r,R(()=>n?e.onChange(()=>{const t=e.toString();S(t),a.current?.(t),c&&t.length>0&&s(t)}):void 0,[n,e,c,s]);const u=g(()=>{const t=o.current;if(!t||!n)return;e.removeAllRanges();const m=new A;m.selectNodeContents(t),e.addRange(m)},[o,n,e]),i=g(()=>{e.removeAllRanges()},[e]);return v(()=>({clearSelection:i,selectAll:u,selectedText:l,selection:e}),[i,l,u,e])};export{T as default,T as useTextSelection};
1
+ import{useRef as g,useState as d,useEffect as p,useCallback as m,useMemo as b}from"react";import{Selection as C,Range as x}from"../../packem_shared/Range-CMqYzhij.js";import h from"./use-clipboard.js";const y=(c,S={})=>{const{copyOnSelect:s=!1,isActive:n=!0,onSelectionChange:r}=S,{copy:l}=h(),e=g(new C).current,[u,R]=d(""),i=g(r);i.current=r,p(()=>n?e.onChange(()=>{const t=e.toString();R(t),i.current?.(t),s&&t.length>0&&l(t)}):void 0,[n,e,s,l]);const a=m(()=>{const o=c.current;if(!o||!n)return;e.removeAllRanges();const t=new x;t.selectNodeContents(o),e.addRange(t)},[c,n,e]),f=m(()=>{e.removeAllRanges()},[e]);return b(()=>({clearSelection:f,selectAll:a,selectedText:u,selection:e}),[f,u,a,e])};export{y as default,y as useTextSelection};
@@ -1 +1 @@
1
- import{useRef as o,useState as d,useCallback as i,useEffect as v}from"react";const p=(u,r,s)=>{const{isActive:c=!0}=s??{},n=o(u),e=o(void 0),[a,m]=d(0);n.current=u;const f=i(()=>{e.current!==void 0&&(clearTimeout(e.current),e.current=void 0)},[]),l=i(()=>{m(t=>t+1)},[]);return v(()=>{if(!c||r<0||!Number.isFinite(r))return;const t=setTimeout(()=>{n.current()},r);return e.current=t,()=>{clearTimeout(t),e.current=void 0}},[r,c,a]),{cancel:f,reset:l}};export{p as default,p as useTimeout};
1
+ import{useRef as o,useState as d,useCallback as i,useEffect as p}from"react";const b=(u,t,s)=>{const{isActive:c=!0}=s??{},n=o(u),e=o(void 0),[m,f]=d(0);n.current=u;const v=i(()=>{e.current!==void 0&&(clearTimeout(e.current),e.current=void 0)},[]),a=i(()=>{f(r=>r+1)},[]);return p(()=>{if(!c||t<0||!Number.isFinite(t))return;const r=setTimeout(()=>{n.current()},t);return e.current=r,()=>{clearTimeout(r),e.current=void 0}},[t,c,m]),{cancel:v,reset:a}};export{b as default,b as useTimeout};
@@ -1 +1 @@
1
- import{useState as x,useRef as f,useEffect as S,useCallback as a}from"react";import b from"./use-animation.js";function A(c){const{autoStart:l=!1,duration:m,interval:g=1e3,onTimeout:u}=c,[r,e]=x(l),i=f(u);i.current=u;const n=f(!1),{reset:o,time:p}=b({interval:g,isActive:r}),s=Math.max(0,m-p),t=s<=0;S(()=>{t&&r&&(e(!1),n.current||(n.current=!0,i.current?.()))},[t,r]);const d=a(()=>{t||e(!0)},[t]),v=a(()=>{e(!1)},[]),h=a(()=>{e(T=>T?!1:s>0)},[s]),R=a(()=>{e(!1),n.current=!1,o()},[o]);return{isFinished:t,isRunning:r,remaining:s,reset:R,start:d,stop:v,toggle:h}}export{A as default,A as useTimer};
1
+ import{useState as v,useRef as f,useEffect as x,useCallback as r}from"react";import S from"./use-animation.js";function C(c){const{autoStart:l=!1,duration:m,interval:g=1e3,onTimeout:o}=c,[n,t]=v(l),u=f(o);u.current=o;const i=f(!1),{reset:a,time:R}=S({interval:g,isActive:n}),s=Math.max(0,m-R),e=s<=0;x(()=>{e&&n&&(t(!1),i.current||(i.current=!0,u.current?.()))},[e,n]);const d=r(()=>{e||t(!0)},[e]),p=r(()=>{t(!1)},[]),A=r(()=>{t(h=>h?!1:s>0)},[s]),T=r(()=>{t(!1),i.current=!1,a()},[a]);return{isFinished:e,isRunning:n,remaining:s,reset:T,start:d,stop:p,toggle:A}}export{C as default,C as useTimer};
@@ -1 +1 @@
1
- import{useState as i,useEffect as n}from"react";import{g as o}from"../../packem_shared/utils-CVgM8kTn.js";import f from"./use-stdout.js";const c=()=>{const{stdout:e}=f(),[r,s]=i(()=>o(e));return n(()=>{const t=()=>{s(o(e))};return e.on("resize",t),()=>{e.off("resize",t)}},[e]),r};export{c as default,c as useWindowSize};
1
+ import{useState as i,useEffect as n}from"react";import{g as o}from"../../packem_shared/utils-BlDbvbdr.js";import u from"./use-stdout.js";const c=()=>{const{stdout:e}=u(),[s,r]=i(()=>o(e));return n(()=>{const t=()=>{r(o(e))};return e.on("resize",t),()=>{e.off("resize",t)}},[e]),s};export{c as default,c as useWindowSize};
@@ -1,27 +1,35 @@
1
- export { type C as ClipboardTarget, c as clearOsc52, i as isOsc52Supported, w as writeOsc52 } from "../packem_shared/clipboard.d-nDPQkZ2H.js";
1
+ export {
2
+ /**
3
+ * Public API for the `@visulima/tui` ink entry point.
4
+ *
5
+ * Components and hooks have moved to dedicated subpaths
6
+ * (`@visulima/tui/components/&lt;name>` and `@visulima/tui/hooks/&lt;name>`); this
7
+ * file now exposes only lower-level primitives (clipboard, DOM helpers,
8
+ * layout, measurement, mouse, render, scroll, terminal palette, …).
9
+ */
10
+ type C as ClipboardTarget, c as clearOsc52, i as isOsc52Supported, w as writeOsc52 } from "../packem_shared/clipboard.d-nDPQkZ2H.js";
2
11
  export { b as COLOR_BLINDNESS_COMPENSATION, c as COLOR_BLINDNESS_SIMULATION, type C as ColorBlindnessType, type a as ColorMatrix, I as IDENTITY_MATRIX, d as applyColorMatrix, h as hexToRgb, r as rgbToHex, t as transformHexColor } from "../packem_shared/color-matrix.d-sTqnJ23h.js";
3
- import { D as DOMElement, b as DOMNode, e as StyledLine } from "../packem_shared/dom.d-CLGlidfI.js";
4
- export { R as ResizeObserver, type f as ResizeObserverCallback, g as ResizeObserverEntry, type h as ScrollState, type S as StickyHeader, i as calculateScroll, j as getPathToRoot, k as getScrollHeight, l as getScrollLeft, m as getScrollTop, n as getScrollWidth, o as isNodeSelectable } from "../packem_shared/dom.d-CLGlidfI.js";
5
- export { type I as Instance, type K as KittyFlagName, type a as KittyKeyboardOptions, type R as RenderOptions, k as kittyFlags, b as kittyModifiers, r as render } from "../packem_shared/render.d-DjQhFsiN.js";
6
- import 'node:stream';
7
- export type { CursorPosition } from "./public/cursor.js";
8
- import { e as MouseButton, d as MousePosition } from "../packem_shared/mouse-context.d-W-nszUps.js";
9
- export type { f as MouseAction, a as MouseClickAction, M as MouseContextShape, b as MouseDragAction, g as MouseEvents, c as MouseScrollAction } from "../packem_shared/mouse-context.d-W-nszUps.js";
12
+ import { D as DOMElement, a as DOMNode, S as StyledLine } from "../packem_shared/dom.d-BV2bnRcH.js";
13
+ export { R as ResizeObserver, type b as ResizeObserverCallback, c as ResizeObserverEntry, type d as ScrollState, type e as StickyHeader, f as calculateScroll, g as getPathToRoot, h as getScrollHeight, i as getScrollLeft, j as getScrollTop, k as getScrollWidth, l as isNodeSelectable } from "../packem_shared/dom.d-BV2bnRcH.js";
14
+ export { type I as Instance, type K as KittyFlagName, type a as KittyKeyboardOptions, type R as RenderOptions, k as kittyFlags, b as kittyModifiers, r as render } from "../packem_shared/render.d-tqP_-Le_.js";
10
15
  import React, { PropsWithChildren, ReactNode } from 'react';
16
+ export { R as Range, S as Selection, a as applySelectionToStyledLine, c as comparePoints } from "../packem_shared/selection.d-DCMpXtpU.js";
17
+ export { type T as TerminalPalette, i as isTerminalPaletteQuerySupported, q as queryTerminalPalette } from "../packem_shared/terminal-palette.d-DSgSpnMs.js";
18
+ export type { CursorPosition } from "./public/cursor.js";
19
+ import { M as MouseButton, e as MousePosition } from "../packem_shared/mouse-context.d-5TGeZyIF.js";
20
+ export type { f as MouseAction, a as MouseClickAction, d as MouseContextShape, b as MouseDragAction, g as MouseEvents, c as MouseScrollAction } from "../packem_shared/mouse-context.d-5TGeZyIF.js";
21
+ export { type UseOnMouseClickOptions, useOnMouseClick } from "./mouse/use-on-mouse-click.js";
11
22
  export { useElementDimensions, useElementPosition } from "./mouse/use-element-position.js";
12
- export { default as useMouseContext } from "./mouse/use-mouse.js";
13
23
  export { default as useMouseAction } from "./mouse/use-mouse-action.js";
24
+ export { default as useMouseContext } from "./mouse/use-mouse.js";
14
25
  export { default as useMousePosition } from "./mouse/use-mouse-position.js";
15
- export { type UseOnMouseClickOptions, useOnMouseClick } from "./mouse/use-on-mouse-click.js";
16
26
  export { default as useOnMouseHover } from "./mouse/use-on-mouse-hover.js";
17
27
  export { default as useOnMouseState } from "./mouse/use-on-mouse-state.js";
18
- export { R as Range, S as Selection, a as applySelectionToStyledLine, c as comparePoints } from "../packem_shared/selection.d-BSAWa4ey.js";
19
- export { type T as TerminalPalette, i as isTerminalPaletteQuerySupported, q as queryTerminalPalette } from "../packem_shared/terminal-palette.d-JbWHISW-.js";
28
+ import 'node:stream';
20
29
  import 'yoga-layout';
30
+ import "../packem_shared/styles.d-BCZOPl_g.js";
21
31
  import '@visulima/colorize';
22
- import "../packem_shared/styles.d-CKGQFfm4.js";
23
- import 'type-fest';
24
- import "../packem_shared/app-context.d-DMLw5Nxy.js";
32
+ import "../packem_shared/app-context.d-DAF6oxKX.js";
25
33
  import 'node:events';
26
34
  /**
27
35
  * Detect whether a string contains non-ASCII characters that are likely
package/dist/ink/index.js CHANGED
@@ -1 +1 @@
1
- import{clearOsc52 as o,isOsc52Supported as r,writeOsc52 as a}from"../packem_shared/clearOsc52-BUpnQOav.js";import{COLOR_BLINDNESS_COMPENSATION as l,COLOR_BLINDNESS_SIMULATION as i,IDENTITY_MATRIX as n,applyColorMatrix as u,hexToRgb as f,rgbToHex as p,transformHexColor as c}from"../packem_shared/COLOR_BLINDNESS_COMPENSATION-Ilnoyeqc.js";import{g as d,i as x}from"../packem_shared/dom-rphpG0kf.js";import{IMECompositionBuffer as S,isIMEInput as h}from"../packem_shared/IMECompositionBuffer-VhC9HRCv.js";import{kittyFlags as M,kittyModifiers as O}from"../packem_shared/kittyFlags-g8ALyoCU.js";import{processLayout as I}from"../packem_shared/processLayout-I83k6vXE.js";import{c as b,a as C,b as E,g as R,d as N,e as B,f as P,h as H,i as v,j as W,k,l as A,R as _}from"../packem_shared/measure-element-D4M9iSYp.js";import{c as F,a as z,i as q,s as w,b as j,t as Q}from"../packem_shared/measure-text-B7juNq4Y.js";import{default as V}from"../packem_shared/render-CvhjGwOg.js";import{default as Y}from"../packem_shared/renderToString-B1LgWcJe.js";import{default as J,ResizeObserverEntry as K}from"../packem_shared/ResizeObserver-BI9bDy-j.js";import{calculateScroll as $,getScrollHeight as ee,getScrollLeft as te,getScrollTop as oe,getScrollWidth as re}from"../packem_shared/calculateScroll-D4Y_JR4H.js";import{Range as se,Selection as le,applySelectionToStyledLine as ie,comparePoints as ne}from"../packem_shared/Range-BsVYNWtg.js";import{squashTextNodesWithMap as fe}from"../packem_shared/squashTextNodesWithMap-BmUSBPfc.js";import{isTerminalPaletteQuerySupported as ce,queryTerminalPalette as me}from"../packem_shared/isTerminalPaletteQuerySupported-BYzmqq9-.js";import{wrapOrTruncateStyledLine as xe}from"../packem_shared/wrapOrTruncateStyledLine-46W8bTtv.js";import{default as Se}from"../packem_shared/Fullscreen-BRhuBLBh.js";import{default as Te}from"../packem_shared/MouseProvider-DOcWCRVq.js";import{default as Oe}from"../packem_shared/isIntersecting-Bo2npvMR.js";import{default as Ie}from"./mouse/use-mouse-action.js";import{default as be}from"./mouse/use-mouse.js";import{default as Ee}from"./mouse/use-mouse-position.js";import{default as Ne}from"./mouse/use-on-mouse-hover.js";import{default as Pe}from"./mouse/use-on-mouse-state.js";import{d as ve}from"../packem_shared/ansi-parser-DlgLtOYO.js";import{useElementDimensions as ke,useElementPosition as Ae}from"./mouse/use-element-position.js";import{useOnMouseClick as De}from"./mouse/use-on-mouse-click.js";export{l as COLOR_BLINDNESS_COMPENSATION,i as COLOR_BLINDNESS_SIMULATION,Se as Fullscreen,n as IDENTITY_MATRIX,S as IMECompositionBuffer,Te as MouseProvider,se as Range,J as ResizeObserver,K as ResizeObserverEntry,le as Selection,u as applyColorMatrix,ie as applySelectionToStyledLine,$ as calculateScroll,b as calculateScrollbarLayout,C as calculateScrollbarThumb,o as clearOsc52,F as clearStringWidthCache,z as clearStyledLineCache,E as collectSortedFragments,ne as comparePoints,R as getAddedScrollHeight,N as getBoundingBox,B as getHorizontalScrollbarBoundingBox,P as getInnerHeight,H as getInnerWidth,d as getPathToRoot,v as getRelativeLeft,W as getRelativeTop,ee as getScrollHeight,te as getScrollLeft,oe as getScrollTop,re as getScrollWidth,k as getText,A as getVerticalScrollbarBoundingBox,f as hexToRgb,q as inkCharacterWidth,h as isIMEInput,Oe as isIntersecting,x as isNodeSelectable,r as isOsc52Supported,ce as isTerminalPaletteQuerySupported,M as kittyFlags,O as kittyModifiers,_ as measureElement,ve as parseSgrMouse,I as processLayout,me as queryTerminalPalette,V as render,Y as renderToString,p as rgbToHex,w as setEnableStyledLineCache,j as setStringWidthFunction,fe as squashTextNodesWithMap,Q as toStyledLine,c as transformHexColor,ke as useElementDimensions,Ae as useElementPosition,Ie as useMouseAction,be as useMouseContext,Ee as useMousePosition,De as useOnMouseClick,Ne as useOnMouseHover,Pe as useOnMouseState,xe as wrapOrTruncateStyledLine,a as writeOsc52};
1
+ import{clearOsc52 as o,isOsc52Supported as r,writeOsc52 as a}from"../packem_shared/clearOsc52-olbKg5Nw.js";import{COLOR_BLINDNESS_COMPENSATION as l,COLOR_BLINDNESS_SIMULATION as i,IDENTITY_MATRIX as n,applyColorMatrix as u,hexToRgb as f,rgbToHex as p,transformHexColor as c}from"../packem_shared/COLOR_BLINDNESS_COMPENSATION-CaI93Rjj.js";import{g as d,i as x}from"../packem_shared/dom-xpeZzKuf.js";import{IMECompositionBuffer as S,isIMEInput as h}from"../packem_shared/IMECompositionBuffer-uYiAz3jI.js";import{kittyFlags as M,kittyModifiers as O}from"../packem_shared/kittyFlags-jpd_IAFL.js";import{processLayout as I}from"../packem_shared/processLayout-DYdx6C3A.js";import{c as b,a as C,b as E,g as N,d as R,e as B,f as P,h as H,i as v,j as W,k,l as A,m as _}from"../packem_shared/measure-element-pHwUPovG.js";import{c as F,a as z,i as q,s as w,b as j,t as Q}from"../packem_shared/measure-text-DtlK6gar.js";import{default as V}from"../packem_shared/render-DGiSemZa.js";import{default as Y}from"../packem_shared/renderToString-D66vRHLQ.js";import{default as J,ResizeObserverEntry as K}from"../packem_shared/ResizeObserver-ClWoCtGV.js";import{calculateScroll as $,getScrollHeight as ee,getScrollLeft as te,getScrollTop as oe,getScrollWidth as re}from"../packem_shared/calculateScroll-jdxVlcmq.js";import{Range as se,Selection as le,applySelectionToStyledLine as ie,comparePoints as ne}from"../packem_shared/Range-CMqYzhij.js";import{squashTextNodesWithMap as fe}from"../packem_shared/squashTextNodesWithMap-CUJZZeW3.js";import{isTerminalPaletteQuerySupported as ce,queryTerminalPalette as me}from"../packem_shared/isTerminalPaletteQuerySupported-X6YXYjSp.js";import{wrapOrTruncateStyledLine as xe}from"../packem_shared/wrapOrTruncateStyledLine-Gm21gYDr.js";import{default as Se}from"../packem_shared/Fullscreen-DKKMVbkg.js";import{default as Te}from"../packem_shared/MouseProvider-BSTuFqG9.js";import{default as Oe}from"../packem_shared/isIntersecting-C8tJIsvH.js";import{default as Ie}from"./mouse/use-mouse-action.js";import{default as be}from"./mouse/use-mouse.js";import{default as Ee}from"./mouse/use-mouse-position.js";import{default as Re}from"./mouse/use-on-mouse-hover.js";import{default as Pe}from"./mouse/use-on-mouse-state.js";import{p as ve}from"../packem_shared/ansi-parser-CysVDsNz.js";import{useElementDimensions as ke,useElementPosition as Ae}from"./mouse/use-element-position.js";import{useOnMouseClick as De}from"./mouse/use-on-mouse-click.js";export{l as COLOR_BLINDNESS_COMPENSATION,i as COLOR_BLINDNESS_SIMULATION,Se as Fullscreen,n as IDENTITY_MATRIX,S as IMECompositionBuffer,Te as MouseProvider,se as Range,J as ResizeObserver,K as ResizeObserverEntry,le as Selection,u as applyColorMatrix,ie as applySelectionToStyledLine,$ as calculateScroll,b as calculateScrollbarLayout,C as calculateScrollbarThumb,o as clearOsc52,F as clearStringWidthCache,z as clearStyledLineCache,E as collectSortedFragments,ne as comparePoints,N as getAddedScrollHeight,R as getBoundingBox,B as getHorizontalScrollbarBoundingBox,P as getInnerHeight,H as getInnerWidth,d as getPathToRoot,v as getRelativeLeft,W as getRelativeTop,ee as getScrollHeight,te as getScrollLeft,oe as getScrollTop,re as getScrollWidth,k as getText,A as getVerticalScrollbarBoundingBox,f as hexToRgb,q as inkCharacterWidth,h as isIMEInput,Oe as isIntersecting,x as isNodeSelectable,r as isOsc52Supported,ce as isTerminalPaletteQuerySupported,M as kittyFlags,O as kittyModifiers,_ as measureElement,ve as parseSgrMouse,I as processLayout,me as queryTerminalPalette,V as render,Y as renderToString,p as rgbToHex,w as setEnableStyledLineCache,j as setStringWidthFunction,fe as squashTextNodesWithMap,Q as toStyledLine,c as transformHexColor,ke as useElementDimensions,Ae as useElementPosition,Ie as useMouseAction,be as useMouseContext,Ee as useMousePosition,De as useOnMouseClick,Re as useOnMouseHover,Pe as useOnMouseState,xe as wrapOrTruncateStyledLine,a as writeOsc52};
@@ -1,10 +1,9 @@
1
1
  import { RefObject } from 'react';
2
- import { D as DOMElement } from "../../packem_shared/dom.d-CLGlidfI.js";
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-BV2bnRcH.js";
3
3
  import 'yoga-layout';
4
4
  import "../public/cursor.js";
5
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
5
6
  import '@visulima/colorize';
6
- import "../../packem_shared/styles.d-CKGQFfm4.js";
7
- import 'type-fest';
8
7
  declare const getElementPosition: (node: DOMElement | null) => {
9
8
  left: number;
10
9
  top: number;
@@ -1 +1 @@
1
- import{useState as i,useEffect as r}from"react";const u=e=>{let t=e,n=1,s=1;for(;t;){if(!t.yogaNode)return{left:n,top:s};const o=t.yogaNode.getComputedLayout();n+=o.left,s+=o.top,t=t.parentNode}return{left:n,top:s}},f=e=>{if(e)return u(e)},a=e=>{const t=e?.yogaNode?.getComputedLayout();if(t)return{height:t.height,width:t.width}},c=(e,t=[])=>{const[n,s]=i({left:0,top:0});return r(()=>{const o=f(e.current);o&&s(o)},t),n},d=(e,t=[])=>{const[n,s]=i({height:0,width:0});return r(()=>{const o=a(e.current);o&&s(o)},t),n};export{a as getElementDimensions,f as getElementPosition,d as useElementDimensions,c as useElementPosition};
1
+ import{useState as s,useEffect as r}from"react";const u=e=>{let t=e,n=1,i=1;for(;t;){if(!t.yogaNode)return{left:n,top:i};const o=t.yogaNode.getComputedLayout();n+=o.left,i+=o.top,t=t.parentNode}return{left:n,top:i}},c=e=>{if(e)return u(e)},l=e=>{const t=e?.yogaNode?.getComputedLayout();if(t)return{height:t.height,width:t.width}},d=(e,t=[])=>{const[n,i]=s({left:0,top:0});return r(()=>{const o=c(e.current);o&&i(o)},t),n},f=(e,t=[])=>{const[n,i]=s({height:0,width:0});return r(()=>{const o=l(e.current);o&&i(o)},t),n};export{l as getElementDimensions,c as getElementPosition,f as useElementDimensions,d as useElementPosition};
@@ -1,5 +1,4 @@
1
- import { a as MouseClickAction, b as MouseDragAction, c as MouseScrollAction } from "../../packem_shared/mouse-context.d-W-nszUps.js";
1
+ import { a as MouseClickAction, b as MouseDragAction, c as MouseScrollAction } from "../../packem_shared/mouse-context.d-5TGeZyIF.js";
2
2
  import 'node:events';
3
- import 'react';
4
3
  declare const useMouseAction: () => MouseClickAction | MouseDragAction | MouseScrollAction | null;
5
4
  export { useMouseAction as default };
@@ -1 +1 @@
1
- import{useState as l,useEffect as i}from"react";import v from"./use-mouse.js";const m=()=>{const e=v(),[f,o]=l(null);return i(()=>{const n=(c,t)=>{o(t)},s=(c,t)=>{o(t)},r=(c,t)=>{o(t)};return e.events.on("click",n),e.events.on("scroll",s),e.events.on("drag",r),()=>{e.events.off("click",n),e.events.off("scroll",s),e.events.off("drag",r)}},[e.events]),f};export{m as default};
1
+ import{useState as i,useEffect as f}from"react";import u from"./use-mouse.js";const d=()=>{const o=u(),[l,n]=i(null);return f(()=>{const t=(r,e)=>{n(e)},s=(r,e)=>{n(e)},c=(r,e)=>{n(e)};return o.events.on("click",t),o.events.on("scroll",s),o.events.on("drag",c),()=>{o.events.off("click",t),o.events.off("scroll",s),o.events.off("drag",c)}},[o.events]),l};export{d as default};
@@ -1,5 +1,4 @@
1
- import { d as MousePosition } from "../../packem_shared/mouse-context.d-W-nszUps.js";
1
+ import { e as MousePosition } from "../../packem_shared/mouse-context.d-5TGeZyIF.js";
2
2
  import 'node:events';
3
- import 'react';
4
3
  declare const useMousePosition: () => MousePosition;
5
4
  export { useMousePosition as default };
@@ -1 +1 @@
1
- import{useState as i,useEffect as r}from"react";import p from"./use-mouse.js";const x=()=>{const t=p(),[n,s]=i({x:t.position.x,y:t.position.y});return r(()=>{const o=e=>{s({x:e.x,y:e.y})};return t.events.on("position",o),()=>{t.events.off("position",o)}},[t.events]),n};export{x as default};
1
+ import{useState as i,useEffect as r}from"react";import u from"./use-mouse.js";const x=()=>{const o=u(),[e,n]=i({x:o.position.x,y:o.position.y});return r(()=>{const t=s=>{n({x:s.x,y:s.y})};return o.events.on("position",t),()=>{o.events.off("position",t)}},[o.events]),e};export{x as default};
@@ -1,5 +1,4 @@
1
- import { M as MouseContextShape } from "../../packem_shared/mouse-context.d-W-nszUps.js";
1
+ import { d as MouseContextShape } from "../../packem_shared/mouse-context.d-5TGeZyIF.js";
2
2
  import 'node:events';
3
- import 'react';
4
3
  declare const useMouseContext: () => MouseContextShape;
5
4
  export { useMouseContext as default };
@@ -1 +1 @@
1
- import{useContext as e}from"react";import{o as r}from"../../packem_shared/mouse-context-DaARgUu1.js";const s=()=>{const o=e(r);if(!o)throw new Error("useMouseContext must only be used within children of <MouseProvider/>");return o};export{s as default};
1
+ import{useContext as e}from"react";import{M as t}from"../../packem_shared/mouse-context-BEnaR3tG.js";const n=()=>{const o=e(t);if(!o)throw new Error("useMouseContext must only be used within children of <MouseProvider/>");return o};export{n as default};
@@ -1,11 +1,10 @@
1
1
  import { RefObject } from 'react';
2
- import { D as DOMElement } from "../../packem_shared/dom.d-CLGlidfI.js";
3
- import { e as MouseButton } from "../../packem_shared/mouse-context.d-W-nszUps.js";
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-BV2bnRcH.js";
3
+ import { M as MouseButton } from "../../packem_shared/mouse-context.d-5TGeZyIF.js";
4
4
  import 'yoga-layout';
5
5
  import "../public/cursor.js";
6
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
6
7
  import '@visulima/colorize';
7
- import "../../packem_shared/styles.d-CKGQFfm4.js";
8
- import 'type-fest';
9
8
  import 'node:events';
10
9
  type UseOnMouseClickOptions = {
11
10
  /** Filter to only respond to a specific mouse button. Defaults to all buttons. */
@@ -1 +1 @@
1
- import{useCallback as l,useEffect as p}from"react";import a from"../../packem_shared/isIntersecting-Bo2npvMR.js";import{getElementPosition as b,getElementDimensions as k}from"./use-element-position.js";import C from"./use-mouse.js";const D=(e,r,n)=>{const s=C(),o=l((t,u,c)=>{if(n?.button&&c!==n.button)return;const i=b(e.current),m=k(e.current);if(!i||!m)return;const f={...i,...m};r(a({element:f,mouse:t})&&u==="press",c)},[e,r,n?.button]);p(()=>{const{events:t}=s;return t.on("click",o),()=>{t.off("click",o)}},[s.events,o])};export{D as useOnMouseClick};
1
+ import{useCallback as f,useEffect as b}from"react";import k from"../../packem_shared/isIntersecting-C8tJIsvH.js";import{getElementPosition as p,getElementDimensions as E}from"./use-element-position.js";import a from"./use-mouse.js";const M=(t,s,n)=>{const r=a(),o=f((e,u,c)=>{if(n?.button&&c!==n.button)return;const i=p(t.current),m=E(t.current);if(!i||!m)return;const l={...i,...m};s(k({element:l,mouse:e})&&u==="press",c)},[t,s,n?.button]);b(()=>{const{events:e}=r;return e.on("click",o),()=>{e.off("click",o)}},[r.events,o])};export{M as useOnMouseClick};
@@ -1,9 +1,8 @@
1
1
  import { RefObject } from 'react';
2
- import { D as DOMElement } from "../../packem_shared/dom.d-CLGlidfI.js";
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-BV2bnRcH.js";
3
3
  import 'yoga-layout';
4
4
  import "../public/cursor.js";
5
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
5
6
  import '@visulima/colorize';
6
- import "../../packem_shared/styles.d-CKGQFfm4.js";
7
- import 'type-fest';
8
7
  declare const useOnMouseHover: (ref: RefObject<DOMElement | null>, onChange: (event: boolean) => void) => void;
9
8
  export { useOnMouseHover as default };
@@ -1 +1 @@
1
- import{useCallback as f,useEffect as c}from"react";import u from"../../packem_shared/isIntersecting-Bo2npvMR.js";import{getElementPosition as l,getElementDimensions as p}from"./use-element-position.js";import a from"./use-mouse.js";const d=(e,n)=>{const r=a(),o=f(t=>{const s=l(e.current),m=p(e.current);if(!s||!m)return;const i={...s,...m};n(u({element:i,mouse:t}))},[e,n]);c(()=>{const{events:t}=r;return t.on("position",o),()=>{t.off("position",o)}},[r.events,o])};export{d as default};
1
+ import{useCallback as u,useEffect as c}from"react";import l from"../../packem_shared/isIntersecting-C8tJIsvH.js";import{getElementPosition as f,getElementDimensions as p}from"./use-element-position.js";import a from"./use-mouse.js";const x=(t,n)=>{const s=a(),o=u(e=>{const i=f(t.current),r=p(t.current);if(!i||!r)return;const m={...i,...r};n(l({element:m,mouse:e}))},[t,n]);c(()=>{const{events:e}=s;return e.on("position",o),()=>{e.off("position",o)}},[s.events,o])};export{x as default};
@@ -1,10 +1,9 @@
1
1
  import { RefObject } from 'react';
2
- import { D as DOMElement } from "../../packem_shared/dom.d-CLGlidfI.js";
2
+ import { D as DOMElement } from "../../packem_shared/dom.d-BV2bnRcH.js";
3
3
  import 'yoga-layout';
4
4
  import "../public/cursor.js";
5
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
5
6
  import '@visulima/colorize';
6
- import "../../packem_shared/styles.d-CKGQFfm4.js";
7
- import 'type-fest';
8
7
  declare const useOnMouseState: (ref: RefObject<DOMElement | null>) => {
9
8
  clicking: boolean;
10
9
  hovering: boolean;
@@ -1 +1 @@
1
- import{useState as r}from"react";import{useOnMouseClick as m}from"./use-on-mouse-click.js";import n from"./use-on-mouse-hover.js";const l=o=>{const[t,e]=r(!1),[s,i]=r(!1);return m(o,i),n(o,e),{clicking:s,hovering:t}};export{l as default};
1
+ import{useState as o}from"react";import{useOnMouseClick as i}from"./use-on-mouse-click.js";import u from"./use-on-mouse-hover.js";const m=e=>{const[s,t]=o(!1),[n,r]=o(!1);return i(e,r),u(e,t),{clicking:n,hovering:s}};export{m as default};
@@ -44,4 +44,25 @@ declare const buildCursorOnlySequence: (input: CursorOnlyInput) => string;
44
44
  * Returns empty string if cursor was not shown.
45
45
  */
46
46
  declare const buildReturnToBottomPrefix: (cursorWasShown: boolean, previousLineCount: number, previousCursorPosition: CursorPosition | undefined) => string;
47
- export { type CursorOnlyInput, type CursorPosition, type CursorShape, buildCursorOnlySequence, buildCursorShapeSequence, buildCursorSuffix, buildReturnToBottom, buildReturnToBottomPrefix, cursorPositionChanged };
47
+ export {
48
+ /**
49
+ * Public cursor surface (`@visulima/tui/cursor`).
50
+ *
51
+ * Escape-sequence builders and shape types used by components that place or
52
+ * reshape the terminal cursor.
53
+ */
54
+ type CursorOnlyInput,
55
+ /**
56
+ * Public cursor surface (`@visulima/tui/cursor`).
57
+ *
58
+ * Escape-sequence builders and shape types used by components that place or
59
+ * reshape the terminal cursor.
60
+ */
61
+ type CursorPosition,
62
+ /**
63
+ * Public cursor surface (`@visulima/tui/cursor`).
64
+ *
65
+ * Escape-sequence builders and shape types used by components that place or
66
+ * reshape the terminal cursor.
67
+ */
68
+ type CursorShape, buildCursorOnlySequence, buildCursorShapeSequence, buildCursorSuffix, buildReturnToBottom, buildReturnToBottomPrefix, cursorPositionChanged };
@@ -1 +1 @@
1
- import{buildCursorOnlySequence as r,buildCursorShapeSequence as e,buildCursorSuffix as i,buildReturnToBottom as t,buildReturnToBottomPrefix as n,cursorPositionChanged as d}from"../../packem_shared/buildCursorOnlySequence-CerkmjWt.js";export{r as buildCursorOnlySequence,e as buildCursorShapeSequence,i as buildCursorSuffix,t as buildReturnToBottom,n as buildReturnToBottomPrefix,d as cursorPositionChanged};
1
+ import{buildCursorOnlySequence as r,buildCursorShapeSequence as e,buildCursorSuffix as i,buildReturnToBottom as t,buildReturnToBottomPrefix as n,cursorPositionChanged as d}from"../../packem_shared/buildCursorOnlySequence-D24o0D7-.js";export{r as buildCursorOnlySequence,e as buildCursorShapeSequence,i as buildCursorSuffix,t as buildReturnToBottom,n as buildReturnToBottomPrefix,d as cursorPositionChanged};
@@ -1,6 +1,5 @@
1
- export type { C as CursorAnchorRef, a as CursorMarker, D as DOMElement, b as DOMNode, c as DOMNodeAttribute, E as ElementNames, N as NodeNames, S as StickyHeader, T as TextName, d as TextNode } from "../../packem_shared/dom.d-CLGlidfI.js";
1
+ export type { C as CursorAnchorRef, m as CursorMarker, D as DOMElement, a as DOMNode, n as DOMNodeAttribute, E as ElementNames, N as NodeNames, e as StickyHeader, T as TextName, o as TextNode } from "../../packem_shared/dom.d-BV2bnRcH.js";
2
2
  import 'yoga-layout';
3
3
  import "./cursor.js";
4
+ import "../../packem_shared/styles.d-BCZOPl_g.js";
4
5
  import '@visulima/colorize';
5
- import "../../packem_shared/styles.d-CKGQFfm4.js";
6
- import 'type-fest';
@@ -1,8 +1,9 @@
1
- import { TokensResult, ThemedToken } from '@shikijs/core';
2
1
  import { HighlighterGeneric } from '@shikijs/types';
2
+ import { TokensResult, ThemedToken } from '@shikijs/core';
3
3
  import { ReactElement } from 'react';
4
- type BundledLanguage = '1c' | '1c-query' | 'abap' | 'actionscript-3' | 'ada' | 'adoc' | 'angular-html' | 'angular-ts' | 'apache' | 'apex' | 'apl' | 'applescript' | 'ara' | 'asciidoc' | 'asm' | 'astro' | 'awk' | 'ballerina' | 'bash' | 'bat' | 'batch' | 'be' | 'beancount' | 'berry' | 'bibtex' | 'bicep' | 'bird' | 'bird2' | 'blade' | 'bsl' | 'c' | 'c#' | 'c++' | 'c3' | 'cadence' | 'cairo' | 'cdc' | 'cjs' | 'clarity' | 'clj' | 'clojure' | 'closure-templates' | 'cmake' | 'cmd' | 'cobol' | 'codeowners' | 'codeql' | 'coffee' | 'coffeescript' | 'common-lisp' | 'console' | 'coq' | 'cpp' | 'cql' | 'crystal' | 'cs' | 'csharp' | 'css' | 'csv' | 'cts' | 'cue' | 'cypher' | 'd' | 'dart' | 'dax' | 'desktop' | 'diff' | 'docker' | 'dockerfile' | 'dotenv' | 'dream-maker' | 'edge' | 'elisp' | 'elixir' | 'elm' | 'emacs-lisp' | 'erb' | 'erl' | 'erlang' | 'f' | 'f#' | 'f03' | 'f08' | 'f18' | 'f77' | 'f90' | 'f95' | 'fennel' | 'fish' | 'fluent' | 'for' | 'fortran-fixed-form' | 'fortran-free-form' | 'fs' | 'fsharp' | 'fsl' | 'ftl' | 'gd' | 'gdresource' | 'gdscript' | 'gdshader' | 'genie' | 'gherkin' | 'git-commit' | 'git-rebase' | 'gjs' | 'gleam' | 'glimmer-js' | 'glimmer-ts' | 'glsl' | 'gn' | 'gnuplot' | 'go' | 'gql' | 'graphql' | 'groovy' | 'gts' | 'hack' | 'haml' | 'handlebars' | 'haskell' | 'haxe' | 'hbs' | 'hcl' | 'hjson' | 'hlsl' | 'hs' | 'html' | 'html-derivative' | 'http' | 'hurl' | 'hxml' | 'hy' | 'imba' | 'ini' | 'jade' | 'java' | 'javascript' | 'jinja' | 'jison' | 'jl' | 'js' | 'json' | 'json5' | 'jsonc' | 'jsonl' | 'jsonnet' | 'jssm' | 'jsx' | 'julia' | 'just' | 'kdl' | 'kotlin' | 'kql' | 'kt' | 'kts' | 'kusto' | 'latex' | 'lean' | 'lean4' | 'less' | 'liquid' | 'lisp' | 'lit' | 'llvm' | 'log' | 'logo' | 'lua' | 'luau' | 'make' | 'makefile' | 'markdown' | 'marko' | 'matlab' | 'mbt' | 'mbti' | 'md' | 'mdc' | 'mdx' | 'mediawiki' | 'mermaid' | 'mips' | 'mipsasm' | 'mjs' | 'mmd' | 'mojo' | 'moonbit' | 'move' | 'mts' | 'nar' | 'narrat' | 'nextflow' | 'nextflow-groovy' | 'nf' | 'nginx' | 'nim' | 'nix' | 'nu' | 'nushell' | 'objc' | 'objective-c' | 'objective-cpp' | 'ocaml' | 'odin' | 'openscad' | 'pascal' | 'perl' | 'perl6' | 'php' | 'pkl' | 'plsql' | 'po' | 'polar' | 'postcss' | 'pot' | 'potx' | 'powerquery' | 'powershell' | 'prisma' | 'prolog' | 'properties' | 'proto' | 'protobuf' | 'ps' | 'ps1' | 'pug' | 'puppet' | 'purescript' | 'py' | 'python' | 'ql' | 'qml' | 'qmldir' | 'qss' | 'r' | 'racket' | 'raku' | 'razor' | 'rb' | 'reg' | 'regex' | 'regexp' | 'rel' | 'riscv' | 'ron' | 'rosmsg' | 'rs' | 'rst' | 'ruby' | 'rust' | 'sas' | 'sass' | 'scad' | 'scala' | 'scheme' | 'scss' | 'sdbl' | 'sh' | 'shader' | 'shaderlab' | 'shell' | 'shellscript' | 'shellsession' | 'smalltalk' | 'solidity' | 'soy' | 'sparql' | 'spl' | 'splunk' | 'sql' | 'ssh-config' | 'stata' | 'styl' | 'stylus' | 'surql' | 'surrealql' | 'svelte' | 'swift' | 'system-verilog' | 'systemd' | 'talon' | 'talonscript' | 'tasl' | 'tcl' | 'templ' | 'terraform' | 'tex' | 'tf' | 'tfvars' | 'toml' | 'tres' | 'ts' | 'ts-tags' | 'tscn' | 'tsp' | 'tsv' | 'tsx' | 'turtle' | 'twig' | 'typ' | 'typescript' | 'typespec' | 'typst' | 'v' | 'vala' | 'vb' | 'verilog' | 'vhdl' | 'vim' | 'viml' | 'vimscript' | 'vue' | 'vue-html' | 'vue-vine' | 'vy' | 'vyper' | 'wasm' | 'wenyan' | 'wgsl' | 'wiki' | 'wikitext' | 'wit' | 'wl' | 'wolfram' | 'xml' | 'xsl' | 'yaml' | 'yml' | 'zenscript' | 'zig' | 'zsh' | '文言';
4
+ type BundledLanguage = '1c' | '1c-query' | 'abap' | 'actionscript' | 'actionscript-3' | 'ada' | 'adoc' | 'ahk' | 'ahk1' | 'ahk2' | 'angular-html' | 'angular-ts' | 'apache' | 'apex' | 'apl' | 'applescript' | 'ara' | 'as3' | 'asciidoc' | 'asm' | 'astro' | 'awk' | 'ballerina' | 'bash' | 'bat' | 'batch' | 'be' | 'beancount' | 'berry' | 'bibtex' | 'bicep' | 'bird' | 'bird2' | 'blade' | 'bsl' | 'c' | 'c#' | 'c++' | 'c3' | 'cadence' | 'cairo' | 'cdc' | 'chapel' | 'chpl' | 'cjs' | 'clarity' | 'clj' | 'clojure' | 'closure-templates' | 'cmake' | 'cmd' | 'cobol' | 'codeowners' | 'codeql' | 'coffee' | 'coffeescript' | 'common-lisp' | 'console' | 'coq' | 'cpp' | 'cql' | 'crystal' | 'cs' | 'csharp' | 'css' | 'csv' | 'cts' | 'cue' | 'cypher' | 'd' | 'dart' | 'dax' | 'desktop' | 'diff' | 'docker' | 'dockerfile' | 'dotenv' | 'dream-maker' | 'edge' | 'elisp' | 'elixir' | 'elm' | 'emacs-lisp' | 'erb' | 'erl' | 'erlang' | 'f' | 'f#' | 'f03' | 'f08' | 'f18' | 'f77' | 'f90' | 'f95' | 'fennel' | 'fish' | 'fluent' | 'for' | 'fortran-fixed-form' | 'fortran-free-form' | 'fs' | 'fsharp' | 'fsl' | 'ftl' | 'gd' | 'gdresource' | 'gdscript' | 'gdshader' | 'genie' | 'gherkin' | 'git-commit' | 'git-rebase' | 'gjs' | 'gleam' | 'glimmer-js' | 'glimmer-ts' | 'glsl' | 'gn' | 'gnuplot' | 'go' | 'gql' | 'graphql' | 'groovy' | 'gts' | 'hack' | 'haml' | 'handlebars' | 'haskell' | 'haxe' | 'hbs' | 'hcl' | 'hjson' | 'hlsl' | 'hs' | 'html' | 'html-derivative' | 'http' | 'hurl' | 'hxml' | 'hy' | 'imba' | 'ini' | 'jade' | 'java' | 'javascript' | 'jinja' | 'jison' | 'jl' | 'js' | 'json' | 'json5' | 'jsonc' | 'jsonl' | 'jsonnet' | 'jssm' | 'jsx' | 'julia' | 'just' | 'justfile' | 'kdl' | 'kotlin' | 'kql' | 'kt' | 'kts' | 'kusto' | 'latex' | 'lean' | 'lean4' | 'less' | 'liquid' | 'lisp' | 'lit' | 'llvm' | 'log' | 'logo' | 'lua' | 'luau' | 'make' | 'makefile' | 'markdown' | 'marko' | 'matlab' | 'mbt' | 'mbti' | 'md' | 'mdc' | 'mdx' | 'mediawiki' | 'mermaid' | 'mips' | 'mipsasm' | 'mjs' | 'mmd' | 'mojo' | 'moonbit' | 'move' | 'mts' | 'nar' | 'narrat' | 'nextflow' | 'nextflow-groovy' | 'nf' | 'nginx' | 'nim' | 'nix' | 'nsis' | 'nu' | 'nushell' | 'objc' | 'objective-c' | 'objective-cpp' | 'ocaml' | 'odin' | 'openscad' | 'org' | 'pascal' | 'perl' | 'perl6' | 'php' | 'pkl' | 'plsql' | 'po' | 'polar' | 'postcss' | 'pot' | 'potx' | 'powerquery' | 'powershell' | 'prisma' | 'prolog' | 'properties' | 'proto' | 'protobuf' | 'ps' | 'ps1' | 'pug' | 'puppet' | 'purescript' | 'pwsh' | 'py' | 'python' | 'ql' | 'qml' | 'qmldir' | 'qss' | 'r' | 'racket' | 'raku' | 'razor' | 'rb' | 'rbs' | 'reg' | 'regex' | 'regexp' | 'rel' | 'riscv' | 'ron' | 'rosmsg' | 'rs' | 'rst' | 'ruby' | 'ruby-signature' | 'rust' | 'sas' | 'sass' | 'scad' | 'scala' | 'scheme' | 'scss' | 'sdbl' | 'sh' | 'shader' | 'shaderlab' | 'shell' | 'shellscript' | 'shellsession' | 'smalltalk' | 'smithy' | 'solidity' | 'soy' | 'sparql' | 'spl' | 'splunk' | 'sql' | 'ssh-config' | 'stata' | 'styl' | 'stylus' | 'surql' | 'surrealql' | 'svelte' | 'swift' | 'system-verilog' | 'systemd' | 'talon' | 'talonscript' | 'tasl' | 'tcl' | 'templ' | 'terraform' | 'tex' | 'tf' | 'tfvars' | 'toml' | 'tres' | 'ts' | 'ts-tags' | 'tscn' | 'tsp' | 'tsv' | 'tsx' | 'turtle' | 'twig' | 'typ' | 'typescript' | 'typespec' | 'typst' | 'v' | 'vala' | 'vb' | 'verilog' | 'vhdl' | 'vim' | 'viml' | 'vimscript' | 'vue' | 'vue-html' | 'vue-vine' | 'vy' | 'vyper' | 'wasm' | 'wenyan' | 'wgsl' | 'wiki' | 'wikitext' | 'wit' | 'wl' | 'wolfram' | 'xml' | 'xsl' | 'yaml' | 'yml' | 'zenscript' | 'zig' | 'zsh' | '文言';
5
5
  type BundledTheme = 'andromeeda' | 'aurora-x' | 'ayu-dark' | 'ayu-light' | 'ayu-mirage' | 'catppuccin-frappe' | 'catppuccin-latte' | 'catppuccin-macchiato' | 'catppuccin-mocha' | 'dark-plus' | 'dracula' | 'dracula-soft' | 'everforest-dark' | 'everforest-light' | 'github-dark' | 'github-dark-default' | 'github-dark-dimmed' | 'github-dark-high-contrast' | 'github-light' | 'github-light-default' | 'github-light-high-contrast' | 'gruvbox-dark-hard' | 'gruvbox-dark-medium' | 'gruvbox-dark-soft' | 'gruvbox-light-hard' | 'gruvbox-light-medium' | 'gruvbox-light-soft' | 'horizon' | 'horizon-bright' | 'houston' | 'kanagawa-dragon' | 'kanagawa-lotus' | 'kanagawa-wave' | 'laserwave' | 'light-plus' | 'material-theme' | 'material-theme-darker' | 'material-theme-lighter' | 'material-theme-ocean' | 'material-theme-palenight' | 'min-dark' | 'min-light' | 'monokai' | 'night-owl' | 'night-owl-light' | 'nord' | 'one-dark-pro' | 'one-light' | 'plastic' | 'poimandres' | 'red' | 'rose-pine' | 'rose-pine-dawn' | 'rose-pine-moon' | 'slack-dark' | 'slack-ochin' | 'snazzy-light' | 'solarized-dark' | 'solarized-light' | 'synthwave-84' | 'tokyo-night' | 'vesper' | 'vitesse-black' | 'vitesse-dark' | 'vitesse-light';
6
+ //#region src/bundle-full.d.ts
6
7
  type Highlighter = HighlighterGeneric<BundledLanguage, BundledTheme>;
7
8
  /**
8
9
  * Get cached tokens or compute and cache them.
@@ -41,4 +42,49 @@ declare const renderTokenLine: (tokens: ThemedToken[]) => ReactElement;
41
42
  * Convert Shiki token lines to Ink React elements with optional line numbers.
42
43
  */
43
44
  declare const tokenLinesToElements: (lines: ThemedToken[][], options?: TokenRenderOptions) => ReactElement;
44
- export { type TokenRenderOptions, disposeHighlighter, getCachedTokens, getHighlighter, isLanguageSupported, renderToken, renderTokenLine, resolveLanguage, tokenLinesToElements };
45
+ export { type TokenRenderOptions,
46
+ /**
47
+ * Public syntax-highlighting surface (`@visulima/tui/highlighter`).
48
+ *
49
+ * Kept as its own entry rather than folded into the root: `shiki` and
50
+ * `@shikijs/langs`/`themes` are optional peers that this module lazy-imports.
51
+ * Anything importing the root entry must not pay for them, so the highlighter
52
+ * stays behind a subpath that only Code/Markdown-style components reach for.
53
+ */
54
+ disposeHighlighter,
55
+ /**
56
+ * Public syntax-highlighting surface (`@visulima/tui/highlighter`).
57
+ *
58
+ * Kept as its own entry rather than folded into the root: `shiki` and
59
+ * `@shikijs/langs`/`themes` are optional peers that this module lazy-imports.
60
+ * Anything importing the root entry must not pay for them, so the highlighter
61
+ * stays behind a subpath that only Code/Markdown-style components reach for.
62
+ */
63
+ getCachedTokens,
64
+ /**
65
+ * Public syntax-highlighting surface (`@visulima/tui/highlighter`).
66
+ *
67
+ * Kept as its own entry rather than folded into the root: `shiki` and
68
+ * `@shikijs/langs`/`themes` are optional peers that this module lazy-imports.
69
+ * Anything importing the root entry must not pay for them, so the highlighter
70
+ * stays behind a subpath that only Code/Markdown-style components reach for.
71
+ */
72
+ getHighlighter,
73
+ /**
74
+ * Public syntax-highlighting surface (`@visulima/tui/highlighter`).
75
+ *
76
+ * Kept as its own entry rather than folded into the root: `shiki` and
77
+ * `@shikijs/langs`/`themes` are optional peers that this module lazy-imports.
78
+ * Anything importing the root entry must not pay for them, so the highlighter
79
+ * stays behind a subpath that only Code/Markdown-style components reach for.
80
+ */
81
+ isLanguageSupported, renderToken, renderTokenLine,
82
+ /**
83
+ * Public syntax-highlighting surface (`@visulima/tui/highlighter`).
84
+ *
85
+ * Kept as its own entry rather than folded into the root: `shiki` and
86
+ * `@shikijs/langs`/`themes` are optional peers that this module lazy-imports.
87
+ * Anything importing the root entry must not pay for them, so the highlighter
88
+ * stays behind a subpath that only Code/Markdown-style components reach for.
89
+ */
90
+ resolveLanguage, tokenLinesToElements };
@@ -1 +1 @@
1
- import{disposeHighlighter as r,getCachedTokens as n,default as g,isLanguageSupported as t,resolveLanguage as i}from"../../packem_shared/disposeHighlighter-D9OkrhwX.js";import{renderToken as a,renderTokenLine as d,tokenLinesToElements as h}from"../../packem_shared/renderToken-DjiQ6dfv.js";export{r as disposeHighlighter,n as getCachedTokens,g as getHighlighter,t as isLanguageSupported,a as renderToken,d as renderTokenLine,i as resolveLanguage,h as tokenLinesToElements};
1
+ import{disposeHighlighter as r,getCachedTokens as n,default as g,isLanguageSupported as t,resolveLanguage as i}from"../../packem_shared/disposeHighlighter-BS4lDPP8.js";import{renderToken as a,renderTokenLine as d,tokenLinesToElements as h}from"../../packem_shared/renderToken-DFWLdYz_.js";export{r as disposeHighlighter,n as getCachedTokens,g as getHighlighter,t as isLanguageSupported,a as renderToken,d as renderTokenLine,i as resolveLanguage,h as tokenLinesToElements};
@@ -11,4 +11,22 @@ declare const isInsertableInput: (input: string, key: {
11
11
  ctrl: boolean;
12
12
  meta: boolean;
13
13
  }) => boolean;
14
- export { isControlCharacter, isInsertableInput };
14
+ export {
15
+ /**
16
+ * Public input-classification surface (`@visulima/tui/input`).
17
+ *
18
+ * Predicates for deciding whether a keypress should be treated as text the
19
+ * user meant to type. Text-entry components share these so that "is this
20
+ * insertable?" stays one answer across the library rather than a per-component
21
+ * guess.
22
+ */
23
+ isControlCharacter,
24
+ /**
25
+ * Public input-classification surface (`@visulima/tui/input`).
26
+ *
27
+ * Predicates for deciding whether a keypress should be treated as text the
28
+ * user meant to type. Text-entry components share these so that "is this
29
+ * insertable?" stays one answer across the library rather than a per-component
30
+ * guess.
31
+ */
32
+ isInsertableInput };
@@ -1,4 +1,2 @@
1
- export type { S as Styles } from "../../packem_shared/styles.d-CKGQFfm4.js";
1
+ export type { S as Styles } from "../../packem_shared/styles.d-BCZOPl_g.js";
2
2
  import '@visulima/colorize';
3
- import 'type-fest';
4
- import 'yoga-layout';
@@ -2,4 +2,11 @@
2
2
  * Format a duration in milliseconds to `MM:SS` or `HH:MM:SS` (when hours > 0).
3
3
  */
4
4
  declare function formatDuration(ms: number): string;
5
- export { formatDuration };
5
+ export {
6
+ /**
7
+ * Public utility surface (`@visulima/tui/utils`).
8
+ *
9
+ * Formatting helpers shared by the time-bearing components (Timer, Stopwatch)
10
+ * so their readouts stay consistent with one another.
11
+ */
12
+ formatDuration };
@@ -1 +1 @@
1
- import{formatDuration as t}from"../../packem_shared/formatDuration-Bdx4ZgRh.js";export{t as formatDuration};
1
+ import{formatDuration as t}from"../../packem_shared/formatDuration-DcLMLZro.js";export{t as formatDuration};
@@ -0,0 +1 @@
1
+ const d={achromatopsia:[[.299,.587,.114],[.299,.587,.114],[.299,.587,.114]],deuteranopia:[[.625,.375,0],[.7,.3,0],[0,.3,.7]],protanopia:[[.567,.433,0],[.558,.442,0],[0,.242,.758]],tritanopia:[[.95,.05,0],[0,.433,.567],[0,.475,.525]]},S={deuteranopia:[[1,.7,0],[0,1,0],[0,.7,1]],protanopia:[[1,0,0],[.7,1,0],[.7,0,1]],tritanopia:[[1,0,.7],[0,1,.7],[0,0,1]]},i=[[1,0,0],[0,1,0],[0,0,1]],a=n=>Math.max(0,Math.min(255,Math.round(n))),s=(n,r,t,o)=>[a(o[0][0]*n+o[0][1]*r+o[0][2]*t),a(o[1][0]*n+o[1][1]*r+o[1][2]*t),a(o[2][0]*n+o[2][1]*r+o[2][2]*t)],c=/^#?(?<r>[\da-f]{2})(?<g>[\da-f]{2})(?<b>[\da-f]{2})$/i,u=/^#?(?<r>[\da-f])(?<g>[\da-f])(?<b>[\da-f])$/i,I=n=>{const r=c.exec(n);if(r)return[Number.parseInt(r[1],16),Number.parseInt(r[2],16),Number.parseInt(r[3],16)];const t=u.exec(n);return t?[Number.parseInt(t[1]+t[1],16),Number.parseInt(t[2]+t[2],16),Number.parseInt(t[3]+t[3],16)]:null},N=(n,r,t)=>`#${a(n).toString(16).padStart(2,"0")}${a(r).toString(16).padStart(2,"0")}${a(t).toString(16).padStart(2,"0")}`,b=(n,r)=>{const t=I(n);if(!t)return n;const[o,e,p]=s(t[0],t[1],t[2],r);return N(o,e,p)};export{S as COLOR_BLINDNESS_COMPENSATION,d as COLOR_BLINDNESS_SIMULATION,i as IDENTITY_MATRIX,s as applyColorMatrix,I as hexToRgb,N as rgbToHex,b as transformHexColor};
@@ -0,0 +1 @@
1
+ const I={getBg(t){return t>>8&255},getChar(t){return t===0?" ":t>1114111?"":String.fromCodePoint(t)},getFg(t){return t&255},getStyles(t){return t>>16&255},pack(t,e=255,r=255,n=0){const o=t.codePointAt(0)??32,u=(n&255)<<16|(r&255)<<8|e&255;return[o,u]}},g={BLINK:16,BOLD:1,DIM:2,HIDDEN:64,INVERT:32,ITALIC:4,STRIKETHROUGH:128,UNDERLINE:8};export{I as Cell,g as StyleMasks};
@@ -0,0 +1 @@
1
+ import{jsxs as l,jsx as u}from"react/jsx-runtime";import{useState as p,useRef as i,useEffect as w}from"react";import{useWindowSize as h,useTuiContext as x}from"./TuiContext-Bbq9JRCu.js";import{_Box as s,_Spacer as S,_Text as T}from"./render-B_NqU7AH.js";function D(){const{app:e}=x(),[t,c]=p(0),r=i(0),n=i(Date.now()),o=i(null);return w(()=>{const a=()=>{o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{c(0),r.current=0,n.current=Date.now()},2e3),r.current++;const d=Date.now(),f=d-n.current;f>=500&&(c(Math.round(r.current/f*1e3)),r.current=0,n.current=d)},m=e.onBeforeFlush(()=>{a()});return()=>{m(),o.current&&clearTimeout(o.current)}},[e]),t}const b=({fps:e})=>{const t=e===0?"--":String(e);return u(s,{borderColor:"gray",borderStyle:"round",paddingX:1,children:l(T,{dim:!0,children:[t," ","updates/sec"]})})},j=({children:e,enabled:t=!0})=>{const c=D(),{columns:r,rows:n}=h();return l(s,{flexDirection:"column",height:n,width:r,children:[u(s,{flexGrow:1,children:e}),t&&l(s,{flexDirection:"row",flexShrink:0,children:[u(S,{}),u(b,{fps:c})]})]})};export{j as DevTools};
@@ -0,0 +1 @@
1
+ import R,{createContext as y,useRef as S,useState as A,useCallback as i,useMemo as C,useContext as N,useEffect as P}from"react";const x=y({activate(){},activeId:void 0,add(){},deactivate(){},disableFocus(){},enableFocus(){},focus(){},focusNext(){},focusPrevious(){},remove(){}});x.displayName="TuiFocusContext";const B=({children:r})=>{const c=S([]),[a,s]=A(void 0),[u,f]=A(!0),v=i((t,e)=>{if(c.current.some(o=>o.id===t))return;const d={autoFocus:e.autoFocus,id:t,isActive:!0};c.current=[...c.current,d],s(o=>e.autoFocus&&o===void 0||c.current.filter(M=>M.isActive).length===1&&o===void 0?t:o)},[]),l=i(t=>{c.current=c.current.filter(e=>e.id!==t),s(e=>e===t?void 0:e)},[]),F=i(t=>{c.current=c.current.map(e=>e.id===t?{...e,isActive:!0}:e)},[]),n=i(t=>{c.current=c.current.map(e=>e.id===t?{...e,isActive:!1}:e),s(e=>e===t?void 0:e)},[]),m=i(()=>f(!0),[]),b=i(()=>{f(!1),s(void 0)},[]),g=i(()=>{if(!u)return;const t=c.current.filter(e=>e.isActive);t.length!==0&&s(e=>{if(e===void 0)return t[0]?.id;const d=t.findIndex(o=>o.id===e);return t[(d+1)%t.length]?.id??t[0]?.id})},[u]),I=i(()=>{if(!u)return;const t=c.current.filter(e=>e.isActive);t.length!==0&&s(e=>{if(e===void 0)return t.at(-1)?.id;const d=t.findIndex(o=>o.id===e);return t[(d-1+t.length)%t.length]?.id??t.at(-1)?.id})},[u]),h=i(t=>{u&&c.current.some(e=>e.id===t&&e.isActive)&&s(t)},[u]),E=C(()=>({activate:F,activeId:a,add:v,deactivate:n,disableFocus:b,enableFocus:m,focus:h,focusNext:g,focusPrevious:I,remove:l}),[a,v,l,F,n,m,b,g,I,h]);return R.createElement(x.Provider,{value:E},r)},T=({autoFocus:r=!1,id:c,isActive:a=!0}={})=>{const{activate:s,activeId:u,add:f,deactivate:v,focus:l,remove:F}=N(x),n=C(()=>c??Math.random().toString(36).slice(2,7),[c]);return P(()=>(f(n,{autoFocus:r}),()=>{F(n)}),[n,r]),P(()=>{a?s(n):v(n)},[a,n]),{focus:l,isFocused:!!n&&u===n}},j=()=>{const r=N(x);return{activeId:r.activeId,disableFocus:r.disableFocus,enableFocus:r.enableFocus,focus:r.focus,focusNext:r.focusNext,focusPrevious:r.focusPrevious}};export{x as FocusContext,B as FocusProvider,T as useFocus,j as useFocusManager};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{Box as s}from"../components/box.js";import i from"../ink/hooks/use-window-size.js";const l=({children:o})=>{const{columns:r,rows:t}=i();return e(s,{flexGrow:1,height:t,width:r,children:o})};export{l as default};
@@ -1 +1 @@
1
- const e=s=>{if(s.length===0)return!1;for(const t of s){const i=t.codePointAt(0)??0;return!(i<=127||i<=255)}return!1};class o{buffer="";timer;onFlush;timeout;constructor({onFlush:t,timeout:i}){this.onFlush=t,this.timeout=i}add(t){this.buffer+=t,this.timer!==void 0&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.flush()},this.timeout)}flush(){if(this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.buffer.length>0){const t=this.buffer;this.buffer="",this.onFlush(t)}}destroy(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.buffer=""}}export{o as IMECompositionBuffer,e as isIMEInput};
1
+ const s=e=>{if(e.length===0)return!1;for(const t of e){const i=t.codePointAt(0)??0;return!(i<=127||i<=255)}return!1};class r{buffer="";timer;onFlush;timeout;constructor({onFlush:t,timeout:i}){this.onFlush=t,this.timeout=i}add(t){this.buffer+=t,this.timer!==void 0&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.flush()},this.timeout)}flush(){if(this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.buffer.length>0){const t=this.buffer;this.buffer="",this.onFlush(t)}}destroy(){this.timer!==void 0&&(clearTimeout(this.timer),this.timer=void 0),this.buffer=""}}export{r as IMECompositionBuffer,s as isIMEInput};
@@ -1,2 +1,2 @@
1
- import{l as c}from"./index-Dl9I2_QH.js";const u="\x1B[200~",o="\x1B[201~",p=1024*1024;class w extends c.EventEmitter{constructor(t){super(),this.stdin=t}stdin;_boundHandleData=null;_pasteBuffer=null;start(){typeof this.stdin.setRawMode=="function"&&this.stdin.setRawMode(!0),this.stdin.resume(),this.stdin.setEncoding("utf8"),this._boundHandleData=this.handleData.bind(this),this.stdin.on("data",this._boundHandleData)}stop(){typeof this.stdin.setRawMode=="function"&&this.stdin.setRawMode(!1),this.stdin.pause(),this._boundHandleData&&(this.stdin.removeListener("data",this._boundHandleData),this._boundHandleData=null)}handleData(t){if(t===""){this.emit("exit");return}if(this._pasteBuffer!==null||t.includes(u)){let e=t;if(this._pasteBuffer===null){const s=e.indexOf(u),d=e.slice(0,s);d.length>0&&this.handleData(d),this._pasteBuffer="",e=e.slice(s+u.length)}const i=e.indexOf(o);if(i===-1){const s=this._pasteBuffer+e;if(s.length>p){this._pasteBuffer=null,this.emit("data",s);return}this._pasteBuffer=s;return}const r=this._pasteBuffer+e.slice(0,i),a=e.slice(i+o.length);this._pasteBuffer=null,this.emit("paste",r),this.listenerCount("paste")===0&&this.emit("data",r),a.length>0&&this.handleData(a);return}if(t.length===1){const e=t.charCodeAt(0);if(e>=1&&e<=26&&e!==3&&e!==9&&e!==10&&e!==13){const i=String.fromCharCode(e+96);this.emit("ctrl",i),this.emit("data",t,{ctrl:!0});return}}if(t==="\x1B[A"){this.emit("keydown","up");return}if(t==="\x1B[B"){this.emit("keydown","down");return}if(t==="\x1B[C"){this.emit("keydown","right");return}if(t==="\x1B[D"){this.emit("keydown","left");return}if(t===" "){this.emit("keydown","tab");return}if(t==="\x1B[Z"){this.emit("keydown","shift-tab");return}if(t==="\x1B"){this.emit("keydown","escape");return}if(t==="\r"||t===`
2
- `){this.emit("keydown","enter");return}if(t===""){this.emit("keydown","backspace");return}if(t==="\x1B[3~"){this.emit("keydown","delete");return}if(t==="\x1B[5~"){this.emit("keydown","pageUp");return}if(t==="\x1B[6~"){this.emit("keydown","pageDown");return}if(t==="\x1B[H"||t==="\x1B[1~"){this.emit("keydown","home");return}if(t==="\x1B[F"||t==="\x1B[4~"){this.emit("keydown","end");return}if(t.length===2&&t[0]==="\x1B"){this.emit("meta",t[1]),this.emit("data",t,{meta:!0});return}if(t.startsWith("\x1B[<")){const e=t.match(/\u001B\[<(\d+);(\d+);(\d+)(M)/i);if(e){const i=Number.parseInt(e[1]),r=Number.parseInt(e[2])-1,a=Number.parseInt(e[3])-1,s=e[4]==="m",d=(i&4)!==0,l=(i&8)!==0,f=(i&16)!==0,h=i&-29;let n=null;if(h===0&&!s?n="left":h===1&&!s?n="middle":h===2&&!s?n="right":h===64?n="scrollUp":h===65&&(n="scrollDown"),n){const m={button:n,ctrl:f,meta:l,shift:d,x:r,y:a};this.emit("mouse",m),n==="left"&&this.emit("click",{x:r,y:a})}}return}this.emit("data",t)}}export{w as InputParser};
1
+ import{l as p}from"./index-7Qq5uu0d.js";const u="\x1B[200~",l="\x1B[201~",a=1024*1024;class w extends p.EventEmitter{constructor(t){super(),this.stdin=t}stdin;_boundHandleData=null;_pasteBuffer=null;start(){typeof this.stdin.setRawMode=="function"&&this.stdin.setRawMode(!0),this.stdin.resume(),this.stdin.setEncoding("utf8"),this._boundHandleData=this.handleData.bind(this),this.stdin.on("data",this._boundHandleData)}stop(){typeof this.stdin.setRawMode=="function"&&this.stdin.setRawMode(!1),this.stdin.pause(),this._boundHandleData&&(this.stdin.removeListener("data",this._boundHandleData),this._boundHandleData=null)}handleData(t){if(t===""){this.emit("exit");return}if(this._pasteBuffer!==null||t.includes(u)){let e=t;if(this._pasteBuffer===null){const s=e.indexOf(u),f=e.slice(0,s);f.length>0&&this.handleData(f),this._pasteBuffer="",e=e.slice(s+u.length)}const i=e.indexOf(l);if(i===-1){const s=this._pasteBuffer+e;if(s.length>a){this._pasteBuffer=null,this.emit("data",s);return}this._pasteBuffer=s;return}const r=this._pasteBuffer+e.slice(0,i),h=e.slice(i+l.length);this._pasteBuffer=null,this.emit("paste",r),this.listenerCount("paste")===0&&this.emit("data",r),h.length>0&&this.handleData(h);return}if(t.length===1){const e=t.charCodeAt(0);if(e>=1&&e<=26&&e!==3&&e!==9&&e!==10&&e!==13){const i=String.fromCharCode(e+96);this.emit("ctrl",i),this.emit("data",t,{ctrl:!0});return}}if(t==="\x1B[A"){this.emit("keydown","up");return}if(t==="\x1B[B"){this.emit("keydown","down");return}if(t==="\x1B[C"){this.emit("keydown","right");return}if(t==="\x1B[D"){this.emit("keydown","left");return}if(t===" "){this.emit("keydown","tab");return}if(t==="\x1B[Z"){this.emit("keydown","shift-tab");return}if(t==="\x1B"){this.emit("keydown","escape");return}if(t==="\r"||t===`
2
+ `){this.emit("keydown","enter");return}if(t===""){this.emit("keydown","backspace");return}if(t==="\x1B[3~"){this.emit("keydown","delete");return}if(t==="\x1B[5~"){this.emit("keydown","pageUp");return}if(t==="\x1B[6~"){this.emit("keydown","pageDown");return}if(t==="\x1B[H"||t==="\x1B[1~"){this.emit("keydown","home");return}if(t==="\x1B[F"||t==="\x1B[4~"){this.emit("keydown","end");return}if(t.length===2&&t[0]==="\x1B"){this.emit("meta",t[1]),this.emit("data",t,{meta:!0});return}if(t.startsWith("\x1B[<")){const e=t.match(/\u001B\[<(\d+);(\d+);(\d+)(M)/i);if(e){const i=Number.parseInt(e[1]),r=Number.parseInt(e[2])-1,h=Number.parseInt(e[3])-1,s=e[4]==="m",f=(i&4)!==0,c=(i&8)!==0,d=(i&16)!==0,o=i&-29;let n=null;if(o===0&&!s?n="left":o===1&&!s?n="middle":o===2&&!s?n="right":o===64?n="scrollUp":o===65&&(n="scrollDown"),n){const m={button:n,ctrl:d,meta:c,shift:f,x:r,y:h};this.emit("mouse",m),n==="left"&&this.emit("click",{x:r,y:h})}}return}this.emit("data",t)}}export{w as InputParser};
@@ -1 +1 @@
1
- const a={backspace:"",ctrlC:"",delete:"\x1B[3~",down:"\x1B[B",end:"\x1B[F",escape:"\x1B",home:"\x1B[H",left:"\x1B[D",pageDown:"\x1B[6~",pageUp:"\x1B[5~",return:"\r",right:"\x1B[C",space:" ",tab:" ",up:"\x1B[A"},c=e=>({backspace:()=>{e(a.backspace)},delete:()=>{e(a.delete)},down:()=>{e(a.down)},end:()=>{e(a.end)},enter:()=>{e(a.return)},escape:()=>{e(a.escape)},home:()=>{e(a.home)},left:()=>{e(a.left)},pageDown:()=>{e(a.pageDown)},pageUp:()=>{e(a.pageUp)},press(p){e(p)},raw:e,right:()=>{e(a.right)},space:()=>{e(a.space)},tab:()=>{e(a.tab)},type(p){for(const t of p)e(t)},up:()=>{e(a.up)}});export{a as KEY,c as createKeySender};
1
+ const a={backspace:"",ctrlC:"",delete:"\x1B[3~",down:"\x1B[B",end:"\x1B[F",escape:"\x1B",home:"\x1B[H",left:"\x1B[D",pageDown:"\x1B[6~",pageUp:"\x1B[5~",return:"\r",right:"\x1B[C",space:" ",tab:" ",up:"\x1B[A"},n=e=>({backspace:()=>{e(a.backspace)},delete:()=>{e(a.delete)},down:()=>{e(a.down)},end:()=>{e(a.end)},enter:()=>{e(a.return)},escape:()=>{e(a.escape)},home:()=>{e(a.home)},left:()=>{e(a.left)},pageDown:()=>{e(a.pageDown)},pageUp:()=>{e(a.pageUp)},press(p){e(p)},raw:e,right:()=>{e(a.right)},space:()=>{e(a.space)},tab:()=>{e(a.tab)},type(p){for(const c of p)e(c)},up:()=>{e(a.up)}});export{a as KEY,n as createKeySender};
@@ -0,0 +1 @@
1
+ import a from"yoga-layout";import{m as g}from"./text-width-BXmBaLDv.js";const d=new Map;class N{yogaNode;children=[];parent=null;_destroyed=!1;_hidden=!1;transform;_text;fg=255;bg=255;styles=0;_style;set text(e){this._text=e,e===void 0?this.yogaNode.unsetMeasureFunc():this.yogaNode.setMeasureFunc((t,o,s,h)=>{if(e.length===0)return{height:0,width:0};const r=g(e,Number.MAX_SAFE_INTEGER);let i=r.maxLineWidth;o===a.MEASURE_MODE_EXACTLY?i=Math.max(0,Math.floor(t)):o===a.MEASURE_MODE_AT_MOST&&(i=Math.min(r.maxLineWidth,Math.max(0,Math.floor(t))));let n=r.wrappedRows;return i>0&&(n=g(e,i).wrappedRows),h===a.MEASURE_MODE_EXACTLY?n=Math.max(0,Math.floor(s)):h===a.MEASURE_MODE_AT_MOST&&(n=Math.min(n,Math.max(0,Math.floor(s)))),{height:n,width:i}})}get text(){return this._text}constructor(){this.yogaNode=a.Node.create(),this.yogaNode.setFlexDirection(a.FLEX_DIRECTION_COLUMN)}insertChild(e,t){const o=d.get(e.yogaNode);o&&o.removeChild(e);const s=e.yogaNode.getParent();s&&s.removeChild(e.yogaNode);const h=this.yogaNode.getChildCount(),r=Math.min(t,h);try{this.yogaNode.insertChild(e.yogaNode,r)}catch{return}e.parent=this,this.children.splice(r,0,e),d.set(e.yogaNode,this)}remove(){this.parent&&this.parent.removeChild(this)}removeChild(e){const t=this.children.indexOf(e);if(t!==-1){this.children.splice(t,1),e.parent=null,d.delete(e.yogaNode);const o=e.yogaNode.getParent();o&&o.removeChild(e.yogaNode)}}destroy(){if(this._destroyed)return;this._destroyed=!0;for(const t of this.children)t.parent===this&&(t.parent=null);this.children=[],d.delete(this.yogaNode);const e=this.yogaNode.getParent();e&&e.removeChild(this.yogaNode),this.yogaNode.free()}calculateLayout(e,t){this.yogaNode.setWidth(e),this.yogaNode.setHeight(t),this.yogaNode.calculateLayout(e,t,a.DIRECTION_LTR)}getLayout(){return this.yogaNode.getComputedLayout()}}export{N as LayoutNode};
@@ -0,0 +1 @@
1
+ import{createRequire as _}from"node:module";import{jsx as h}from"react/jsx-runtime";import{useRef as d,useReducer as S,useEffect as b,useMemo as j}from"react";import{useStdinContext as x}from"../ink/hooks/use-stdin.js";import E from"../ink/hooks/use-stdout.js";import{A as n,p as w}from"./ansi-parser-CysVDsNz.js";import{M as q}from"./mouse-context-BEnaR3tG.js";let y;const T=e=>(y??=_(import.meta.url))(e),u=typeof globalThis<"u"&&typeof globalThis.process<"u"?globalThis.process:g,M=e=>{if(typeof u<"u"&&u.versions&&u.versions.node){const[t,s]=u.versions.node.split(".").map(Number);if(t>22||t===22&&s>=3||t===20&&s>=16)return u.getBuiltinModule(e)}return T(e)},{EventEmitter:R}=M("node:events"),g=u,B={button:null,click:null,drag:null,position:{x:0,y:0},scroll:null},A=(e,t)=>{switch(t.type){case"click":return{...e,button:t.button,click:t.click,position:t.position};case"click-reset":return{...e,button:null,click:null};case"drag":return{...e,button:t.button,drag:t.drag,position:t.position};case"move":return{...e,position:t.position};case"scroll":return{...e,position:t.position,scroll:t.scroll};case"scroll-reset":return{...e,scroll:null};default:return e}},Y=({children:e})=>{const{internal_eventEmitter:t}=x(),{stdout:s}=E(),l=d(new R),[i,c]=S(A,B),m=d(void 0),a=d(void 0);b(()=>{const p=s.isTTY?s:g.stdout;return p.write(n.mouseButton.on+n.mouseMotion.on+n.mouseMotionOthers.on+n.mouseSGR.on),()=>{p.write(n.mouseSGR.off+n.mouseMotionOthers.off+n.mouseMotion.off+n.mouseButton.off)}},[s]),b(()=>{const p=v=>{const o=w(v);if(!o)return;const r={x:o.x,y:o.y};switch(l.current.emit("position",r),o.type){case"click":{c({button:o.button,click:o.action,position:r,type:"click"}),l.current.emit("click",r,o.action,o.button),clearTimeout(m.current),m.current=setTimeout(()=>{c({type:"click-reset"})},100);break}case"drag":{const f=o.action==="press"?"dragging":null;c({button:o.button,drag:f,position:r,type:"drag"}),l.current.emit("drag",r,f,o.button);break}case"move":{c({position:r,type:"move"});break}case"scroll":{c({position:r,scroll:o.direction,type:"scroll"}),l.current.emit("scroll",r,o.direction),clearTimeout(a.current),a.current=setTimeout(()=>{c({type:"scroll-reset"})},100);break}}};return t.on("input",p),()=>{t.off("input",p),clearTimeout(m.current),clearTimeout(a.current)}},[t]);const k=j(()=>({button:i.button,click:i.click,drag:i.drag,events:l.current,position:i.position,scroll:i.scroll}),[i]);return h(q,{value:k,children:e})};export{Y as default};
@@ -0,0 +1 @@
1
+ import e from"yoga-layout";const E={black:0,blackBright:8,blue:4,blueBright:12,cyan:6,cyanBright:14,gray:8,green:2,greenBright:10,grey:8,magenta:5,magentaBright:13,red:1,redBright:9,white:7,whiteBright:15,yellow:3,yellowBright:11};function f(t,i,n){const a=Math.round(t/51),r=Math.round(i/51),g=Math.round(n/51);return 16+36*a+6*r+g}function L(t){if(t===void 0)return 255;if(typeof t=="number")return t;if(t in E)return E[t];const i=/^ansi256\(\s*(\d+)\s*\)$/.exec(t);if(i)return Number(i[1]);const n=/^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(t);if(n)return f(Number.parseInt(n[1]+n[1],16),Number.parseInt(n[2]+n[2],16),Number.parseInt(n[3]+n[3],16));const a=/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(t);if(a)return f(Number.parseInt(a[1],16),Number.parseInt(a[2],16),Number.parseInt(a[3],16));const r=/^rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)$/.exec(t);return r?f(Number(r[1]),Number(r[2]),Number(r[3])):255}const p=[["top",e.EDGE_TOP],["right",e.EDGE_RIGHT],["bottom",e.EDGE_BOTTOM],["left",e.EDGE_LEFT]],s=(t,i)=>{"position"in i&&t.setPositionType(i.position==="absolute"?e.POSITION_TYPE_ABSOLUTE:e.POSITION_TYPE_RELATIVE);for(const[n,a]of p)if(n in i){const r=i[n];typeof r=="string"?t.setPositionPercent(a,Number.parseFloat(r)):t.setPosition(a,r)}},h=(t,i)=>{"margin"in i&&t.setMargin(e.EDGE_ALL,i.margin??0),"marginX"in i&&t.setMargin(e.EDGE_HORIZONTAL,i.marginX??0),"marginY"in i&&t.setMargin(e.EDGE_VERTICAL,i.marginY??0),"marginLeft"in i&&t.setMargin(e.EDGE_LEFT,i.marginLeft??0),"marginRight"in i&&t.setMargin(e.EDGE_RIGHT,i.marginRight??0),"marginTop"in i&&t.setMargin(e.EDGE_TOP,i.marginTop??0),"marginBottom"in i&&t.setMargin(e.EDGE_BOTTOM,i.marginBottom??0)},_=(t,i)=>{"padding"in i&&t.setPadding(e.EDGE_ALL,i.padding??0),"paddingX"in i&&t.setPadding(e.EDGE_HORIZONTAL,i.paddingX??0),"paddingY"in i&&t.setPadding(e.EDGE_VERTICAL,i.paddingY??0),"paddingLeft"in i&&t.setPadding(e.EDGE_LEFT,i.paddingLeft??0),"paddingRight"in i&&t.setPadding(e.EDGE_RIGHT,i.paddingRight??0),"paddingTop"in i&&t.setPadding(e.EDGE_TOP,i.paddingTop??0),"paddingBottom"in i&&t.setPadding(e.EDGE_BOTTOM,i.paddingBottom??0)},o=(t,i)=>{if("flexGrow"in i&&t.setFlexGrow(i.flexGrow??0),"flexShrink"in i&&t.setFlexShrink(i.flexShrink??1),"flexWrap"in i&&t.setFlexWrap(i.flexWrap==="nowrap"?e.WRAP_NO_WRAP:i.flexWrap==="wrap"?e.WRAP_WRAP:e.WRAP_WRAP_REVERSE),"flexDirection"in i&&(i.flexDirection==="row"&&t.setFlexDirection(e.FLEX_DIRECTION_ROW),i.flexDirection==="row-reverse"&&t.setFlexDirection(e.FLEX_DIRECTION_ROW_REVERSE),i.flexDirection==="column"&&t.setFlexDirection(e.FLEX_DIRECTION_COLUMN),i.flexDirection==="column-reverse"&&t.setFlexDirection(e.FLEX_DIRECTION_COLUMN_REVERSE)),"flexBasis"in i&&(typeof i.flexBasis=="number"?t.setFlexBasis(i.flexBasis):typeof i.flexBasis=="string"?t.setFlexBasisPercent(Number.parseInt(i.flexBasis,10)):t.setFlexBasis(Number.NaN)),"alignItems"in i){const n={baseline:e.ALIGN_BASELINE,center:e.ALIGN_CENTER,"flex-end":e.ALIGN_FLEX_END,"flex-start":e.ALIGN_FLEX_START,stretch:e.ALIGN_STRETCH};t.setAlignItems(n[i.alignItems||"stretch"])}if("alignSelf"in i){const n={auto:e.ALIGN_AUTO,baseline:e.ALIGN_BASELINE,center:e.ALIGN_CENTER,"flex-end":e.ALIGN_FLEX_END,"flex-start":e.ALIGN_FLEX_START,stretch:e.ALIGN_STRETCH};t.setAlignSelf(n[i.alignSelf||"auto"])}if("alignContent"in i){const n={center:e.ALIGN_CENTER,"flex-end":e.ALIGN_FLEX_END,"flex-start":e.ALIGN_FLEX_START,"space-around":e.ALIGN_SPACE_AROUND,"space-between":e.ALIGN_SPACE_BETWEEN,stretch:e.ALIGN_STRETCH};t.setAlignContent(n[i.alignContent||"flex-start"])}if("justifyContent"in i){const n={center:e.JUSTIFY_CENTER,"flex-end":e.JUSTIFY_FLEX_END,"flex-start":e.JUSTIFY_FLEX_START,"space-around":e.JUSTIFY_SPACE_AROUND,"space-between":e.JUSTIFY_SPACE_BETWEEN,"space-evenly":e.JUSTIFY_SPACE_EVENLY};t.setJustifyContent(n[i.justifyContent||"flex-start"])}},m=(t,i)=>{"width"in i&&(typeof i.width=="number"?t.setWidth(i.width):typeof i.width=="string"?t.setWidthPercent(Number.parseInt(i.width,10)):t.setWidthAuto()),"height"in i&&(typeof i.height=="number"?t.setHeight(i.height):typeof i.height=="string"?t.setHeightPercent(Number.parseInt(i.height,10)):t.setHeightAuto()),"minWidth"in i&&(typeof i.minWidth=="string"?t.setMinWidthPercent(Number.parseInt(i.minWidth,10)):t.setMinWidth(i.minWidth??0)),"minHeight"in i&&(typeof i.minHeight=="string"?t.setMinHeightPercent(Number.parseInt(i.minHeight,10)):t.setMinHeight(i.minHeight??0)),"maxWidth"in i&&(typeof i.maxWidth=="string"?t.setMaxWidthPercent(Number.parseInt(i.maxWidth,10)):t.setMaxWidth(i.maxWidth)),"maxHeight"in i&&(typeof i.maxHeight=="string"?t.setMaxHeightPercent(Number.parseInt(i.maxHeight,10)):t.setMaxHeight(i.maxHeight)),"aspectRatio"in i&&t.setAspectRatio(i.aspectRatio)},T=(t,i)=>{"display"in i&&t.setDisplay(i.display==="flex"?e.DISPLAY_FLEX:e.DISPLAY_NONE)},N=(t,i,n)=>{if(!("borderStyle"in i||"borderTop"in i||"borderBottom"in i||"borderLeft"in i||"borderRight"in i))return;const r=n.borderStyle?1:0;t.setBorder(e.EDGE_TOP,n.borderTop===!1?0:r),t.setBorder(e.EDGE_BOTTOM,n.borderBottom===!1?0:r),t.setBorder(e.EDGE_LEFT,n.borderLeft===!1?0:r),t.setBorder(e.EDGE_RIGHT,n.borderRight===!1?0:r)},c=(t,i)=>{"gap"in i&&t.setGap(e.GUTTER_ALL,i.gap??0),"columnGap"in i&&t.setGap(e.GUTTER_COLUMN,i.columnGap??0),"rowGap"in i&&t.setGap(e.GUTTER_ROW,i.rowGap??0)},x=(t,i={},n=i)=>{s(t,i),h(t,i),_(t,i),o(t,i),m(t,i),T(t,i),N(t,i,n),c(t,i)};export{E as NAMED_COLORS,x as applyStyles,L as resolveColor};
@@ -0,0 +1 @@
1
+ import{g as p}from"./dom-xpeZzKuf.js";import{t as g}from"./measure-text-DtlK6gar.js";import{squashTextNodesWithMap as m}from"./squashTextNodesWithMap-CUJZZeW3.js";const O=i=>{if(i.nodeName==="#text"){const r=g(i.nodeValue);return{charOffsetMap:new Map([[i,{end:r.length,start:0}]]),styledLine:r}}const t=new Map,s=m(i,t,{current:0}),n=g(s);return t.set(i,{end:n.length,start:0}),{charOffsetMap:t,styledLine:n}},N=(i,t)=>{if(!i.startContainer||!i.endContainer)return;const e=(r,d)=>{const o=t.get(r);if(!o)return;if(r.nodeName==="#text")return o.start+d;const h=r;if(d>=h.childNodes.length)return o.end;const a=h.childNodes[d],C=t.get(a);if(C)return C.start;for(let c=d-1;c>=0;c--){const f=h.childNodes[c],l=t.get(f);if(l)return l.end}return o.start},s=e(i.startContainer,i.startOffset),n=e(i.endContainer,i.endOffset);if(!(s===void 0||n===void 0))return{end:n,start:s}},u=(i,t,e,s)=>{if(i===e)return t===s?0:t<s?-1:1;const n=p(i),r=p(e);let d,o=0;for(;o<n.length&&o<r.length&&n[o]===r[o];)d=n[o],o++;if(!d)return 0;if(o===n.length){const f=r[o],l=i.childNodes.indexOf(f);return t<=l?-1:1}if(o===r.length){const f=n[o];return e.childNodes.indexOf(f)<s?-1:1}const h=n[o],a=r[o],C=d.childNodes.indexOf(h),c=d.childNodes.indexOf(a);return C<c?-1:1};class x{startContainer=void 0;startOffset=0;endContainer=void 0;endOffset=0;collapsed=!0;commonAncestorContainer=void 0;setStart(t,e){this.startContainer=t,this.startOffset=e,this.updateCollapsed(),this.updateCommonAncestor()}setEnd(t,e){this.endContainer=t,this.endOffset=e,this.updateCollapsed(),this.updateCommonAncestor()}collapse(t){t?(this.endContainer=this.startContainer,this.endOffset=this.startOffset):(this.startContainer=this.endContainer,this.startOffset=this.endOffset),this.collapsed=!0,this.updateCommonAncestor()}selectNode(t){if(!t.parentNode)throw new Error("Node has no parent");const e=t.parentNode.childNodes.indexOf(t);this.setStart(t.parentNode,e),this.setEnd(t.parentNode,e+1)}selectNodeContents(t){this.setStart(t,0),t.nodeName==="#text"?this.setEnd(t,t.nodeValue.length):this.setEnd(t,t.childNodes.length)}toString(){if(this.collapsed||!this.startContainer||!this.endContainer||!this.commonAncestorContainer)return"";const{charOffsetMap:t,styledLine:e}=O(this.commonAncestorContainer),s=N(this,t);if(!s)return"";const n=e.slice(s.start,s.end);return n.getTextRange(0,n.length)}updateCollapsed(){this.collapsed=this.startContainer===this.endContainer&&this.startOffset===this.endOffset}updateCommonAncestor(){if(!this.startContainer||!this.endContainer){this.commonAncestorContainer=void 0;return}if(this.startContainer===this.endContainer){this.commonAncestorContainer=this.startContainer;return}const t=p(this.startContainer),e=p(this.endContainer);let s;for(let n=0;n<Math.min(t.length,e.length)&&t[n]===e[n];n++)s=t[n];this.commonAncestorContainer=s}}class R{anchorNode=void 0;anchorOffset=0;focusNode=void 0;focusOffset=0;isCollapsed=!0;rangeCount=0;ranges=[];listeners=new Set;onChange(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}toString(){return this.ranges.map(t=>t.toString()).join("")}getRangeAt(t){return this.ranges[t]}addRange(t){this.ranges.includes(t)||(this.ranges.push(t),this.rangeCount=this.ranges.length,this.rangeCount===1&&(this.anchorNode=t.startContainer,this.anchorOffset=t.startOffset,this.focusNode=t.endContainer,this.focusOffset=t.endOffset,this.isCollapsed=t.collapsed),this.notifyChange())}removeRange(t){const e=this.ranges.indexOf(t);e!==-1&&(this.ranges.splice(e,1),this.rangeCount=this.ranges.length,this.rangeCount===0&&this.clearState(),this.notifyChange())}removeAllRanges(){this.ranges=[],this.rangeCount=0,this.clearState(),this.notifyChange()}collapse(t,e){this.removeAllRanges();const s=new x;s.setStart(t,e),s.setEnd(t,e),this.addRange(s)}containsNode(t,e=!1){if(!t.parentNode)return!1;const s=t.parentNode,n=s.childNodes.indexOf(t),r=s,d=n,o=s,h=n+1;return this.ranges.some(a=>{if(!a.startContainer||!a.endContainer)return!1;const C=u(a.startContainer,a.startOffset,r,d),c=u(a.endContainer,a.endOffset,o,h);if(e){const f=u(a.startContainer,a.startOffset,o,h),l=u(a.endContainer,a.endOffset,r,d);return f<0&&l>0}return C<=0&&c>=0})}clearState(){this.anchorNode=void 0,this.anchorOffset=0,this.focusNode=void 0,this.focusOffset=0,this.isCollapsed=!0}notifyChange(){for(const t of this.listeners)t()}}const y=(i,t)=>{if(i.length===0||t.start>=t.end)return i;const e=i.clone(),s=Math.max(0,t.start),n=Math.min(i.length,t.end);for(let r=s;r<n;r++)e.setInverted(r,!0);return e};export{x as Range,R as Selection,y as applySelectionToStyledLine,u as comparePoints};
@@ -0,0 +1 @@
1
+ import{l as n}from"./load-native-root-binding-B1WunHs4.js";const r=n(import.meta.url),e=r,i=e.Renderer,a=e.TerminalGuard,o=e.terminalSize;export{i as Renderer,a as TerminalGuard,o as terminalSize};
@@ -0,0 +1 @@
1
+ class h{constructor(e,t){this.target=e,this.contentRect=t}target;contentRect}class n{callback;observedElements=new Set;constructor(e){this.callback=e}observe(e){if(this.observedElements.has(e))return;this.observedElements.add(e),e.resizeObservers??=new Set,e.resizeObservers.add(this);let t=e.internal_lastMeasuredSize;if(t===void 0&&e.yogaNode){const i=Math.round(e.yogaNode.getComputedWidth()),r=Math.round(e.yogaNode.getComputedHeight());!Number.isNaN(i)&&!Number.isNaN(r)&&(t={height:r,width:i},e.internal_lastMeasuredSize=t)}if(t){const i=new h(e,t);try{this.callback([i],this)}catch(r){console.error(r)}}}unobserve(e){this.observedElements.delete(e),e.resizeObservers?.delete(this)}disconnect(){for(const e of this.observedElements)e.resizeObservers?.delete(this);this.observedElements.clear()}internalTrigger(e){try{this.callback(e,this)}catch(t){console.error(t)}}}function l(s,e,t=!1){const i=s.resizeObservers&&s.resizeObservers.size>0;if((i||t)&&s.yogaNode){const r=Math.round(s.yogaNode.getComputedWidth()),a=Math.round(s.yogaNode.getComputedHeight());if(!Number.isNaN(r)&&!Number.isNaN(a)){const c=s.internal_lastMeasuredSize;if((c?.width!==r||c.height!==a)&&(s.internal_lastMeasuredSize={height:a,width:r},i)){const d=new h(s,{height:a,width:r});for(const o of s.resizeObservers)e.has(o)||e.set(o,[]),e.get(o).push(d)}}}}export{h as ResizeObserverEntry,n as default,l as measureAndExtractObservers};
@@ -0,0 +1 @@
1
+ import f,{useRef as o,useMemo as i}from"react";function h({children:u,items:e,style:r}){const c=o([]),n=o(0);if(e.length>n.current){for(let t=n.current;t<e.length;t++)c.current.push(u(e[t],t));n.current=e.length}const l=i(()=>({flexDirection:"column",...r}),[r]);return f.createElement("box",l,...c.current)}export{h as Static};