@tangle-network/sandbox-ui 2.0.17 → 2.0.19
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.
- package/README.md +2 -0
- package/dist/agent-stream-CBZ2fXJ2.d.ts +66 -0
- package/dist/code-view-BlhCS1SD.js +177 -0
- package/dist/globals.css +186 -150
- package/dist/hooks/use-document.d.ts +2 -0
- package/dist/hooks/use-document.js +142 -0
- package/dist/hooks.d.ts +2 -1
- package/dist/hooks.js +2 -1
- package/dist/{index-BtR5Sc3u.d.ts → index-BnaVprN6.d.ts} +3 -66
- package/dist/index.d.ts +2 -1
- package/dist/index.js +6 -3
- package/dist/run/live.d.ts +11 -0
- package/dist/run/live.js +412 -0
- package/dist/run.d.ts +2 -1
- package/dist/run.js +2 -1
- package/dist/runtime-viewer/AgentGraphCanvas-B74GN1o6-DC3EH_ss.js +8564 -0
- package/dist/runtime-viewer/abap-CJVxDCih.js +2 -0
- package/dist/runtime-viewer/actionscript-3-DxxSN0a_.js +2 -0
- package/dist/runtime-viewer/ada-Cl3FVDZo.js +2 -0
- package/dist/runtime-viewer/ahk-wK-qmFta.js +2 -0
- package/dist/runtime-viewer/ahk2-H2JA2Yl6.js +2 -0
- package/dist/runtime-viewer/andromeeda--b5O3zh8.js +134 -0
- package/dist/runtime-viewer/andromeeda-Gms6gP4X.js +3 -0
- package/dist/runtime-viewer/angular-html-rj1gmhWN.js +15 -0
- package/dist/runtime-viewer/angular-ts-Bqgem-S1.js +17 -0
- package/dist/runtime-viewer/apache-BUhlrTDV.js +2 -0
- package/dist/runtime-viewer/apex-BB9dj6FH.js +2 -0
- package/dist/runtime-viewer/apl-Bbo6_Uyo.js +15 -0
- package/dist/runtime-viewer/appendItems-Cd9l6s5M.js +709 -0
- package/dist/runtime-viewer/applescript-ADDjRuDN.js +2 -0
- package/dist/runtime-viewer/ara-qq1xXFYH.js +2 -0
- package/dist/runtime-viewer/asciidoc-DM4EX7__.js +2 -0
- package/dist/runtime-viewer/asm-BG-prohY.js +2 -0
- package/dist/runtime-viewer/astro-DLFBJCYZ.js +17 -0
- package/dist/runtime-viewer/aurora-x-9XZt7weA.js +3 -0
- package/dist/runtime-viewer/aurora-x-CUDrP6dl.js +148 -0
- package/dist/runtime-viewer/awk-CLViK1AN.js +2 -0
- package/dist/runtime-viewer/ayu-dark-Cn6mFqgG.js +3 -0
- package/dist/runtime-viewer/ayu-dark-KXkHEKeT.js +124 -0
- package/dist/runtime-viewer/ayu-light-CiMsj1GY.js +124 -0
- package/dist/runtime-viewer/ayu-light-DT1rcejT.js +3 -0
- package/dist/runtime-viewer/ayu-mirage-B9PABb6M.js +3 -0
- package/dist/runtime-viewer/ayu-mirage-D866knu2.js +124 -0
- package/dist/runtime-viewer/ballerina-CEQUp96R.js +2 -0
- package/dist/runtime-viewer/bash-CEf3P1Io.js +1 -0
- package/dist/runtime-viewer/bat-CZr3fv67.js +2 -0
- package/dist/runtime-viewer/beancount-VKRy3bBi.js +2 -0
- package/dist/runtime-viewer/berry-BwT4aLVg.js +2 -0
- package/dist/runtime-viewer/bibtex-CqljWi0V.js +2 -0
- package/dist/runtime-viewer/bicep-B4J9qq-Z.js +2 -0
- package/dist/runtime-viewer/bird2-aEHxasJz.js +2 -0
- package/dist/runtime-viewer/blade-CSrWCe1q.js +19 -0
- package/dist/runtime-viewer/bsl-BihRw6wC.js +4 -0
- package/dist/runtime-viewer/c-DqEbRro5.js +1 -0
- package/dist/runtime-viewer/c-nuWrC4_R.js +4 -0
- package/dist/runtime-viewer/c3-B1ecFreZ.js +2 -0
- package/dist/runtime-viewer/cadence-DRL7VEtm.js +2 -0
- package/dist/runtime-viewer/cairo-Mf356MxB.js +4 -0
- package/dist/runtime-viewer/catppuccin-frappe-CaZDpwbh.js +3 -0
- package/dist/runtime-viewer/catppuccin-frappe-D40A-eC-.js +253 -0
- package/dist/runtime-viewer/catppuccin-latte-BY0gIWQk.js +253 -0
- package/dist/runtime-viewer/catppuccin-latte-Cto1Jf_t.js +3 -0
- package/dist/runtime-viewer/catppuccin-macchiato-BshuwwL_.js +253 -0
- package/dist/runtime-viewer/catppuccin-macchiato-Da4JtJzk.js +3 -0
- package/dist/runtime-viewer/catppuccin-mocha-DDZ3zh14.js +253 -0
- package/dist/runtime-viewer/catppuccin-mocha-VxvWTjH_.js +3 -0
- package/dist/runtime-viewer/chapel-OTK-UUIg.js +4 -0
- package/dist/runtime-viewer/clarity-VQN67-z4.js +2 -0
- package/dist/runtime-viewer/clojure-CO3ptKNj.js +2 -0
- package/dist/runtime-viewer/cmake-Daw-aSZt.js +2 -0
- package/dist/runtime-viewer/cobol-Cf_qPd6-.js +9 -0
- package/dist/runtime-viewer/codeowners-RB6Ky2d_.js +2 -0
- package/dist/runtime-viewer/codeql-DWYIUtYc.js +2 -0
- package/dist/runtime-viewer/coffee-Ddb4DMEu.js +4 -0
- package/dist/runtime-viewer/common-lisp-Z5pdmE3i.js +2 -0
- package/dist/runtime-viewer/constants-BJYchxfN.js +3 -0
- package/dist/runtime-viewer/coq-JC5iWOqp.js +2 -0
- package/dist/runtime-viewer/core-CpUX80b1.js +3279 -0
- package/dist/runtime-viewer/cpp-ClbMDAkS.js +1 -0
- package/dist/runtime-viewer/cpp-DHh405em.js +15 -0
- package/dist/runtime-viewer/crystal-DO6lJkkC.js +17 -0
- package/dist/runtime-viewer/csharp-lEK6y4jq.js +2 -0
- package/dist/runtime-viewer/csharp-rZvb5Mvv.js +1 -0
- package/dist/runtime-viewer/css-CwgM346x.js +1 -0
- package/dist/runtime-viewer/css-D0s2ehNl.js +4 -0
- package/dist/runtime-viewer/csv-DDLVNpF_.js +2 -0
- package/dist/runtime-viewer/cue-D9icO3Iq.js +2 -0
- package/dist/runtime-viewer/cypher-CtaxHT1L.js +2 -0
- package/dist/runtime-viewer/d-D4yE5Vyh.js +2 -0
- package/dist/runtime-viewer/dark-plus-BrGvqa0b.js +132 -0
- package/dist/runtime-viewer/dark-plus-Fqa0GMhm.js +3 -0
- package/dist/runtime-viewer/dart-BQKGVcgZ.js +2 -0
- package/dist/runtime-viewer/dax-B_fglzFE.js +2 -0
- package/dist/runtime-viewer/desktop-D1YOnHEY.js +2 -0
- package/dist/runtime-viewer/diff-CiTjO3HD.js +1 -0
- package/dist/runtime-viewer/diff-Diuv0qGT.js +2 -0
- package/dist/runtime-viewer/docker-DbYJRRXH.js +4 -0
- package/dist/runtime-viewer/dockerfile-BFrtbjpQ.js +1 -0
- package/dist/runtime-viewer/dotenv-FA1qqDb1.js +2 -0
- package/dist/runtime-viewer/dracula-Btj3GSO9.js +3 -0
- package/dist/runtime-viewer/dracula-D8HPTJym.js +152 -0
- package/dist/runtime-viewer/dracula-soft-C8zQlEh_.js +102 -0
- package/dist/runtime-viewer/dracula-soft-D6LcM51i.js +3 -0
- package/dist/runtime-viewer/dream-maker-hpDz6By6.js +2 -0
- package/dist/runtime-viewer/edge-BB4FSmZo.js +11 -0
- package/dist/runtime-viewer/elixir-DuATaRNn.js +4 -0
- package/dist/runtime-viewer/elk.bundled-CqF3Dyp2.js +45979 -0
- package/dist/runtime-viewer/elm-82HhQ2nm.js +4 -0
- package/dist/runtime-viewer/emacs-lisp-C5QNYC99.js +2 -0
- package/dist/runtime-viewer/engine-javascript-0MH9JO7M.js +2372 -0
- package/dist/runtime-viewer/engine-oniguruma-7Bv9BGGj.js +237 -0
- package/dist/runtime-viewer/erb-YvvBNDWy.js +9 -0
- package/dist/runtime-viewer/erlang-X9awClOJ.js +4 -0
- package/dist/runtime-viewer/everforest-dark-CzXjGmbf.js +3 -0
- package/dist/runtime-viewer/everforest-dark-DPX_5Sj-.js +86 -0
- package/dist/runtime-viewer/everforest-light-BMqXq4Th.js +3 -0
- package/dist/runtime-viewer/everforest-light-D1PD4A7K.js +86 -0
- package/dist/runtime-viewer/fennel-f1xl4Q05.js +2 -0
- package/dist/runtime-viewer/fish-99YblEc7.js +2 -0
- package/dist/runtime-viewer/fluent-4LP_8ZRP.js +2 -0
- package/dist/runtime-viewer/formatCSSVariablePrefix-Dw8K8---.js +5 -0
- package/dist/runtime-viewer/fortran-fixed-form-CXgWKejO.js +4 -0
- package/dist/runtime-viewer/fortran-free-form-BJnwWphW.js +2 -0
- package/dist/runtime-viewer/fsharp-lb4HOh0M.js +4 -0
- package/dist/runtime-viewer/gdresource-B4QpWOUk.js +9 -0
- package/dist/runtime-viewer/gdscript-Dc0nUXdB.js +2 -0
- package/dist/runtime-viewer/gdshader-D7XodLZw.js +2 -0
- package/dist/runtime-viewer/genie-ufotYGgo.js +2 -0
- package/dist/runtime-viewer/gherkin-TDn2lJS-.js +2 -0
- package/dist/runtime-viewer/git-commit-Cp1Pt-h7.js +4 -0
- package/dist/runtime-viewer/git-rebase-CXUuGQB4.js +4 -0
- package/dist/runtime-viewer/github-dark-BsaUiyss.js +129 -0
- package/dist/runtime-viewer/github-dark-CzJ4LJRs.js +3 -0
- package/dist/runtime-viewer/github-dark-default-C6vmm66I.js +3 -0
- package/dist/runtime-viewer/github-dark-default-DHpmzBTU.js +75 -0
- package/dist/runtime-viewer/github-dark-dimmed-Bg7ahiYc.js +124 -0
- package/dist/runtime-viewer/github-dark-dimmed-CntRzgqu.js +3 -0
- package/dist/runtime-viewer/github-dark-high-contrast-BP5LnlnO.js +124 -0
- package/dist/runtime-viewer/github-dark-high-contrast-gviVHGeU.js +3 -0
- package/dist/runtime-viewer/github-light-2Z3gmJhd.js +3 -0
- package/dist/runtime-viewer/github-light-BAncjKrl.js +129 -0
- package/dist/runtime-viewer/github-light-default-kDVra9RT.js +124 -0
- package/dist/runtime-viewer/github-light-default-qgi3RC4t.js +3 -0
- package/dist/runtime-viewer/github-light-high-contrast-B2kY0DMu.js +124 -0
- package/dist/runtime-viewer/github-light-high-contrast-T0lGRgzi.js +3 -0
- package/dist/runtime-viewer/gleam-LV2mKtnv.js +2 -0
- package/dist/runtime-viewer/glimmer-js-BX9ckA-I.js +13 -0
- package/dist/runtime-viewer/glimmer-ts-DAfjLnWM.js +13 -0
- package/dist/runtime-viewer/glsl-BStsalM0.js +5 -0
- package/dist/runtime-viewer/gn-ChOGRsKV.js +2 -0
- package/dist/runtime-viewer/gnuplot-Di7UZXvs.js +2 -0
- package/dist/runtime-viewer/go-BrUQhiM2.js +1 -0
- package/dist/runtime-viewer/go-DM5FkVJr.js +2 -0
- package/dist/runtime-viewer/graphql-C8jzeQ3m.js +1 -0
- package/dist/runtime-viewer/graphql-C_WRV-qo.js +14 -0
- package/dist/runtime-viewer/groovy-DNa91fQJ.js +2 -0
- package/dist/runtime-viewer/gruvbox-dark-hard-BK-BcNOC.js +127 -0
- package/dist/runtime-viewer/gruvbox-dark-hard-fgme3GSG.js +3 -0
- package/dist/runtime-viewer/gruvbox-dark-medium-Btvv2ALk.js +127 -0
- package/dist/runtime-viewer/gruvbox-dark-medium-GM28AOs3.js +3 -0
- package/dist/runtime-viewer/gruvbox-dark-soft-D12Dlf7E.js +3 -0
- package/dist/runtime-viewer/gruvbox-dark-soft-ScIRFHp0.js +127 -0
- package/dist/runtime-viewer/gruvbox-light-hard-D0LtL2QG.js +3 -0
- package/dist/runtime-viewer/gruvbox-light-hard-D3d04bym.js +127 -0
- package/dist/runtime-viewer/gruvbox-light-medium-BUM64AiQ.js +127 -0
- package/dist/runtime-viewer/gruvbox-light-medium-Dbiuwhcl.js +3 -0
- package/dist/runtime-viewer/gruvbox-light-soft-BFyUZF8I.js +3 -0
- package/dist/runtime-viewer/gruvbox-light-soft-Deemyp2j.js +127 -0
- package/dist/runtime-viewer/hack-DrxrxETA.js +9 -0
- package/dist/runtime-viewer/haml-DtaFw5Wt.js +10 -0
- package/dist/runtime-viewer/handlebars-DdC6ISBc.js +13 -0
- package/dist/runtime-viewer/haskell-D6RgJWqJ.js +2 -0
- package/dist/runtime-viewer/haxe-CIYKU3E4.js +2 -0
- package/dist/runtime-viewer/hcl-B9zco17t.js +2 -0
- package/dist/runtime-viewer/highlights-Dcx2AVJg.js +1342 -0
- package/dist/runtime-viewer/hjson-sMCeQDUn.js +2 -0
- package/dist/runtime-viewer/hlsl-WeeDt2Wp.js +2 -0
- package/dist/runtime-viewer/horizon-B8n8qcHx.js +84 -0
- package/dist/runtime-viewer/horizon-aRqT-seq.js +3 -0
- package/dist/runtime-viewer/horizon-bright-DACv8zK_.js +84 -0
- package/dist/runtime-viewer/horizon-bright-DEevCdc_.js +3 -0
- package/dist/runtime-viewer/houston-CsNpjGGD.js +194 -0
- package/dist/runtime-viewer/houston-Dg2jxmDJ.js +3 -0
- package/dist/runtime-viewer/html-CPjHaxbO.js +1 -0
- package/dist/runtime-viewer/html-Di2iyAsX.js +10 -0
- package/dist/runtime-viewer/html-derivative-Rauq0RVM.js +4 -0
- package/dist/runtime-viewer/http-CkmWBydm.js +13 -0
- package/dist/runtime-viewer/hurl-BGjXa70x.js +11 -0
- package/dist/runtime-viewer/hxml-Bo5YTIXF.js +4 -0
- package/dist/runtime-viewer/hy-C-tRiv34.js +2 -0
- package/dist/runtime-viewer/imba-v7ELlTL6.js +2 -0
- package/dist/runtime-viewer/ini-DtrnrQj2.js +2 -0
- package/dist/runtime-viewer/java-DVlvG-lL.js +1 -0
- package/dist/runtime-viewer/java-DzBtATHG.js +4 -0
- package/dist/runtime-viewer/javascript--K52AMOb.js +4 -0
- package/dist/runtime-viewer/javascript-soGjNmbd.js +1 -0
- package/dist/runtime-viewer/jinja-CZBKZHkS.js +4 -0
- package/dist/runtime-viewer/jison-Bqt-LhEh.js +4 -0
- package/dist/runtime-viewer/json-DN-CB1kQ.js +4 -0
- package/dist/runtime-viewer/json-D_yoNICS.js +1 -0
- package/dist/runtime-viewer/json5-BdfUTtLp.js +2 -0
- package/dist/runtime-viewer/jsonc-ElU8pfhL.js +1 -0
- package/dist/runtime-viewer/jsonc-IKox2JSV.js +2 -0
- package/dist/runtime-viewer/jsonl-CfuX4G6U.js +2 -0
- package/dist/runtime-viewer/jsonnet-Yq9KcR8E.js +2 -0
- package/dist/runtime-viewer/jssm-BvR7SnkK.js +2 -0
- package/dist/runtime-viewer/jsx-D_XQMdaK.js +4 -0
- package/dist/runtime-viewer/jsx-snoZUiUS.js +1 -0
- package/dist/runtime-viewer/julia-C8lwf2tT.js +15 -0
- package/dist/runtime-viewer/just-CQnb5pIW.js +17 -0
- package/dist/runtime-viewer/kanagawa-dragon-Cx4OB0dC.js +3 -0
- package/dist/runtime-viewer/kanagawa-dragon-OValCvAZ.js +146 -0
- package/dist/runtime-viewer/kanagawa-lotus-C1sYcneT.js +146 -0
- package/dist/runtime-viewer/kanagawa-lotus-TwFRI7_8.js +3 -0
- package/dist/runtime-viewer/kanagawa-wave-BJYCyv2X.js +146 -0
- package/dist/runtime-viewer/kanagawa-wave-BiOn36ux.js +3 -0
- package/dist/runtime-viewer/kdl-D97SquIS.js +2 -0
- package/dist/runtime-viewer/kotlin-EmJjLeRz.js +2 -0
- package/dist/runtime-viewer/kotlin-LwxBtHgj.js +1 -0
- package/dist/runtime-viewer/kusto-DHanPw0g.js +2 -0
- package/dist/runtime-viewer/langs-D4STZqO4.js +1322 -0
- package/dist/runtime-viewer/laserwave-CV_0dg5c.js +71 -0
- package/dist/runtime-viewer/laserwave-PpzazpgI.js +3 -0
- package/dist/runtime-viewer/latest-events-iiWwpIck-BTK0vSlR.js +3657 -0
- package/dist/runtime-viewer/latex-Csew0MLK.js +4 -0
- package/dist/runtime-viewer/lean-E61_xvh-.js +2 -0
- package/dist/runtime-viewer/less-Bis9Y9oi.js +2 -0
- package/dist/runtime-viewer/lib-B7rl8i0A.js +1712 -0
- package/dist/runtime-viewer/light-plus-DOInvhGO.js +133 -0
- package/dist/runtime-viewer/light-plus-DnhX_5eg.js +3 -0
- package/dist/runtime-viewer/liquid-CuxywBoN.js +13 -0
- package/dist/runtime-viewer/llvm-DOIFdCJg.js +2 -0
- package/dist/runtime-viewer/loader-NcDPTN_h.js +79 -0
- package/dist/runtime-viewer/log-Awf6LbyY.js +2 -0
- package/dist/runtime-viewer/logo-Cn9nW1nw.js +2 -0
- package/dist/runtime-viewer/lua-BtojQCeL.js +5 -0
- package/dist/runtime-viewer/luau-DHSqpUrS.js +2 -0
- package/dist/runtime-viewer/make-CJ4tc-MS.js +2 -0
- package/dist/runtime-viewer/markdown-CNVZ8ok-.js +2 -0
- package/dist/runtime-viewer/markdown-Co5Krewy.js +1 -0
- package/dist/runtime-viewer/marko-CRIKirQp.js +13 -0
- package/dist/runtime-viewer/material-theme-D5uz9rje.js +3 -0
- package/dist/runtime-viewer/material-theme-darker-DbzCDLF8.js +92 -0
- package/dist/runtime-viewer/material-theme-darker-Dqalv5VE.js +3 -0
- package/dist/runtime-viewer/material-theme-lighter-CVJ0oH_V.js +3 -0
- package/dist/runtime-viewer/material-theme-lighter-CytgYJOd.js +92 -0
- package/dist/runtime-viewer/material-theme-ocean-BgKy5sU3.js +92 -0
- package/dist/runtime-viewer/material-theme-ocean-CRXu0cdY.js +3 -0
- package/dist/runtime-viewer/material-theme-palenight-C6iiJcUB.js +3 -0
- package/dist/runtime-viewer/material-theme-palenight-DZK7nXDy.js +92 -0
- package/dist/runtime-viewer/material-theme-yF3uaT0h.js +92 -0
- package/dist/runtime-viewer/matlab-Dn3Clolk.js +2 -0
- package/dist/runtime-viewer/mdc-D0bRQBcT.js +11 -0
- package/dist/runtime-viewer/mdx-C5T-IRbL.js +2 -0
- package/dist/runtime-viewer/mdx-DM8tlqVf.js +1 -0
- package/dist/runtime-viewer/mermaid-C4AYlmk3.js +2 -0
- package/dist/runtime-viewer/min-dark-BGA1sv8W.js +3 -0
- package/dist/runtime-viewer/min-dark-C1XOhi4b.js +109 -0
- package/dist/runtime-viewer/min-light-Bi5vyNSJ.js +109 -0
- package/dist/runtime-viewer/min-light-CYXBjZLR.js +3 -0
- package/dist/runtime-viewer/mipsasm-Bwfx99oh.js +2 -0
- package/dist/runtime-viewer/mojo-CRl08dek.js +2 -0
- package/dist/runtime-viewer/monokai-D9Ylqri2.js +149 -0
- package/dist/runtime-viewer/monokai-i6D4lZa3.js +3 -0
- package/dist/runtime-viewer/moonbit-CF1zF40g.js +2 -0
- package/dist/runtime-viewer/move-BP-e5w2W.js +2 -0
- package/dist/runtime-viewer/narrat-CrPIhy6S.js +2 -0
- package/dist/runtime-viewer/nextflow-D_hnf_jC.js +4 -0
- package/dist/runtime-viewer/nextflow-groovy-BLKP0md9.js +2 -0
- package/dist/runtime-viewer/nginx-87WOq-zh.js +4 -0
- package/dist/runtime-viewer/night-owl-BIeenDB2.js +175 -0
- package/dist/runtime-viewer/night-owl-NpADjULE.js +3 -0
- package/dist/runtime-viewer/night-owl-light-CPFD_YWe.js +3 -0
- package/dist/runtime-viewer/night-owl-light-cj7zoq2Q.js +176 -0
- package/dist/runtime-viewer/nim-CDdExumk.js +19 -0
- package/dist/runtime-viewer/nix-D_5rVnnj.js +2 -0
- package/dist/runtime-viewer/nord-DtfXNtHW.js +3 -0
- package/dist/runtime-viewer/nord-LUKuJt-q.js +115 -0
- package/dist/runtime-viewer/nsis-R3iO3ArE.js +2 -0
- package/dist/runtime-viewer/nushell-Ctp5mfhf.js +2 -0
- package/dist/runtime-viewer/objective-c-DPJeQfV6.js +2 -0
- package/dist/runtime-viewer/objective-cpp-1I3jYeMe.js +2 -0
- package/dist/runtime-viewer/ocaml-DOrLjeoA.js +2 -0
- package/dist/runtime-viewer/odin-CyrMbkLb.js +2 -0
- package/dist/runtime-viewer/one-dark-pro-CoHxEOhG.js +3 -0
- package/dist/runtime-viewer/one-dark-pro-DJGEbENq.js +111 -0
- package/dist/runtime-viewer/one-light-CTMiOsB9.js +137 -0
- package/dist/runtime-viewer/one-light-DRcvOwa6.js +3 -0
- package/dist/runtime-viewer/openscad-BdifjW6z.js +2 -0
- package/dist/runtime-viewer/org-DqaIvCPP.js +99 -0
- package/dist/runtime-viewer/pascal-CWF557wL.js +2 -0
- package/dist/runtime-viewer/perl-CNf3SVpk.js +15 -0
- package/dist/runtime-viewer/php-BPw4EY34.js +17 -0
- package/dist/runtime-viewer/php-CftiA0NJ.js +1 -0
- package/dist/runtime-viewer/pierre-dark-Bdb1mzqq.js +153 -0
- package/dist/runtime-viewer/pierre-dark-C6-jOUHM.js +3 -0
- package/dist/runtime-viewer/pierre-dark-protanopia-deuteranopia-DCuPErCj.js +153 -0
- package/dist/runtime-viewer/pierre-dark-protanopia-deuteranopia-duePIMEV.js +3 -0
- package/dist/runtime-viewer/pierre-dark-soft-BAcQZBxz.js +3 -0
- package/dist/runtime-viewer/pierre-dark-soft-BbEG7yMD.js +153 -0
- package/dist/runtime-viewer/pierre-dark-tritanopia-DOpkeqXJ.js +153 -0
- package/dist/runtime-viewer/pierre-dark-tritanopia-D_B2XvmS.js +3 -0
- package/dist/runtime-viewer/pierre-dark-vibrant-Cjjp0Ett.js +3 -0
- package/dist/runtime-viewer/pierre-dark-vibrant-wch72KIm.js +153 -0
- package/dist/runtime-viewer/pierre-light-BOFVfKvu.js +153 -0
- package/dist/runtime-viewer/pierre-light-LcifP5tb.js +3 -0
- package/dist/runtime-viewer/pierre-light-protanopia-deuteranopia-BQUu7m7e.js +153 -0
- package/dist/runtime-viewer/pierre-light-protanopia-deuteranopia-BwLihlmJ.js +3 -0
- package/dist/runtime-viewer/pierre-light-soft-BOBDofkU.js +153 -0
- package/dist/runtime-viewer/pierre-light-soft-X5R_lHC5.js +3 -0
- package/dist/runtime-viewer/pierre-light-tritanopia-DHKQqobW.js +153 -0
- package/dist/runtime-viewer/pierre-light-tritanopia-_xB326N3.js +3 -0
- package/dist/runtime-viewer/pierre-light-vibrant-BQ8t4eUq.js +153 -0
- package/dist/runtime-viewer/pierre-light-vibrant-CpysSVqa.js +3 -0
- package/dist/runtime-viewer/pkl-D57k4LLs.js +2 -0
- package/dist/runtime-viewer/plastic-B9GSmjqY.js +3 -0
- package/dist/runtime-viewer/plastic-BVwrkRXf.js +124 -0
- package/dist/runtime-viewer/plsql-CFYD0AaB.js +2 -0
- package/dist/runtime-viewer/po-3OOmP4Qc.js +2 -0
- package/dist/runtime-viewer/poimandres-BOYLUaPj.js +3 -0
- package/dist/runtime-viewer/poimandres-pq5u2ANt.js +111 -0
- package/dist/runtime-viewer/polar-B5m1_AiD.js +2 -0
- package/dist/runtime-viewer/postcss-DaNMuZdy.js +2 -0
- package/dist/runtime-viewer/powerquery-Ds3ATR9s.js +2 -0
- package/dist/runtime-viewer/powershell-C6Oz4_dd.js +2 -0
- package/dist/runtime-viewer/prisma-RRr5YdGg.js +2 -0
- package/dist/runtime-viewer/prolog-DSStdQTq.js +2 -0
- package/dist/runtime-viewer/proto-Chh6Q5CM.js +2 -0
- package/dist/runtime-viewer/pug-jgpaAltF.js +11 -0
- package/dist/runtime-viewer/puppet-BLsUK3yq.js +2 -0
- package/dist/runtime-viewer/purescript-B02W4seQ.js +2 -0
- package/dist/runtime-viewer/python-BHaXfePs.js +2 -0
- package/dist/runtime-viewer/python-CqjzihlT.js +1 -0
- package/dist/runtime-viewer/qml-LuB2sppG.js +4 -0
- package/dist/runtime-viewer/qmldir-COlmh4fX.js +2 -0
- package/dist/runtime-viewer/qss-DQUGDdeL.js +2 -0
- package/dist/runtime-viewer/r-DLQ-WMyZ.js +4 -0
- package/dist/runtime-viewer/racket-Dh3q-EfD.js +2 -0
- package/dist/runtime-viewer/raku-CdFQrZmh.js +2 -0
- package/dist/runtime-viewer/razor-DyYB-qxm.js +9 -0
- package/dist/runtime-viewer/rbs-jMgpabM7.js +2 -0
- package/dist/runtime-viewer/red-CCCMngeG.js +3 -0
- package/dist/runtime-viewer/red-Dab29wid.js +153 -0
- package/dist/runtime-viewer/reg-BY6GKaZK.js +2 -0
- package/dist/runtime-viewer/regexp-DGXwIvno.js +4 -0
- package/dist/runtime-viewer/rel-DjgjjaPM.js +2 -0
- package/dist/runtime-viewer/riscv-e0swiQQT.js +2 -0
- package/dist/runtime-viewer/rolldown-runtime-CwxnZyOB.js +22 -0
- package/dist/runtime-viewer/ron-Ba9vjMyp.js +2 -0
- package/dist/runtime-viewer/rose-pine-B-dgSkpN.js +3 -0
- package/dist/runtime-viewer/rose-pine-BtbnV2yy.js +123 -0
- package/dist/runtime-viewer/rose-pine-dawn-Bdn8gWo3.js +123 -0
- package/dist/runtime-viewer/rose-pine-dawn-wnKgbnkN.js +3 -0
- package/dist/runtime-viewer/rose-pine-moon-Bo6Tj-LK.js +3 -0
- package/dist/runtime-viewer/rose-pine-moon-f0wTyd2e.js +123 -0
- package/dist/runtime-viewer/rosmsg-33FkgZa7.js +2 -0
- package/dist/runtime-viewer/rst-B4Blahjm.js +21 -0
- package/dist/runtime-viewer/ruby-DYURXRgy.js +1 -0
- package/dist/runtime-viewer/ruby-ZzNzsyR7.js +29 -0
- package/dist/runtime-viewer/rust-CbGaYpW0.js +2 -0
- package/dist/runtime-viewer/rust-DesRWqWI.js +1 -0
- package/dist/runtime-viewer/sandbox-ui-z5RGk327.css +2 -0
- package/dist/runtime-viewer/sas-y9RoKb_L.js +4 -0
- package/dist/runtime-viewer/sass-B4OMkGSD.js +2 -0
- package/dist/runtime-viewer/scala--rETK160.js +2 -0
- package/dist/runtime-viewer/scheme-CvovbBgk.js +2 -0
- package/dist/runtime-viewer/scss-DcI9-N4n.js +1 -0
- package/dist/runtime-viewer/scss-DopO6P6Z.js +5 -0
- package/dist/runtime-viewer/sdbl-BibMD0HR.js +2 -0
- package/dist/runtime-viewer/shaderlab-TCf2V7Bu.js +4 -0
- package/dist/runtime-viewer/shellscript-CMmvhdtO.js +4 -0
- package/dist/runtime-viewer/shellsession-C-hBmRFA.js +4 -0
- package/dist/runtime-viewer/shiki-CKiqbkeh.js +472 -0
- package/dist/runtime-viewer/slack-dark-Cdsw60PX.js +71 -0
- package/dist/runtime-viewer/slack-dark-awEjS_Yb.js +3 -0
- package/dist/runtime-viewer/slack-ochin-BKdp7_AN.js +94 -0
- package/dist/runtime-viewer/slack-ochin-CabfdAmS.js +3 -0
- package/dist/runtime-viewer/smalltalk-DxjZ-YtB.js +2 -0
- package/dist/runtime-viewer/smithy-tPvbDXO4.js +2 -0
- package/dist/runtime-viewer/snazzy-light-BYOmyMID.js +80 -0
- package/dist/runtime-viewer/snazzy-light-DqG5DUoz.js +3 -0
- package/dist/runtime-viewer/solarized-dark-DW7IHQvx.js +3 -0
- package/dist/runtime-viewer/solarized-dark-DbW2e0tz.js +147 -0
- package/dist/runtime-viewer/solarized-light-CAggmb5U.js +147 -0
- package/dist/runtime-viewer/solarized-light-DHtUsXC-.js +3 -0
- package/dist/runtime-viewer/solidity-CzRNc7l4.js +2 -0
- package/dist/runtime-viewer/solidity-DcnQs1tt.js +1 -0
- package/dist/runtime-viewer/soy-Di0gqQmR.js +4 -0
- package/dist/runtime-viewer/sparql-9pWczk0C.js +4 -0
- package/dist/runtime-viewer/splunk-mpquMt_8.js +2 -0
- package/dist/runtime-viewer/sql-BKQgqUK-.js +4 -0
- package/dist/runtime-viewer/sql-CWnPlVS6.js +1 -0
- package/dist/runtime-viewer/ssh-config-DcnVpK-n.js +2 -0
- package/dist/runtime-viewer/stata-D1hxcba5.js +4 -0
- package/dist/runtime-viewer/stream-tokenizer-BWCJrHj9.js +97 -0
- package/dist/runtime-viewer/stylus-Bk8v-7oM.js +2 -0
- package/dist/runtime-viewer/surrealql-D20GSlYu.js +4 -0
- package/dist/runtime-viewer/svelte-C1MdtiIu.js +13 -0
- package/dist/runtime-viewer/swift-1fpvFsbf.js +2 -0
- package/dist/runtime-viewer/swift-DdLix5IB.js +1 -0
- package/dist/runtime-viewer/synthwave-84-DEoLt5E0.js +3 -0
- package/dist/runtime-viewer/synthwave-84-DYyyPr4g.js +397 -0
- package/dist/runtime-viewer/system-verilog-9E6eQ6kG.js +2 -0
- package/dist/runtime-viewer/systemd-CS6cln6J.js +2 -0
- package/dist/runtime-viewer/talonscript-COzgILOx.js +2 -0
- package/dist/runtime-viewer/tasl-CrL-TM3j.js +2 -0
- package/dist/runtime-viewer/tcl-BK--alTs.js +2 -0
- package/dist/runtime-viewer/templ-DKjVFvC3.js +11 -0
- package/dist/runtime-viewer/terraform-BKVT4lTN.js +2 -0
- package/dist/runtime-viewer/tex-BMGJ-FHF.js +5 -0
- package/dist/runtime-viewer/themes-D2drbHm6.js +235 -0
- package/dist/runtime-viewer/tokyo-night-BDW-4G1n.js +3 -0
- package/dist/runtime-viewer/tokyo-night-CnwkSle4.js +140 -0
- package/dist/runtime-viewer/toml-BygInOIB.js +1 -0
- package/dist/runtime-viewer/toml-CXAVGmfI.js +2 -0
- package/dist/runtime-viewer/ts-tags-BMg-6tE-.js +37 -0
- package/dist/runtime-viewer/tsv-r5fpGho9.js +2 -0
- package/dist/runtime-viewer/tsx-CdftCu0x.js +1 -0
- package/dist/runtime-viewer/tsx-sVSKAISV.js +4 -0
- package/dist/runtime-viewer/turtle-BbiQBLu0.js +2 -0
- package/dist/runtime-viewer/twig-09z_6B11.js +17 -0
- package/dist/runtime-viewer/typescript-COKJUNHB.js +4 -0
- package/dist/runtime-viewer/typescript-DCN8T-9u.js +1 -0
- package/dist/runtime-viewer/typespec-CtiCKN_c.js +2 -0
- package/dist/runtime-viewer/typst-D_sC_VAT.js +119 -0
- package/dist/runtime-viewer/unwrapDefault-CNWG9hDr.js +5 -0
- package/dist/runtime-viewer/v-BdhLiTpS.js +2 -0
- package/dist/runtime-viewer/vala-sKTZx7aP.js +2 -0
- package/dist/runtime-viewer/vb-BAyoHiqq.js +2 -0
- package/dist/runtime-viewer/verilog-DrDp-nNs.js +2 -0
- package/dist/runtime-viewer/vesper-BOAJeYxj.js +3 -0
- package/dist/runtime-viewer/vesper-DMgHxe32.js +83 -0
- package/dist/runtime-viewer/vhdl-D4xoRBgL.js +2 -0
- package/dist/runtime-viewer/viml-C41wSeLL.js +2 -0
- package/dist/runtime-viewer/vitesse-black-CxSugKJt.js +3 -0
- package/dist/runtime-viewer/vitesse-black-D8_Gc8uG.js +183 -0
- package/dist/runtime-viewer/vitesse-dark-Dg-H5YXt.js +183 -0
- package/dist/runtime-viewer/vitesse-dark-DvdlNt-O.js +3 -0
- package/dist/runtime-viewer/vitesse-light-BU-cJySG.js +183 -0
- package/dist/runtime-viewer/vitesse-light-q0_0oW1f.js +3 -0
- package/dist/runtime-viewer/vue-BbJX7dLK.js +20 -0
- package/dist/runtime-viewer/vue-html-DvOnaPby.js +4 -0
- package/dist/runtime-viewer/vue-vine-NYLtCzNK.js +17 -0
- package/dist/runtime-viewer/vyper-D4A1KnBn.js +2 -0
- package/dist/runtime-viewer/wasm-CVPYyV9Y.js +2 -0
- package/dist/runtime-viewer/wasm-DrbRUT8q.js +3 -0
- package/dist/runtime-viewer/wenyan-Czq8OMMr.js +2 -0
- package/dist/runtime-viewer/wgsl-C_l-ZpBu.js +2 -0
- package/dist/runtime-viewer/wikitext-B7epQZx2.js +2 -0
- package/dist/runtime-viewer/wit-DswQpcNx.js +2 -0
- package/dist/runtime-viewer/wolfram-CSEjVwta.js +2 -0
- package/dist/runtime-viewer/xml-CBKvpQFb.js +1 -0
- package/dist/runtime-viewer/xml-Ct7jrUZw.js +5 -0
- package/dist/runtime-viewer/xsl-DovPFRzJ.js +4 -0
- package/dist/runtime-viewer/yaml-BfN4AWuy.js +4 -0
- package/dist/runtime-viewer/yaml-DWRq8wls.js +1 -0
- package/dist/runtime-viewer/zenscript-YvYHF5y3.js +2 -0
- package/dist/runtime-viewer/zig-BgXWauKx.js +2 -0
- package/dist/styles.css +189 -150
- package/dist/tailwind.css +156 -150
- package/dist/{run-CJ48hJz0.js → trace-workspace-C8dHRBDV.js} +2 -3
- package/dist/use-document-DCXGpk0q.d.ts +16 -0
- package/dist/{workbench-BozOdGCX.js → workbench-Z9wbei53.js} +4 -172
- package/dist/workbench.js +2 -1
- package/dist/{workspace-CJnBqCqj.js → workspace-CzikYt_y.js} +5 -364
- package/dist/workspace-files-pane-DB9Nvwh4.js +367 -0
- package/dist/workspace-viewer.js +44446 -0
- package/dist/workspace.js +2 -1
- package/package.json +13 -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 };
|