@tangle-network/sandbox-ui 2.0.17 → 2.0.18

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 (468) hide show
  1. package/README.md +2 -0
  2. package/dist/agent-stream-CBZ2fXJ2.d.ts +66 -0
  3. package/dist/code-view-BlhCS1SD.js +177 -0
  4. package/dist/globals.css +186 -150
  5. package/dist/hooks.d.ts +2 -139
  6. package/dist/hooks.js +2 -1
  7. package/dist/{index-BtR5Sc3u.d.ts → index-BnaVprN6.d.ts} +3 -66
  8. package/dist/index-D5Hig-j9.d.ts +155 -0
  9. package/dist/index.d.ts +3 -2
  10. package/dist/index.js +6 -3
  11. package/dist/run/live.d.ts +10 -0
  12. package/dist/run/live.js +389 -0
  13. package/dist/run.d.ts +2 -1
  14. package/dist/run.js +2 -1
  15. package/dist/runtime-viewer/AgentGraphCanvas-B74GN1o6-DC3EH_ss.js +8564 -0
  16. package/dist/runtime-viewer/abap-CJVxDCih.js +2 -0
  17. package/dist/runtime-viewer/actionscript-3-DxxSN0a_.js +2 -0
  18. package/dist/runtime-viewer/ada-Cl3FVDZo.js +2 -0
  19. package/dist/runtime-viewer/ahk-wK-qmFta.js +2 -0
  20. package/dist/runtime-viewer/ahk2-H2JA2Yl6.js +2 -0
  21. package/dist/runtime-viewer/andromeeda--b5O3zh8.js +134 -0
  22. package/dist/runtime-viewer/andromeeda-Gms6gP4X.js +3 -0
  23. package/dist/runtime-viewer/angular-html-rj1gmhWN.js +15 -0
  24. package/dist/runtime-viewer/angular-ts-Bqgem-S1.js +17 -0
  25. package/dist/runtime-viewer/apache-BUhlrTDV.js +2 -0
  26. package/dist/runtime-viewer/apex-BB9dj6FH.js +2 -0
  27. package/dist/runtime-viewer/apl-Bbo6_Uyo.js +15 -0
  28. package/dist/runtime-viewer/appendItems-Cd9l6s5M.js +709 -0
  29. package/dist/runtime-viewer/applescript-ADDjRuDN.js +2 -0
  30. package/dist/runtime-viewer/ara-qq1xXFYH.js +2 -0
  31. package/dist/runtime-viewer/asciidoc-DM4EX7__.js +2 -0
  32. package/dist/runtime-viewer/asm-BG-prohY.js +2 -0
  33. package/dist/runtime-viewer/astro-DLFBJCYZ.js +17 -0
  34. package/dist/runtime-viewer/aurora-x-9XZt7weA.js +3 -0
  35. package/dist/runtime-viewer/aurora-x-CUDrP6dl.js +148 -0
  36. package/dist/runtime-viewer/awk-CLViK1AN.js +2 -0
  37. package/dist/runtime-viewer/ayu-dark-Cn6mFqgG.js +3 -0
  38. package/dist/runtime-viewer/ayu-dark-KXkHEKeT.js +124 -0
  39. package/dist/runtime-viewer/ayu-light-CiMsj1GY.js +124 -0
  40. package/dist/runtime-viewer/ayu-light-DT1rcejT.js +3 -0
  41. package/dist/runtime-viewer/ayu-mirage-B9PABb6M.js +3 -0
  42. package/dist/runtime-viewer/ayu-mirage-D866knu2.js +124 -0
  43. package/dist/runtime-viewer/ballerina-CEQUp96R.js +2 -0
  44. package/dist/runtime-viewer/bash-CEf3P1Io.js +1 -0
  45. package/dist/runtime-viewer/bat-CZr3fv67.js +2 -0
  46. package/dist/runtime-viewer/beancount-VKRy3bBi.js +2 -0
  47. package/dist/runtime-viewer/berry-BwT4aLVg.js +2 -0
  48. package/dist/runtime-viewer/bibtex-CqljWi0V.js +2 -0
  49. package/dist/runtime-viewer/bicep-B4J9qq-Z.js +2 -0
  50. package/dist/runtime-viewer/bird2-aEHxasJz.js +2 -0
  51. package/dist/runtime-viewer/blade-CSrWCe1q.js +19 -0
  52. package/dist/runtime-viewer/bsl-BihRw6wC.js +4 -0
  53. package/dist/runtime-viewer/c-DqEbRro5.js +1 -0
  54. package/dist/runtime-viewer/c-nuWrC4_R.js +4 -0
  55. package/dist/runtime-viewer/c3-B1ecFreZ.js +2 -0
  56. package/dist/runtime-viewer/cadence-DRL7VEtm.js +2 -0
  57. package/dist/runtime-viewer/cairo-Mf356MxB.js +4 -0
  58. package/dist/runtime-viewer/catppuccin-frappe-CaZDpwbh.js +3 -0
  59. package/dist/runtime-viewer/catppuccin-frappe-D40A-eC-.js +253 -0
  60. package/dist/runtime-viewer/catppuccin-latte-BY0gIWQk.js +253 -0
  61. package/dist/runtime-viewer/catppuccin-latte-Cto1Jf_t.js +3 -0
  62. package/dist/runtime-viewer/catppuccin-macchiato-BshuwwL_.js +253 -0
  63. package/dist/runtime-viewer/catppuccin-macchiato-Da4JtJzk.js +3 -0
  64. package/dist/runtime-viewer/catppuccin-mocha-DDZ3zh14.js +253 -0
  65. package/dist/runtime-viewer/catppuccin-mocha-VxvWTjH_.js +3 -0
  66. package/dist/runtime-viewer/chapel-OTK-UUIg.js +4 -0
  67. package/dist/runtime-viewer/clarity-VQN67-z4.js +2 -0
  68. package/dist/runtime-viewer/clojure-CO3ptKNj.js +2 -0
  69. package/dist/runtime-viewer/cmake-Daw-aSZt.js +2 -0
  70. package/dist/runtime-viewer/cobol-Cf_qPd6-.js +9 -0
  71. package/dist/runtime-viewer/codeowners-RB6Ky2d_.js +2 -0
  72. package/dist/runtime-viewer/codeql-DWYIUtYc.js +2 -0
  73. package/dist/runtime-viewer/coffee-Ddb4DMEu.js +4 -0
  74. package/dist/runtime-viewer/common-lisp-Z5pdmE3i.js +2 -0
  75. package/dist/runtime-viewer/constants-BJYchxfN.js +3 -0
  76. package/dist/runtime-viewer/coq-JC5iWOqp.js +2 -0
  77. package/dist/runtime-viewer/core-CpUX80b1.js +3279 -0
  78. package/dist/runtime-viewer/cpp-ClbMDAkS.js +1 -0
  79. package/dist/runtime-viewer/cpp-DHh405em.js +15 -0
  80. package/dist/runtime-viewer/crystal-DO6lJkkC.js +17 -0
  81. package/dist/runtime-viewer/csharp-lEK6y4jq.js +2 -0
  82. package/dist/runtime-viewer/csharp-rZvb5Mvv.js +1 -0
  83. package/dist/runtime-viewer/css-CwgM346x.js +1 -0
  84. package/dist/runtime-viewer/css-D0s2ehNl.js +4 -0
  85. package/dist/runtime-viewer/csv-DDLVNpF_.js +2 -0
  86. package/dist/runtime-viewer/cue-D9icO3Iq.js +2 -0
  87. package/dist/runtime-viewer/cypher-CtaxHT1L.js +2 -0
  88. package/dist/runtime-viewer/d-D4yE5Vyh.js +2 -0
  89. package/dist/runtime-viewer/dark-plus-BrGvqa0b.js +132 -0
  90. package/dist/runtime-viewer/dark-plus-Fqa0GMhm.js +3 -0
  91. package/dist/runtime-viewer/dart-BQKGVcgZ.js +2 -0
  92. package/dist/runtime-viewer/dax-B_fglzFE.js +2 -0
  93. package/dist/runtime-viewer/desktop-D1YOnHEY.js +2 -0
  94. package/dist/runtime-viewer/diff-CiTjO3HD.js +1 -0
  95. package/dist/runtime-viewer/diff-Diuv0qGT.js +2 -0
  96. package/dist/runtime-viewer/docker-DbYJRRXH.js +4 -0
  97. package/dist/runtime-viewer/dockerfile-BFrtbjpQ.js +1 -0
  98. package/dist/runtime-viewer/dotenv-FA1qqDb1.js +2 -0
  99. package/dist/runtime-viewer/dracula-Btj3GSO9.js +3 -0
  100. package/dist/runtime-viewer/dracula-D8HPTJym.js +152 -0
  101. package/dist/runtime-viewer/dracula-soft-C8zQlEh_.js +102 -0
  102. package/dist/runtime-viewer/dracula-soft-D6LcM51i.js +3 -0
  103. package/dist/runtime-viewer/dream-maker-hpDz6By6.js +2 -0
  104. package/dist/runtime-viewer/edge-BB4FSmZo.js +11 -0
  105. package/dist/runtime-viewer/elixir-DuATaRNn.js +4 -0
  106. package/dist/runtime-viewer/elk.bundled-CqF3Dyp2.js +45979 -0
  107. package/dist/runtime-viewer/elm-82HhQ2nm.js +4 -0
  108. package/dist/runtime-viewer/emacs-lisp-C5QNYC99.js +2 -0
  109. package/dist/runtime-viewer/engine-javascript-0MH9JO7M.js +2372 -0
  110. package/dist/runtime-viewer/engine-oniguruma-7Bv9BGGj.js +237 -0
  111. package/dist/runtime-viewer/erb-YvvBNDWy.js +9 -0
  112. package/dist/runtime-viewer/erlang-X9awClOJ.js +4 -0
  113. package/dist/runtime-viewer/everforest-dark-CzXjGmbf.js +3 -0
  114. package/dist/runtime-viewer/everforest-dark-DPX_5Sj-.js +86 -0
  115. package/dist/runtime-viewer/everforest-light-BMqXq4Th.js +3 -0
  116. package/dist/runtime-viewer/everforest-light-D1PD4A7K.js +86 -0
  117. package/dist/runtime-viewer/fennel-f1xl4Q05.js +2 -0
  118. package/dist/runtime-viewer/fish-99YblEc7.js +2 -0
  119. package/dist/runtime-viewer/fluent-4LP_8ZRP.js +2 -0
  120. package/dist/runtime-viewer/formatCSSVariablePrefix-Dw8K8---.js +5 -0
  121. package/dist/runtime-viewer/fortran-fixed-form-CXgWKejO.js +4 -0
  122. package/dist/runtime-viewer/fortran-free-form-BJnwWphW.js +2 -0
  123. package/dist/runtime-viewer/fsharp-lb4HOh0M.js +4 -0
  124. package/dist/runtime-viewer/gdresource-B4QpWOUk.js +9 -0
  125. package/dist/runtime-viewer/gdscript-Dc0nUXdB.js +2 -0
  126. package/dist/runtime-viewer/gdshader-D7XodLZw.js +2 -0
  127. package/dist/runtime-viewer/genie-ufotYGgo.js +2 -0
  128. package/dist/runtime-viewer/gherkin-TDn2lJS-.js +2 -0
  129. package/dist/runtime-viewer/git-commit-Cp1Pt-h7.js +4 -0
  130. package/dist/runtime-viewer/git-rebase-CXUuGQB4.js +4 -0
  131. package/dist/runtime-viewer/github-dark-BsaUiyss.js +129 -0
  132. package/dist/runtime-viewer/github-dark-CzJ4LJRs.js +3 -0
  133. package/dist/runtime-viewer/github-dark-default-C6vmm66I.js +3 -0
  134. package/dist/runtime-viewer/github-dark-default-DHpmzBTU.js +75 -0
  135. package/dist/runtime-viewer/github-dark-dimmed-Bg7ahiYc.js +124 -0
  136. package/dist/runtime-viewer/github-dark-dimmed-CntRzgqu.js +3 -0
  137. package/dist/runtime-viewer/github-dark-high-contrast-BP5LnlnO.js +124 -0
  138. package/dist/runtime-viewer/github-dark-high-contrast-gviVHGeU.js +3 -0
  139. package/dist/runtime-viewer/github-light-2Z3gmJhd.js +3 -0
  140. package/dist/runtime-viewer/github-light-BAncjKrl.js +129 -0
  141. package/dist/runtime-viewer/github-light-default-kDVra9RT.js +124 -0
  142. package/dist/runtime-viewer/github-light-default-qgi3RC4t.js +3 -0
  143. package/dist/runtime-viewer/github-light-high-contrast-B2kY0DMu.js +124 -0
  144. package/dist/runtime-viewer/github-light-high-contrast-T0lGRgzi.js +3 -0
  145. package/dist/runtime-viewer/gleam-LV2mKtnv.js +2 -0
  146. package/dist/runtime-viewer/glimmer-js-BX9ckA-I.js +13 -0
  147. package/dist/runtime-viewer/glimmer-ts-DAfjLnWM.js +13 -0
  148. package/dist/runtime-viewer/glsl-BStsalM0.js +5 -0
  149. package/dist/runtime-viewer/gn-ChOGRsKV.js +2 -0
  150. package/dist/runtime-viewer/gnuplot-Di7UZXvs.js +2 -0
  151. package/dist/runtime-viewer/go-BrUQhiM2.js +1 -0
  152. package/dist/runtime-viewer/go-DM5FkVJr.js +2 -0
  153. package/dist/runtime-viewer/graphql-C8jzeQ3m.js +1 -0
  154. package/dist/runtime-viewer/graphql-C_WRV-qo.js +14 -0
  155. package/dist/runtime-viewer/groovy-DNa91fQJ.js +2 -0
  156. package/dist/runtime-viewer/gruvbox-dark-hard-BK-BcNOC.js +127 -0
  157. package/dist/runtime-viewer/gruvbox-dark-hard-fgme3GSG.js +3 -0
  158. package/dist/runtime-viewer/gruvbox-dark-medium-Btvv2ALk.js +127 -0
  159. package/dist/runtime-viewer/gruvbox-dark-medium-GM28AOs3.js +3 -0
  160. package/dist/runtime-viewer/gruvbox-dark-soft-D12Dlf7E.js +3 -0
  161. package/dist/runtime-viewer/gruvbox-dark-soft-ScIRFHp0.js +127 -0
  162. package/dist/runtime-viewer/gruvbox-light-hard-D0LtL2QG.js +3 -0
  163. package/dist/runtime-viewer/gruvbox-light-hard-D3d04bym.js +127 -0
  164. package/dist/runtime-viewer/gruvbox-light-medium-BUM64AiQ.js +127 -0
  165. package/dist/runtime-viewer/gruvbox-light-medium-Dbiuwhcl.js +3 -0
  166. package/dist/runtime-viewer/gruvbox-light-soft-BFyUZF8I.js +3 -0
  167. package/dist/runtime-viewer/gruvbox-light-soft-Deemyp2j.js +127 -0
  168. package/dist/runtime-viewer/hack-DrxrxETA.js +9 -0
  169. package/dist/runtime-viewer/haml-DtaFw5Wt.js +10 -0
  170. package/dist/runtime-viewer/handlebars-DdC6ISBc.js +13 -0
  171. package/dist/runtime-viewer/haskell-D6RgJWqJ.js +2 -0
  172. package/dist/runtime-viewer/haxe-CIYKU3E4.js +2 -0
  173. package/dist/runtime-viewer/hcl-B9zco17t.js +2 -0
  174. package/dist/runtime-viewer/highlights-Dcx2AVJg.js +1342 -0
  175. package/dist/runtime-viewer/hjson-sMCeQDUn.js +2 -0
  176. package/dist/runtime-viewer/hlsl-WeeDt2Wp.js +2 -0
  177. package/dist/runtime-viewer/horizon-B8n8qcHx.js +84 -0
  178. package/dist/runtime-viewer/horizon-aRqT-seq.js +3 -0
  179. package/dist/runtime-viewer/horizon-bright-DACv8zK_.js +84 -0
  180. package/dist/runtime-viewer/horizon-bright-DEevCdc_.js +3 -0
  181. package/dist/runtime-viewer/houston-CsNpjGGD.js +194 -0
  182. package/dist/runtime-viewer/houston-Dg2jxmDJ.js +3 -0
  183. package/dist/runtime-viewer/html-CPjHaxbO.js +1 -0
  184. package/dist/runtime-viewer/html-Di2iyAsX.js +10 -0
  185. package/dist/runtime-viewer/html-derivative-Rauq0RVM.js +4 -0
  186. package/dist/runtime-viewer/http-CkmWBydm.js +13 -0
  187. package/dist/runtime-viewer/hurl-BGjXa70x.js +11 -0
  188. package/dist/runtime-viewer/hxml-Bo5YTIXF.js +4 -0
  189. package/dist/runtime-viewer/hy-C-tRiv34.js +2 -0
  190. package/dist/runtime-viewer/imba-v7ELlTL6.js +2 -0
  191. package/dist/runtime-viewer/ini-DtrnrQj2.js +2 -0
  192. package/dist/runtime-viewer/java-DVlvG-lL.js +1 -0
  193. package/dist/runtime-viewer/java-DzBtATHG.js +4 -0
  194. package/dist/runtime-viewer/javascript--K52AMOb.js +4 -0
  195. package/dist/runtime-viewer/javascript-soGjNmbd.js +1 -0
  196. package/dist/runtime-viewer/jinja-CZBKZHkS.js +4 -0
  197. package/dist/runtime-viewer/jison-Bqt-LhEh.js +4 -0
  198. package/dist/runtime-viewer/json-DN-CB1kQ.js +4 -0
  199. package/dist/runtime-viewer/json-D_yoNICS.js +1 -0
  200. package/dist/runtime-viewer/json5-BdfUTtLp.js +2 -0
  201. package/dist/runtime-viewer/jsonc-ElU8pfhL.js +1 -0
  202. package/dist/runtime-viewer/jsonc-IKox2JSV.js +2 -0
  203. package/dist/runtime-viewer/jsonl-CfuX4G6U.js +2 -0
  204. package/dist/runtime-viewer/jsonnet-Yq9KcR8E.js +2 -0
  205. package/dist/runtime-viewer/jssm-BvR7SnkK.js +2 -0
  206. package/dist/runtime-viewer/jsx-D_XQMdaK.js +4 -0
  207. package/dist/runtime-viewer/jsx-snoZUiUS.js +1 -0
  208. package/dist/runtime-viewer/julia-C8lwf2tT.js +15 -0
  209. package/dist/runtime-viewer/just-CQnb5pIW.js +17 -0
  210. package/dist/runtime-viewer/kanagawa-dragon-Cx4OB0dC.js +3 -0
  211. package/dist/runtime-viewer/kanagawa-dragon-OValCvAZ.js +146 -0
  212. package/dist/runtime-viewer/kanagawa-lotus-C1sYcneT.js +146 -0
  213. package/dist/runtime-viewer/kanagawa-lotus-TwFRI7_8.js +3 -0
  214. package/dist/runtime-viewer/kanagawa-wave-BJYCyv2X.js +146 -0
  215. package/dist/runtime-viewer/kanagawa-wave-BiOn36ux.js +3 -0
  216. package/dist/runtime-viewer/kdl-D97SquIS.js +2 -0
  217. package/dist/runtime-viewer/kotlin-EmJjLeRz.js +2 -0
  218. package/dist/runtime-viewer/kotlin-LwxBtHgj.js +1 -0
  219. package/dist/runtime-viewer/kusto-DHanPw0g.js +2 -0
  220. package/dist/runtime-viewer/langs-D4STZqO4.js +1322 -0
  221. package/dist/runtime-viewer/laserwave-CV_0dg5c.js +71 -0
  222. package/dist/runtime-viewer/laserwave-PpzazpgI.js +3 -0
  223. package/dist/runtime-viewer/latest-events-iiWwpIck-BTK0vSlR.js +3657 -0
  224. package/dist/runtime-viewer/latex-Csew0MLK.js +4 -0
  225. package/dist/runtime-viewer/lean-E61_xvh-.js +2 -0
  226. package/dist/runtime-viewer/less-Bis9Y9oi.js +2 -0
  227. package/dist/runtime-viewer/lib-B7rl8i0A.js +1712 -0
  228. package/dist/runtime-viewer/light-plus-DOInvhGO.js +133 -0
  229. package/dist/runtime-viewer/light-plus-DnhX_5eg.js +3 -0
  230. package/dist/runtime-viewer/liquid-CuxywBoN.js +13 -0
  231. package/dist/runtime-viewer/llvm-DOIFdCJg.js +2 -0
  232. package/dist/runtime-viewer/loader-NcDPTN_h.js +79 -0
  233. package/dist/runtime-viewer/log-Awf6LbyY.js +2 -0
  234. package/dist/runtime-viewer/logo-Cn9nW1nw.js +2 -0
  235. package/dist/runtime-viewer/lua-BtojQCeL.js +5 -0
  236. package/dist/runtime-viewer/luau-DHSqpUrS.js +2 -0
  237. package/dist/runtime-viewer/make-CJ4tc-MS.js +2 -0
  238. package/dist/runtime-viewer/markdown-CNVZ8ok-.js +2 -0
  239. package/dist/runtime-viewer/markdown-Co5Krewy.js +1 -0
  240. package/dist/runtime-viewer/marko-CRIKirQp.js +13 -0
  241. package/dist/runtime-viewer/material-theme-D5uz9rje.js +3 -0
  242. package/dist/runtime-viewer/material-theme-darker-DbzCDLF8.js +92 -0
  243. package/dist/runtime-viewer/material-theme-darker-Dqalv5VE.js +3 -0
  244. package/dist/runtime-viewer/material-theme-lighter-CVJ0oH_V.js +3 -0
  245. package/dist/runtime-viewer/material-theme-lighter-CytgYJOd.js +92 -0
  246. package/dist/runtime-viewer/material-theme-ocean-BgKy5sU3.js +92 -0
  247. package/dist/runtime-viewer/material-theme-ocean-CRXu0cdY.js +3 -0
  248. package/dist/runtime-viewer/material-theme-palenight-C6iiJcUB.js +3 -0
  249. package/dist/runtime-viewer/material-theme-palenight-DZK7nXDy.js +92 -0
  250. package/dist/runtime-viewer/material-theme-yF3uaT0h.js +92 -0
  251. package/dist/runtime-viewer/matlab-Dn3Clolk.js +2 -0
  252. package/dist/runtime-viewer/mdc-D0bRQBcT.js +11 -0
  253. package/dist/runtime-viewer/mdx-C5T-IRbL.js +2 -0
  254. package/dist/runtime-viewer/mdx-DM8tlqVf.js +1 -0
  255. package/dist/runtime-viewer/mermaid-C4AYlmk3.js +2 -0
  256. package/dist/runtime-viewer/min-dark-BGA1sv8W.js +3 -0
  257. package/dist/runtime-viewer/min-dark-C1XOhi4b.js +109 -0
  258. package/dist/runtime-viewer/min-light-Bi5vyNSJ.js +109 -0
  259. package/dist/runtime-viewer/min-light-CYXBjZLR.js +3 -0
  260. package/dist/runtime-viewer/mipsasm-Bwfx99oh.js +2 -0
  261. package/dist/runtime-viewer/mojo-CRl08dek.js +2 -0
  262. package/dist/runtime-viewer/monokai-D9Ylqri2.js +149 -0
  263. package/dist/runtime-viewer/monokai-i6D4lZa3.js +3 -0
  264. package/dist/runtime-viewer/moonbit-CF1zF40g.js +2 -0
  265. package/dist/runtime-viewer/move-BP-e5w2W.js +2 -0
  266. package/dist/runtime-viewer/narrat-CrPIhy6S.js +2 -0
  267. package/dist/runtime-viewer/nextflow-D_hnf_jC.js +4 -0
  268. package/dist/runtime-viewer/nextflow-groovy-BLKP0md9.js +2 -0
  269. package/dist/runtime-viewer/nginx-87WOq-zh.js +4 -0
  270. package/dist/runtime-viewer/night-owl-BIeenDB2.js +175 -0
  271. package/dist/runtime-viewer/night-owl-NpADjULE.js +3 -0
  272. package/dist/runtime-viewer/night-owl-light-CPFD_YWe.js +3 -0
  273. package/dist/runtime-viewer/night-owl-light-cj7zoq2Q.js +176 -0
  274. package/dist/runtime-viewer/nim-CDdExumk.js +19 -0
  275. package/dist/runtime-viewer/nix-D_5rVnnj.js +2 -0
  276. package/dist/runtime-viewer/nord-DtfXNtHW.js +3 -0
  277. package/dist/runtime-viewer/nord-LUKuJt-q.js +115 -0
  278. package/dist/runtime-viewer/nsis-R3iO3ArE.js +2 -0
  279. package/dist/runtime-viewer/nushell-Ctp5mfhf.js +2 -0
  280. package/dist/runtime-viewer/objective-c-DPJeQfV6.js +2 -0
  281. package/dist/runtime-viewer/objective-cpp-1I3jYeMe.js +2 -0
  282. package/dist/runtime-viewer/ocaml-DOrLjeoA.js +2 -0
  283. package/dist/runtime-viewer/odin-CyrMbkLb.js +2 -0
  284. package/dist/runtime-viewer/one-dark-pro-CoHxEOhG.js +3 -0
  285. package/dist/runtime-viewer/one-dark-pro-DJGEbENq.js +111 -0
  286. package/dist/runtime-viewer/one-light-CTMiOsB9.js +137 -0
  287. package/dist/runtime-viewer/one-light-DRcvOwa6.js +3 -0
  288. package/dist/runtime-viewer/openscad-BdifjW6z.js +2 -0
  289. package/dist/runtime-viewer/org-DqaIvCPP.js +99 -0
  290. package/dist/runtime-viewer/pascal-CWF557wL.js +2 -0
  291. package/dist/runtime-viewer/perl-CNf3SVpk.js +15 -0
  292. package/dist/runtime-viewer/php-BPw4EY34.js +17 -0
  293. package/dist/runtime-viewer/php-CftiA0NJ.js +1 -0
  294. package/dist/runtime-viewer/pierre-dark-Bdb1mzqq.js +153 -0
  295. package/dist/runtime-viewer/pierre-dark-C6-jOUHM.js +3 -0
  296. package/dist/runtime-viewer/pierre-dark-protanopia-deuteranopia-DCuPErCj.js +153 -0
  297. package/dist/runtime-viewer/pierre-dark-protanopia-deuteranopia-duePIMEV.js +3 -0
  298. package/dist/runtime-viewer/pierre-dark-soft-BAcQZBxz.js +3 -0
  299. package/dist/runtime-viewer/pierre-dark-soft-BbEG7yMD.js +153 -0
  300. package/dist/runtime-viewer/pierre-dark-tritanopia-DOpkeqXJ.js +153 -0
  301. package/dist/runtime-viewer/pierre-dark-tritanopia-D_B2XvmS.js +3 -0
  302. package/dist/runtime-viewer/pierre-dark-vibrant-Cjjp0Ett.js +3 -0
  303. package/dist/runtime-viewer/pierre-dark-vibrant-wch72KIm.js +153 -0
  304. package/dist/runtime-viewer/pierre-light-BOFVfKvu.js +153 -0
  305. package/dist/runtime-viewer/pierre-light-LcifP5tb.js +3 -0
  306. package/dist/runtime-viewer/pierre-light-protanopia-deuteranopia-BQUu7m7e.js +153 -0
  307. package/dist/runtime-viewer/pierre-light-protanopia-deuteranopia-BwLihlmJ.js +3 -0
  308. package/dist/runtime-viewer/pierre-light-soft-BOBDofkU.js +153 -0
  309. package/dist/runtime-viewer/pierre-light-soft-X5R_lHC5.js +3 -0
  310. package/dist/runtime-viewer/pierre-light-tritanopia-DHKQqobW.js +153 -0
  311. package/dist/runtime-viewer/pierre-light-tritanopia-_xB326N3.js +3 -0
  312. package/dist/runtime-viewer/pierre-light-vibrant-BQ8t4eUq.js +153 -0
  313. package/dist/runtime-viewer/pierre-light-vibrant-CpysSVqa.js +3 -0
  314. package/dist/runtime-viewer/pkl-D57k4LLs.js +2 -0
  315. package/dist/runtime-viewer/plastic-B9GSmjqY.js +3 -0
  316. package/dist/runtime-viewer/plastic-BVwrkRXf.js +124 -0
  317. package/dist/runtime-viewer/plsql-CFYD0AaB.js +2 -0
  318. package/dist/runtime-viewer/po-3OOmP4Qc.js +2 -0
  319. package/dist/runtime-viewer/poimandres-BOYLUaPj.js +3 -0
  320. package/dist/runtime-viewer/poimandres-pq5u2ANt.js +111 -0
  321. package/dist/runtime-viewer/polar-B5m1_AiD.js +2 -0
  322. package/dist/runtime-viewer/postcss-DaNMuZdy.js +2 -0
  323. package/dist/runtime-viewer/powerquery-Ds3ATR9s.js +2 -0
  324. package/dist/runtime-viewer/powershell-C6Oz4_dd.js +2 -0
  325. package/dist/runtime-viewer/prisma-RRr5YdGg.js +2 -0
  326. package/dist/runtime-viewer/prolog-DSStdQTq.js +2 -0
  327. package/dist/runtime-viewer/proto-Chh6Q5CM.js +2 -0
  328. package/dist/runtime-viewer/pug-jgpaAltF.js +11 -0
  329. package/dist/runtime-viewer/puppet-BLsUK3yq.js +2 -0
  330. package/dist/runtime-viewer/purescript-B02W4seQ.js +2 -0
  331. package/dist/runtime-viewer/python-BHaXfePs.js +2 -0
  332. package/dist/runtime-viewer/python-CqjzihlT.js +1 -0
  333. package/dist/runtime-viewer/qml-LuB2sppG.js +4 -0
  334. package/dist/runtime-viewer/qmldir-COlmh4fX.js +2 -0
  335. package/dist/runtime-viewer/qss-DQUGDdeL.js +2 -0
  336. package/dist/runtime-viewer/r-DLQ-WMyZ.js +4 -0
  337. package/dist/runtime-viewer/racket-Dh3q-EfD.js +2 -0
  338. package/dist/runtime-viewer/raku-CdFQrZmh.js +2 -0
  339. package/dist/runtime-viewer/razor-DyYB-qxm.js +9 -0
  340. package/dist/runtime-viewer/rbs-jMgpabM7.js +2 -0
  341. package/dist/runtime-viewer/red-CCCMngeG.js +3 -0
  342. package/dist/runtime-viewer/red-Dab29wid.js +153 -0
  343. package/dist/runtime-viewer/reg-BY6GKaZK.js +2 -0
  344. package/dist/runtime-viewer/regexp-DGXwIvno.js +4 -0
  345. package/dist/runtime-viewer/rel-DjgjjaPM.js +2 -0
  346. package/dist/runtime-viewer/riscv-e0swiQQT.js +2 -0
  347. package/dist/runtime-viewer/rolldown-runtime-CwxnZyOB.js +22 -0
  348. package/dist/runtime-viewer/ron-Ba9vjMyp.js +2 -0
  349. package/dist/runtime-viewer/rose-pine-B-dgSkpN.js +3 -0
  350. package/dist/runtime-viewer/rose-pine-BtbnV2yy.js +123 -0
  351. package/dist/runtime-viewer/rose-pine-dawn-Bdn8gWo3.js +123 -0
  352. package/dist/runtime-viewer/rose-pine-dawn-wnKgbnkN.js +3 -0
  353. package/dist/runtime-viewer/rose-pine-moon-Bo6Tj-LK.js +3 -0
  354. package/dist/runtime-viewer/rose-pine-moon-f0wTyd2e.js +123 -0
  355. package/dist/runtime-viewer/rosmsg-33FkgZa7.js +2 -0
  356. package/dist/runtime-viewer/rst-B4Blahjm.js +21 -0
  357. package/dist/runtime-viewer/ruby-DYURXRgy.js +1 -0
  358. package/dist/runtime-viewer/ruby-ZzNzsyR7.js +29 -0
  359. package/dist/runtime-viewer/rust-CbGaYpW0.js +2 -0
  360. package/dist/runtime-viewer/rust-DesRWqWI.js +1 -0
  361. package/dist/runtime-viewer/sandbox-ui-z5RGk327.css +2 -0
  362. package/dist/runtime-viewer/sas-y9RoKb_L.js +4 -0
  363. package/dist/runtime-viewer/sass-B4OMkGSD.js +2 -0
  364. package/dist/runtime-viewer/scala--rETK160.js +2 -0
  365. package/dist/runtime-viewer/scheme-CvovbBgk.js +2 -0
  366. package/dist/runtime-viewer/scss-DcI9-N4n.js +1 -0
  367. package/dist/runtime-viewer/scss-DopO6P6Z.js +5 -0
  368. package/dist/runtime-viewer/sdbl-BibMD0HR.js +2 -0
  369. package/dist/runtime-viewer/shaderlab-TCf2V7Bu.js +4 -0
  370. package/dist/runtime-viewer/shellscript-CMmvhdtO.js +4 -0
  371. package/dist/runtime-viewer/shellsession-C-hBmRFA.js +4 -0
  372. package/dist/runtime-viewer/shiki-CKiqbkeh.js +472 -0
  373. package/dist/runtime-viewer/slack-dark-Cdsw60PX.js +71 -0
  374. package/dist/runtime-viewer/slack-dark-awEjS_Yb.js +3 -0
  375. package/dist/runtime-viewer/slack-ochin-BKdp7_AN.js +94 -0
  376. package/dist/runtime-viewer/slack-ochin-CabfdAmS.js +3 -0
  377. package/dist/runtime-viewer/smalltalk-DxjZ-YtB.js +2 -0
  378. package/dist/runtime-viewer/smithy-tPvbDXO4.js +2 -0
  379. package/dist/runtime-viewer/snazzy-light-BYOmyMID.js +80 -0
  380. package/dist/runtime-viewer/snazzy-light-DqG5DUoz.js +3 -0
  381. package/dist/runtime-viewer/solarized-dark-DW7IHQvx.js +3 -0
  382. package/dist/runtime-viewer/solarized-dark-DbW2e0tz.js +147 -0
  383. package/dist/runtime-viewer/solarized-light-CAggmb5U.js +147 -0
  384. package/dist/runtime-viewer/solarized-light-DHtUsXC-.js +3 -0
  385. package/dist/runtime-viewer/solidity-CzRNc7l4.js +2 -0
  386. package/dist/runtime-viewer/solidity-DcnQs1tt.js +1 -0
  387. package/dist/runtime-viewer/soy-Di0gqQmR.js +4 -0
  388. package/dist/runtime-viewer/sparql-9pWczk0C.js +4 -0
  389. package/dist/runtime-viewer/splunk-mpquMt_8.js +2 -0
  390. package/dist/runtime-viewer/sql-BKQgqUK-.js +4 -0
  391. package/dist/runtime-viewer/sql-CWnPlVS6.js +1 -0
  392. package/dist/runtime-viewer/ssh-config-DcnVpK-n.js +2 -0
  393. package/dist/runtime-viewer/stata-D1hxcba5.js +4 -0
  394. package/dist/runtime-viewer/stream-tokenizer-BWCJrHj9.js +97 -0
  395. package/dist/runtime-viewer/stylus-Bk8v-7oM.js +2 -0
  396. package/dist/runtime-viewer/surrealql-D20GSlYu.js +4 -0
  397. package/dist/runtime-viewer/svelte-C1MdtiIu.js +13 -0
  398. package/dist/runtime-viewer/swift-1fpvFsbf.js +2 -0
  399. package/dist/runtime-viewer/swift-DdLix5IB.js +1 -0
  400. package/dist/runtime-viewer/synthwave-84-DEoLt5E0.js +3 -0
  401. package/dist/runtime-viewer/synthwave-84-DYyyPr4g.js +397 -0
  402. package/dist/runtime-viewer/system-verilog-9E6eQ6kG.js +2 -0
  403. package/dist/runtime-viewer/systemd-CS6cln6J.js +2 -0
  404. package/dist/runtime-viewer/talonscript-COzgILOx.js +2 -0
  405. package/dist/runtime-viewer/tasl-CrL-TM3j.js +2 -0
  406. package/dist/runtime-viewer/tcl-BK--alTs.js +2 -0
  407. package/dist/runtime-viewer/templ-DKjVFvC3.js +11 -0
  408. package/dist/runtime-viewer/terraform-BKVT4lTN.js +2 -0
  409. package/dist/runtime-viewer/tex-BMGJ-FHF.js +5 -0
  410. package/dist/runtime-viewer/themes-D2drbHm6.js +235 -0
  411. package/dist/runtime-viewer/tokyo-night-BDW-4G1n.js +3 -0
  412. package/dist/runtime-viewer/tokyo-night-CnwkSle4.js +140 -0
  413. package/dist/runtime-viewer/toml-BygInOIB.js +1 -0
  414. package/dist/runtime-viewer/toml-CXAVGmfI.js +2 -0
  415. package/dist/runtime-viewer/ts-tags-BMg-6tE-.js +37 -0
  416. package/dist/runtime-viewer/tsv-r5fpGho9.js +2 -0
  417. package/dist/runtime-viewer/tsx-CdftCu0x.js +1 -0
  418. package/dist/runtime-viewer/tsx-sVSKAISV.js +4 -0
  419. package/dist/runtime-viewer/turtle-BbiQBLu0.js +2 -0
  420. package/dist/runtime-viewer/twig-09z_6B11.js +17 -0
  421. package/dist/runtime-viewer/typescript-COKJUNHB.js +4 -0
  422. package/dist/runtime-viewer/typescript-DCN8T-9u.js +1 -0
  423. package/dist/runtime-viewer/typespec-CtiCKN_c.js +2 -0
  424. package/dist/runtime-viewer/typst-D_sC_VAT.js +119 -0
  425. package/dist/runtime-viewer/unwrapDefault-CNWG9hDr.js +5 -0
  426. package/dist/runtime-viewer/v-BdhLiTpS.js +2 -0
  427. package/dist/runtime-viewer/vala-sKTZx7aP.js +2 -0
  428. package/dist/runtime-viewer/vb-BAyoHiqq.js +2 -0
  429. package/dist/runtime-viewer/verilog-DrDp-nNs.js +2 -0
  430. package/dist/runtime-viewer/vesper-BOAJeYxj.js +3 -0
  431. package/dist/runtime-viewer/vesper-DMgHxe32.js +83 -0
  432. package/dist/runtime-viewer/vhdl-D4xoRBgL.js +2 -0
  433. package/dist/runtime-viewer/viml-C41wSeLL.js +2 -0
  434. package/dist/runtime-viewer/vitesse-black-CxSugKJt.js +3 -0
  435. package/dist/runtime-viewer/vitesse-black-D8_Gc8uG.js +183 -0
  436. package/dist/runtime-viewer/vitesse-dark-Dg-H5YXt.js +183 -0
  437. package/dist/runtime-viewer/vitesse-dark-DvdlNt-O.js +3 -0
  438. package/dist/runtime-viewer/vitesse-light-BU-cJySG.js +183 -0
  439. package/dist/runtime-viewer/vitesse-light-q0_0oW1f.js +3 -0
  440. package/dist/runtime-viewer/vue-BbJX7dLK.js +20 -0
  441. package/dist/runtime-viewer/vue-html-DvOnaPby.js +4 -0
  442. package/dist/runtime-viewer/vue-vine-NYLtCzNK.js +17 -0
  443. package/dist/runtime-viewer/vyper-D4A1KnBn.js +2 -0
  444. package/dist/runtime-viewer/wasm-CVPYyV9Y.js +2 -0
  445. package/dist/runtime-viewer/wasm-DrbRUT8q.js +3 -0
  446. package/dist/runtime-viewer/wenyan-Czq8OMMr.js +2 -0
  447. package/dist/runtime-viewer/wgsl-C_l-ZpBu.js +2 -0
  448. package/dist/runtime-viewer/wikitext-B7epQZx2.js +2 -0
  449. package/dist/runtime-viewer/wit-DswQpcNx.js +2 -0
  450. package/dist/runtime-viewer/wolfram-CSEjVwta.js +2 -0
  451. package/dist/runtime-viewer/xml-CBKvpQFb.js +1 -0
  452. package/dist/runtime-viewer/xml-Ct7jrUZw.js +5 -0
  453. package/dist/runtime-viewer/xsl-DovPFRzJ.js +4 -0
  454. package/dist/runtime-viewer/yaml-BfN4AWuy.js +4 -0
  455. package/dist/runtime-viewer/yaml-DWRq8wls.js +1 -0
  456. package/dist/runtime-viewer/zenscript-YvYHF5y3.js +2 -0
  457. package/dist/runtime-viewer/zig-BgXWauKx.js +2 -0
  458. package/dist/styles.css +189 -150
  459. package/dist/tailwind.css +156 -150
  460. package/dist/{run-CJ48hJz0.js → trace-workspace-C8dHRBDV.js} +2 -3
  461. package/dist/use-document-D6Z9oFLm.js +120 -0
  462. package/dist/{workbench-BozOdGCX.js → workbench-Z9wbei53.js} +4 -172
  463. package/dist/workbench.js +2 -1
  464. package/dist/{workspace-CJnBqCqj.js → workspace-CzikYt_y.js} +5 -364
  465. package/dist/workspace-files-pane-DB9Nvwh4.js +367 -0
  466. package/dist/workspace-viewer.js +44403 -0
  467. package/dist/workspace.js +2 -1
  468. package/package.json +9 -4
@@ -0,0 +1,367 @@
1
+ import { t as cn } from "./utils-BER_bdgE.js";
2
+ import { i as VaultTree, n as filterFileNodes, t as fileTreeFromPaths } from "./tree-data-C8CNt4WE.js";
3
+ import { Button, EmptyState, Input, SegmentedControl } from "@tangle-network/ui/primitives";
4
+ import { jsx, jsxs } from "react/jsx-runtime";
5
+ import { useEffect, useId, useMemo, useRef, useState } from "react";
6
+ import { ArrowLeft, FolderOpen, Maximize2, Minimize2 } from "lucide-react";
7
+ import { FileTabs } from "@tangle-network/ui/files";
8
+ // src/workspace/workspace-files-pane.tsx
9
+ const SPLIT_MIN_PX = 640;
10
+ const SIDEBAR_DEFAULT_PX = 280;
11
+ const SIDEBAR_MIN_PX = 200;
12
+ /** The sidebar's width, clamped to 200 px .. half the pane, remembered per viewer under `expansionKey` when given. */
13
+ function useSidebarWidth(key, containerWidth) {
14
+ const storageKey = key ? `${key}:sidebar-width` : void 0;
15
+ const [stored, setStored] = useState(() => {
16
+ if (!storageKey) return SIDEBAR_DEFAULT_PX;
17
+ try {
18
+ const value = Number(globalThis.localStorage?.getItem(storageKey));
19
+ return Number.isFinite(value) && value > 0 ? value : SIDEBAR_DEFAULT_PX;
20
+ } catch {
21
+ return SIDEBAR_DEFAULT_PX;
22
+ }
23
+ });
24
+ const max = Math.max(SIDEBAR_MIN_PX, containerWidth > 0 ? Math.floor(containerWidth / 2) : 560);
25
+ const width = Math.min(max, Math.max(SIDEBAR_MIN_PX, stored));
26
+ const save = (px) => {
27
+ const next = Math.min(max, Math.max(SIDEBAR_MIN_PX, Math.round(px)));
28
+ setStored(next);
29
+ if (storageKey) try {
30
+ globalThis.localStorage?.setItem(storageKey, String(next));
31
+ } catch {}
32
+ };
33
+ return {
34
+ width,
35
+ min: SIDEBAR_MIN_PX,
36
+ max,
37
+ set: save,
38
+ reset: () => save(SIDEBAR_DEFAULT_PX)
39
+ };
40
+ }
41
+ /**
42
+ * The tree's and the open file's header rows: one height and one chrome plane (the page, a step under the card), so
43
+ * they read as one strip with one baseline. Fields in it take the card plane, as the active tab does.
44
+ */
45
+ const HEADER_ROW = "flex h-11 shrink-0 pointer-coarse:h-14 items-center bg-background shadow-[inset_0_-1px_0_hsl(var(--border))] [--field-surface:hsl(var(--card))]";
46
+ /**
47
+ * A 1px line below the header row with a 9px invisible hit area. Its negative margin cancels its width, so the header row stays one strip.
48
+ * Drag, arrow keys (Shift for larger steps), Home/End, or double-click to reset the sidebar width.
49
+ */
50
+ function SidebarResizer({ sidebar, label }) {
51
+ return /* @__PURE__ */ jsxs("div", {
52
+ role: "separator",
53
+ "aria-orientation": "vertical",
54
+ "aria-label": `Resize ${label.toLowerCase()} sidebar`,
55
+ "aria-valuenow": sidebar.width,
56
+ "aria-valuemin": sidebar.min,
57
+ "aria-valuemax": sidebar.max,
58
+ tabIndex: 0,
59
+ onDoubleClick: sidebar.reset,
60
+ onKeyDown: (event) => {
61
+ const step = event.shiftKey ? 64 : 16;
62
+ if (event.key === "ArrowLeft") sidebar.set(sidebar.width - step);
63
+ else if (event.key === "ArrowRight") sidebar.set(sidebar.width + step);
64
+ else if (event.key === "Home") sidebar.set(sidebar.min);
65
+ else if (event.key === "End") sidebar.set(sidebar.max);
66
+ else return;
67
+ event.preventDefault();
68
+ },
69
+ onPointerDown: (event) => {
70
+ const handle = event.currentTarget;
71
+ const startX = event.clientX;
72
+ const startWidth = sidebar.width;
73
+ handle.setPointerCapture(event.pointerId);
74
+ const move = (next) => sidebar.set(startWidth + next.clientX - startX);
75
+ const up = () => {
76
+ handle.removeEventListener("pointermove", move);
77
+ handle.removeEventListener("pointerup", up);
78
+ };
79
+ handle.addEventListener("pointermove", move);
80
+ handle.addEventListener("pointerup", up);
81
+ },
82
+ className: "group relative z-10 -mr-px w-px shrink-0 cursor-col-resize touch-none outline-none",
83
+ children: [/* @__PURE__ */ jsx("span", {
84
+ "aria-hidden": true,
85
+ className: "absolute bottom-0 left-0 top-11 w-px pointer-coarse:top-14 bg-border transition-colors group-hover:bg-ring group-focus-visible:bg-ring"
86
+ }), /* @__PURE__ */ jsx("span", {
87
+ "aria-hidden": true,
88
+ className: "absolute bottom-0 -left-1 top-11 w-[9px] pointer-coarse:top-14"
89
+ })]
90
+ });
91
+ }
92
+ function indexNodes(nodes) {
93
+ const index = /* @__PURE__ */ new Map();
94
+ const visit = (node) => {
95
+ index.set(node.path, node);
96
+ node.children?.forEach(visit);
97
+ };
98
+ nodes.forEach(visit);
99
+ return index;
100
+ }
101
+ function activeElementWithin(element) {
102
+ let active = element.ownerDocument.activeElement;
103
+ if (!element.contains(active)) return null;
104
+ while (active?.shadowRoot?.activeElement) active = active.shadowRoot.activeElement;
105
+ return active instanceof HTMLElement ? active : null;
106
+ }
107
+ /**
108
+ * Compact file navigation shared by workspace companions and standalone panes.
109
+ * One card holds the tree and the open file. Both columns start with a header
110
+ * row of one height on the chrome plane, so the search field and the open-file
111
+ * tabs share one baseline; every inset reads `--files-inset`. Folders start
112
+ * collapsed, expansion is remembered under `expansionKey`, and in the stacked
113
+ * layout a preview replaces the tree until Back.
114
+ */
115
+ function WorkspaceFilesPane({ root, paths, selectedPath, onSelect, preview, onBack, emptyState, expansionKey, search = true, label = "Files", headerActions, surface = "card", layout = "split", tabs = true, expandable = true, status, className, style }) {
116
+ const plain = surface === "plain";
117
+ const rootRef = useRef(null);
118
+ const [containerWidth, setContainerWidth] = useState(0);
119
+ useEffect(() => {
120
+ const element = rootRef.current;
121
+ if (!element || typeof ResizeObserver === "undefined") return;
122
+ const observer = new ResizeObserver(([entry]) => setContainerWidth(entry.contentRect.width));
123
+ observer.observe(element);
124
+ return () => observer.disconnect();
125
+ }, []);
126
+ const split = layout === "split" && (containerWidth === 0 || containerWidth >= SPLIT_MIN_PX);
127
+ const sidebar = useSidebarWidth(expansionKey, containerWidth);
128
+ const [expanded, setExpanded] = useState(false);
129
+ useEffect(() => {
130
+ if (!expanded) return;
131
+ const keydown = (event) => {
132
+ if (event.key !== "Escape" || event.defaultPrevented) return;
133
+ event.preventDefault();
134
+ setExpanded(false);
135
+ };
136
+ document.addEventListener("keydown", keydown);
137
+ return () => document.removeEventListener("keydown", keydown);
138
+ }, [expanded]);
139
+ const nodes = useMemo(() => root ? root.path ? [root] : root.children ?? [] : fileTreeFromPaths(paths ?? []), [root, paths]);
140
+ const index = useMemo(() => indexNodes(nodes), [nodes]);
141
+ const [query, setQuery] = useState("");
142
+ const visible = useMemo(() => filterFileNodes(nodes, query), [nodes, query]);
143
+ const treeRoot = useMemo(() => ({
144
+ name: label,
145
+ path: "",
146
+ type: "directory",
147
+ children: visible
148
+ }), [label, visible]);
149
+ const headingId = useId();
150
+ const treeRef = useRef(null);
151
+ const backRef = useRef(null);
152
+ const returnFocusRef = useRef(null);
153
+ const wasPreviewRef = useRef(false);
154
+ const hasPreview = preview !== void 0;
155
+ const isEmpty = nodes.length === 0;
156
+ const searchable = search && !isEmpty;
157
+ const normalizedSelection = selectedPath?.replace(/^(\.\/|\/)+/, "").replace(/\/+$/, "");
158
+ const mountedRef = useRef(false);
159
+ const openedByReaderRef = useRef(false);
160
+ useEffect(() => {
161
+ if (!mountedRef.current) {
162
+ mountedRef.current = true;
163
+ wasPreviewRef.current = hasPreview;
164
+ return;
165
+ }
166
+ if (split) {
167
+ wasPreviewRef.current = hasPreview;
168
+ return;
169
+ }
170
+ if (hasPreview && !wasPreviewRef.current && openedByReaderRef.current) backRef.current?.focus({ preventScroll: true });
171
+ openedByReaderRef.current = false;
172
+ if (!hasPreview && wasPreviewRef.current) {
173
+ const target = returnFocusRef.current;
174
+ if (target?.isConnected) target.focus({ preventScroll: true });
175
+ else treeRef.current?.focus({ preventScroll: true });
176
+ }
177
+ wasPreviewRef.current = hasPreview;
178
+ }, [hasPreview, split]);
179
+ return /* @__PURE__ */ jsxs("div", {
180
+ ref: rootRef,
181
+ "data-workspace-files-layout": split ? "split" : "stack",
182
+ "data-expanded": expanded ? "" : void 0,
183
+ className: cn("flex h-full min-h-0 min-w-0 overflow-hidden bg-card text-card-foreground [--files-inset:0.75rem]", split ? "flex-row" : "flex-col", !plain && "rounded-[var(--radius-lg)] border border-border shadow-[var(--edge-highlight),var(--shadow-card)]", className, expanded && "fixed inset-0 z-50 h-auto max-h-none w-auto max-w-none rounded-none border-0"),
184
+ style: expanded ? void 0 : style,
185
+ children: [
186
+ /* @__PURE__ */ jsx("div", {
187
+ ref: treeRef,
188
+ hidden: !split && hasPreview,
189
+ tabIndex: -1,
190
+ role: "region",
191
+ "aria-label": "Workspace files",
192
+ style: split ? { width: sidebar.width } : void 0,
193
+ className: cn("flex min-h-0 flex-col outline-none", split ? "shrink-0" : "flex-1", !split && hasPreview && "hidden"),
194
+ children: /* @__PURE__ */ jsxs("section", {
195
+ "aria-labelledby": headingId,
196
+ "data-workspace-files-surface": surface,
197
+ className: "flex min-h-0 flex-1 flex-col",
198
+ children: [/* @__PURE__ */ jsxs("div", {
199
+ className: cn(HEADER_ROW, "gap-2 px-[var(--files-inset)]"),
200
+ children: [
201
+ /* @__PURE__ */ jsx("h2", {
202
+ id: headingId,
203
+ className: cn("min-w-0 flex-1 truncate text-sm font-medium text-foreground", (plain || searchable) && "sr-only"),
204
+ children: label
205
+ }),
206
+ searchable && /* @__PURE__ */ jsx(Input, {
207
+ type: "search",
208
+ size: "sm",
209
+ value: query,
210
+ onChange: (event) => setQuery(event.target.value),
211
+ placeholder: `Search ${label.toLowerCase()}…`,
212
+ "aria-label": `Search ${label.toLowerCase()}`,
213
+ className: "min-w-0 flex-1"
214
+ }),
215
+ headerActions && /* @__PURE__ */ jsx("div", {
216
+ className: "ml-auto flex shrink-0 items-center gap-1",
217
+ children: headerActions
218
+ })
219
+ ]
220
+ }), /* @__PURE__ */ jsx("div", {
221
+ className: "min-h-0 flex-1 overflow-y-auto px-[calc(var(--files-inset)_-_0.25rem)] py-2",
222
+ children: isEmpty ? emptyState !== void 0 ? emptyState : /* @__PURE__ */ jsx(EmptyState, {
223
+ icon: /* @__PURE__ */ jsx(FolderOpen, { className: "h-6 w-6" }),
224
+ title: "No files yet"
225
+ }) : visible.length === 0 ? /* @__PURE__ */ jsxs("div", {
226
+ className: "flex flex-col items-center gap-3 p-6 text-center",
227
+ children: [/* @__PURE__ */ jsxs("p", {
228
+ className: "max-w-xs break-words text-xs text-muted-foreground",
229
+ children: [
230
+ "No files match “",
231
+ query.trim(),
232
+ "”."
233
+ ]
234
+ }), /* @__PURE__ */ jsx(Button, {
235
+ type: "button",
236
+ variant: "outline",
237
+ size: "sm",
238
+ onClick: () => setQuery(""),
239
+ children: "Clear search"
240
+ })]
241
+ }) : /* @__PURE__ */ jsx(VaultTree, {
242
+ root: treeRoot,
243
+ selectedPath: normalizedSelection,
244
+ onSelect: (path) => {
245
+ if (treeRef.current) returnFocusRef.current = activeElementWithin(treeRef.current);
246
+ openedByReaderRef.current = true;
247
+ onSelect?.(path, index.get(path));
248
+ },
249
+ onFolderSelect: (path) => onSelect?.(`${path}/`, index.get(path)),
250
+ storageKey: expansionKey,
251
+ expandAll: query.trim().length > 0,
252
+ label,
253
+ status
254
+ })
255
+ })]
256
+ })
257
+ }),
258
+ split && /* @__PURE__ */ jsx(SidebarResizer, {
259
+ sidebar,
260
+ label
261
+ }),
262
+ (split || preview) && /* @__PURE__ */ jsx(FilesViewer, {
263
+ preview,
264
+ split,
265
+ tabs: split && tabs,
266
+ empty: isEmpty,
267
+ backRef,
268
+ onBack,
269
+ onOpen: (path) => onSelect?.(path, index.get(path)),
270
+ expand: expandable ? {
271
+ expanded,
272
+ toggle: () => setExpanded((value) => !value)
273
+ } : void 0
274
+ })
275
+ ]
276
+ });
277
+ }
278
+ const baseName = (path) => path.replace(/\/+$/, "").split("/").pop() || path;
279
+ /** The editor side of the pane: open-file tabs, a File | Diff toggle, the full-screen control, and the open file. */
280
+ function FilesViewer({ preview, split, tabs, empty, backRef, onBack, onOpen, expand }) {
281
+ const path = preview?.path;
282
+ const [open, setOpen] = useState(() => path ? [path] : []);
283
+ useEffect(() => {
284
+ if (path) setOpen((paths) => paths.includes(path) ? paths : [...paths, path]);
285
+ }, [path]);
286
+ const [mode, setMode] = useState("file");
287
+ useEffect(() => setMode("file"), [path]);
288
+ const close = (target) => {
289
+ const at = open.indexOf(target);
290
+ const rest = open.filter((entry) => entry !== target);
291
+ setOpen(rest);
292
+ if (target !== path) return;
293
+ const neighbour = rest[Math.min(at, rest.length - 1)];
294
+ if (neighbour) onOpen(neighbour);
295
+ else onBack?.();
296
+ };
297
+ const compare = preview?.compare;
298
+ const ExpandIcon = expand?.expanded ? Minimize2 : Maximize2;
299
+ return /* @__PURE__ */ jsxs("div", {
300
+ className: "flex min-h-0 min-w-0 flex-1 flex-col",
301
+ children: [/* @__PURE__ */ jsxs("div", {
302
+ className: cn(HEADER_ROW, "sticky top-0 z-10 gap-2 pr-[var(--files-inset)]", !(tabs && open.length > 0) && "pl-[var(--files-inset)]", !split && "h-auto min-h-11 flex-wrap py-1.5 pointer-coarse:h-auto"),
303
+ children: [
304
+ onBack && !split && preview && /* @__PURE__ */ jsxs(Button, {
305
+ ref: backRef,
306
+ type: "button",
307
+ variant: "ghost",
308
+ size: "sm",
309
+ onClick: onBack,
310
+ className: "-ml-2 shrink-0 gap-1 px-2 text-muted-foreground",
311
+ children: [/* @__PURE__ */ jsx(ArrowLeft, { "aria-hidden": "true" }), "Back to files"]
312
+ }),
313
+ tabs && open.length > 0 ? /* @__PURE__ */ jsx(FileTabs, {
314
+ tabs: open.map((entry) => ({
315
+ id: entry,
316
+ name: baseName(entry),
317
+ path: entry
318
+ })),
319
+ activeId: path,
320
+ onSelect: onOpen,
321
+ onClose: close,
322
+ className: "h-full flex-1 px-[var(--files-inset)]"
323
+ }) : /* @__PURE__ */ jsx("span", {
324
+ className: "min-w-0 flex-1 truncate text-sm text-foreground",
325
+ title: path,
326
+ children: path && baseName(path)
327
+ }),
328
+ compare && /* @__PURE__ */ jsx(SegmentedControl, {
329
+ "aria-label": "View",
330
+ value: mode,
331
+ onValueChange: setMode,
332
+ options: [{
333
+ value: "file",
334
+ label: "File"
335
+ }, {
336
+ value: "diff",
337
+ label: `Diff vs ${compare.label}`
338
+ }],
339
+ className: cn("shrink-0 p-0.5 [&>button]:py-1", !split && "order-last")
340
+ }),
341
+ preview?.actions && /* @__PURE__ */ jsx("div", {
342
+ className: "flex shrink-0 items-center gap-2",
343
+ children: preview.actions
344
+ }),
345
+ expand && /* @__PURE__ */ jsx(Button, {
346
+ type: "button",
347
+ variant: "ghost",
348
+ size: "icon-sm",
349
+ onClick: expand.toggle,
350
+ "aria-pressed": expand.expanded,
351
+ "aria-label": expand.expanded ? "Exit full screen" : "Full screen",
352
+ title: expand.expanded ? "Exit full screen (Esc)" : "Full screen",
353
+ className: "shrink-0 text-muted-foreground",
354
+ children: /* @__PURE__ */ jsx(ExpandIcon, { "aria-hidden": true })
355
+ })
356
+ ]
357
+ }), preview ? /* @__PURE__ */ jsx("div", {
358
+ "data-primary-content": "",
359
+ className: "flex min-h-0 flex-1 flex-col overflow-auto [&>*]:min-h-full",
360
+ children: mode === "diff" && compare ? compare.content : preview.content
361
+ }) : /* @__PURE__ */ jsx("div", {
362
+ className: "flex min-h-0 min-w-0 flex-1 items-center justify-center p-6 text-sm text-muted-foreground",
363
+ children: empty ? null : "Select a file to open it here."
364
+ })]
365
+ });
366
+ }
367
+ export { WorkspaceFilesPane as t };