@dayinxisheng/zreadbrow 1.10.1 → 1.17.0
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/bin/zreadbrow.js +8 -8
- package/dist/public/assets/AIPanel-CScovBuP.js +40 -0
- package/dist/public/assets/MermaidBlock-CwSB1vTi.js +1 -0
- package/dist/public/assets/MermaidViewerModal-C6aHO871.js +33 -0
- package/dist/public/assets/ReferenceModal-DSe6-vS0.js +52 -0
- package/dist/public/assets/SettingsModal--k8PL66i.js +23 -0
- package/dist/public/assets/_baseUniq-y4by9G-Q.js +1 -0
- package/dist/public/assets/abap-BdImnpbu.js +1 -0
- package/dist/public/assets/actionscript-3-CoDkCxhg.js +1 -0
- package/dist/public/assets/ada-bCR0ucgS.js +1 -0
- package/dist/public/assets/andromeeda-C4gqWexZ.js +1 -0
- package/dist/public/assets/angular-html-CU67Zn6k.js +1 -0
- package/dist/public/assets/angular-ts-BwZT4LLn.js +1 -0
- package/dist/public/assets/apache-Pmp26Uib.js +1 -0
- package/dist/public/assets/apex-D8_7TLub.js +1 -0
- package/dist/public/assets/apl-dKokRX4l.js +1 -0
- package/dist/public/assets/applescript-Co6uUVPk.js +1 -0
- package/dist/public/assets/ara-BRHolxvo.js +1 -0
- package/dist/public/assets/architectureDiagram-Q4EWVU46-BEmzXJbV.js +36 -0
- package/dist/public/assets/asciidoc-Ve4PFQV2.js +1 -0
- package/dist/public/assets/asm-D_Q5rh1f.js +1 -0
- package/dist/public/assets/astro-CbQHKStN.js +1 -0
- package/dist/public/assets/aurora-x-D-2ljcwZ.js +1 -0
- package/dist/public/assets/awk-DMzUqQB5.js +1 -0
- package/dist/public/assets/ayu-dark-DYE7WIF3.js +1 -0
- package/dist/public/assets/ayu-light-BA47KaF1.js +1 -0
- package/dist/public/assets/ayu-mirage-32ctXXKs.js +1 -0
- package/dist/public/assets/ballerina-BFfxhgS-.js +1 -0
- package/dist/public/assets/bat-BkioyH1T.js +1 -0
- package/dist/public/assets/beancount-k_qm7-4y.js +1 -0
- package/dist/public/assets/berry-uYugtg8r.js +1 -0
- package/dist/public/assets/bibtex-CHM0blh-.js +1 -0
- package/dist/public/assets/bicep-Bmn6On1c.js +1 -0
- package/dist/public/assets/bird2-DPOp833l.js +1 -0
- package/dist/public/assets/blade-D4QpJJKB.js +1 -0
- package/dist/public/assets/{blockDiagram-DXYQGD6D-DIkKSzE_.js → blockDiagram-DXYQGD6D-YFH-77U0.js} +4 -4
- package/dist/public/assets/bsl-BO_Y6i37.js +1 -0
- package/dist/public/assets/c-BIGW1oBm.js +1 -0
- package/dist/public/assets/c3-eo99z4R2.js +1 -0
- package/dist/public/assets/{c4Diagram-AHTNJAMY-BHjt-OYl.js → c4Diagram-AHTNJAMY-CLoKIvmw.js} +1 -1
- package/dist/public/assets/cadence-Bv_4Rxtq.js +1 -0
- package/dist/public/assets/cairo-KRGpt6FW.js +1 -0
- package/dist/public/assets/catppuccin-frappe-DFWUc33u.js +1 -0
- package/dist/public/assets/catppuccin-latte-C9dUb6Cb.js +1 -0
- package/dist/public/assets/catppuccin-macchiato-DQyhUUbL.js +1 -0
- package/dist/public/assets/catppuccin-mocha-D87Tk5Gz.js +1 -0
- package/dist/public/assets/chunk-4BX2VUAB-BYEuseZS.js +1 -0
- package/dist/public/assets/{chunk-4TB4RGXK-DCOTBhMi.js → chunk-4TB4RGXK-FI8K-3Xx.js} +1 -1
- package/dist/public/assets/chunk-55IACEB6-CTAvomwk.js +1 -0
- package/dist/public/assets/chunk-EDXVE4YY-oyJ-O6qG.js +1 -0
- package/dist/public/assets/{chunk-FMBD7UC4-D5OFCWEo.js → chunk-FMBD7UC4-C9K9lOWs.js} +1 -1
- package/dist/public/assets/{chunk-OYMX7WX6-D4OGMa6W.js → chunk-OYMX7WX6-CmKnZ9RU.js} +1 -1
- package/dist/public/assets/chunk-QZHKN3VN-BIbiz9Rm.js +1 -0
- package/dist/public/assets/chunk-YZCP3GAM-CipzN9Ll.js +1 -0
- package/dist/public/assets/clarity-D53aC0YG.js +1 -0
- package/dist/public/assets/classDiagram-6PBFFD2Q-BYEeftLU.js +1 -0
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-BYEeftLU.js +1 -0
- package/dist/public/assets/clipboard-DZvD3OhL.js +1 -0
- package/dist/public/assets/clojure-P80f7IUj.js +1 -0
- package/dist/public/assets/clone-CSrQO5m9.js +1 -0
- package/dist/public/assets/cmake-D1j8_8rp.js +1 -0
- package/dist/public/assets/cobol-nwyudZeR.js +1 -0
- package/dist/public/assets/codeowners-Bp6g37R7.js +1 -0
- package/dist/public/assets/codeql-DsOJ9woJ.js +1 -0
- package/dist/public/assets/coffee-Ch7k5sss.js +1 -0
- package/dist/public/assets/common-lisp-Cg-RD9OK.js +1 -0
- package/dist/public/assets/coq-DkFqJrB1.js +1 -0
- package/dist/public/assets/cose-bilkent-S5V4N54A-DIBlD9wz.js +1 -0
- package/dist/public/assets/cpp-CofmeUqb.js +1 -0
- package/dist/public/assets/crystal-tKQVLTB8.js +1 -0
- package/dist/public/assets/csharp-COcwbKMJ.js +1 -0
- package/dist/public/assets/css-DPfMkruS.js +1 -0
- package/dist/public/assets/csv-fuZLfV_i.js +1 -0
- package/dist/public/assets/cue-D82EKSYY.js +1 -0
- package/dist/public/assets/cypher-COkxafJQ.js +1 -0
- package/dist/public/assets/d-85-TOEBH.js +1 -0
- package/dist/public/assets/dagre-KV5264BT-BOhPW5QL.js +4 -0
- package/dist/public/assets/dark-plus-C3mMm8J8.js +1 -0
- package/dist/public/assets/dart-CF10PKvl.js +1 -0
- package/dist/public/assets/dax-CEL-wOlO.js +1 -0
- package/dist/public/assets/desktop-BmXAJ9_W.js +1 -0
- package/dist/public/assets/diagram-5BDNPKRD-CokDfnAE.js +10 -0
- package/dist/public/assets/diagram-G4DWMVQ6-BRRM2XLs.js +24 -0
- package/dist/public/assets/diagram-MMDJMWI5-DmCtOKnk.js +43 -0
- package/dist/public/assets/diagram-TYMM5635-B4qsiTWn.js +24 -0
- package/dist/public/assets/diff-D97Zzqfu.js +1 -0
- package/dist/public/assets/docker-BcOcwvcX.js +1 -0
- package/dist/public/assets/dotenv-Da5cRb03.js +1 -0
- package/dist/public/assets/dracula-BzJJZx-M.js +1 -0
- package/dist/public/assets/dracula-soft-BXkSAIEj.js +1 -0
- package/dist/public/assets/dream-maker-BtqSS_iP.js +1 -0
- package/dist/public/assets/edge-BkV0erSs.js +1 -0
- package/dist/public/assets/elixir-CDX3lj18.js +1 -0
- package/dist/public/assets/elm-DbKCFpqz.js +1 -0
- package/dist/public/assets/emacs-lisp-C9XAeP06.js +1 -0
- package/dist/public/assets/{erDiagram-SMLLAGMA-D1xy7aNT.js → erDiagram-SMLLAGMA-pXEv9R-9.js} +4 -4
- package/dist/public/assets/erb-B12qg9BL.js +1 -0
- package/dist/public/assets/erlang-DsQrWhSR.js +1 -0
- package/dist/public/assets/everforest-dark-BgDCqdQA.js +1 -0
- package/dist/public/assets/everforest-light-C8M2exoo.js +1 -0
- package/dist/public/assets/fennel-BYunw83y.js +1 -0
- package/dist/public/assets/fish-BvzEVeQv.js +1 -0
- package/dist/public/assets/{flowDiagram-DWJPFMVM-BNGypuw9.js → flowDiagram-DWJPFMVM-BP7auCOg.js} +4 -4
- package/dist/public/assets/fluent-C4IJs8-o.js +1 -0
- package/dist/public/assets/fortran-fixed-form-CkoXwp7k.js +1 -0
- package/dist/public/assets/fortran-free-form-BxgE0vQu.js +1 -0
- package/dist/public/assets/fsharp-CXgrBDvD.js +1 -0
- package/dist/public/assets/ganttDiagram-T4ZO3ILL-CZv87GYZ.js +292 -0
- package/dist/public/assets/gdresource-BOOCDP_w.js +1 -0
- package/dist/public/assets/gdscript-C5YyOfLZ.js +1 -0
- package/dist/public/assets/gdshader-DkwncUOv.js +1 -0
- package/dist/public/assets/genie-D0YGMca9.js +1 -0
- package/dist/public/assets/gherkin-DyxjwDmM.js +1 -0
- package/dist/public/assets/git-commit-F4YmCXRG.js +1 -0
- package/dist/public/assets/git-rebase-r7XF79zn.js +1 -0
- package/dist/public/assets/gitGraphDiagram-UUTBAWPF-BNsUvZWe.js +106 -0
- package/dist/public/assets/github-dark-DHJKELXO.js +1 -0
- package/dist/public/assets/github-dark-default-Cuk6v7N8.js +1 -0
- package/dist/public/assets/github-dark-dimmed-DH5Ifo-i.js +1 -0
- package/dist/public/assets/github-dark-high-contrast-E3gJ1_iC.js +1 -0
- package/dist/public/assets/github-light-DAi9KRSo.js +1 -0
- package/dist/public/assets/github-light-default-D7oLnXFd.js +1 -0
- package/dist/public/assets/github-light-high-contrast-BfjtVDDH.js +1 -0
- package/dist/public/assets/gleam-BspZqrRM.js +1 -0
- package/dist/public/assets/glimmer-js-Rg0-pVw9.js +1 -0
- package/dist/public/assets/glimmer-ts-U6CK756n.js +1 -0
- package/dist/public/assets/glsl-DplSGwfg.js +1 -0
- package/dist/public/assets/gn-n2N0HUVH.js +1 -0
- package/dist/public/assets/gnuplot-DdkO51Og.js +1 -0
- package/dist/public/assets/go-CxLEBnE3.js +1 -0
- package/dist/public/assets/graph-p3cnnF-t.js +1 -0
- package/dist/public/assets/graphql-ChdNCCLP.js +1 -0
- package/dist/public/assets/groovy-gcz8RCvz.js +1 -0
- package/dist/public/assets/gruvbox-dark-hard-CFHQjOhq.js +1 -0
- package/dist/public/assets/gruvbox-dark-medium-GsRaNv29.js +1 -0
- package/dist/public/assets/gruvbox-dark-soft-CVdnzihN.js +1 -0
- package/dist/public/assets/gruvbox-light-hard-CH1njM8p.js +1 -0
- package/dist/public/assets/gruvbox-light-medium-DRw_LuNl.js +1 -0
- package/dist/public/assets/gruvbox-light-soft-hJgmCMqR.js +1 -0
- package/dist/public/assets/hack-CaT9iCJl.js +1 -0
- package/dist/public/assets/haml-B8DHNrY2.js +1 -0
- package/dist/public/assets/handlebars-BL8al0AC.js +1 -0
- package/dist/public/assets/haskell-Df6bDoY_.js +1 -0
- package/dist/public/assets/haxe-CzTSHFRz.js +1 -0
- package/dist/public/assets/hcl-BWvSN4gD.js +1 -0
- package/dist/public/assets/highlighted-body-OFNGDK62--vm9zfDs.js +1 -0
- package/dist/public/assets/hjson-D5-asLiD.js +1 -0
- package/dist/public/assets/hlsl-D3lLCCz7.js +1 -0
- package/dist/public/assets/horizon-BUw7H-hv.js +1 -0
- package/dist/public/assets/horizon-bright-Cn-bp-IR.js +1 -0
- package/dist/public/assets/houston-DnULxvSX.js +1 -0
- package/dist/public/assets/html-GMplVEZG.js +1 -0
- package/dist/public/assets/html-derivative-BFtXZ54Q.js +1 -0
- package/dist/public/assets/http-jrhK8wxY.js +1 -0
- package/dist/public/assets/hurl-irOxFIW8.js +1 -0
- package/dist/public/assets/hxml-Bvhsp5Yf.js +1 -0
- package/dist/public/assets/hy-DFXneXwc.js +1 -0
- package/dist/public/assets/imba-DGztddWO.js +1 -0
- package/dist/public/assets/index-5zPgI2iS.css +1 -0
- package/dist/public/assets/index-CqfyOQhq.js +332 -0
- package/dist/public/assets/index-WbpvO67V.js +153 -0
- package/dist/public/assets/infoDiagram-42DDH7IO-BzfFYcZ2.js +2 -0
- package/dist/public/assets/ini-BEwlwnbL.js +1 -0
- package/dist/public/assets/{ishikawaDiagram-UXIWVN3A-2gMKPPZ7.js → ishikawaDiagram-UXIWVN3A-BlTbVd-H.js} +5 -5
- package/dist/public/assets/java-CylS5w8V.js +1 -0
- package/dist/public/assets/javascript-wDzz0qaB.js +1 -0
- package/dist/public/assets/jinja-4LBKfQ-Z.js +1 -0
- package/dist/public/assets/jison-wvAkD_A8.js +1 -0
- package/dist/public/assets/{journeyDiagram-VCZTEJTY-BapJQfYR.js → journeyDiagram-VCZTEJTY-V5hNOIqg.js} +6 -6
- package/dist/public/assets/json-Cp-IABpG.js +1 -0
- package/dist/public/assets/json5-C9tS-k6U.js +1 -0
- package/dist/public/assets/jsonc-Des-eS-w.js +1 -0
- package/dist/public/assets/jsonl-DcaNXYhu.js +1 -0
- package/dist/public/assets/jsonnet-DFQXde-d.js +1 -0
- package/dist/public/assets/jssm-C2t-YnRu.js +1 -0
- package/dist/public/assets/jsx-g9-lgVsj.js +1 -0
- package/dist/public/assets/julia-CxzCAyBv.js +1 -0
- package/dist/public/assets/just-Cw27pwNe.js +1 -0
- package/dist/public/assets/kanagawa-dragon-CkXjmgJE.js +1 -0
- package/dist/public/assets/kanagawa-lotus-CfQXZHmo.js +1 -0
- package/dist/public/assets/kanagawa-wave-DWedfzmr.js +1 -0
- package/dist/public/assets/{kanban-definition-6JOO6SKY-D7kqIXDV.js → kanban-definition-6JOO6SKY-BWt5uYAr.js} +7 -7
- package/dist/public/assets/kdl-DV7GczEv.js +1 -0
- package/dist/public/assets/kotlin-BdnUsdx6.js +1 -0
- package/dist/public/assets/kusto-DZf3V79B.js +1 -0
- package/dist/public/assets/laserwave-DUszq2jm.js +1 -0
- package/dist/public/assets/latex-CWtU0Tv5.js +1 -0
- package/dist/public/assets/layout-D6ldE2fP.js +1 -0
- package/dist/public/assets/lean-BZvkOJ9d.js +1 -0
- package/dist/public/assets/less-B1dDrJ26.js +1 -0
- package/dist/public/assets/light-plus-B7mTdjB0.js +1 -0
- package/dist/public/assets/liquid-DYVedYrR.js +1 -0
- package/dist/public/assets/llvm-DjAJT7YJ.js +1 -0
- package/dist/public/assets/log-2UxHyX5q.js +1 -0
- package/dist/public/assets/logo-BtOb2qkB.js +1 -0
- package/dist/public/assets/lua-BaeVxFsk.js +1 -0
- package/dist/public/assets/luau-C-HG3fhB.js +1 -0
- package/dist/public/assets/make-CHLpvVh8.js +1 -0
- package/dist/public/assets/markdown-Cvjx9yec.js +1 -0
- package/dist/public/assets/marko-CnJfTvn9.js +1 -0
- package/dist/public/assets/material-theme-D5KoaKCx.js +1 -0
- package/dist/public/assets/material-theme-darker-BfHTSMKl.js +1 -0
- package/dist/public/assets/material-theme-lighter-B0m2ddpp.js +1 -0
- package/dist/public/assets/material-theme-ocean-CyktbL80.js +1 -0
- package/dist/public/assets/material-theme-palenight-Csfq5Kiy.js +1 -0
- package/dist/public/assets/matlab-D7o27uSR.js +1 -0
- package/dist/public/assets/mdc-BMNejdWA.js +1 -0
- package/dist/public/assets/mdx-Cmh6b_Ma.js +1 -0
- package/dist/public/assets/mermaid-CKheD1Go.js +309 -0
- package/dist/public/assets/mermaid-mWjccvbQ.js +1 -0
- package/dist/public/assets/min-CwSB4Wao.js +1 -0
- package/dist/public/assets/min-dark-CafNBF8u.js +1 -0
- package/dist/public/assets/min-light-CTRr51gU.js +1 -0
- package/dist/public/assets/{mindmap-definition-QFDTVHPH-BvErGSXj.js → mindmap-definition-QFDTVHPH-BNS4IjMS.js} +7 -7
- package/dist/public/assets/mipsasm-CKIfxQSi.js +1 -0
- package/dist/public/assets/mojo-rZm6bMo-.js +1 -0
- package/dist/public/assets/monokai-D4h5O-jR.js +1 -0
- package/dist/public/assets/moonbit-_H4v1dQx.js +1 -0
- package/dist/public/assets/move-IF9eRakj.js +1 -0
- package/dist/public/assets/narrat-DRg8JJMk.js +1 -0
- package/dist/public/assets/nextflow-Zz6hmt5N.js +1 -0
- package/dist/public/assets/nextflow-groovy-BeH2EWoN.js +1 -0
- package/dist/public/assets/nginx-BpAMiNFr.js +1 -0
- package/dist/public/assets/night-owl-C39BiMTA.js +1 -0
- package/dist/public/assets/night-owl-light-CMTm3GFP.js +1 -0
- package/dist/public/assets/nim-CVrawwO9.js +1 -0
- package/dist/public/assets/nix-CwoSXNpI.js +1 -0
- package/dist/public/assets/nord-Ddv68eIx.js +1 -0
- package/dist/public/assets/nushell-Cz2AlsmD.js +1 -0
- package/dist/public/assets/objective-c-DXmwc3jG.js +1 -0
- package/dist/public/assets/objective-cpp-CLxacb5B.js +1 -0
- package/dist/public/assets/ocaml-C0hk2d4L.js +1 -0
- package/dist/public/assets/odin-BBf5iR-q.js +1 -0
- package/dist/public/assets/one-dark-pro-DVMEJ2y_.js +1 -0
- package/dist/public/assets/one-light-C3Wv6jpd.js +1 -0
- package/dist/public/assets/openscad-C4EeE6gA.js +1 -0
- package/dist/public/assets/pascal-D93ZcfNL.js +1 -0
- package/dist/public/assets/perl-C0TMdlhV.js +1 -0
- package/dist/public/assets/php-Dhbhpdrm.js +1 -0
- package/dist/public/assets/pieDiagram-DEJITSTG-DWiOvKqY.js +30 -0
- package/dist/public/assets/pkl-u5AG7uiY.js +1 -0
- package/dist/public/assets/plastic-3e1v2bzS.js +1 -0
- package/dist/public/assets/plsql-ChMvpjG-.js +1 -0
- package/dist/public/assets/po-BTJTHyun.js +1 -0
- package/dist/public/assets/poimandres-CS3Unz2-.js +1 -0
- package/dist/public/assets/polar-C0HS_06l.js +1 -0
- package/dist/public/assets/postcss-CXtECtnM.js +1 -0
- package/dist/public/assets/powerquery-CEu0bR-o.js +1 -0
- package/dist/public/assets/powershell-Dpen1YoG.js +1 -0
- package/dist/public/assets/prisma-Dd19v3D-.js +1 -0
- package/dist/public/assets/prolog-CbFg5uaA.js +1 -0
- package/dist/public/assets/proto-C7zT0LnQ.js +1 -0
- package/dist/public/assets/pug-CGlum2m_.js +1 -0
- package/dist/public/assets/puppet-BMWR74SV.js +1 -0
- package/dist/public/assets/purescript-CklMAg4u.js +1 -0
- package/dist/public/assets/python-B6aJPvgy.js +1 -0
- package/dist/public/assets/qml-3beO22l8.js +1 -0
- package/dist/public/assets/qmldir-C8lEn-DE.js +1 -0
- package/dist/public/assets/qss-IeuSbFQv.js +1 -0
- package/dist/public/assets/{quadrantDiagram-34T5L4WZ-SJ_1wGx1.js → quadrantDiagram-34T5L4WZ-BeGjJ6HS.js} +3 -3
- package/dist/public/assets/r-Dspwwk_N.js +1 -0
- package/dist/public/assets/racket-BqYA7rlc.js +1 -0
- package/dist/public/assets/raku-DXvB9xmW.js +1 -0
- package/dist/public/assets/razor-Uh8Bk_45.js +1 -0
- package/dist/public/assets/red-bN70gL4F.js +1 -0
- package/dist/public/assets/reg-C-SQnVFl.js +1 -0
- package/dist/public/assets/regexp-CDVJQ6XC.js +1 -0
- package/dist/public/assets/rel-C3B-1QV4.js +1 -0
- package/dist/public/assets/{requirementDiagram-MS252O5E-DNSA_N0B.js → requirementDiagram-MS252O5E-Bg9ysArQ.js} +3 -3
- package/dist/public/assets/riscv-BM1_JUlF.js +1 -0
- package/dist/public/assets/ron-D8l8udqQ.js +1 -0
- package/dist/public/assets/rose-pine-dawn-DHQR4-dF.js +1 -0
- package/dist/public/assets/rose-pine-moon-D4_iv3hh.js +1 -0
- package/dist/public/assets/rose-pine-qdsjHGoJ.js +1 -0
- package/dist/public/assets/rosmsg-BJDFO7_C.js +1 -0
- package/dist/public/assets/rst-BrH8l1NY.js +1 -0
- package/dist/public/assets/ruby-Dw2BHqvy.js +1 -0
- package/dist/public/assets/rust-B1yitclQ.js +1 -0
- package/dist/public/assets/sankeyDiagram-XADWPNL6-BYRCYtrJ.js +10 -0
- package/dist/public/assets/sas-cz2c8ADy.js +1 -0
- package/dist/public/assets/sass-Cj5Yp3dK.js +1 -0
- package/dist/public/assets/scala-C151Ov-r.js +1 -0
- package/dist/public/assets/scheme-C98Dy4si.js +1 -0
- package/dist/public/assets/scss-OYdSNvt2.js +1 -0
- package/dist/public/assets/sdbl-DVxCFoDh.js +1 -0
- package/dist/public/assets/{sequenceDiagram-FGHM5R23-BkeqyPtT.js → sequenceDiagram-FGHM5R23-CQFXgNL8.js} +1 -1
- package/dist/public/assets/shaderlab-Dg9Lc6iA.js +1 -0
- package/dist/public/assets/shellscript-Yzrsuije.js +1 -0
- package/dist/public/assets/shellsession-BADoaaVG.js +1 -0
- package/dist/public/assets/slack-dark-BthQWCQV.js +1 -0
- package/dist/public/assets/slack-ochin-DqwNpetd.js +1 -0
- package/dist/public/assets/smalltalk-BERRCDM3.js +1 -0
- package/dist/public/assets/snazzy-light-Bw305WKR.js +1 -0
- package/dist/public/assets/solarized-dark-DXbdFlpD.js +1 -0
- package/dist/public/assets/solarized-light-L9t79GZl.js +1 -0
- package/dist/public/assets/solidity-rGO070M0.js +1 -0
- package/dist/public/assets/soy-Brmx7dQM.js +1 -0
- package/dist/public/assets/sparql-rVzFXLq3.js +1 -0
- package/dist/public/assets/splunk-BtCnVYZw.js +1 -0
- package/dist/public/assets/sql-BLtJtn59.js +1 -0
- package/dist/public/assets/ssh-config-_ykCGR6B.js +1 -0
- package/dist/public/assets/stata-BH5u7GGu.js +1 -0
- package/dist/public/assets/stateDiagram-FHFEXIEX-axjES2Uc.js +1 -0
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-CADBRSGI.js +1 -0
- package/dist/public/assets/stylus-BEDo0Tqx.js +1 -0
- package/dist/public/assets/surrealql-Bq5Q-fJD.js +1 -0
- package/dist/public/assets/svelte-C_ipcX3V.js +1 -0
- package/dist/public/assets/swift-D82vCrfD.js +1 -0
- package/dist/public/assets/synthwave-84-CbfX1IO0.js +1 -0
- package/dist/public/assets/system-verilog-CnnmHF94.js +1 -0
- package/dist/public/assets/systemd-4A_iFExJ.js +1 -0
- package/dist/public/assets/talonscript-CkByrt1z.js +1 -0
- package/dist/public/assets/tasl-QIJgUcNo.js +1 -0
- package/dist/public/assets/tcl-dwOrl1Do.js +1 -0
- package/dist/public/assets/templ-P3uqSqPl.js +1 -0
- package/dist/public/assets/terraform-BETggiCN.js +1 -0
- package/dist/public/assets/tex-idrVyKtj.js +1 -0
- package/dist/public/assets/{timeline-definition-GMOUNBTQ-Cuy0cm-5.js → timeline-definition-GMOUNBTQ-Rn8InxFI.js} +4 -4
- package/dist/public/assets/tokyo-night-hegEt444.js +1 -0
- package/dist/public/assets/toml-vGWfd6FD.js +1 -0
- package/dist/public/assets/ts-tags-zn1MmPIZ.js +1 -0
- package/dist/public/assets/tsv-B_m7g4N7.js +1 -0
- package/dist/public/assets/tsx-COt5Ahok.js +1 -0
- package/dist/public/assets/turtle-BsS91CYL.js +1 -0
- package/dist/public/assets/twig-DNn4PbVi.js +1 -0
- package/dist/public/assets/typescript-BPQ3VLAy.js +1 -0
- package/dist/public/assets/typespec-BGHnOYBU.js +1 -0
- package/dist/public/assets/typst-DHCkPAjA.js +1 -0
- package/dist/public/assets/v-BcVCzyr7.js +1 -0
- package/dist/public/assets/vala-CsfeWuGM.js +1 -0
- package/dist/public/assets/vb-D17OF-Vu.js +1 -0
- package/dist/public/assets/vennDiagram-DHZGUBPP-BWKM7U6N.js +34 -0
- package/dist/public/assets/verilog-BQ8w6xss.js +1 -0
- package/dist/public/assets/vesper-DU1UobuO.js +1 -0
- package/dist/public/assets/vhdl-CeAyd5Ju.js +1 -0
- package/dist/public/assets/viml-CJc9bBzg.js +1 -0
- package/dist/public/assets/vitesse-black-Bkuqu6BP.js +1 -0
- package/dist/public/assets/vitesse-dark-D0r3Knsf.js +1 -0
- package/dist/public/assets/vitesse-light-CVO1_9PV.js +1 -0
- package/dist/public/assets/vue-DN_0RTcg.js +1 -0
- package/dist/public/assets/vue-html-AaS7Mt5G.js +1 -0
- package/dist/public/assets/vue-vine-CQOfvN7w.js +1 -0
- package/dist/public/assets/vyper-CDx5xZoG.js +1 -0
- package/dist/public/assets/{wardley-RL74JXVD-DjMjcuBL.js → wardley-RL74JXVD-BGUd-VPm.js} +1 -1
- package/dist/public/assets/{wardleyDiagram-NUSXRM2D-BOyc1xaj.js → wardleyDiagram-NUSXRM2D-BJ8q8ZAA.js} +2 -2
- package/dist/public/assets/wasm-CG6Dc4jp.js +1 -0
- package/dist/public/assets/wasm-MzD3tlZU.js +1 -0
- package/dist/public/assets/wenyan-BV7otONQ.js +1 -0
- package/dist/public/assets/wgsl-Dx-B1_4e.js +1 -0
- package/dist/public/assets/wikitext-BhOHFoWU.js +1 -0
- package/dist/public/assets/wit-5i3qLPDT.js +1 -0
- package/dist/public/assets/wolfram-lXgVvXCa.js +1 -0
- package/dist/public/assets/xml-sdJ4AIDG.js +1 -0
- package/dist/public/assets/xsl-CtQFsRM5.js +1 -0
- package/dist/public/assets/xychartDiagram-5P7HB3ND-CFKLrNXJ.js +7 -0
- package/dist/public/assets/yaml-Buea-lGh.js +1 -0
- package/dist/public/assets/zenscript-DVFEvuxE.js +1 -0
- package/dist/public/assets/zig-VOosw3JB.js +1 -0
- package/dist/public/index.html +3 -2
- package/dist/server/index.js +1 -1
- package/dist/server/middleware/errorHandler.js +1 -1
- package/dist/server/middleware/requestId.js +1 -0
- package/dist/server/routes/ai.js +1 -1
- package/dist/server/routes/config.js +1 -1
- package/dist/server/routes/files.js +1 -1
- package/dist/server/routes/projects.js +1 -1
- package/dist/server/routes/scan.js +1 -1
- package/dist/server/routes/search.js +1 -1
- package/dist/server/routes/wiki.js +1 -1
- package/dist/server/services/ai.js +1 -1
- package/dist/server/services/cache.js +1 -0
- package/dist/server/services/config.js +1 -1
- package/dist/server/services/jieba.js +1 -0
- package/dist/server/services/logger.js +1 -1
- package/dist/server/services/scanner.js +1 -1
- package/dist/server/services/search-db.js +1 -0
- package/dist/server/services/search-index.js +1 -0
- package/dist/server/services/search-query.js +1 -0
- package/dist/server/services/tokenizer.js +1 -0
- package/dist/server/services/wiki-loader.js +1 -1
- package/dist/server/services/wire-reader.js +1 -1
- package/package.json +3 -2
- package/dist/public/assets/_baseUniq-BrWLEfWC.js +0 -1
- package/dist/public/assets/arc-C2voQW5G.js +0 -1
- package/dist/public/assets/architectureDiagram-Q4EWVU46-CjXm3lW_.js +0 -36
- package/dist/public/assets/channel-Bb1lVNKT.js +0 -1
- package/dist/public/assets/chunk-4BX2VUAB-PkH8JpRM.js +0 -1
- package/dist/public/assets/chunk-55IACEB6-Kre4db2O.js +0 -1
- package/dist/public/assets/chunk-EDXVE4YY-DjG3G5Q6.js +0 -1
- package/dist/public/assets/chunk-QZHKN3VN-DYZ_zfZH.js +0 -1
- package/dist/public/assets/chunk-YZCP3GAM-BDNgiUfR.js +0 -1
- package/dist/public/assets/classDiagram-6PBFFD2Q-CUYzWi0l.js +0 -1
- package/dist/public/assets/classDiagram-v2-HSJHXN6E-CUYzWi0l.js +0 -1
- package/dist/public/assets/clone-er-2r5P0.js +0 -1
- package/dist/public/assets/cose-bilkent-S5V4N54A-ENdm0rFb.js +0 -1
- package/dist/public/assets/dagre-KV5264BT-8uTTosYf.js +0 -4
- package/dist/public/assets/defaultLocale-DX6XiGOO.js +0 -1
- package/dist/public/assets/diagram-5BDNPKRD-CTsZG2qu.js +0 -10
- package/dist/public/assets/diagram-G4DWMVQ6-CBHwurw6.js +0 -24
- package/dist/public/assets/diagram-MMDJMWI5-BbLUVNjb.js +0 -43
- package/dist/public/assets/diagram-TYMM5635-DiKLub9O.js +0 -24
- package/dist/public/assets/ganttDiagram-T4ZO3ILL-Bx5OvBxg.js +0 -292
- package/dist/public/assets/gitGraphDiagram-UUTBAWPF-Bvj53KbL.js +0 -106
- package/dist/public/assets/graph-CIgghdam.js +0 -1
- package/dist/public/assets/index-BGusfLkH.js +0 -639
- package/dist/public/assets/index-BjF0IeXr.css +0 -1
- package/dist/public/assets/infoDiagram-42DDH7IO-BdNC9SIx.js +0 -2
- package/dist/public/assets/init-Gi6I4Gst.js +0 -1
- package/dist/public/assets/layout-Bn486hhR.js +0 -1
- package/dist/public/assets/linear-DnIvnQPj.js +0 -1
- package/dist/public/assets/min-Cd08C0t-.js +0 -1
- package/dist/public/assets/ordinal-Cboi1Yqb.js +0 -1
- package/dist/public/assets/pieDiagram-DEJITSTG-CTYDcWVI.js +0 -30
- package/dist/public/assets/sankeyDiagram-XADWPNL6-B0dlSxkt.js +0 -10
- package/dist/public/assets/stateDiagram-FHFEXIEX-CHbbQjIz.js +0 -1
- package/dist/public/assets/stateDiagram-v2-QKLJ7IA2-EOX4W0Ug.js +0 -1
- package/dist/public/assets/vennDiagram-DHZGUBPP-CeDf3kNH.js +0 -34
- package/dist/public/assets/xychartDiagram-5P7HB3ND-gNOIqBXc.js +0 -7
- package/dist/server/services/search.js +0 -1
package/bin/zreadbrow.js
CHANGED
|
@@ -20,7 +20,7 @@ function parseArgs() {
|
|
|
20
20
|
const config = {
|
|
21
21
|
host: '127.0.0.1',
|
|
22
22
|
port: 9681,
|
|
23
|
-
|
|
23
|
+
debug: false,
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
for (let i = 0; i < args.length; i++) {
|
|
@@ -30,8 +30,8 @@ function parseArgs() {
|
|
|
30
30
|
} else if (args[i] === '--port' && args[i + 1]) {
|
|
31
31
|
config.port = parseInt(args[i + 1], 10);
|
|
32
32
|
i++;
|
|
33
|
-
} else if (args[i] === '--
|
|
34
|
-
config.
|
|
33
|
+
} else if (args[i] === '--debug') {
|
|
34
|
+
config.debug = true;
|
|
35
35
|
} else if (args[i] === '--version' || args[i] === '-v') {
|
|
36
36
|
console.log(`zreadbrow v${getVersion()}`);
|
|
37
37
|
process.exit(0);
|
|
@@ -44,14 +44,14 @@ Usage: zreadbrow [options]
|
|
|
44
44
|
Options:
|
|
45
45
|
--host <host> Server host (default: 127.0.0.1)
|
|
46
46
|
--port <port> Server port (default: 9681)
|
|
47
|
-
--
|
|
47
|
+
--debug Enable debug logging (detailed AI logs)
|
|
48
48
|
--version, -v Show version number
|
|
49
49
|
--help, -h Show this help message
|
|
50
50
|
|
|
51
51
|
Examples:
|
|
52
52
|
zreadbrow
|
|
53
53
|
zreadbrow --host 0.0.0.0 --port 3000
|
|
54
|
-
zreadbrow --
|
|
54
|
+
zreadbrow --debug
|
|
55
55
|
`);
|
|
56
56
|
process.exit(0);
|
|
57
57
|
}
|
|
@@ -60,13 +60,13 @@ Examples:
|
|
|
60
60
|
return config;
|
|
61
61
|
}
|
|
62
62
|
|
|
63
|
-
const { host, port,
|
|
63
|
+
const { host, port, debug } = parseArgs();
|
|
64
64
|
|
|
65
65
|
// 设置环境变量传递给服务端
|
|
66
66
|
process.env.ZREADBROW_HOST = host;
|
|
67
67
|
process.env.ZREADBROW_PORT = String(port);
|
|
68
|
-
if (
|
|
69
|
-
process.env.
|
|
68
|
+
if (debug) {
|
|
69
|
+
process.env.ZREADBROW_DEBUG = 'true';
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
// 启动服务端
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import{r as w,f as V,u as kt,j as s,E as z,h as Uo,S as Kn,i as Jn}from"./index-CqfyOQhq.js";import{c as Xn}from"./clipboard-DZvD3OhL.js";import"./mermaid-CKheD1Go.js";function Go(e){const{minWidth:t,maxWidth:n,initialWidth:o,onResize:r}=e,[i,a]=w.useState(o),[l,c]=w.useState(!1),u=w.useRef(null),p=w.useRef(0),x=w.useRef(0),f=w.useCallback(h=>Math.min(n,Math.max(t,h)),[t,n]),v=w.useCallback(h=>{u.current!==null&&cancelAnimationFrame(u.current),u.current=requestAnimationFrame(()=>{const d=f(window.innerWidth-h);a(d),r(d)})},[f,r]),S=w.useCallback(()=>{c(!1),u.current!==null&&(cancelAnimationFrame(u.current),u.current=null),document.body.style.cursor="",document.body.style.userSelect=""},[]),I=w.useCallback(h=>{h.preventDefault(),c(!0),p.current=h.clientX,x.current=i,document.body.style.cursor="col-resize",document.body.style.userSelect="none"},[i]);return w.useEffect(()=>{if(!l)return;const h=b=>{v(b.clientX)},d=()=>{S()};return window.addEventListener("mousemove",h),window.addEventListener("mouseup",d),()=>{window.removeEventListener("mousemove",h),window.removeEventListener("mouseup",d)}},[l,v,S]),w.useEffect(()=>{if(!l)return;const h=b=>{b.touches.length>0&&v(b.touches[0].clientX)},d=()=>{S()};return window.addEventListener("touchmove",h),window.addEventListener("touchend",d),()=>{window.removeEventListener("touchmove",h),window.removeEventListener("touchend",d)}},[l,v,S]),w.useEffect(()=>{a(f(o))},[o,f]),{width:i,dragHandleProps:{onMouseDown:I,onTouchStart:h=>{c(!0),x.current=i,document.body.style.cursor="col-resize",document.body.style.userSelect="none"}},isDragging:l}}const Qn="/api/ai";async function Oe(e,t){var r;const o=await(await fetch(`${Qn}${e}`,{headers:{"Content-Type":"application/json",...t==null?void 0:t.headers},...t})).json();if(!o.success)throw new Error(((r=o.error)==null?void 0:r.message)||"AI API Error");return o.data}class Ko{constructor(){this.eventSource=null,this.reconnectAttempts=0,this.maxReconnectAttempts=3,this.reconnectTimer=null,this.currentSessionId=null,this.currentCallbacks=null}async getStatus(){return Oe("/status")}async listSessions(t){return Oe(`/sessions?projectId=${encodeURIComponent(t)}`)}async createSession(t,n){return Oe("/sessions",{method:"POST",body:JSON.stringify({projectId:t,projectPath:n})})}async getSessionDetail(t){return Oe(`/sessions/${encodeURIComponent(t)}`)}async sendPrompt(t,n){console.log(`[AI API] sendPrompt called: sessionId=${t}, message="${n.substring(0,50)}..."`);try{await Oe(`/sessions/${encodeURIComponent(t)}/prompt`,{method:"POST",body:JSON.stringify({message:n})}),console.log("[AI API] sendPrompt succeeded")}catch(o){throw console.error("[AI API] sendPrompt FAILED:",o),o}}async respondApproval(t,n,o){await Oe(`/sessions/${encodeURIComponent(t)}/approve`,{method:"POST",body:JSON.stringify({requestId:n,response:o})})}async cancelGeneration(t){await Oe(`/sessions/${encodeURIComponent(t)}/cancel`,{method:"POST"})}async deleteSession(t){await Oe(`/sessions/${encodeURIComponent(t)}`,{method:"DELETE"})}connectEvents(t,n){console.log(`[AI API] connectEvents called for session ${t}`),this.disconnectEvents(),this.currentSessionId=t,this.currentCallbacks=n,this.reconnectAttempts=0,this.createEventSource(t,n)}createEventSource(t,n){const o=`${Qn}/sessions/${encodeURIComponent(t)}/events`;console.log(`[AI API] Creating EventSource: ${o}`),this.eventSource=new EventSource(o),this.eventSource.addEventListener("message",r=>{try{const i=JSON.parse(r.data);console.log(`[AI API] SSE event received: type=${i.type}`),n.onEvent(i)}catch(i){console.error("[AI API] SSE message parse error:",i)}}),this.eventSource.addEventListener("request",r=>{try{const i=JSON.parse(r.data);n.onRequest(i)}catch{}}),this.eventSource.addEventListener("close",r=>{try{const i=JSON.parse(r.data);n.onError(i)}catch{}this.disconnectEvents()}),this.eventSource.addEventListener("done",()=>{n.onDone()}),this.eventSource.onerror=()=>{this.handleReconnect()},this.eventSource.onopen=()=>{var r;this.reconnectAttempts=0,(r=n.onOpen)==null||r.call(n)}}handleReconnect(){var n;if(this.reconnectAttempts>=this.maxReconnectAttempts){(n=this.currentCallbacks)==null||n.onError({message:"连接已断开,请刷新页面重试",code:"MAX_RECONNECT_EXCEEDED"}),this.disconnectEvents();return}this.reconnectAttempts++;const t=Math.pow(2,this.reconnectAttempts-1)*1e3;this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout(()=>{this.currentSessionId&&this.currentCallbacks&&(this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.createEventSource(this.currentSessionId,this.currentCallbacks))},t)}disconnectEvents(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.eventSource&&(this.eventSource.close(),this.eventSource=null),this.currentSessionId=null,this.currentCallbacks=null,this.reconnectAttempts=0}}const Pe=new Ko,Ve=class Ve{constructor(){this.ws=null,this.reconnectAttempts=0,this.maxReconnect=5,this.reconnectTimer=null,this.currentSessionId=null,this.currentCallbacks=null,this.intentionallyClosed=!1,this.connectionGeneration=0,this.heartbeatInterval=null,this.missedPongs=0,this.lastPongTime=0}connect(t,n){console.log(`[AI WS] Connecting to session ${t}`),this.disconnect(),this.currentSessionId=t,this.currentCallbacks=n,this.reconnectAttempts=0,this.intentionallyClosed=!1,this.createConnection(t,n)}createConnection(t,n){const o=window.location.protocol==="https:"?"wss:":"ws:",r=window.location.host,i=`${o}//${r}/api/ai/sessions/${t}/ws`,a=++this.connectionGeneration;console.log(`[AI WS] Creating WebSocket: ${i} (generation=${a})`),this.ws=new WebSocket(i),this.ws.onopen=()=>{var l;if(a!==this.connectionGeneration){console.log(`[AI WS] Stale onopen ignored (gen ${a} vs current ${this.connectionGeneration})`);return}console.log("[AI WS] Connection opened"),this.startHeartbeat(),(l=n.onConnect)==null||l.call(n)},this.ws.onmessage=l=>{if(a===this.connectionGeneration)try{const c=JSON.parse(l.data);this.handleMessage(c,n)}catch(c){console.error("[AI WS] Message parse error:",c)}},this.ws.onclose=l=>{if(a!==this.connectionGeneration){console.log(`[AI WS] Stale onclose ignored (gen ${a} vs current ${this.connectionGeneration})`);return}console.log(`[AI WS] Connection closed: code=${l.code}, reason=${l.reason}`),this.intentionallyClosed?n.onClose():this.handleReconnect()},this.ws.onerror=l=>{a===this.connectionGeneration&&(console.error("[AI WS] Connection error:",l),n.onError({message:"WebSocket connection error"}))}}handleMessage(t,n){var o,r;switch(console.log(`[AI WS] Received message: type=${t.type}`),t.type){case"connected":console.log(`[AI WS] Connection confirmed for session ${(o=t.payload)==null?void 0:o.sessionId}`);break;case"request":n.onRequest({id:t.id||"",payload:t.payload||{}});break;case"close":console.log("[AI WS] Server sent close message, marking as intentionally closed"),this.intentionallyClosed=!0,this.stopHeartbeat(),n.onClose(t.payload);break;case"error":n.onError({message:((r=t.payload)==null?void 0:r.message)||"Unknown error"});break;case"pong":this.missedPongs=0,this.lastPongTime=Date.now();break;default:n.onEvent({type:t.type,payload:t.payload||{}})}}startHeartbeat(){this.stopHeartbeat(),this.missedPongs=0,this.lastPongTime=Date.now(),this.heartbeatInterval=setInterval(()=>{if(!this.ws||this.ws.readyState!==WebSocket.OPEN){this.stopHeartbeat();return}if(this.missedPongs++,this.missedPongs>Ve.MAX_MISSED_PONGS){console.warn(`[AI WS] No pong received for ${this.missedPongs*Ve.HEARTBEAT_INTERVAL/1e3}s, closing connection`),this.stopHeartbeat(),this.ws.close();return}this.ws.send(JSON.stringify({type:"ping"}))},Ve.HEARTBEAT_INTERVAL)}stopHeartbeat(){this.heartbeatInterval&&(clearInterval(this.heartbeatInterval),this.heartbeatInterval=null)}handleReconnect(){var n;if(this.reconnectAttempts>=this.maxReconnect){console.log("[AI WS] Max reconnect attempts reached"),(n=this.currentCallbacks)==null||n.onError({message:"连接已断开,请刷新页面重试"}),this.disconnect();return}this.reconnectAttempts++;const t=Math.pow(2,this.reconnectAttempts-1)*1e3;console.log(`[AI WS] Reconnecting in ${t}ms (attempt ${this.reconnectAttempts})`),this.reconnectTimer&&clearTimeout(this.reconnectTimer),this.reconnectTimer=setTimeout(()=>{this.currentSessionId&&this.currentCallbacks&&!this.intentionallyClosed&&(this.ws&&(this.ws.close(),this.ws=null),this.createConnection(this.currentSessionId,this.currentCallbacks))},t)}sendPrompt(t){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.error("[AI WS] Cannot send prompt: WebSocket not connected");return}const n={type:"prompt",content:t};this.ws.send(JSON.stringify(n)),console.log(`[AI WS] Sent prompt: "${t.substring(0,50)}..."`)}sendApproval(t,n,o){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.error("[AI WS] Cannot send approval: WebSocket not connected");return}const r={type:"approve",requestId:t,response:n,feedback:o};this.ws.send(JSON.stringify(r)),console.log(`[AI WS] Sent approval: requestId=${t}, response=${n}`)}sendAnswer(t,n){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.error("[AI WS] Cannot send answer: WebSocket not connected");return}const o={type:"answer",questionId:t,answer:n};this.ws.send(JSON.stringify(o)),console.log(`[AI WS] Sent answer: questionId=${t}`)}sendCancel(){if(!this.ws||this.ws.readyState!==WebSocket.OPEN){console.error("[AI WS] Cannot send cancel: WebSocket not connected");return}const t={type:"cancel"};this.ws.send(JSON.stringify(t)),console.log("[AI WS] Sent cancel")}disconnect(){this.intentionallyClosed=!0,this.connectionGeneration++,this.stopHeartbeat(),this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.ws&&(this.ws.onclose=null,this.ws.onopen=null,this.ws.onmessage=null,this.ws.onerror=null,this.ws.close(),this.ws=null),this.currentSessionId=null,this.currentCallbacks=null,this.reconnectAttempts=0}isConnected(){return this.ws!==null&&this.ws.readyState===WebSocket.OPEN}};Ve.HEARTBEAT_INTERVAL=3e4,Ve.MAX_MISSED_PONGS=2;let Ft=Ve;const We=new Ft;function Jo(e){const n=Date.now()-e,o=Math.floor(n/6e4),r=Math.floor(n/36e5),i=Math.floor(n/864e5);return o<1?"刚刚":o<60?`${o} 分钟前`:r<24?`${r} 小时前`:i<7?`${i} 天前`:new Date(e).toLocaleDateString()}const Xo=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M12 5v14M5 12h14"})}),Qo=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M3 6h18M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})}),qo=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("path",{d:"M18 6L6 18M6 6l12 12"})}),Yo=({size:e=12,open:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-200 ${t?"rotate-180":""}`,children:s.jsx("path",{d:"M6 9l6 6 6-6"})}),Zo=()=>{const e=V(d=>d.aiSessions),t=V(d=>d.activeSessionId),n=V(d=>d.setActiveSession),o=V(d=>d.setAIPanelOpen),r=V(d=>d.setAISessions),i=V(d=>d.setAIMessages),a=V(d=>d.aiStreaming),l=kt(d=>d.config),c=kt(d=>d.projects),[u,p]=w.useState(!1),x=w.useRef(null);w.useEffect(()=>{function d(b){x.current&&!x.current.contains(b.target)&&p(!1)}return document.addEventListener("mousedown",d),()=>document.removeEventListener("mousedown",d)},[]);const f=l==null?void 0:l.lastOpenedProject,v=c.find(d=>d.id===f),S=e.find(d=>d.id===t),I=w.useCallback(async()=>{if(!(!v||a)){try{const d=await Pe.createSession(v.id,v.path),b={id:d.id,projectId:v.id,projectPath:v.path,title:"新对话",status:"active",createdAt:Date.now(),updatedAt:Date.now()};r([...e,b]),n(d.id),i([])}catch(d){console.error("Failed to create session:",d)}p(!1)}},[v,a,e,r,n,i]),g=w.useCallback(async d=>{if(!(d.id===t||a)){try{n(d.id);const b=await Pe.getSessionDetail(d.id);i(b.messages)}catch(b){console.error("Failed to switch session:",b)}p(!1)}},[t,a,n,i]),h=w.useCallback(async()=>{if(!(!t||a)&&window.confirm("确定删除这个对话?此操作不可撤销。"))try{if(await Pe.deleteSession(t),v){const d=await Pe.listSessions(v.id);if(r(d),d.length>0){const b=d[d.length-1];n(b.id);const E=await Pe.getSessionDetail(b.id);i(E.messages)}else n(null),i([])}}catch(d){console.error("Failed to delete session:",d)}},[t,a,v,r,n,i]);return s.jsxs("div",{className:"flex items-center gap-2 px-3.5 py-2.5 border-b border-edge bg-surface-secondary shrink-0",children:[s.jsxs("div",{ref:x,className:"relative flex-1 min-w-0",children:[s.jsxs("button",{onClick:()=>p(!u),className:"flex items-center gap-1.5 w-full px-2.5 py-1.5 border border-edge rounded-md bg-surface text-content text-[13px] font-medium transition-colors duration-150 hover:border-content-tertiary",children:[s.jsx("span",{className:"flex-1 text-left truncate",children:(S==null?void 0:S.title)||"新对话"}),s.jsx(Yo,{open:u})]}),u&&s.jsx("div",{className:"absolute top-full left-0 right-0 mt-1 bg-surface border border-edge rounded-lg shadow-lg z-50 max-h-[240px] overflow-auto animate-fade-in",children:e.length===0?s.jsx("div",{className:"px-3 py-3 text-[13px] text-content-tertiary text-center",children:"暂无历史对话"}):e.map(d=>s.jsxs("button",{onClick:()=>g(d),className:`
|
|
2
|
+
flex flex-col gap-0.5 w-full px-3 py-2 text-left
|
|
3
|
+
text-[13px] transition-colors duration-150
|
|
4
|
+
hover:bg-surface-hover
|
|
5
|
+
${d.id===t?"bg-accent-light text-accent-text":"text-content"}
|
|
6
|
+
`,children:[s.jsx("span",{className:"font-medium truncate",children:d.title||"新对话"}),s.jsx("span",{className:"text-[11px] text-content-tertiary",children:Jo(d.updatedAt)})]},d.id))})]}),s.jsx("button",{onClick:I,disabled:a,title:"新建对话",className:"p-1.5 rounded-md text-content-tertiary hover:bg-surface-hover hover:text-content transition-colors duration-150 disabled:opacity-40 disabled:cursor-not-allowed shrink-0",children:s.jsx(Xo,{})}),s.jsx("button",{onClick:h,disabled:!t||a,title:"删除当前对话",className:"p-1.5 rounded-md text-content-tertiary hover:bg-surface-hover hover:text-danger transition-colors duration-150 disabled:opacity-40 disabled:cursor-not-allowed shrink-0",children:s.jsx(Qo,{})}),s.jsx("button",{onClick:()=>o(!1),disabled:a,title:"关闭 AI 面板",className:"p-1.5 rounded-md text-content-tertiary hover:bg-surface-hover hover:text-danger transition-colors duration-150 disabled:opacity-40 disabled:cursor-not-allowed shrink-0",children:s.jsx(qo,{})})]})},Nt=0,$e=1,Ze=2,qn=4;function yn(e){return()=>e}function er(e){e()}function Yn(e,t){return n=>e(t(n))}function wn(e,t){return()=>e(t)}function tr(e,t){return n=>e(t,n)}function Qt(e){return e!==void 0}function nr(...e){return()=>{e.map(er)}}function et(){}function Et(e,t){return t(e),e}function or(e,t){return t(e)}function re(...e){return e}function Y(e,t){return e($e,t)}function U(e,t){e(Nt,t)}function qt(e){e(Ze)}function ae(e){return e(qn)}function $(e,t){return Y(e,tr(t,Nt))}function Ne(e,t){const n=e($e,o=>{n(),t(o)});return n}function Sn(e){let t,n;return o=>r=>{t=r,n&&clearTimeout(n),n=setTimeout(()=>{o(t)},e)}}function Zn(e,t){return e===t}function oe(e=Zn){let t;return n=>o=>{e(t,o)||(t=o,n(o))}}function D(e){return t=>n=>{e(n)&&t(n)}}function P(e){return t=>Yn(t,e)}function Ae(e){return t=>()=>{t(e)}}function k(e,...t){const n=rr(...t);return((o,r)=>{switch(o){case Ze:qt(e);return;case $e:return Y(e,n(r))}})}function Me(e,t){return n=>o=>{n(t=e(t,o))}}function Ge(e){return t=>n=>{e>0?e--:t(n)}}function He(e){let t=null,n;return o=>r=>{t=r,!n&&(n=setTimeout(()=>{n=void 0,o(t)},e))}}function G(...e){const t=new Array(e.length);let n=0,o=null;const r=2**e.length-1;return e.forEach((i,a)=>{const l=2**a;Y(i,c=>{const u=n;n|=l,t[a]=c,u!==r&&n===r&&o&&(o(),o=null)})}),i=>a=>{const l=()=>{i([a].concat(t))};n===r?l():o=l}}function rr(...e){return t=>e.reduceRight(or,t)}function sr(e){let t,n;const o=()=>t==null?void 0:t();return function(r,i){switch(r){case $e:return i?n===i?void 0:(o(),n=i,t=Y(e,i),t):(o(),et);case Ze:o(),n=null;return}}}function j(e){let t=e;const n=J();return((o,r)=>{switch(o){case Nt:t=r;break;case $e:{r(t);break}case qn:return t}return n(o,r)})}function we(e,t){return Et(j(t),n=>$(e,n))}function J(){const e=[];return((t,n)=>{switch(t){case Nt:e.slice().forEach(o=>{o(n)});return;case Ze:e.splice(0,e.length);return;case $e:return e.push(n),()=>{const o=e.indexOf(n);o>-1&&e.splice(o,1)}}})}function ke(e){return Et(J(),t=>$(e,t))}function Q(e,t=[],{singleton:n}={singleton:!0}){return{constructor:e,dependencies:t,id:ir(),singleton:n}}const ir=()=>Symbol();function ar(e){const t=new Map,n=({constructor:o,dependencies:r,id:i,singleton:a})=>{if(a&&t.has(i))return t.get(i);const l=o(r.map(c=>n(c)));return a&&t.set(i,l),l};return n(e)}function pe(...e){const t=J(),n=new Array(e.length);let o=0;const r=2**e.length-1;return e.forEach((i,a)=>{const l=2**a;Y(i,c=>{n[a]=c,o|=l,o===r&&U(t,n)})}),function(i,a){switch(i){case Ze:{qt(t);return}case $e:return o===r&&a(n),Y(t,a)}}}function _(e,t=Zn){return k(e,oe(t))}function Vt(...e){return function(t,n){switch(t){case Ze:return;case $e:return nr(...e.map(o=>Y(o,n)))}}}const ge={DEBUG:0,INFO:1,WARN:2,ERROR:3},lr={[ge.DEBUG]:"debug",[ge.ERROR]:"error",[ge.INFO]:"log",[ge.WARN]:"warn"},cr=()=>typeof globalThis>"u"?window:globalThis,_e=Q(()=>{const e=j(ge.ERROR);return{log:j((t,n,o=ge.INFO)=>{const r=cr().VIRTUOSO_LOG_LEVEL??ae(e);o>=r&&console[lr[o]]("%creact-virtuoso: %c%s %o","color: #0253b3; font-weight: bold","color: initial",t,n)}),logLevel:e}},[],{singleton:!0});function Ke(e,t,n){return Yt(e,t,n).callbackRef}function Yt(e,t,n){const o=z.useRef(null);let r=a=>{};const i=z.useMemo(()=>typeof ResizeObserver<"u"?new ResizeObserver(a=>{const l=()=>{const c=a[0].target;c.offsetParent!==null&&e(c)};n?l():requestAnimationFrame(l)}):null,[e,n]);return r=a=>{a&&t?(i==null||i.observe(a),o.current=a):(o.current&&(i==null||i.unobserve(o.current)),o.current=null)},{callbackRef:r,ref:o}}function ur(e,t,n,o,r,i,a,l,c){const u=z.useCallback(p=>{const x=dr(p.children,t,l?"offsetWidth":"offsetHeight",r);let f=p.parentElement;for(;f.dataset.virtuosoScroller===void 0;)f=f.parentElement;const v=f.lastElementChild.dataset.viewportType==="window";let S;v&&(S=f.ownerDocument.defaultView);const I=a?l?a.scrollLeft:a.scrollTop:v?l?S.scrollX||S.document.documentElement.scrollLeft:S.scrollY||S.document.documentElement.scrollTop:l?f.scrollLeft:f.scrollTop,g=a?l?a.scrollWidth:a.scrollHeight:v?l?S.document.documentElement.scrollWidth:S.document.documentElement.scrollHeight:l?f.scrollWidth:f.scrollHeight,h=a?l?a.offsetWidth:a.offsetHeight:v?l?S.innerWidth:S.innerHeight:l?f.offsetWidth:f.offsetHeight;o({scrollHeight:g,scrollTop:Math.max(I,0),viewportHeight:h}),i==null||i(l?In("column-gap",getComputedStyle(p).columnGap,r):In("row-gap",getComputedStyle(p).rowGap,r)),x!==null&&e(x)},[e,t,r,i,a,o,l]);return Yt(u,n,c)}function dr(e,t,n,o){const r=e.length;if(r===0)return null;const i=[];for(let a=0;a<r;a++){const l=e.item(a);if(l.dataset.index===void 0)continue;const c=parseInt(l.dataset.index),u=parseFloat(l.dataset.knownSize),p=t(l,n);if(p===0&&o("Zero-sized element, this should not happen",{child:l},ge.ERROR),p===u)continue;const x=i[i.length-1];i.length===0||x.size!==p||x.endIndex!==c-1?i.push({endIndex:c,size:p,startIndex:c}):i[i.length-1].endIndex++}return i}function In(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,ge.WARN),t==="normal"?0:parseInt(t??"0",10)}function eo(e,t,n){const o=z.useRef(null),r=z.useCallback(c=>{if(!(c!=null&&c.offsetParent))return;const u=c.getBoundingClientRect(),p=u.width;let x,f;if(t){const v=t.getBoundingClientRect(),S=u.top-v.top;f=v.height-Math.max(0,S),x=S+t.scrollTop}else{const v=a.current.ownerDocument.defaultView;f=v.innerHeight-Math.max(0,u.top),x=u.top+v.scrollY}o.current={listHeight:u.height,offsetTop:x,visibleHeight:f,visibleWidth:p},e(o.current)},[e,t]),{callbackRef:i,ref:a}=Yt(r,!0,n),l=z.useCallback(()=>{r(a.current)},[r,a]);return z.useEffect(()=>{var u;if(t){t.addEventListener("scroll",l);const p=new ResizeObserver(()=>{requestAnimationFrame(l)});return p.observe(t),()=>{t.removeEventListener("scroll",l),p.unobserve(t)}}const c=(u=a.current)==null?void 0:u.ownerDocument.defaultView;return c==null||c.addEventListener("scroll",l),c==null||c.addEventListener("resize",l),()=>{c==null||c.removeEventListener("scroll",l),c==null||c.removeEventListener("resize",l)}},[l,t,a]),i}const be=Q(()=>{const e=J(),t=J(),n=j(0),o=J(),r=j(0),i=J(),a=J(),l=j(0),c=j(0),u=j(0),p=j(0),x=J(),f=J(),v=j(!1),S=j(!1),I=j(!1);return $(k(e,P(({scrollTop:g})=>g)),t),$(k(e,P(({scrollHeight:g})=>g)),a),$(t,r),{deviation:n,fixedFooterHeight:u,fixedHeaderHeight:c,footerHeight:p,headerHeight:l,horizontalDirection:S,scrollBy:f,scrollContainerState:e,scrollHeight:a,scrollingInProgress:v,scrollTo:x,scrollTop:t,skipAnimationFrameInResizeObserver:I,smoothScrollTargetReached:o,statefulScrollTop:r,viewportHeight:i}},[],{singleton:!0}),it={lvl:0};function to(e,t){const n=e.length;if(n===0)return[];let{index:o,value:r}=t(e[0]);const i=[];for(let a=1;a<n;a++){const{index:l,value:c}=t(e[a]);i.push({end:l-1,start:o,value:r}),o=l,r=c}return i.push({end:1/0,start:o,value:r}),i}function Z(e){return e===it}function at(e,t){if(!Z(e))return t===e.k?e.v:t<e.k?at(e.l,t):at(e.r,t)}function Ee(e,t,n="k"){if(Z(e))return[-1/0,void 0];if(Number(e[n])===t)return[e.k,e.v];if(Number(e[n])<t){const o=Ee(e.r,t,n);return o[0]===-1/0?[e.k,e.v]:o}return Ee(e.l,t,n)}function Ce(e,t,n){return Z(e)?ro(t,n,1):t===e.k?xe(e,{k:t,v:n}):t<e.k?bn(xe(e,{l:Ce(e.l,t,n)})):bn(xe(e,{r:Ce(e.r,t,n)}))}function qe(){return it}function Ye(e,t,n){if(Z(e))return[];const o=Ee(e,t)[0];return hr(Gt(e,o,n))}function Ut(e,t){if(Z(e))return it;const{k:n,l:o,r}=e;if(t===n){if(Z(o))return r;if(Z(r))return o;const[i,a]=oo(o);return bt(xe(e,{k:i,l:no(o),v:a}))}return t<n?bt(xe(e,{l:Ut(o,t)})):bt(xe(e,{r:Ut(r,t)}))}function Ue(e){return Z(e)?[]:[...Ue(e.l),{k:e.k,v:e.v},...Ue(e.r)]}function Gt(e,t,n){if(Z(e))return[];const{k:o,l:r,r:i,v:a}=e;let l=[];return o>t&&(l=l.concat(Gt(r,t,n))),o>=t&&o<=n&&l.push({k:o,v:a}),o<=n&&(l=l.concat(Gt(i,t,n))),l}function bt(e){const{l:t,lvl:n,r:o}=e;if(o.lvl>=n-1&&t.lvl>=n-1)return e;if(n>o.lvl+1){if(Bt(t))return so(xe(e,{lvl:n-1}));if(!Z(t)&&!Z(t.r))return xe(t.r,{l:xe(t,{r:t.r.l}),lvl:n,r:xe(e,{l:t.r.r,lvl:n-1})});throw new Error("Unexpected empty nodes")}if(Bt(e))return Kt(xe(e,{lvl:n-1}));if(!Z(o)&&!Z(o.l)){const r=o.l,i=Bt(r)?o.lvl-1:o.lvl;return xe(r,{l:xe(e,{lvl:n-1,r:r.l}),lvl:r.lvl+1,r:Kt(xe(o,{l:r.r,lvl:i}))})}throw new Error("Unexpected empty nodes")}function xe(e,t){return ro(t.k!==void 0?t.k:e.k,t.v!==void 0?t.v:e.v,t.lvl!==void 0?t.lvl:e.lvl,t.l!==void 0?t.l:e.l,t.r!==void 0?t.r:e.r)}function no(e){return Z(e.r)?e.l:bt(xe(e,{r:no(e.r)}))}function Bt(e){return Z(e)||e.lvl>e.r.lvl}function oo(e){return Z(e.r)?[e.k,e.v]:oo(e.r)}function ro(e,t,n,o=it,r=it){return{k:e,l:o,lvl:n,r,v:t}}function bn(e){return Kt(so(e))}function so(e){const{l:t}=e;return!Z(t)&&t.lvl===e.lvl?xe(t,{r:xe(e,{l:t.r})}):e}function Kt(e){const{lvl:t,r:n}=e;return!Z(n)&&!Z(n.r)&&n.lvl===t&&n.r.lvl===t?xe(n,{l:xe(e,{r:n.l}),lvl:t+1}):e}function hr(e){return to(e,({k:t,v:n})=>({index:t,value:n}))}function io(e,t){return!!(e&&e.startIndex===t.startIndex&&e.endIndex===t.endIndex)}function lt(e,t){return!!(e&&e[0]===t[0]&&e[1]===t[1])}const Zt=Q(()=>({recalcInProgress:j(!1)}),[],{singleton:!0});function ao(e,t,n){return e[jt(e,t,n)]}function jt(e,t,n,o=0){let r=e.length-1;for(;o<=r;){const i=Math.floor((o+r)/2),a=e[i],l=n(a,t);if(l===0)return i;if(l===-1){if(r-o<2)return i-1;r=i-1}else{if(r===o)return i;o=i+1}}throw new Error(`Failed binary finding record in array - ${e.join(",")}, searched for ${t}`)}function pr(e,t,n,o){const r=jt(e,t,o),i=jt(e,n,o,r);return e.slice(r,i+1)}function ze(e,t){return Math.round(e.getBoundingClientRect()[t])}function Rt(e){return!Z(e.groupOffsetTree)}function en({index:e},t){return t===e?0:t<e?-1:1}function fr(){return{groupIndices:[],groupOffsetTree:qe(),lastIndex:0,lastOffset:0,lastSize:0,offsetTree:[],sizeTree:qe()}}function mr(e,t){let n=Z(e)?0:1/0;for(const o of t){const{endIndex:r,size:i,startIndex:a}=o;if(n=Math.min(n,a),Z(e)){e=Ce(e,0,i);continue}const l=Ye(e,a-1,r+1);if(l.some(Ir(o)))continue;let c=!1,u=!1;for(const{end:p,start:x,value:f}of l)c?(r>=x||i===f)&&(e=Ut(e,x)):(u=f!==i,c=!0),p>r&&r>=x&&f!==i&&(e=Ce(e,r+1,f));u&&(e=Ce(e,a,i))}return[e,n]}function xr(e){return typeof e.groupIndex<"u"}function gr({offset:e},t){return t===e?0:t<e?-1:1}function ct(e,t,n){if(t.length===0)return 0;const{index:o,offset:r,size:i}=ao(t,e,en),a=e-o,l=i*a+(a-1)*n+r;return l>0?l+n:l}function lo(e,t){if(!Rt(t))return e;let n=0;for(;t.groupIndices[n]<=e+n;)n++;return e+n}function co(e,t,n){if(xr(e))return t.groupIndices[e.groupIndex]+1;const o=e.index==="LAST"?n:e.index;let r=lo(o,t);return r=Math.max(0,r,Math.min(n,r)),r}function vr(e,t,n,o=0){return o>0&&(t=Math.max(t,ao(e,o,en).offset)),to(pr(e,t,n,gr),Sr)}function yr(e,[t,n,o,r]){t.length>0&&o("received item sizes",t,ge.DEBUG);const i=e.sizeTree;let a=i,l=0;if(n.length>0&&Z(i)&&t.length===2){const f=t[0].size,v=t[1].size;a=n.reduce((S,I)=>Ce(Ce(S,I,f),I+1,v),a)}else[a,l]=mr(a,t);if(a===i)return e;const{lastIndex:c,lastOffset:u,lastSize:p,offsetTree:x}=Jt(e.offsetTree,l,a,r);return{groupIndices:n,groupOffsetTree:n.reduce((f,v)=>Ce(f,v,ct(v,x,r)),qe()),lastIndex:c,lastOffset:u,lastSize:p,offsetTree:x,sizeTree:a}}function wr(e){return Ue(e).map(({k:t,v:n},o,r)=>{const i=r[o+1];return{endIndex:i!==void 0?i.k-1:1/0,size:n,startIndex:t}})}function Cn(e,t){let n=0,o=0;for(;n<e;)n+=t[o+1]-t[o]-1,o++;return o-(n===e?0:1)}function Jt(e,t,n,o){let r=e,i=0,a=0,l=0,c=0;if(t!==0){c=jt(r,t-1,en),l=r[c].offset;const u=Ee(n,t-1);i=u[0],a=u[1],r.length&&r[c].size===Ee(n,t)[1]&&(c-=1),r=r.slice(0,c+1)}else r=[];for(const{start:u,value:p}of Ye(n,t,1/0)){const x=u-i,f=x*a+l+x*o;r.push({index:u,offset:f,size:p}),i=u,l=f,a=p}return{lastIndex:i,lastOffset:l,lastSize:a,offsetTree:r}}function Sr(e){return{index:e.index,value:e}}function Ir(e){const{endIndex:t,size:n,startIndex:o}=e;return r=>r.start===o&&(r.end===t||r.end===1/0)&&r.value===n}const br={offsetHeight:"height",offsetWidth:"width"},Le=Q(([{log:e},{recalcInProgress:t}])=>{const n=J(),o=J(),r=we(o,0),i=J(),a=J(),l=j(0),c=j([]),u=j(void 0),p=j(void 0),x=j(void 0),f=j(void 0),v=j((m,C)=>ze(m,br[C])),S=j(void 0),I=j(0),g=fr(),h=we(k(n,G(c,e,I),Me(yr,g),oe()),g),d=we(k(c,oe(),Me((m,C)=>({current:C,prev:m.current}),{current:[],prev:[]}),P(({prev:m})=>m)),[]);$(k(c,D(m=>m.length>0),G(h,I),P(([m,C,y])=>{const A=m.reduce((L,B,R)=>Ce(L,B,ct(B,C.offsetTree,y)||R),qe());return{...C,groupIndices:m,groupOffsetTree:A}})),h),$(k(o,G(h),D(([m,{lastIndex:C}])=>m<C),P(([m,{lastIndex:C,lastSize:y}])=>[{endIndex:C,size:y,startIndex:m}])),n),$(u,p);const b=we(k(u,P(m=>m===void 0)),!0);$(k(p,D(m=>m!==void 0&&Z(ae(h).sizeTree)),P(m=>{const C=ae(x),y=ae(c).length>0;return C!==void 0&&C!==0?y?[{endIndex:0,size:C,startIndex:0},{endIndex:1,size:m,startIndex:1}]:[]:[{endIndex:0,size:m,startIndex:0}]})),n),$(k(f,D(m=>m!==void 0&&m.length>0&&Z(ae(h).sizeTree)),P(m=>{const C=[];let y=m[0],A=0;for(let L=1;L<m.length;L++){const B=m[L];B!==y&&(C.push({endIndex:L-1,size:y,startIndex:A}),y=B,A=L)}return C.push({endIndex:m.length-1,size:y,startIndex:A}),C})),n),$(k(c,G(x,p),D(([,m,C])=>m!==void 0&&C!==void 0),P(([m,C,y])=>{const A=[];for(let L=0;L<m.length;L++){const B=m[L],R=m[L+1];A.push({startIndex:B,endIndex:B,size:C}),R!==void 0&&A.push({startIndex:B+1,endIndex:R-1,size:y})}return A})),n);const E=ke(k(n,G(h),Me(({sizes:m},[C,y])=>({changed:y!==m,sizes:y}),{changed:!1,sizes:g}),P(m=>m.changed)));Y(k(l,Me((m,C)=>({diff:m.prev-C,prev:C}),{diff:0,prev:0}),P(m=>m.diff)),m=>{const{groupIndices:C}=ae(h);if(m>0)U(t,!0),U(i,m+Cn(m,C));else if(m<0){const y=ae(d);y.length>0&&(m-=Cn(-m,y)),U(a,m)}}),Y(k(l,G(e)),([m,C])=>{m<0&&C("`firstItemIndex` prop should not be set to less than zero. If you don't know the total count, just use a very high value",{firstItemIndex:l},ge.ERROR)});const T=ke(i);$(k(i,G(h),P(([m,C])=>{const y=C.groupIndices.length>0,A=[],L=C.lastSize;if(y){const B=at(C.sizeTree,0);let R=0,N=0;for(;R<m;){const X=C.groupIndices[N],K=C.groupIndices.length===N+1?1/0:C.groupIndices[N+1]-X-1;A.push({endIndex:X,size:B,startIndex:X}),A.push({endIndex:X+1+K-1,size:L,startIndex:X+1}),N++,R+=K+1}const H=Ue(C.sizeTree);return R!==m&&H.shift(),H.reduce((X,{k:K,v:ue})=>{let Se=X.ranges;return X.prevSize!==0&&(Se=[...X.ranges,{endIndex:K+m-1,size:X.prevSize,startIndex:X.prevIndex}]),{prevIndex:K+m,prevSize:ue,ranges:Se}},{prevIndex:m,prevSize:0,ranges:A}).ranges}return Ue(C.sizeTree).reduce((B,{k:R,v:N})=>({prevIndex:R+m,prevSize:N,ranges:[...B.ranges,{endIndex:R+m-1,size:B.prevSize,startIndex:B.prevIndex}]}),{prevIndex:0,prevSize:L,ranges:[]}).ranges})),n);const W=ke(k(a,G(h,I),P(([m,{offsetTree:C},y])=>{const A=-m;return ct(A,C,y)})));return $(k(a,G(h,I),P(([m,C,y])=>{if(C.groupIndices.length>0){if(Z(C.sizeTree))return C;let L=qe();const B=ae(d);let R=0,N=0,H=0;for(;R<-m;){H=B[N];const X=B[N+1]-H-1;N++,R+=X+1}if(L=Ue(C.sizeTree).reduce((X,{k:K,v:ue})=>Ce(X,Math.max(0,K+m),ue),L),R!==-m){const X=at(C.sizeTree,H);L=Ce(L,0,X);const K=Ee(C.sizeTree,-m+1)[1];L=Ce(L,1,K)}return{...C,sizeTree:L,...Jt(C.offsetTree,0,L,y)}}const A=Ue(C.sizeTree).reduce((L,{k:B,v:R})=>Ce(L,Math.max(0,B+m),R),qe());return{...C,sizeTree:A,...Jt(C.offsetTree,0,A,y)}})),h),{beforeUnshiftWith:T,data:S,defaultItemSize:p,firstItemIndex:l,fixedItemSize:u,fixedGroupSize:x,gap:I,groupIndices:c,heightEstimates:f,itemSize:v,listRefresh:E,shiftWith:a,shiftWithOffset:W,sizeRanges:n,sizes:h,statefulTotalCount:r,totalCount:o,trackItemSizes:b,unshiftWith:i}},re(_e,Zt),{singleton:!0});function Cr(e){return e.reduce((t,n)=>(t.groupIndices.push(t.totalCount),t.totalCount+=n+1,t),{groupIndices:[],totalCount:0})}const uo=Q(([{groupIndices:e,sizes:t,totalCount:n},{headerHeight:o,scrollTop:r}])=>{const i=J(),a=J(),l=ke(k(i,P(Cr)));return $(k(l,P(c=>c.totalCount)),n),$(k(l,P(c=>c.groupIndices)),e),$(k(pe(r,t,o),D(([c,u])=>Rt(u)),P(([c,u,p])=>Ee(u.groupOffsetTree,Math.max(c-p,0),"v")[0]),oe(),P(c=>[c])),a),{groupCounts:i,topItemsIndexes:a}},re(Le,be)),De=Q(([{log:e}])=>{const t=j(!1),n=ke(k(t,D(o=>o),oe()));return Y(t,o=>{o&&ae(e)("props updated",{},ge.DEBUG)}),{didMount:n,propsReady:t}},re(_e),{singleton:!0}),kr=typeof document<"u"&&"scrollBehavior"in document.documentElement.style;function ho(e){const t=typeof e=="number"?{index:e}:e;return t.align||(t.align="start"),(!t.behavior||!kr)&&(t.behavior="auto"),t.offset===void 0&&(t.offset=0),t}const ft=Q(([{gap:e,listRefresh:t,sizes:n,totalCount:o},{fixedFooterHeight:r,fixedHeaderHeight:i,footerHeight:a,headerHeight:l,scrollingInProgress:c,scrollTo:u,smoothScrollTargetReached:p,viewportHeight:x},{log:f}])=>{const v=J(),S=J(),I=j(0);let g=null,h=null,d=null;function b(){g!==null&&(g(),g=null),d!==null&&(d(),d=null),h&&(clearTimeout(h),h=null),U(c,!1)}return $(k(v,G(n,x,o,I,l,a,f),G(e,i,r),P(([[E,T,W,m,C,y,A,L],B,R,N])=>{const H=ho(E),{align:X,behavior:K,offset:ue}=H,Se=m-1,ve=co(H,T,Se);let O=ct(ve,T.offsetTree,B)+y;X==="end"?(O+=R+Ee(T.sizeTree,ve)[1]-W+N,ve===Se&&(O+=A)):X==="center"?O+=(R+Ee(T.sizeTree,ve)[1]-W+N)/2:O-=C,ue!==void 0&&ue!==0&&(O+=ue);const ee=le=>{b(),le?(L("retrying to scroll to",{location:E},ge.DEBUG),U(v,E)):(U(S,!0),L("list did not change, scroll successful",{},ge.DEBUG))};if(b(),K==="smooth"){let le=!1;d=Y(t,Xe=>{le=le||Xe}),g=Ne(p,()=>{ee(le)})}else g=Ne(k(t,jr(150)),ee);return h=setTimeout(()=>{b()},1200),U(c,!0),L("scrolling from index to",{behavior:K,index:ve,top:O},ge.DEBUG),{behavior:K,top:O}})),u),{scrollTargetReached:S,scrollToIndex:v,topListHeight:I}},re(Le,be,_e),{singleton:!0});function jr(e){return t=>{const n=setTimeout(()=>{t(!1)},e);return o=>{o&&(t(!0),clearTimeout(n))}}}function tn(e,t){e===0?t():requestAnimationFrame(()=>{tn(e-1,t)})}function nn(e,t){const n=t-1;return typeof e=="number"?e:e.index==="LAST"?n:e.index}const mt=Q(([{defaultItemSize:e,listRefresh:t,sizes:n},{scrollTop:o},{scrollTargetReached:r,scrollToIndex:i},{didMount:a}])=>{const l=j(!0),c=j(0),u=j(!0);return $(k(a,G(c),D(([p,x])=>x!==0),Ae(!1)),l),$(k(a,G(c),D(([p,x])=>x!==0),Ae(!1)),u),Y(k(pe(t,a),G(l,n,e,u),D(([[,p],x,{sizeTree:f},v,S])=>p&&(!Z(f)||Qt(v))&&!x&&!S),G(c)),([,p])=>{Ne(r,()=>{U(u,!0)}),tn(4,()=>{Ne(o,()=>{U(l,!0)}),U(i,p)})}),{initialItemFinalLocationReached:u,initialTopMostItemIndex:c,scrolledToInitialItem:l}},re(Le,be,ft,De),{singleton:!0});function po(e,t){return Math.abs(e-t)<1.01}const ut="up",rt="down",Tr="none",Nr={atBottom:!1,notAtBottomBecause:"NOT_SHOWING_LAST_ITEM",state:{offsetBottom:0,scrollHeight:0,scrollTop:0,viewportHeight:0}},Er=0,xt=Q(([{footerHeight:e,headerHeight:t,scrollBy:n,scrollContainerState:o,scrollTop:r,viewportHeight:i}])=>{const a=j(!1),l=j(!0),c=J(),u=J(),p=j(4),x=j(Er),f=we(k(Vt(k(_(r),Ge(1),Ae(!0)),k(_(r),Ge(1),Ae(!1),Sn(100))),oe()),!1),v=we(k(Vt(k(n,Ae(!0)),k(n,Ae(!1),Sn(200))),oe()),!1);$(k(pe(_(r),_(x)),P(([d,b])=>d<=b),oe()),l),$(k(l,He(50)),u);const S=ke(k(pe(o,_(i),_(t),_(e),_(p)),Me((d,[{scrollHeight:b,scrollTop:E},T,W,m,C])=>{const y=E+T-b>-C,A={scrollHeight:b,scrollTop:E,viewportHeight:T};if(y){let B,R;return E>d.state.scrollTop?(B="SCROLLED_DOWN",R=d.state.scrollTop-E):(B="SIZE_DECREASED",R=d.state.scrollTop-E||d.scrollTopDelta),{atBottom:!0,atBottomBecause:B,scrollTopDelta:R,state:A}}let L;return A.scrollHeight>d.state.scrollHeight?L="SIZE_INCREASED":T<d.state.viewportHeight?L="VIEWPORT_HEIGHT_DECREASING":E<d.state.scrollTop?L="SCROLLING_UPWARDS":L="NOT_FULLY_SCROLLED_TO_LAST_ITEM_BOTTOM",{atBottom:!1,notAtBottomBecause:L,state:A}},Nr),oe((d,b)=>d!==void 0&&d.atBottom===b.atBottom))),I=we(k(o,Me((d,{scrollHeight:b,scrollTop:E,viewportHeight:T})=>{if(!po(d.scrollHeight,b)){const W=b-(E+T)<1;return d.scrollTop!==E&&W?{changed:!0,jump:d.scrollTop-E,scrollHeight:b,scrollTop:E}:{changed:!0,jump:0,scrollHeight:b,scrollTop:E}}return{changed:!1,jump:0,scrollHeight:b,scrollTop:E}},{changed:!1,jump:0,scrollHeight:0,scrollTop:0}),D(d=>d.changed),P(d=>d.jump)),0);$(k(S,P(d=>d.atBottom)),a),$(k(a,He(50)),c);const g=j(rt);$(k(o,P(({scrollTop:d})=>d),oe(),Me((d,b)=>ae(v)?{direction:d.direction,prevScrollTop:b}:{direction:b<d.prevScrollTop?ut:rt,prevScrollTop:b},{direction:rt,prevScrollTop:0}),P(d=>d.direction)),g),$(k(o,He(50),Ae(Tr)),g);const h=j(0);return $(k(f,D(d=>!d),Ae(0)),h),$(k(r,He(100),G(f),D(([d,b])=>b),Me(([d,b],[E])=>[b,E],[0,0]),P(([d,b])=>b-d)),h),{atBottomState:S,atBottomStateChange:c,atBottomThreshold:p,atTopStateChange:u,atTopThreshold:x,isAtBottom:a,isAtTop:l,isScrolling:f,lastJumpDueToItemResize:I,scrollDirection:g,scrollVelocity:h}},re(be)),dt="top",ht="bottom",kn="none";function jn(e,t,n){return typeof e=="number"?n===ut&&t===dt||n===rt&&t===ht?e:0:n===ut?t===dt?e.main:e.reverse:t===ht?e.main:e.reverse}function Tn(e,t){return typeof e=="number"?e:e[t]??0}const on=Q(([{deviation:e,fixedHeaderHeight:t,headerHeight:n,scrollTop:o,viewportHeight:r}])=>{const i=J(),a=j(0),l=j(0),c=j(0),u=we(k(pe(_(o),_(r),_(n),_(i,lt),_(c),_(a),_(t),_(e),_(l)),P(([p,x,f,[v,S],I,g,h,d,b])=>{const E=p-d,T=g+h,W=Math.max(f-E,0);let m=kn;const C=Tn(b,dt),y=Tn(b,ht);return v-=d,v+=f+h,S+=f+h,S-=d,v>p+T-C&&(m=ut),S<p-W+x+y&&(m=rt),m!==kn?[Math.max(E-f-jn(I,dt,m)-C,0),E-W-h+x+jn(I,ht,m)+y]:null}),D(p=>p!==null),oe(lt)),[0,0]);return{increaseViewportBy:l,listBoundary:i,overscan:c,topListHeight:a,visibleRange:u}},re(be),{singleton:!0});function Rr(e,t,n){if(Rt(t)){const o=lo(e,t);return[{index:Ee(t.groupOffsetTree,o)[0],offset:0,size:0},{data:n==null?void 0:n[0],index:o,offset:0,size:0}]}return[{data:n==null?void 0:n[0],index:e,offset:0,size:0}]}const Wt={bottom:0,firstItemIndex:0,items:[],offsetBottom:0,offsetTop:0,top:0,topItems:[],topListHeight:0,totalCount:0};function Ct(e,t,n,o,r,i){const{lastIndex:a,lastOffset:l,lastSize:c}=r;let u=0,p=0;if(e.length>0){u=e[0].offset;const I=e[e.length-1];p=I.offset+I.size}const x=n-a,f=l+x*c+(x-1)*o,v=u,S=f-p;return{bottom:p,firstItemIndex:i,items:Nn(e,r,i),offsetBottom:S,offsetTop:u,top:v,topItems:Nn(t,r,i),topListHeight:t.reduce((I,g)=>g.size+I,0),totalCount:n}}function fo(e,t,n,o,r,i){let a=0;if(n.groupIndices.length>0)for(const p of n.groupIndices){if(p-a>=e)break;a++}const l=e+a,c=nn(t,l),u=Array.from({length:l}).map((p,x)=>({data:i[x+c],index:x+c,offset:0,size:0}));return Ct(u,[],l,r,n,o)}function Nn(e,t,n){if(e.length===0)return[];if(!Rt(t))return e.map(u=>({...u,index:u.index+n,originalIndex:u.index}));const o=e[0].index,r=e[e.length-1].index,i=[],a=Ye(t.groupOffsetTree,o,r);let l,c=0;for(const u of e){(!l||l.end<u.index)&&(l=a.shift(),c=t.groupIndices.indexOf(l.start));let p;u.index===l.start?p={index:c,type:"group"}:p={groupIndex:c,index:u.index-(c+1)+n},i.push({...p,data:u.data,offset:u.offset,originalIndex:u.index,size:u.size})}return i}function En(e,t){return e===void 0?0:typeof e=="number"?e:e[t]??0}const Je=Q(([{data:e,firstItemIndex:t,gap:n,sizes:o,totalCount:r},i,{listBoundary:a,topListHeight:l,visibleRange:c},{initialTopMostItemIndex:u,scrolledToInitialItem:p},{topListHeight:x},f,{didMount:v},{recalcInProgress:S}])=>{const I=j([]),g=j(0),h=J(),d=j(0);$(i.topItemsIndexes,I);const b=we(k(pe(v,S,_(c,lt),_(r),_(o),_(u),p,_(I),_(t),_(n),_(d),e),D(([m,C,,y,,,,,,,,A])=>{const L=A!==void 0&&A.length!==y;return m&&!C&&!L}),P(([,,[m,C],y,A,L,B,R,N,H,X,K])=>{var q,fe;const ue=A,{offsetTree:Se,sizeTree:ve}=ue,O=ae(g);if(y===0)return{...Wt,totalCount:y};if(m===0&&C===0)return O===0?{...Wt,totalCount:y}:fo(O,L,A,N,H,K||[]);if(Z(ve))return O>0?null:Ct(Rr(nn(L,y),ue,K),[],y,H,ue,N);const ee=[];if(R.length>0){const ne=R[0],se=R[R.length-1];let me=0;for(const de of Ye(ve,ne,se)){const te=de.value,ce=Math.max(de.start,ne),Ie=Math.min(de.end,se);for(let he=ce;he<=Ie;he++)ee.push({data:K==null?void 0:K[he],index:he,offset:me,size:te}),me+=te}}if(!B)return Ct([],ee,y,H,ue,N);const le=R.length>0?R[R.length-1]+1:0,Xe=vr(Se,m,C,le);if(Xe.length===0)return null;const tt=y-1,Re=Et([],ne=>{for(const se of Xe){const me=se.value;let de=me.offset,te=se.start;const ce=me.size;if(me.offset<m){te+=Math.floor((m-me.offset+H)/(ce+H));const he=te-se.start;de+=he*ce+he*H}te<le&&(de+=(le-te)*ce,te=le);const Ie=Math.min(se.end,tt);for(let he=te;he<=Ie&&!(de>=C);he++)ne.push({data:K==null?void 0:K[he],index:he,offset:de,size:ce}),de+=ce+H}}),nt=En(X,dt),M=En(X,ht);if(Re.length>0&&(nt>0||M>0)){const ne=Re[0],se=Re[Re.length-1];if(nt>0&&ne.index>le){const me=Math.min(nt,ne.index-le),de=[];let te=ne.offset;for(let ce=ne.index-1;ce>=ne.index-me;ce--){const Ie=((q=Ye(ve,ce,ce)[0])==null?void 0:q.value)??ne.size;te-=Ie+H,de.unshift({data:K==null?void 0:K[ce],index:ce,offset:te,size:Ie})}Re.unshift(...de)}if(M>0&&se.index<tt){const me=Math.min(M,tt-se.index);let de=se.offset+se.size+H;for(let te=se.index+1;te<=se.index+me;te++){const ce=((fe=Ye(ve,te,te)[0])==null?void 0:fe.value)??se.size;Re.push({data:K==null?void 0:K[te],index:te,offset:de,size:ce}),de+=ce+H}}}return Ct(Re,ee,y,H,ue,N)}),D(m=>m!==null),oe()),Wt);$(k(e,D(Qt),P(m=>m==null?void 0:m.length)),r),$(k(b,P(m=>m.topListHeight)),x),$(x,l),$(k(b,P(m=>[m.top,m.bottom])),a),$(k(b,P(m=>m.items)),h);const E=ke(k(b,D(({items:m})=>m.length>0),G(r,e),D(([{items:m},C])=>m[m.length-1].originalIndex===C-1),P(([,m,C])=>[m-1,C]),oe(lt),P(([m])=>m))),T=ke(k(b,He(200),D(({items:m,topItems:C})=>m.length>0&&m[0].originalIndex===C.length),P(({items:m})=>m[0].index),oe())),W=ke(k(b,D(({items:m})=>m.length>0),P(({items:m})=>{let C=0,y=m.length-1;for(;m[C].type==="group"&&C<y;)C++;for(;m[y].type==="group"&&y>C;)y--;return{endIndex:m[y].index,startIndex:m[C].index}}),oe(io)));return{endReached:E,initialItemCount:g,itemsRendered:h,listState:b,minOverscanItemCount:d,rangeChanged:W,startReached:T,topItemsIndexes:I,...f}},re(Le,uo,on,mt,ft,xt,De,Zt),{singleton:!0}),mo=Q(([{fixedFooterHeight:e,fixedHeaderHeight:t,footerHeight:n,headerHeight:o},{listState:r}])=>{const i=J(),a=we(k(pe(n,e,o,t,r),P(([l,c,u,p,x])=>l+c+u+p+x.offsetBottom+x.bottom)),0);return $(_(a),i),{totalListHeight:a,totalListHeightChanged:i}},re(be,Je),{singleton:!0}),Ar=Q(([{viewportHeight:e},{totalListHeight:t}])=>{const n=j(!1),o=we(k(pe(n,e,t),D(([r])=>r),P(([,r,i])=>Math.max(0,r-i)),He(0),oe()),0);return{alignToBottom:n,paddingTopAddition:o}},re(be,mo),{singleton:!0}),xo=Q(()=>({context:j(null)})),Mr=({itemBottom:e,itemTop:t,locationParams:{align:n,behavior:o,...r},viewportBottom:i,viewportTop:a})=>t<a?{...r,align:n??"start",...o!==void 0?{behavior:o}:{}}:e>i?{...r,align:n??"end",...o!==void 0?{behavior:o}:{}}:null,go=Q(([{gap:e,sizes:t,totalCount:n},{fixedFooterHeight:o,fixedHeaderHeight:r,headerHeight:i,scrollingInProgress:a,scrollTop:l,viewportHeight:c},{scrollToIndex:u}])=>{const p=J();return $(k(p,G(t,c,n,i,r,o,l),G(e),P(([[x,f,v,S,I,g,h,d],b])=>{const{calculateViewLocation:E=Mr,done:T,...W}=x,m=co(x,f,S-1),C=ct(m,f.offsetTree,b)+I+g,y=C+Ee(f.sizeTree,m)[1],A=d+g,L=d+v-h,B=E({itemBottom:y,itemTop:C,locationParams:W,viewportBottom:L,viewportTop:A});return B!==null?T&&Ne(k(a,D(R=>!R),Ge(ae(a)?1:2)),T):T==null||T(),B}),D(x=>x!==null)),u),{scrollIntoView:p}},re(Le,be,ft,Je,_e),{singleton:!0});function Rn(e){return e===!1?!1:e==="smooth"?"smooth":"auto"}const Lr=(e,t)=>typeof e=="function"?Rn(e(t)):t&&Rn(e),Pr=Q(([{listRefresh:e,totalCount:t,fixedItemSize:n,data:o},{atBottomState:r,isAtBottom:i},{scrollToIndex:a},{scrolledToInitialItem:l},{didMount:c,propsReady:u},{log:p},{scrollingInProgress:x},{context:f},{scrollIntoView:v}])=>{const S=j(!1),I=J();let g=null;function h(T){U(a,{align:"end",behavior:T,index:"LAST"})}Y(k(pe(k(_(t),Ge(1)),c),G(_(S),i,l,x),P(([[T,W],m,C,y,A])=>{let L=W&&y,B="auto";return L&&(B=Lr(m,C||A),L=L&&B!==!1),{followOutputBehavior:B,shouldFollow:L,totalCount:T}}),D(({shouldFollow:T})=>T)),({followOutputBehavior:T,totalCount:W})=>{g!==null&&(g(),g=null),ae(n)!==void 0?requestAnimationFrame(()=>{ae(p)("following output to ",{totalCount:W},ge.DEBUG),h(T)}):g=Ne(e,()=>{ae(p)("following output to ",{totalCount:W},ge.DEBUG),h(T),g=null})});function d(T){const W=Ne(r,m=>{T&&!m.atBottom&&m.notAtBottomBecause==="SIZE_INCREASED"&&g===null&&(ae(p)("scrolling to bottom due to increased size",{},ge.DEBUG),h("auto"))});setTimeout(W,100)}Y(k(pe(_(S),t,u),D(([T,,W])=>T!==!1&&W),Me(({value:T},[,W])=>({refreshed:T===W,value:W}),{refreshed:!1,value:0}),D(({refreshed:T})=>T),G(S,t)),([,T])=>{ae(l)&&d(T!==!1)}),Y(I,()=>{d(ae(S)!==!1)}),Y(pe(_(S),r),([T,W])=>{T!==!1&&!W.atBottom&&W.notAtBottomBecause==="VIEWPORT_HEIGHT_DECREASING"&&h("auto")});const b=j(null),E=J();return $(Vt(k(_(o),P(T=>(T==null?void 0:T.length)??0)),k(_(t))),E),Y(k(pe(k(E,Ge(1)),c),G(_(b),l,x,f),P(([[T,W],m,C,y,A])=>W&&C&&(m==null?void 0:m({context:A,totalCount:T,scrollingInProgress:y}))),D(T=>!!T),He(0)),T=>{g!==null&&(g(),g=null),ae(n)!==void 0?requestAnimationFrame(()=>{ae(p)("scrolling into view",{}),U(v,T)}):g=Ne(e,()=>{ae(p)("scrolling into view",{}),U(v,T),g=null})}),{autoscrollToBottom:I,followOutput:S,scrollIntoViewOnChange:b}},re(Le,xt,ft,mt,De,_e,be,xo,go)),Hr=Q(([{data:e,firstItemIndex:t,gap:n,sizes:o},{initialTopMostItemIndex:r},{initialItemCount:i,listState:a},{didMount:l}])=>($(k(l,G(i),D(([,c])=>c!==0),G(r,o,t,n,e),P(([[,c],u,p,x,f,v=[]])=>fo(c,u,p,x,f,v))),a),{}),re(Le,mt,Je,De),{singleton:!0}),Or=Q(([{didMount:e},{scrollTo:t},{listState:n}])=>{const o=j(0);return Y(k(e,G(o),D(([,r])=>r!==0),P(([,r])=>({top:r}))),r=>{Ne(k(n,Ge(1),D(i=>i.items.length>1)),()=>{requestAnimationFrame(()=>{U(t,r)})})}),{initialScrollTop:o}},re(De,be,Je),{singleton:!0}),vo=Q(([{scrollVelocity:e}])=>{const t=j(!1),n=J(),o=j(!1);return $(k(e,G(o,t,n),D(([r,i])=>i!==!1&&i!==void 0),P(([r,i,a,l])=>{const{enter:c,exit:u}=i;if(a){if(u(r,l))return!1}else if(c(r,l))return!0;return a}),oe()),t),Y(k(pe(t,e,n),G(o)),([[r,i,a],l])=>{r&&l!==!1&&l!==void 0&&l.change&&l.change(i,a)}),{isSeeking:t,scrollSeekConfiguration:o,scrollSeekRangeChanged:n,scrollVelocity:e}},re(xt),{singleton:!0}),rn=Q(([{scrollContainerState:e,scrollTo:t}])=>{const n=J(),o=J(),r=J(),i=j(!1),a=j(void 0);return $(k(pe(n,o),P(([{scrollTop:l,viewportHeight:c},{offsetTop:u,listHeight:p}])=>({scrollHeight:p,scrollTop:Math.max(0,l-u),viewportHeight:c}))),e),$(k(t,G(o),P(([l,{offsetTop:c}])=>({...l,top:l.top+c}))),r),{customScrollParent:a,useWindowScroll:i,windowScrollContainerState:n,windowScrollTo:r,windowViewportRect:o}},re(be)),Br=Q(([{sizeRanges:e,sizes:t},{headerHeight:n,scrollTop:o},{initialTopMostItemIndex:r},{didMount:i},{useWindowScroll:a,windowScrollContainerState:l,windowViewportRect:c}])=>{const u=J(),p=j(void 0),x=j(null),f=j(null);return $(l,x),$(c,f),Y(k(u,G(t,o,a,x,f,n)),([v,S,I,g,h,d,b])=>{const E=wr(S.sizeTree);g&&h!==null&&d!==null&&(I=h.scrollTop-d.offsetTop),I-=b,v({ranges:E,scrollTop:I})}),$(k(p,D(Qt),P(Wr)),r),$(k(i,G(p),D(([,v])=>v!==void 0),oe(),P(([,v])=>v.ranges)),e),{getState:u,restoreStateFrom:p}},re(Le,be,mt,De,rn));function Wr(e){return{align:"start",index:0,offset:e.scrollTop}}const zr=Q(([{topItemsIndexes:e}])=>{const t=j(0);return $(k(t,D(n=>n>=0),P(n=>Array.from({length:n}).map((o,r)=>r))),e),{topItemCount:t}},re(Je));function yo(e){let t=!1,n;return(()=>(t||(t=!0,n=e()),n))}const $r=yo(()=>/iP(ad|od|hone)/i.test(navigator.userAgent)&&/WebKit/i.test(navigator.userAgent)),_r=Q(([{deviation:e,scrollBy:t,scrollingInProgress:n,scrollTop:o},{isAtBottom:r,isScrolling:i,lastJumpDueToItemResize:a,scrollDirection:l},{listState:c},{beforeUnshiftWith:u,gap:p,shiftWithOffset:x,sizes:f},{log:v},{recalcInProgress:S}])=>{const I=ke(k(c,G(a),Me(([,h,d,b],[{bottom:E,items:T,offsetBottom:W,totalCount:m},C])=>{const y=E+W;let A=0;return d===m&&h.length>0&&T.length>0&&(T[0].originalIndex===0&&h[0].originalIndex===0||(A=y-b,A!==0&&(A+=C))),[A,T,m,y]},[0,[],0,0]),D(([h])=>h!==0),G(o,l,n,r,v,S),D(([,h,d,b,,,E])=>!E&&!b&&h!==0&&d===ut),P(([[h],,,,,d])=>(d("Upward scrolling compensation",{amount:h},ge.DEBUG),h))));function g(h){h>0?(U(t,{behavior:"auto",top:-h}),U(e,0)):(U(e,0),U(t,{behavior:"auto",top:-h}))}return Y(k(I,G(e,i)),([h,d,b])=>{b&&$r()?U(e,d-h):g(-h)}),Y(k(pe(we(i,!1),e,S),D(([h,d,b])=>!h&&!b&&d!==0),P(([h,d])=>d),He(1)),g),$(k(x,P(h=>({top:-h}))),t),Y(k(u,G(f,p),P(([h,{groupIndices:d,lastSize:b,sizeTree:E},T])=>{function W(L){return L*(b+T)}if(d.length===0)return W(h);let m=0;const C=at(E,0);let y=0,A=0;for(;y<h;){y++,m+=C;let L=d.length===A+1?1/0:d[A+1]-d[A]-1;y+L>h&&(m-=C,L=h-y+1),y+=L,m+=W(L),A++}return m})),h=>{U(e,h),requestAnimationFrame(()=>{U(t,{top:h}),requestAnimationFrame(()=>{U(e,0),U(S,!1)})})}),{deviation:e}},re(be,xt,Je,Le,_e,Zt)),Dr=Q(([e,t,n,o,r,i,a,l,c,u,p])=>({...e,...t,...n,...o,...r,...i,...a,...l,...c,...u,...p}),re(on,Hr,De,vo,mo,Or,Ar,rn,go,_e,xo)),wo=Q(([{data:e,defaultItemSize:t,firstItemIndex:n,fixedItemSize:o,fixedGroupSize:r,gap:i,groupIndices:a,heightEstimates:l,itemSize:c,sizeRanges:u,sizes:p,statefulTotalCount:x,totalCount:f,trackItemSizes:v},{initialItemFinalLocationReached:S,initialTopMostItemIndex:I,scrolledToInitialItem:g},h,d,b,E,{scrollToIndex:T},W,{topItemCount:m},{groupCounts:C},y])=>{const{listState:A,minOverscanItemCount:L,topItemsIndexes:B,rangeChanged:R,...N}=E;return $(R,y.scrollSeekRangeChanged),$(k(y.windowViewportRect,P(H=>H.visibleHeight)),h.viewportHeight),{data:e,defaultItemHeight:t,firstItemIndex:n,fixedItemHeight:o,fixedGroupHeight:r,gap:i,groupCounts:C,heightEstimates:l,initialItemFinalLocationReached:S,initialTopMostItemIndex:I,scrolledToInitialItem:g,sizeRanges:u,topItemCount:m,topItemsIndexes:B,totalCount:f,...b,groupIndices:a,itemSize:c,listState:A,minOverscanItemCount:L,scrollToIndex:T,statefulTotalCount:x,trackItemSizes:v,rangeChanged:R,...N,...y,...h,sizes:p,...d}},re(Le,mt,be,Br,Pr,Je,ft,_r,zr,uo,Dr));function Fr(e,t){const n={},o={};let r=0;const i=e.length;for(;r<i;)o[e[r]]=1,r+=1;for(const a in t)Object.hasOwn(o,a)||(n[a]=t[a]);return n}const yt=typeof document<"u"?z.useLayoutEffect:z.useEffect;function So(e,t,n){const o=Object.keys(t.required||{}),r=Object.keys(t.optional||{}),i=Object.keys(t.methods||{}),a=Object.keys(t.events||{}),l=z.createContext({});function c(g,h){g.propsReady!==void 0&&U(g.propsReady,!1);for(const d of o){const b=g[t.required[d]];U(b,h[d])}for(const d of r)if(d in h){const b=g[t.optional[d]];U(b,h[d])}g.propsReady!==void 0&&U(g.propsReady,!0)}function u(g){return i.reduce((h,d)=>(h[d]=b=>{const E=g[t.methods[d]];U(E,b)},h),{})}function p(g){return a.reduce((h,d)=>(h[d]=sr(g[t.events[d]]),h),{})}const x=z.forwardRef(function(g,h){const{children:d,...b}=g,[E]=z.useState(()=>Et(ar(e),m=>{c(m,b)})),[T]=z.useState(wn(p,E));yt(()=>{for(const m of a)m in b&&Y(T[m],b[m]);return()=>{Object.values(T).map(qt)}},[b,T,E]),yt(()=>{c(E,b)}),z.useImperativeHandle(h,yn(u(E)));const W=n;return s.jsx(l.Provider,{value:E,children:n!==void 0?s.jsx(W,{...Fr([...o,...r,...a],b),children:d}):d})}),f=g=>{const h=z.useContext(l);return z.useCallback(d=>{U(h[g],d)},[h,g])},v=g=>{const h=z.useContext(l)[g],d=z.useCallback(b=>Y(h,b),[h]);return z.useSyncExternalStore(d,()=>ae(h),()=>ae(h))},S=g=>{const h=z.useContext(l)[g],[d,b]=z.useState(wn(ae,h));return yt(()=>Y(h,E=>{E!==d&&b(yn(E))}),[h,d]),d},I=parseInt(z.version)>=18?v:S;return{Component:x,useEmitter:(g,h)=>{const d=z.useContext(l)[g];yt(()=>Y(d,h),[h,d])},useEmitterValue:I,usePublisher:f}}const Io=z.createContext(void 0),bo=z.createContext(void 0),zt="-webkit-sticky",An="sticky",sn=yo(()=>{if(typeof document>"u")return An;const e=document.createElement("div");return e.style.position=zt,e.style.position===zt?zt:An}),Co=typeof document<"u"?z.useLayoutEffect:z.useEffect;function $t(e){return"self"in e}function Vr(e){return"body"in e}function ko(e,t,n,o=et,r,i){const a=z.useRef(null),l=z.useRef(null),c=z.useRef(null),u=z.useCallback(f=>{let v,S,I;const g=f.target;if(Vr(g)||$t(g)){const d=$t(g)?g:g.defaultView;I=i===!0?d.scrollX:d.scrollY,v=i===!0?d.document.documentElement.scrollWidth:d.document.documentElement.scrollHeight,S=i===!0?d.innerWidth:d.innerHeight}else I=i===!0?g.scrollLeft:g.scrollTop,v=i===!0?g.scrollWidth:g.scrollHeight,S=i===!0?g.offsetWidth:g.offsetHeight;const h=()=>{e({scrollHeight:v,scrollTop:Math.max(I,0),viewportHeight:S})};f.suppressFlushSync===!0?h():Uo.flushSync(h),l.current!==null&&(I===l.current||I<=0||I===v-S)&&(l.current=null,t(!0),c.current&&(clearTimeout(c.current),c.current=null))},[e,t,i]);z.useEffect(()=>{const f=r||a.current;return o(r||a.current),u({suppressFlushSync:!0,target:f}),f.addEventListener("scroll",u,{passive:!0}),()=>{o(null),f.removeEventListener("scroll",u)}},[a,u,n,o,r]);function p(f){const v=a.current;if(!v||(i===!0?"offsetWidth"in v&&v.offsetWidth===0:"offsetHeight"in v&&v.offsetHeight===0))return;const S=f.behavior==="smooth";let I,g,h;$t(v)?(g=Math.max(ze(v.document.documentElement,i===!0?"width":"height"),i===!0?v.document.documentElement.scrollWidth:v.document.documentElement.scrollHeight),I=i===!0?v.innerWidth:v.innerHeight,h=i===!0?window.scrollX:window.scrollY):(g=v[i===!0?"scrollWidth":"scrollHeight"],I=ze(v,i===!0?"width":"height"),h=v[i===!0?"scrollLeft":"scrollTop"]);const d=g-I;if(f.top=Math.ceil(Math.max(Math.min(d,f.top),0)),po(I,g)||f.top===h){e({scrollHeight:g,scrollTop:h,viewportHeight:I}),S&&t(!0);return}S?(l.current=f.top,c.current&&clearTimeout(c.current),c.current=setTimeout(()=>{c.current=null,l.current=null,t(!0)},1e3)):l.current=null,i===!0&&(f={...f.behavior!==void 0?{behavior:f.behavior}:{},left:f.top}),v.scrollTo(f)}function x(f){i===!0&&(f={...f.behavior!==void 0?{behavior:f.behavior}:{},...f.top!==void 0?{left:f.top}:{}}),a.current.scrollBy(f)}return{scrollByCallback:x,scrollerRef:a,scrollToCallback:p}}function an(e){return e}const Ur=Q(()=>{const e=j(l=>`Item ${l}`),t=j(l=>`Group ${l}`),n=j({}),o=j(an),r=j("div"),i=j(et),a=(l,c=null)=>we(k(n,P(u=>u[l]),oe()),c);return{components:n,computeItemKey:o,EmptyPlaceholder:a("EmptyPlaceholder"),FooterComponent:a("Footer"),GroupComponent:a("Group","div"),groupContent:t,HeaderComponent:a("Header"),HeaderFooterTag:r,ItemComponent:a("Item","div"),itemContent:e,ListComponent:a("List","div"),ScrollerComponent:a("Scroller","div"),scrollerRef:i,ScrollSeekPlaceholder:a("ScrollSeekPlaceholder"),TopItemListComponent:a("TopItemList")}}),Gr=Q(([e,t])=>({...e,...t}),re(wo,Ur)),Kr=({height:e})=>s.jsx("div",{style:{height:e}}),Jr={overflowAnchor:"none",position:sn(),zIndex:1},jo={overflowAnchor:"none"},Xr={...jo,display:"inline-block",height:"100%"},Mn=z.memo(function({showTopList:e=!1}){const t=F("listState"),n=je("sizeRanges"),o=F("useWindowScroll"),r=F("customScrollParent"),i=je("windowScrollContainerState"),a=je("scrollContainerState"),l=r||o?i:a,c=F("itemContent"),u=F("context"),p=F("groupContent"),x=F("trackItemSizes"),f=F("itemSize"),v=F("log"),S=je("gap"),I=F("horizontalDirection"),{callbackRef:g}=ur(n,f,x,e?et:l,v,S,r,I,F("skipAnimationFrameInResizeObserver")),[h,d]=z.useState(0);ln("deviation",N=>{h!==N&&d(N)});const b=F("EmptyPlaceholder"),E=F("ScrollSeekPlaceholder")??Kr,T=F("ListComponent"),W=F("ItemComponent"),m=F("GroupComponent"),C=F("computeItemKey"),y=F("isSeeking"),A=F("groupIndices").length>0,L=F("alignToBottom"),B=F("initialItemFinalLocationReached"),R=e?{}:{boxSizing:"border-box",...I?{display:"inline-block",height:"100%",marginLeft:h!==0?h:L?"auto":0,paddingLeft:t.offsetTop,paddingRight:t.offsetBottom,whiteSpace:"nowrap"}:{marginTop:h!==0?h:L?"auto":0,paddingBottom:t.offsetBottom,paddingTop:t.offsetTop},...B?{}:{visibility:"hidden"}};return!e&&t.totalCount===0&&b!==null&&b!==void 0?s.jsx(b,{...ye(b,u)}):s.jsx(T,{...ye(T,u),"data-testid":e?"virtuoso-top-item-list":"virtuoso-item-list",ref:g,style:R,children:(e?t.topItems:t.items).map(N=>{const H=N.originalIndex,X=C(H+t.firstItemIndex,N.data,u);return y?w.createElement(E,{...ye(E,u),height:N.size,index:N.index,key:X,type:N.type||"item",...N.type==="group"?{}:{groupIndex:N.groupIndex}}):N.type==="group"?w.createElement(m,{...ye(m,u),"data-index":H,"data-item-index":N.index,"data-known-size":N.size,key:X,style:Jr},p(N.index,u)):w.createElement(W,{...ye(W,u),...Zr(W,N.data),"data-index":H,"data-item-group-index":N.groupIndex,"data-item-index":N.index,"data-known-size":N.size,key:X,style:I?Xr:jo},A?c(N.index,N.groupIndex,N.data,u):c(N.index,N.data,u))})})}),Qr={height:"100%",outline:"none",overflowY:"auto",position:"relative",WebkitOverflowScrolling:"touch"},qr={outline:"none",overflowX:"auto",position:"relative"},At=e=>({height:"100%",position:"absolute",top:0,width:"100%",...e?{display:"flex",flexDirection:"column"}:void 0}),Yr={position:sn(),top:0,width:"100%",zIndex:1};function ye(e,t){if(typeof e!="string")return{context:t}}function Zr(e,t){return{item:typeof e=="string"?void 0:t}}const es=z.memo(function(){const e=F("HeaderComponent"),t=je("headerHeight"),n=F("HeaderFooterTag"),o=Ke(z.useMemo(()=>i=>{t(ze(i,"height"))},[t]),!0,F("skipAnimationFrameInResizeObserver")),r=F("context");return e!=null?s.jsx(n,{ref:o,children:s.jsx(e,{...ye(e,r)})}):null}),ts=z.memo(function(){const e=F("FooterComponent"),t=je("footerHeight"),n=F("HeaderFooterTag"),o=Ke(z.useMemo(()=>i=>{t(ze(i,"height"))},[t]),!0,F("skipAnimationFrameInResizeObserver")),r=F("context");return e!=null?s.jsx(n,{ref:o,children:s.jsx(e,{...ye(e,r)})}):null});function To({useEmitter:e,useEmitterValue:t,usePublisher:n}){return z.memo(function({children:o,style:r,context:i,...a}){const l=n("scrollContainerState"),c=t("ScrollerComponent"),u=n("smoothScrollTargetReached"),p=t("scrollerRef"),x=t("horizontalDirection")||!1,{scrollByCallback:f,scrollerRef:v,scrollToCallback:S}=ko(l,u,c,p,void 0,x);return e("scrollTo",S),e("scrollBy",f),s.jsx(c,{"data-testid":"virtuoso-scroller","data-virtuoso-scroller":!0,ref:v,style:{...x?qr:Qr,...r},tabIndex:0,...a,...ye(c,i),children:o})})}function No({useEmitter:e,useEmitterValue:t,usePublisher:n}){return z.memo(function({children:o,style:r,context:i,...a}){const l=n("windowScrollContainerState"),c=t("ScrollerComponent"),u=n("smoothScrollTargetReached"),p=t("totalListHeight"),x=t("deviation"),f=t("customScrollParent"),v=z.useRef(null),S=t("scrollerRef"),{scrollByCallback:I,scrollerRef:g,scrollToCallback:h}=ko(l,u,c,S,f);return Co(()=>{var d;return g.current=f||((d=v.current)==null?void 0:d.ownerDocument.defaultView),()=>{g.current=null}},[g,f]),e("windowScrollTo",h),e("scrollBy",I),s.jsx(c,{ref:v,"data-virtuoso-scroller":!0,style:{position:"relative",...r,...p!==0?{height:p+x}:void 0},...a,...ye(c,i),children:o})})}const ns=({children:e})=>{const t=z.useContext(Io),n=je("viewportHeight"),o=je("fixedItemHeight"),r=F("alignToBottom"),i=F("horizontalDirection"),a=z.useMemo(()=>Yn(n,c=>ze(c,i?"width":"height")),[n,i]),l=Ke(a,!0,F("skipAnimationFrameInResizeObserver"));return z.useEffect(()=>{t&&(n(t.viewportHeight),o(t.itemHeight))},[t,n,o]),s.jsx("div",{"data-viewport-type":"element",ref:l,style:At(r),children:e})},os=({children:e})=>{const t=z.useContext(Io),n=je("windowViewportRect"),o=je("fixedItemHeight"),r=F("customScrollParent"),i=eo(n,r,F("skipAnimationFrameInResizeObserver")),a=F("alignToBottom");return z.useEffect(()=>{t&&(o(t.itemHeight),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:100}))},[t,n,o]),s.jsx("div",{"data-viewport-type":"window",ref:i,style:At(a),children:e})},rs=({children:e})=>{const t=F("TopItemListComponent")??"div",n=F("headerHeight"),o={...Yr,marginTop:`${n}px`},r=F("context");return s.jsx(t,{style:o,...ye(t,r),children:e})},ss=z.memo(function(e){const t=F("useWindowScroll"),n=F("topItemsIndexes").length>0,o=F("customScrollParent"),r=F("context");return s.jsxs(o||t?ls:as,{...e,context:r,children:[n&&s.jsx(rs,{children:s.jsx(Mn,{showTopList:!0})}),s.jsxs(o||t?os:ns,{children:[s.jsx(es,{}),s.jsx(Mn,{}),s.jsx(ts,{})]})]})}),{Component:is,useEmitter:ln,useEmitterValue:F,usePublisher:je}=So(Gr,{optional:{restoreStateFrom:"restoreStateFrom",context:"context",followOutput:"followOutput",scrollIntoViewOnChange:"scrollIntoViewOnChange",itemContent:"itemContent",groupContent:"groupContent",overscan:"overscan",increaseViewportBy:"increaseViewportBy",minOverscanItemCount:"minOverscanItemCount",totalCount:"totalCount",groupCounts:"groupCounts",topItemCount:"topItemCount",firstItemIndex:"firstItemIndex",initialTopMostItemIndex:"initialTopMostItemIndex",components:"components",atBottomThreshold:"atBottomThreshold",atTopThreshold:"atTopThreshold",computeItemKey:"computeItemKey",defaultItemHeight:"defaultItemHeight",fixedGroupHeight:"fixedGroupHeight",fixedItemHeight:"fixedItemHeight",heightEstimates:"heightEstimates",itemSize:"itemSize",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"HeaderFooterTag",data:"data",initialItemCount:"initialItemCount",initialScrollTop:"initialScrollTop",alignToBottom:"alignToBottom",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",horizontalDirection:"horizontalDirection",skipAnimationFrameInResizeObserver:"skipAnimationFrameInResizeObserver"},methods:{scrollToIndex:"scrollToIndex",scrollIntoView:"scrollIntoView",scrollTo:"scrollTo",scrollBy:"scrollBy",autoscrollToBottom:"autoscrollToBottom",getState:"getState"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",totalListHeightChanged:"totalListHeightChanged",itemsRendered:"itemsRendered",groupIndices:"groupIndices"}},ss),as=To({useEmitter:ln,useEmitterValue:F,usePublisher:je}),ls=No({useEmitter:ln,useEmitterValue:F,usePublisher:je}),cs=is,us=Q(()=>{const e=j(u=>s.jsxs("td",{children:["Item $",u]})),t=j(null),n=j(u=>s.jsxs("td",{colSpan:1e3,children:["Group ",u]})),o=j(null),r=j(null),i=j({}),a=j(an),l=j(et),c=(u,p=null)=>we(k(i,P(x=>x[u]),oe()),p);return{components:i,computeItemKey:a,context:t,EmptyPlaceholder:c("EmptyPlaceholder"),FillerRow:c("FillerRow"),fixedFooterContent:r,fixedHeaderContent:o,itemContent:e,groupContent:n,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder"),TableBodyComponent:c("TableBody","tbody"),TableComponent:c("Table","table"),TableFooterComponent:c("TableFoot","tfoot"),TableHeadComponent:c("TableHead","thead"),TableRowComponent:c("TableRow","tr"),GroupComponent:c("Group","tr")}});re(wo,us);sn();const Ln={bottom:0,itemHeight:0,items:[],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},ds={bottom:0,itemHeight:0,items:[{index:0}],itemWidth:0,offsetBottom:0,offsetTop:0,top:0},{ceil:Pn,floor:Tt,max:st,min:_t,round:Hn}=Math;function On(e,t,n){return Array.from({length:t-e+1}).map((o,r)=>({data:n===null?null:n[r+e],index:r+e}))}function hs(e){return{...ds,items:e}}function wt(e,t){return e!==void 0&&e.width===t.width&&e.height===t.height}function ps(e,t){return e!==void 0&&e.column===t.column&&e.row===t.row}const fs=Q(([{increaseViewportBy:e,listBoundary:t,overscan:n,visibleRange:o},{footerHeight:r,headerHeight:i,scrollBy:a,scrollContainerState:l,scrollTo:c,scrollTop:u,smoothScrollTargetReached:p,viewportHeight:x},f,v,{didMount:S,propsReady:I},{customScrollParent:g,useWindowScroll:h,windowScrollContainerState:d,windowScrollTo:b,windowViewportRect:E},T])=>{const W=j(0),m=j(0),C=j(Ln),y=j({height:0,width:0}),A=j({height:0,width:0}),L=J(),B=J(),R=j(0),N=j(null),H=j({column:0,row:0}),X=J(),K=J(),ue=j(!1),Se=j(0),ve=j(!0),O=j(!1),ee=j(!1);Y(k(S,G(Se),D(([M,q])=>q!==0)),()=>{U(ve,!1)}),Y(k(pe(S,ve,A,y,Se,O),D(([M,q,fe,ne,,se])=>M&&!q&&fe.height!==0&&ne.height!==0&&!se)),([,,,,M])=>{U(O,!0),tn(1,()=>{U(L,M)}),Ne(k(u),()=>{U(t,[0,0]),U(ve,!0)})}),$(k(K,D(M=>M!=null&&M.scrollTop>0),Ae(0)),m),Y(k(S,G(K),D(([,M])=>M!=null)),([,M])=>{M&&(U(y,M.viewport),U(A,M.item),U(H,M.gap),M.scrollTop>0&&(U(ue,!0),Ne(k(u,Ge(1)),q=>{U(ue,!1)}),U(c,{top:M.scrollTop})))}),$(k(y,P(({height:M})=>M)),x),$(k(pe(_(y,wt),_(A,wt),_(H,(M,q)=>M!==void 0&&M.column===q.column&&M.row===q.row),_(u)),P(([M,q,fe,ne])=>({gap:fe,item:q,scrollTop:ne,viewport:M}))),X),$(k(pe(_(W),o,_(H,ps),_(A,wt),_(y,wt),_(N),_(m),_(ue),_(ve),_(Se)),D(([,,,,,,,M])=>!M),P(([M,[q,fe],ne,se,me,de,te,,ce,Ie])=>{const{column:he,row:ot}=ne,{height:gt,width:Ot}=se,{width:pn}=me;if(te===0&&(M===0||pn===0))return Ln;if(Ot===0){const vn=nn(Ie,M),Vo=vn+Math.max(te-1,0);return hs(On(vn,Vo,de))}const vt=Eo(pn,Ot,he);let Qe,Fe;ce?q===0&&fe===0&&te>0?(Qe=0,Fe=te-1):(Qe=vt*Tt((q+ot)/(gt+ot)),Fe=vt*Pn((fe+ot)/(gt+ot))-1,Fe=_t(M-1,st(Fe,vt-1)),Qe=_t(Fe,st(0,Qe))):(Qe=0,Fe=-1);const fn=On(Qe,Fe,de),{bottom:mn,top:xn}=Bn(me,ne,se,fn),gn=Pn(M/vt),Fo=gn*gt+(gn-1)*ot-mn;return{bottom:mn,itemHeight:gt,items:fn,itemWidth:Ot,offsetBottom:Fo,offsetTop:xn,top:xn}})),C),$(k(N,D(M=>M!==null),P(M=>M.length)),W),$(k(pe(y,A,C,H),D(([M,q,{items:fe}])=>fe.length>0&&q.height!==0&&M.height!==0),P(([M,q,{items:fe},ne])=>{const{bottom:se,top:me}=Bn(M,ne,q,fe);return[me,se]}),oe(lt)),t);const le=j(!1);$(k(u,G(le),P(([M,q])=>q||M!==0)),le);const Xe=ke(k(pe(C,W),D(([{items:M}])=>M.length>0),G(le),D(([[M,q],fe])=>{const ne=M.items[M.items.length-1].index===q-1;return(fe||M.bottom>0&&M.itemHeight>0&&M.offsetBottom===0&&M.items.length===q)&&ne}),P(([[,M]])=>M-1),oe())),tt=ke(k(_(C),D(({items:M})=>M.length>0&&M[0].index===0),Ae(0),oe())),Re=ke(k(_(C),G(ue),D(([{items:M},q])=>M.length>0&&!q),P(([{items:M}])=>({endIndex:M[M.length-1].index,startIndex:M[0].index})),oe(io),He(0)));$(Re,v.scrollSeekRangeChanged),$(k(L,G(y,A,W,H),P(([M,q,fe,ne,se])=>{const me=ho(M),{align:de,behavior:te,offset:ce}=me;let Ie=me.index;Ie==="LAST"&&(Ie=ne-1),Ie=st(0,Ie,_t(ne-1,Ie));let he=Xt(q,se,fe,Ie);return de==="end"?he=Hn(he-q.height+fe.height):de==="center"&&(he=Hn(he-q.height/2+fe.height/2)),ce!==void 0&&ce!==0&&(he+=ce),{behavior:te,top:he}})),c);const nt=we(k(C,P(M=>M.offsetBottom+M.bottom)),0);return $(k(E,P(M=>({height:M.visibleHeight,width:M.visibleWidth}))),y),{customScrollParent:g,data:N,deviation:R,footerHeight:r,gap:H,headerHeight:i,increaseViewportBy:e,initialItemCount:m,itemDimensions:A,overscan:n,restoreStateFrom:K,scrollBy:a,scrollContainerState:l,scrollHeight:B,scrollTo:c,scrollToIndex:L,scrollTop:u,smoothScrollTargetReached:p,totalCount:W,useWindowScroll:h,viewportDimensions:y,windowScrollContainerState:d,windowScrollTo:b,windowViewportRect:E,...v,gridState:C,horizontalDirection:ee,initialTopMostItemIndex:Se,totalListHeight:nt,...f,endReached:Xe,propsReady:I,rangeChanged:Re,startReached:tt,stateChanged:X,stateRestoreInProgress:ue,...T}},re(on,be,xt,vo,De,rn,_e));function Eo(e,t,n){return st(1,Tt((e+n)/(Tt(t)+n)))}function Bn(e,t,n,o){const{height:r}=n;if(r===void 0||o.length===0)return{bottom:0,top:0};const i=Xt(e,t,n,o[0].index);return{bottom:Xt(e,t,n,o[o.length-1].index)+r,top:i}}function Xt(e,t,n,o){const r=Eo(e.width,n.width,t.column),i=Tt(o/r),a=i*n.height+st(0,i-1)*t.row;return a>0?a+t.row:a}const ms=Q(()=>{const e=j(x=>`Item ${x}`),t=j({}),n=j(null),o=j("virtuoso-grid-item"),r=j("virtuoso-grid-list"),i=j(an),a=j("div"),l=j(et),c=(x,f=null)=>we(k(t,P(v=>v[x]),oe()),f),u=j(!1),p=j(!1);return $(_(p),u),{components:t,computeItemKey:i,context:n,FooterComponent:c("Footer"),HeaderComponent:c("Header"),headerFooterTag:a,itemClassName:o,ItemComponent:c("Item","div"),itemContent:e,listClassName:r,ListComponent:c("List","div"),readyStateChanged:u,reportReadyState:p,ScrollerComponent:c("Scroller","div"),scrollerRef:l,ScrollSeekPlaceholder:c("ScrollSeekPlaceholder","div")}}),xs=Q(([e,t])=>({...e,...t}),re(fs,ms)),gs=z.memo(function(){const e=ie("gridState"),t=ie("listClassName"),n=ie("itemClassName"),o=ie("itemContent"),r=ie("computeItemKey"),i=ie("isSeeking"),a=Te("scrollHeight"),l=ie("ItemComponent"),c=ie("ListComponent"),u=ie("ScrollSeekPlaceholder"),p=ie("context"),x=Te("itemDimensions"),f=Te("gap"),v=ie("log"),S=ie("stateRestoreInProgress"),I=Te("reportReadyState"),g=Ke(z.useMemo(()=>h=>{const d=h.parentElement.parentElement.scrollHeight;a(d);const b=h.firstChild;if(b!==null){const{height:E,width:T}=b.getBoundingClientRect();x({height:E,width:T})}f({column:Wn("column-gap",getComputedStyle(h).columnGap,v),row:Wn("row-gap",getComputedStyle(h).rowGap,v)})},[a,x,f,v]),!0,!1);return Co(()=>{e.itemHeight>0&&e.itemWidth>0&&I(!0)},[e]),S?null:s.jsx(c,{className:t,ref:g,...ye(c,p),"data-testid":"virtuoso-item-list",style:{paddingBottom:e.offsetBottom,paddingTop:e.offsetTop},children:e.items.map(h=>{const d=r(h.index,h.data,p);return i?s.jsx(u,{...ye(u,p),height:e.itemHeight,index:h.index,width:e.itemWidth},d):w.createElement(l,{...ye(l,p),className:n,"data-index":h.index,key:d},o(h.index,h.data,p))})})}),vs=z.memo(function(){const e=ie("HeaderComponent"),t=Te("headerHeight"),n=ie("headerFooterTag"),o=Ke(z.useMemo(()=>i=>{t(ze(i,"height"))},[t]),!0,!1),r=ie("context");return e!=null?s.jsx(n,{ref:o,children:s.jsx(e,{...ye(e,r)})}):null}),ys=z.memo(function(){const e=ie("FooterComponent"),t=Te("footerHeight"),n=ie("headerFooterTag"),o=Ke(z.useMemo(()=>i=>{t(ze(i,"height"))},[t]),!0,!1),r=ie("context");return e!=null?s.jsx(n,{ref:o,children:s.jsx(e,{...ye(e,r)})}):null}),ws=({children:e})=>{const t=z.useContext(bo),n=Te("itemDimensions"),o=Te("viewportDimensions"),r=Ke(z.useMemo(()=>i=>{o(i.getBoundingClientRect())},[o]),!0,!1);return z.useEffect(()=>{t&&(o({height:t.viewportHeight,width:t.viewportWidth}),n({height:t.itemHeight,width:t.itemWidth}))},[t,o,n]),s.jsx("div",{ref:r,style:At(!1),children:e})},Ss=({children:e})=>{const t=z.useContext(bo),n=Te("windowViewportRect"),o=Te("itemDimensions"),r=ie("customScrollParent"),i=eo(n,r,!1);return z.useEffect(()=>{t&&(o({height:t.itemHeight,width:t.itemWidth}),n({listHeight:0,offsetTop:0,visibleHeight:t.viewportHeight,visibleWidth:t.viewportWidth}))},[t,n,o]),s.jsx("div",{ref:i,style:At(!1),children:e})},Is=z.memo(function({...e}){const t=ie("useWindowScroll"),n=ie("customScrollParent"),o=n||t?Cs:bs,r=n||t?Ss:ws,i=ie("context");return s.jsx(o,{...e,...ye(o,i),children:s.jsxs(r,{children:[s.jsx(vs,{}),s.jsx(gs,{}),s.jsx(ys,{})]})})}),{useEmitter:Ro,useEmitterValue:ie,usePublisher:Te}=So(xs,{optional:{context:"context",totalCount:"totalCount",overscan:"overscan",itemContent:"itemContent",components:"components",computeItemKey:"computeItemKey",data:"data",initialItemCount:"initialItemCount",scrollSeekConfiguration:"scrollSeekConfiguration",headerFooterTag:"headerFooterTag",listClassName:"listClassName",itemClassName:"itemClassName",useWindowScroll:"useWindowScroll",customScrollParent:"customScrollParent",scrollerRef:"scrollerRef",logLevel:"logLevel",restoreStateFrom:"restoreStateFrom",initialTopMostItemIndex:"initialTopMostItemIndex",increaseViewportBy:"increaseViewportBy"},methods:{scrollTo:"scrollTo",scrollBy:"scrollBy",scrollToIndex:"scrollToIndex"},events:{isScrolling:"isScrolling",endReached:"endReached",startReached:"startReached",rangeChanged:"rangeChanged",atBottomStateChange:"atBottomStateChange",atTopStateChange:"atTopStateChange",stateChanged:"stateChanged",readyStateChanged:"readyStateChanged"}},Is),bs=To({useEmitter:Ro,useEmitterValue:ie,usePublisher:Te}),Cs=No({useEmitter:Ro,useEmitterValue:ie,usePublisher:Te});function Wn(e,t,n){return t!=="normal"&&(t==null?void 0:t.endsWith("px"))!==!0&&n(`${e} was not resolved to pixel value correctly`,t,ge.WARN),t==="normal"?0:parseInt(t??"0",10)}const ks=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),js=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polyline",{points:"20 6 9 17 4 12"})}),Ts=({content:e,streaming:t})=>{const[n,o]=w.useState(!1),[r,i]=w.useState(!1),a=w.useCallback(async()=>{if(!e.text)return;await Xn(e.text)&&(o(!0),setTimeout(()=>o(!1),2e3))},[e.text]);return s.jsxs("div",{className:"flex flex-row-reverse items-end gap-2 animate-fade-up",onMouseEnter:()=>i(!0),onMouseLeave:()=>i(!1),children:[!t&&e.text&&s.jsx("button",{onClick:a,className:`
|
|
7
|
+
shrink-0 p-1.5 rounded-md
|
|
8
|
+
cursor-pointer flex items-center justify-center
|
|
9
|
+
transition-all duration-150
|
|
10
|
+
${n?"bg-success text-white":"bg-surface-secondary border border-edge text-content-tertiary hover:bg-surface-hover hover:text-content"}
|
|
11
|
+
${r?"opacity-100":"opacity-0"}
|
|
12
|
+
`,title:n?"已复制":"复制",children:n?s.jsx(js,{size:12}):s.jsx(ks,{size:12})}),s.jsx("div",{className:"flex-1 max-w-[calc(100%-32px)] px-3.5 py-3 bg-surface-secondary border border-edge-light rounded-xl rounded-bl-sm text-[14px] leading-[1.7] text-content break-words",children:s.jsx(Kn,{content:e.text,streaming:t})})]})};function Ns(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(e==null||e(r),n===!1||!r.defaultPrevented)return t==null?void 0:t(r)}}function Es(e,t=[]){let n=[];function o(i,a){const l=w.createContext(a),c=n.length;n=[...n,a];const u=x=>{var h;const{scope:f,children:v,...S}=x,I=((h=f==null?void 0:f[e])==null?void 0:h[c])||l,g=w.useMemo(()=>S,Object.values(S));return s.jsx(I.Provider,{value:g,children:v})};u.displayName=i+"Provider";function p(x,f){var I;const v=((I=f==null?void 0:f[e])==null?void 0:I[c])||l,S=w.useContext(v);if(S)return S;if(a!==void 0)return a;throw new Error(`\`${x}\` must be used within \`${i}\``)}return[u,p]}const r=()=>{const i=n.map(a=>w.createContext(a));return function(l){const c=(l==null?void 0:l[e])||i;return w.useMemo(()=>({[`__scope${e}`]:{...l,[e]:c}}),[l,c])}};return r.scopeName=e,[o,Rs(r,...t)]}function Rs(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const o=e.map(r=>({useScope:r(),scopeName:r.scopeName}));return function(i){const a=o.reduce((l,{useScope:c,scopeName:u})=>{const x=c(i)[`__scope${u}`];return{...l,...x}},{});return w.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}var pt=globalThis!=null&&globalThis.document?w.useLayoutEffect:()=>{},As=Jn[" useInsertionEffect ".trim().toString()]||pt;function Ms({prop:e,defaultProp:t,onChange:n=()=>{},caller:o}){const[r,i,a]=Ls({defaultProp:t,onChange:n}),l=e!==void 0,c=l?e:r;{const p=w.useRef(e!==void 0);w.useEffect(()=>{const x=p.current;x!==l&&console.warn(`${o} is changing from ${x?"controlled":"uncontrolled"} to ${l?"controlled":"uncontrolled"}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`),p.current=l},[l,o])}const u=w.useCallback(p=>{var x;if(l){const f=Ps(p)?p(e):p;f!==e&&((x=a.current)==null||x.call(a,f))}else i(p)},[l,e,i,a]);return[c,u]}function Ls({defaultProp:e,onChange:t}){const[n,o]=w.useState(e),r=w.useRef(n),i=w.useRef(t);return As(()=>{i.current=t},[t]),w.useEffect(()=>{var a;r.current!==n&&((a=i.current)==null||a.call(i,n),r.current=n)},[n,r]),[n,o,i]}function Ps(e){return typeof e=="function"}function zn(e,t){if(typeof e=="function")return e(t);e!=null&&(e.current=t)}function Ao(...e){return t=>{let n=!1;const o=e.map(r=>{const i=zn(r,t);return!n&&typeof i=="function"&&(n=!0),i});if(n)return()=>{for(let r=0;r<o.length;r++){const i=o[r];typeof i=="function"?i():zn(e[r],null)}}}}function Mo(...e){return w.useCallback(Ao(...e),e)}function Hs(e){const t=Os(e),n=w.forwardRef((o,r)=>{const{children:i,...a}=o,l=w.Children.toArray(i),c=l.find(Ws);if(c){const u=c.props.children,p=l.map(x=>x===c?w.Children.count(u)>1?w.Children.only(null):w.isValidElement(u)?u.props.children:null:x);return s.jsx(t,{...a,ref:r,children:w.isValidElement(u)?w.cloneElement(u,void 0,p):null})}return s.jsx(t,{...a,ref:r,children:i})});return n.displayName=`${e}.Slot`,n}function Os(e){const t=w.forwardRef((n,o)=>{const{children:r,...i}=n;if(w.isValidElement(r)){const a=$s(r),l=zs(i,r.props);return r.type!==w.Fragment&&(l.ref=o?Ao(o,a):a),w.cloneElement(r,l)}return w.Children.count(r)>1?w.Children.only(null):null});return t.displayName=`${e}.SlotClone`,t}var Bs=Symbol("radix.slottable");function Ws(e){return w.isValidElement(e)&&typeof e.type=="function"&&"__radixId"in e.type&&e.type.__radixId===Bs}function zs(e,t){const n={...t};for(const o in t){const r=e[o],i=t[o];/^on[A-Z]/.test(o)?r&&i?n[o]=(...l)=>{const c=i(...l);return r(...l),c}:r&&(n[o]=r):o==="style"?n[o]={...r,...i}:o==="className"&&(n[o]=[r,i].filter(Boolean).join(" "))}return{...e,...n}}function $s(e){var o,r;let t=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var _s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"],cn=_s.reduce((e,t)=>{const n=Hs(`Primitive.${t}`),o=w.forwardRef((r,i)=>{const{asChild:a,...l}=r,c=a?n:t;return typeof window<"u"&&(window[Symbol.for("radix-ui")]=!0),s.jsx(c,{...l,ref:i})});return o.displayName=`Primitive.${t}`,{...e,[t]:o}},{});function Ds(e,t){return w.useReducer((n,o)=>t[n][o]??n,e)}var Lo=e=>{const{present:t,children:n}=e,o=Fs(t),r=typeof n=="function"?n({present:o.isPresent}):w.Children.only(n),i=Mo(o.ref,Vs(r));return typeof n=="function"||o.isPresent?w.cloneElement(r,{ref:i}):null};Lo.displayName="Presence";function Fs(e){const[t,n]=w.useState(),o=w.useRef(null),r=w.useRef(e),i=w.useRef("none"),a=e?"mounted":"unmounted",[l,c]=Ds(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return w.useEffect(()=>{const u=St(o.current);i.current=l==="mounted"?u:"none"},[l]),pt(()=>{const u=o.current,p=r.current;if(p!==e){const f=i.current,v=St(u);e?c("MOUNT"):v==="none"||(u==null?void 0:u.display)==="none"?c("UNMOUNT"):c(p&&f!==v?"ANIMATION_OUT":"UNMOUNT"),r.current=e}},[e,c]),pt(()=>{if(t){let u;const p=t.ownerDocument.defaultView??window,x=v=>{const I=St(o.current).includes(CSS.escape(v.animationName));if(v.target===t&&I&&(c("ANIMATION_END"),!r.current)){const g=t.style.animationFillMode;t.style.animationFillMode="forwards",u=p.setTimeout(()=>{t.style.animationFillMode==="forwards"&&(t.style.animationFillMode=g)})}},f=v=>{v.target===t&&(i.current=St(o.current))};return t.addEventListener("animationstart",f),t.addEventListener("animationcancel",x),t.addEventListener("animationend",x),()=>{p.clearTimeout(u),t.removeEventListener("animationstart",f),t.removeEventListener("animationcancel",x),t.removeEventListener("animationend",x)}}else c("ANIMATION_END")},[t,c]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:w.useCallback(u=>{o.current=u?getComputedStyle(u):null,n(u)},[])}}function St(e){return(e==null?void 0:e.animationName)||"none"}function Vs(e){var o,r;let t=(o=Object.getOwnPropertyDescriptor(e.props,"ref"))==null?void 0:o.get,n=t&&"isReactWarning"in t&&t.isReactWarning;return n?e.ref:(t=(r=Object.getOwnPropertyDescriptor(e,"ref"))==null?void 0:r.get,n=t&&"isReactWarning"in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}var Us=Jn[" useId ".trim().toString()]||(()=>{}),Gs=0;function Ks(e){const[t,n]=w.useState(Us());return pt(()=>{n(o=>o??String(Gs++))},[e]),e||(t?`radix-${t}`:"")}var Mt="Collapsible",[Js]=Es(Mt),[Xs,un]=Js(Mt),Po=w.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:o,defaultOpen:r,disabled:i,onOpenChange:a,...l}=e,[c,u]=Ms({prop:o,defaultProp:r??!1,onChange:a,caller:Mt});return s.jsx(Xs,{scope:n,disabled:i,contentId:Ks(),open:c,onOpenToggle:w.useCallback(()=>u(p=>!p),[u]),children:s.jsx(cn.div,{"data-state":hn(c),"data-disabled":i?"":void 0,...l,ref:t})})});Po.displayName=Mt;var Ho="CollapsibleTrigger",Oo=w.forwardRef((e,t)=>{const{__scopeCollapsible:n,...o}=e,r=un(Ho,n);return s.jsx(cn.button,{type:"button","aria-controls":r.contentId,"aria-expanded":r.open||!1,"data-state":hn(r.open),"data-disabled":r.disabled?"":void 0,disabled:r.disabled,...o,ref:t,onClick:Ns(e.onClick,r.onOpenToggle)})});Oo.displayName=Ho;var dn="CollapsibleContent",Bo=w.forwardRef((e,t)=>{const{forceMount:n,...o}=e,r=un(dn,e.__scopeCollapsible);return s.jsx(Lo,{present:n||r.open,children:({present:i})=>s.jsx(Qs,{...o,ref:t,present:i})})});Bo.displayName=dn;var Qs=w.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:o,children:r,...i}=e,a=un(dn,n),[l,c]=w.useState(o),u=w.useRef(null),p=Mo(t,u),x=w.useRef(0),f=x.current,v=w.useRef(0),S=v.current,I=a.open||l,g=w.useRef(I),h=w.useRef(void 0);return w.useEffect(()=>{const d=requestAnimationFrame(()=>g.current=!1);return()=>cancelAnimationFrame(d)},[]),pt(()=>{const d=u.current;if(d){h.current=h.current||{transitionDuration:d.style.transitionDuration,animationName:d.style.animationName},d.style.transitionDuration="0s",d.style.animationName="none";const b=d.getBoundingClientRect();x.current=b.height,v.current=b.width,g.current||(d.style.transitionDuration=h.current.transitionDuration,d.style.animationName=h.current.animationName),c(o)}},[a.open,o]),s.jsx(cn.div,{"data-state":hn(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!I,...i,ref:p,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":S?`${S}px`:void 0,...e.style},children:I&&r})});function hn(e){return e?"open":"closed"}var Lt=Po,Pt=Oo,Ht=Bo;const qs=({size:e=12,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-200 ${t||""}`,children:s.jsx("path",{d:"M9 18l6-6-6-6"})}),Ys=({size:e=16})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M12 2a4 4 0 0 0-4 4v2a4 4 0 0 0 0 8v2a4 4 0 0 0 8 0v-2a4 4 0 0 0 0-8V6a4 4 0 0 0-4-4z"}),s.jsx("path",{d:"M12 6v4"}),s.jsx("path",{d:"M12 14v4"}),s.jsx("path",{d:"M8 10h8"})]}),Zs=({content:e,streaming:t})=>{const n=t||!1;return s.jsxs(Lt,{defaultOpen:n,className:"my-2 rounded-xl border border-edge-light bg-surface-tertiary overflow-hidden",children:[s.jsxs(Pt,{className:"group flex items-center gap-2 w-full px-3.5 py-2.5 text-[12px] font-medium text-content-secondary hover:bg-surface-hover transition-colors duration-150 cursor-pointer",children:[s.jsx(Ys,{size:14}),s.jsx("span",{className:"flex-1",children:t?"思考中...":"思考过程"}),e.duration&&!t&&s.jsxs("span",{className:"text-[11px] text-content-tertiary",children:[e.duration,"s"]}),s.jsx(qs,{size:12,className:"group-data-[state=open]:rotate-90"})]}),s.jsx(Ht,{className:"CollapsibleContent",children:s.jsx("div",{className:"px-3.5 py-3 text-[13px] text-content-tertiary leading-relaxed border-t border-edge-light whitespace-pre-wrap break-words",children:e.think&&s.jsx(Kn,{content:e.think,streaming:t})})})]})},$n=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("polyline",{points:"4 17 10 11 4 5"}),s.jsx("line",{x1:"12",y1:"19",x2:"20",y2:"19"})]}),_n=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),s.jsx("polyline",{points:"14 2 14 8 20 8"})]}),It=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("path",{d:"M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"}),s.jsx("polyline",{points:"14 2 14 8 20 8"}),s.jsx("path",{d:"M10 18l1.5-1.5L16 12l2 2-4.5 4.5L12 20z"})]}),Dn=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("circle",{cx:"11",cy:"11",r:"8"}),s.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"})]}),Fn=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z"}),s.jsx("circle",{cx:"14",cy:"14",r:"3"}),s.jsx("line",{x1:"20",y1:"20",x2:"16.65",y2:"16.65"})]}),Vn=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("line",{x1:"2",y1:"12",x2:"22",y2:"12"}),s.jsx("path",{d:"M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"})]}),ei=({size:e=14,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:s.jsx("path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"})}),ti={Shell:{icon:$n,displayName:"Shell",paramKeys:["command"]},Bash:{icon:$n,displayName:"Shell",paramKeys:["command"]},ReadFile:{icon:_n,displayName:"读取",paramKeys:["file_path","path"]},read_file:{icon:_n,displayName:"读取",paramKeys:["file_path","path"]},WriteFile:{icon:It,displayName:"写入",paramKeys:["file_path","path"]},write_file:{icon:It,displayName:"写入",paramKeys:["file_path","path"]},EditFile:{icon:It,displayName:"编辑",paramKeys:["file_path","path"]},str_replace_file:{icon:It,displayName:"编辑",paramKeys:["file_path","path"]},Grep:{icon:Dn,displayName:"搜索",paramKeys:["pattern","query"]},grep:{icon:Dn,displayName:"搜索",paramKeys:["pattern","query"]},Glob:{icon:Fn,displayName:"查找文件",paramKeys:["pattern","path"]},glob:{icon:Fn,displayName:"查找文件",paramKeys:["pattern","path"]},SearchWeb:{icon:Vn,displayName:"网页搜索",paramKeys:["query"]},web_search:{icon:Vn,displayName:"网页搜索",paramKeys:["query"]}},ni={icon:ei,displayName:"",paramKeys:["file_path","path","filename","file","url","command","query","content"]};function Wo(e){return ti[e]||{...ni,displayName:e}}function zo(e,t){try{const n=JSON.parse(e),o=t||["file_path","path","filename","file","url","command","query","content"];for(const r of o)if(n[r]){const i=String(n[r]);if(i.length>50){const a=i.split("/");return a.length>3?`.../${a.slice(-2).join("/")}`:i.slice(0,50)+"..."}return i}return""}catch{return""}}const oi=({size:e=12,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-200 ${t||""}`,children:s.jsx("path",{d:"M9 18l6-6-6-6"})}),ri=({size:e=14,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:s.jsx("polyline",{points:"20 6 9 17 4 12"})}),si=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});function ii(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function ai(e,t=500){return e.length<=t?e:e.slice(0,t)+`
|
|
13
|
+
... (输出已截断)`}const li=({content:e,result:t})=>{const n=Wo(e.functionName),o=n.icon,r=zo(e.arguments,n.paramKeys),i=t?t.isError?"error":"success":"running";return s.jsxs(Lt,{defaultOpen:!1,className:"my-2 rounded-xl border border-edge bg-surface-secondary overflow-hidden",children:[s.jsxs(Pt,{className:"group flex items-center gap-2 w-full px-3.5 py-2.5 bg-surface-tertiary text-[13px] font-medium text-content hover:bg-surface-hover transition-colors duration-150 cursor-pointer",children:[s.jsx("span",{className:`shrink-0 ${i==="running"?"animate-pulse":""}`,children:s.jsx(o,{size:14,className:i==="error"?"text-danger":"text-content-tertiary"})}),s.jsx("span",{className:"text-content-secondary shrink-0",children:n.displayName}),r&&s.jsx("span",{className:"text-[11px] text-content-tertiary truncate flex-1 font-mono",children:r}),s.jsxs("span",{className:"shrink-0",children:[i==="running"&&s.jsx("span",{className:"text-[11px] text-accent",children:"..."}),i==="success"&&s.jsx(ri,{size:14,className:"text-success"}),i==="error"&&s.jsx(si,{size:14,className:"text-danger"})]}),s.jsx(oi,{size:12,className:"group-data-[state=open]:rotate-90 shrink-0 text-content-tertiary"})]}),s.jsx(Ht,{children:s.jsxs("div",{className:"px-3.5 py-3 border-t border-edge space-y-2",children:[s.jsxs("div",{children:[s.jsx("div",{className:"text-[11px] text-content-tertiary mb-1",children:"参数"}),s.jsx("pre",{className:"p-3 rounded-lg text-[11px] leading-relaxed font-mono max-h-[200px] overflow-y-auto whitespace-pre-wrap break-all",style:{background:"#1e1e2e",color:"#cdd6f4"},children:ii(e.arguments)})]}),t&&s.jsxs("div",{children:[s.jsx("div",{className:"text-[11px] text-content-tertiary mb-1",children:"结果"}),s.jsx("pre",{className:`
|
|
14
|
+
p-3 rounded-lg text-[11px] leading-relaxed font-mono max-h-[200px] overflow-y-auto whitespace-pre-wrap break-all
|
|
15
|
+
${t.isError?"bg-danger-light text-danger border border-danger/20":"bg-surface-tertiary text-content-secondary"}
|
|
16
|
+
`,children:ai(t.output)})]})]})})]})},ci=({display:e})=>e.type==="diff"?s.jsx("pre",{className:"p-3 rounded-lg text-[11px] leading-relaxed font-mono max-h-[200px] overflow-y-auto whitespace-pre-wrap break-all",style:{background:"#1e1e2e",color:"#cdd6f4"},children:e.content&&ui(e.content)}):s.jsx("div",{className:"text-[13px] text-content-secondary whitespace-pre-wrap",children:e.content?String(e.content):JSON.stringify(e,null,2)});function ui(e){return e.split(`
|
|
17
|
+
`).map((n,o)=>{let r="";return n.startsWith("+")&&!n.startsWith("+++")?r="text-success":n.startsWith("-")&&!n.startsWith("---")&&(r="text-danger"),s.jsx("div",{className:r,children:n},o)})}const di=({messageId:e,content:t})=>{const[n,o]=w.useState(!1),r=V(c=>c.activeSessionId),i=V(c=>c.updateMessage),a=t.responded,l=c=>{a||n||!r||(o(!0),We.sendApproval(t.requestId,c),i(e,{content:{...t,responded:!0,response:c}}),o(!1))};return s.jsxs("div",{className:"my-2 rounded-xl border-2 border-warning overflow-hidden bg-surface-secondary",children:[s.jsxs("div",{className:"flex items-center gap-2 px-3.5 py-2.5 bg-warning/8",children:[s.jsx("span",{className:"text-warning shrink-0",children:"⚠️"}),s.jsxs("span",{className:"text-[13px] font-semibold text-content",children:["需要审批:",t.action]}),a&&s.jsx("span",{className:`ml-auto text-[12px] ${t.response==="approve"?"text-success":"text-danger"}`,children:t.response==="approve"?"已批准":"已拒绝"})]}),s.jsx("p",{className:"px-3.5 py-3 text-[13px] text-content-secondary leading-relaxed",children:t.description}),t.display&&t.display.length>0&&s.jsx("div",{className:"px-3.5 pb-3 flex flex-col gap-2",children:t.display.map((c,u)=>s.jsx(ci,{display:c},u))}),s.jsxs("div",{className:"flex gap-2 px-3.5 py-2.5 border-t border-edge",children:[s.jsx("button",{onClick:()=>l("approve"),disabled:a||n,className:"flex-1 flex items-center justify-center gap-1.5 py-2 rounded-lg bg-success text-white text-[13px] font-medium hover:bg-[#15803d] transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed",children:"批准"}),s.jsx("button",{onClick:()=>l("reject"),disabled:a||n,className:"flex-1 flex items-center justify-center gap-1.5 py-2 rounded-lg bg-surface-secondary text-danger border border-danger text-[13px] font-medium hover:bg-danger hover:text-white transition-colors duration-150 disabled:opacity-50 disabled:cursor-not-allowed",children:"拒绝"})]})]})},hi=({size:e=16})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("path",{d:"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"}),s.jsx("line",{x1:"12",y1:"17",x2:"12.01",y2:"17"})]}),pi=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("line",{x1:"22",y1:"2",x2:"11",y2:"13"}),s.jsx("polygon",{points:"22 2 15 22 11 13 2 9 22 2"})]}),fi=({content:e})=>{const{questionId:t,questions:n}=e,[o,r]=w.useState({}),[i,a]=w.useState({}),[l,c]=w.useState({}),u=w.useCallback((I,g)=>{r(h=>({...h,[I]:g}))},[]),p=w.useCallback((I,g)=>{a(h=>({...h,[I]:g})),u(I,g)},[u]),x=w.useCallback((I,g)=>{c(h=>({...h,[I]:g})),u(I,g)},[u]),f=w.useCallback(I=>{const g=o[I];g!=null&&g.trim()&&We.sendAnswer(t,g.trim())},[t,o]),v=w.useCallback(()=>{const I=n.map(g=>({questionId:g.id,answer:o[g.id]||""})).filter(g=>g.answer.trim());if(I.length!==0)for(const{questionId:g,answer:h}of I)We.sendAnswer(t,h)},[n,o]),S=n.every(I=>(o[I.id]||"").trim());return s.jsxs("div",{className:"my-3 px-4 py-3 rounded-xl border border-edge bg-surface-secondary",children:[s.jsxs("div",{className:"flex items-center gap-2 mb-3",children:[s.jsx(hi,{size:16,className:"text-accent"}),s.jsx("span",{className:"text-[13px] font-medium text-content",children:"AI 需要更多信息"})]}),s.jsx("div",{className:"space-y-4",children:n.map(I=>{var g,h;return s.jsxs("div",{className:"space-y-2",children:[s.jsx("div",{className:"text-[13px] text-content",children:I.text}),I.options&&I.options.length>0?s.jsxs("div",{className:"flex flex-wrap gap-2",children:[I.options.map(d=>s.jsx("button",{onClick:()=>p(I.id,d),className:`
|
|
18
|
+
px-3 py-1.5 rounded-lg text-[12px] font-medium
|
|
19
|
+
transition-colors duration-150 cursor-pointer
|
|
20
|
+
${i[I.id]===d?"bg-accent text-white":"bg-surface-tertiary text-content-secondary hover:bg-surface-hover hover:text-content"}
|
|
21
|
+
`,children:d},d)),s.jsx("input",{type:"text",value:l[I.id]||"",onChange:d=>x(I.id,d.target.value),placeholder:"或输入其他答案...",className:"flex-1 min-w-[120px] px-3 py-1.5 rounded-lg text-[12px] bg-surface-tertiary text-content placeholder:text-content-tertiary outline-none border border-edge focus:border-accent"})]}):s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsx("input",{type:"text",value:o[I.id]||"",onChange:d=>u(I.id,d.target.value),placeholder:"输入回答...",className:"flex-1 px-3 py-2 rounded-lg text-[12px] bg-surface-tertiary text-content placeholder:text-content-tertiary outline-none border border-edge focus:border-accent"}),s.jsx("button",{onClick:()=>f(I.id),disabled:!((g=o[I.id])!=null&&g.trim()),className:`
|
|
22
|
+
px-3 py-2 rounded-lg text-[12px] font-medium
|
|
23
|
+
transition-colors duration-150
|
|
24
|
+
${(h=o[I.id])!=null&&h.trim()?"bg-accent text-white hover:bg-accent/90 cursor-pointer":"bg-surface-tertiary text-content-tertiary cursor-not-allowed"}
|
|
25
|
+
`,children:s.jsx(pi,{size:14})})]})]},I.id)})}),n.length>1&&S&&s.jsx("div",{className:"mt-3 pt-3 border-t border-edge",children:s.jsx("button",{onClick:v,className:"w-full px-4 py-2 rounded-lg bg-accent text-white text-[12px] font-medium hover:bg-accent/90 transition-colors cursor-pointer",children:"提交所有回答"})})]})},$o=({size:e=12,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-200 ${t||""}`,children:s.jsx("path",{d:"M9 18l6-6-6-6"})}),_o=({size:e=14,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`animate-spin ${t||""}`,children:s.jsx("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"60",strokeDashoffset:"20"})}),mi=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("polyline",{points:"9 12 12 15 16 10"})]}),Do=({size:e=14,className:t})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:t,children:[s.jsx("circle",{cx:"12",cy:"12",r:"10"}),s.jsx("line",{x1:"15",y1:"9",x2:"9",y2:"15"}),s.jsx("line",{x1:"9",y1:"9",x2:"15",y2:"15"})]}),xi=new Set(["StepBegin","StepEnd","StatusUpdate","TurnBegin","TurnEnd"]);function gi(e){const t=[];for(const n of e){if(xi.has(n.type))continue;const o=n.payload;switch(n.type){case"ContentPart":{const r=(o==null?void 0:o.type)||"text",i=(o==null?void 0:o.text)||"";if(!i.trim())break;if(r==="think"){const a=t[t.length-1];a&&a.type==="thinking"?a.text+=`
|
|
26
|
+
`+i:t.push({type:"thinking",text:i})}else t.push({type:"text",text:i});break}case"ToolCall":{const r=o==null?void 0:o.function,i=(r==null?void 0:r.name)||"tool",a=Wo(i),l=(r==null?void 0:r.arguments)||"{}";t.push({type:"tool",name:i,displayName:a.displayName,icon:a.icon,param:zo(l,a.paramKeys),status:"running",arguments:l});break}case"ToolResult":{const r=o==null?void 0:o.return_value,i=!!(r!=null&&r.is_error),a=typeof(r==null?void 0:r.output)=="string"?r.output:"";for(let l=t.length-1;l>=0;l--){const c=t[l];if(c.type==="tool"&&c.status==="running"){c.status=i?"error":"success",c.output=a;break}}break}}}return t}function vi(e){var t;for(let n=e.length-1;n>=0;n--){const o=e[n].payload.event;if(o.type==="ToolResult"){const r=o.payload;return(t=r==null?void 0:r.return_value)!=null&&t.is_error?"error":"success"}if(o.type==="TurnEnd")return"success"}return e.length>0?"running":"success"}const yi=({step:e})=>{const t=e.text.length>80?e.text.slice(0,80)+"...":e.text;return s.jsxs("div",{className:"flex items-start gap-2 py-1 text-[11px]",children:[s.jsx("span",{className:"shrink-0 mt-0.5 text-purple-400/70",children:"💭"}),s.jsx("span",{className:"text-content-tertiary italic leading-relaxed line-clamp-2",children:t})]})},wi=({step:e})=>{const t=e.text.length>60?e.text.slice(0,60)+"...":e.text;return s.jsxs("div",{className:"flex items-start gap-2 py-1 text-[11px]",children:[s.jsx("span",{className:"shrink-0 mt-0.5 text-content-tertiary/60",children:"·"}),s.jsx("span",{className:"text-content-secondary leading-relaxed line-clamp-1",children:t})]})};function Si(e){try{return JSON.stringify(JSON.parse(e),null,2)}catch{return e}}function Ii(e,t=500){return e.length<=t?e:e.slice(0,t)+`
|
|
27
|
+
... (输出已截断)`}const bi=({step:e})=>{const t=e.icon;return s.jsxs(Lt,{defaultOpen:!1,children:[s.jsxs(Pt,{className:"group flex items-center gap-2 w-full py-1 text-[11px] cursor-pointer hover:bg-surface-hover/50 rounded px-1 -mx-1 transition-colors duration-100",children:[s.jsx("span",{className:"shrink-0 flex items-center justify-center w-4 h-4",children:e.status==="running"?s.jsx(_o,{size:12,className:"text-accent"}):e.status==="error"?s.jsx(Do,{size:12,className:"text-danger"}):s.jsx(t,{size:12,className:"text-success/70"})}),s.jsx("span",{className:"text-content-secondary font-medium shrink-0",children:e.displayName}),e.param&&s.jsx("span",{className:"text-content-tertiary font-mono truncate flex-1",children:e.param}),s.jsx($o,{size:10,className:"text-content-tertiary/40 shrink-0 group-data-[state=open]:rotate-90"})]}),s.jsx(Ht,{children:s.jsxs("div",{className:"ml-6 mt-1 mb-2 space-y-2 border-l-2 border-edge pl-3",children:[e.arguments&&s.jsxs("div",{children:[s.jsx("div",{className:"text-[10px] text-content-tertiary mb-1",children:"参数"}),s.jsx("pre",{className:"p-2 rounded text-[10px] leading-relaxed font-mono max-h-[150px] overflow-y-auto whitespace-pre-wrap break-all",style:{background:"#1e1e2e",color:"#cdd6f4"},children:Si(e.arguments)})]}),e.output&&s.jsxs("div",{children:[s.jsx("div",{className:"text-[10px] text-content-tertiary mb-1",children:"结果"}),s.jsx("pre",{className:`
|
|
28
|
+
p-2 rounded text-[10px] leading-relaxed font-mono max-h-[150px] overflow-y-auto whitespace-pre-wrap break-all
|
|
29
|
+
${e.status==="error"?"bg-danger-light text-danger border border-danger/20":"bg-surface-tertiary text-content-secondary"}
|
|
30
|
+
`,children:Ii(e.output)})]})]})})]})},Ci=({events:e})=>{var l,c;const[t,n]=w.useState(!1),o=w.useMemo(()=>{const u=e.map(p=>p.payload.event);return gi(u)},[e]);if(o.length===0)return null;const r=vi(e),i=((c=(l=e[0])==null?void 0:l.payload)==null?void 0:c.subagent_type)||"agent",a=w.useMemo(()=>{const u=o.find(x=>x.type==="thinking");if(u){const x=u.text.trim();return x.length>30?x.slice(0,30)+"...":x}const p=o.find(x=>x.type==="tool");return p?`${p.displayName} ${p.param}`:`${o.length} 步`},[o]);return s.jsxs(Lt,{open:t,onOpenChange:n,className:"my-1.5 rounded-lg border border-edge bg-surface-secondary overflow-hidden",children:[s.jsxs(Pt,{className:"group flex items-center gap-2 w-full px-3 py-2 bg-surface-tertiary text-[12px] font-medium text-content hover:bg-surface-hover transition-colors duration-150 cursor-pointer",children:[s.jsxs("span",{className:"shrink-0",children:[r==="running"&&s.jsx(_o,{size:12,className:"text-accent"}),r==="success"&&s.jsx(mi,{size:12,className:"text-success"}),r==="error"&&s.jsx(Do,{size:12,className:"text-danger"})]}),s.jsx("span",{className:"text-accent shrink-0",children:i}),s.jsx("span",{className:"text-[11px] text-content-tertiary truncate flex-1",children:a}),s.jsxs("span",{className:"text-[10px] text-content-tertiary px-1.5 py-0.5 bg-surface rounded shrink-0",children:[o.length,"步"]}),s.jsx($o,{size:10,className:`text-content-tertiary shrink-0 ${t?"rotate-90":""}`})]}),s.jsx(Ht,{children:s.jsx("div",{className:"px-3 py-2 border-t border-edge space-y-0.5",children:o.map((u,p)=>{switch(u.type){case"thinking":return s.jsx(yi,{step:u},`think-${p}`);case"tool":return s.jsx(bi,{step:u},`tool-${p}`);case"text":return s.jsx(wi,{step:u},`text-${p}`)}})})})]})},ki=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),ji=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polyline",{points:"20 6 9 17 4 12"})}),Ti=({content:e})=>{const[t,n]=w.useState(!1),[o,r]=w.useState(!1),i=w.useCallback(async()=>{if(!e.text)return;await Xn(e.text)&&(n(!0),setTimeout(()=>n(!1),2e3))},[e.text]);return s.jsxs("div",{className:"flex items-end gap-2 animate-fade-up",onMouseEnter:()=>r(!0),onMouseLeave:()=>r(!1),children:[e.text&&s.jsx("button",{onClick:i,className:`
|
|
31
|
+
shrink-0 p-1.5 rounded-md
|
|
32
|
+
cursor-pointer flex items-center justify-center
|
|
33
|
+
transition-all duration-150
|
|
34
|
+
${t?"bg-success text-white":"bg-surface-secondary border border-edge text-content-tertiary hover:bg-surface-hover hover:text-content"}
|
|
35
|
+
${o?"opacity-100":"opacity-0"}
|
|
36
|
+
`,title:t?"已复制":"复制",children:t?s.jsx(ji,{size:12}):s.jsx(ki,{size:12})}),s.jsx("div",{className:"flex-1 max-w-[calc(100%-32px)] px-3.5 py-2.5 bg-accent-light border border-accent/20 rounded-xl rounded-tl-sm text-[14px] leading-relaxed text-content break-words select-text",children:e.text})]})};function Be(e){return e.content}const Ni=({highlightMessageId:e})=>{const t=V(a=>a.aiMessages),n=V(a=>a.aiStreaming),o=w.useRef(null),r=w.useMemo(()=>{const a=new Map;for(const l of t)if(l.type==="tool_result"){const c=l.content;a.set(c.toolCallId,l)}return a},[t]),i=w.useMemo(()=>t.filter(a=>a.type!=="tool_result"),[t]);return i.length===0?s.jsxs("div",{className:"flex-1 overflow-y-auto flex flex-col items-center justify-center gap-4 text-content-tertiary p-6",children:[s.jsx("div",{className:"text-4xl mb-3",children:"💬"}),s.jsx("p",{className:"text-[14px]",children:"开始与 AI 对话"}),s.jsx("p",{className:"text-[12px]",children:"输入问题,AI 将基于当前项目上下文回答"})]}):s.jsx(cs,{ref:o,data:i,followOutput:n?"smooth":!1,className:"flex-1 overflow-y-auto",style:{background:"var(--surface)"},itemContent:(a,l)=>{const c=a===i.length-1,u=e===l.id;if(l.role==="user")return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(Ti,{content:Be(l)})});switch(l.type){case"text":{const p=Be(l);return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(Ts,{content:p,streaming:n&&c})})}case"think":{const p=Be(l);return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(Zs,{content:p,streaming:n&&c})})}case"tool_call":{const p=Be(l),x=r.get(p.toolCallId),f=x?Be(x):void 0;return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(li,{content:p,result:f})})}case"approval":{const p=Be(l);return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(di,{messageId:l.id,content:p})})}case"question":{const p=Be(l);return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(fi,{content:p})})}case"subagent":{const p=Be(l);return s.jsx("div",{className:`px-4 pt-5 ${u?"bg-accent-light/50 rounded-lg":""}`,children:s.jsx(Ci,{events:p.events})})}default:return null}}})},Ei=({size:e=16})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M22 2L11 13"}),s.jsx("path",{d:"M22 2L15 22L11 13L2 9L22 2Z"})]}),Ri=({size:e=16})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"currentColor",children:s.jsx("rect",{x:"6",y:"6",width:"12",height:"12",rx:"2"})}),Ai=()=>{const[e,t]=w.useState(""),n=w.useRef(null),o=V(f=>f.activeSessionId),r=V(f=>f.aiStreaming),i=V(f=>f.setStreaming),a=V(f=>f.addMessage),l=V(f=>f.setAIError),c=w.useCallback(()=>{var v;const f=e.trim();!f||!o||r||(console.log(`[AIInputBar] Sending message via WebSocket: msg="${f.substring(0,50)}..."`),t(""),i(!0),l(null),a({id:`user-${Date.now()}`,sessionId:o,role:"user",type:"text",content:{text:f},timestamp:Date.now()}),We.sendPrompt(f),(v=n.current)==null||v.focus())},[e,o,r,i,a,l]),u=w.useCallback(()=>{o&&(console.log("[AIInputBar] Sending cancel via WebSocket"),We.sendCancel(),i(!1))},[o,i]),p=w.useCallback(f=>{f.key==="Enter"&&!f.shiftKey&&(f.preventDefault(),c())},[c]),x=w.useCallback(f=>{t(f.target.value);const v=f.target;v.style.height="auto",v.style.height=Math.min(v.scrollHeight,150)+"px"},[]);return s.jsxs("div",{className:"border-t border-edge bg-surface-secondary shrink-0 px-3.5 pt-3 pb-2.5",children:[s.jsxs("div",{className:"flex items-end gap-2",children:[s.jsx("div",{className:"flex-1 relative",children:s.jsx("textarea",{ref:n,value:e,onChange:x,onKeyDown:p,placeholder:"输入消息...",disabled:r,rows:1,className:"w-full resize-none px-3.5 py-2.5 pr-2 border border-edge rounded-xl bg-surface text-content text-[14px] leading-relaxed font-sans outline-none max-h-[150px] min-h-[40px] transition-all duration-150 focus:border-accent focus:ring-[3px] focus:ring-accent/15 placeholder:text-content-muted"})}),r?s.jsx("button",{onClick:u,title:"停止生成",className:"w-10 h-10 shrink-0 rounded-xl flex items-center justify-center bg-danger text-white hover:opacity-85 transition-all duration-150",children:s.jsx(Ri,{size:14})}):s.jsx("button",{onClick:c,disabled:!e.trim()||!o,title:"发送消息",className:"w-10 h-10 shrink-0 rounded-xl flex items-center justify-center bg-accent text-white hover:bg-accent-hover transition-all duration-150 active:scale-95 disabled:opacity-40 disabled:cursor-not-allowed",children:s.jsx(Ei,{size:14})})]}),s.jsx("div",{className:"text-[11px] text-content-muted mt-1.5 text-center",children:"Enter 发送 / Shift+Enter 换行"})]})},Mi=()=>{const e=V(t=>t.setAIPanelOpen);return s.jsxs("div",{className:"flex-1 flex flex-col items-center justify-center gap-4 p-8 text-center",children:[s.jsx("div",{className:"text-5xl mb-4",children:"🤖"}),s.jsx("h3",{className:"text-lg font-semibold text-content",children:"Ask AI 需要 Kimi-CLI"}),s.jsx("p",{className:"text-[14px] text-content-secondary leading-relaxed max-w-[300px]",children:"请先安装 Kimi-CLI 以使用 AI 对话功能。"}),s.jsxs("p",{className:"text-[13px] text-content-tertiary leading-relaxed max-w-[300px]",children:["安装指南:",s.jsx("a",{href:"https://moonshotai.github.io/kimi-cli",target:"_blank",rel:"noopener noreferrer",className:"text-accent no-underline",children:"https://moonshotai.github.io/kimi-cli"})]}),s.jsxs("div",{className:"flex gap-3 mt-4",children:[s.jsx("button",{onClick:()=>window.open("https://moonshotai.github.io/kimi-cli","_blank"),className:"inline-flex items-center gap-1.5 px-5 py-2 rounded-lg bg-accent text-white text-[14px] font-medium hover:bg-accent-hover transition-colors duration-150",children:"打开安装指南"}),s.jsx("button",{onClick:()=>e(!1),className:"inline-flex items-center px-5 py-2 rounded-lg bg-surface-secondary text-content-secondary border border-edge text-[14px] hover:bg-surface-hover transition-colors duration-150",children:"关闭"})]})]})},Li=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("circle",{cx:"11",cy:"11",r:"8"}),s.jsx("path",{d:"M21 21l-4.2-4.2"})]}),Pi=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polyline",{points:"18 15 12 9 6 15"})}),Hi=({size:e=14})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polyline",{points:"6 9 12 15 18 9"})}),Oi=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s.jsx("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]});function Bi(e){var n;const t=e.content;switch(e.type){case"text":return t.text||"";case"think":return t.think||"";case"tool_call":{const o=t;return`${o.functionName||""} ${o.arguments||""}`}case"tool_result":return t.output||"";case"approval":{const o=t;return`${o.action||""} ${o.description||""}`}case"question":return((n=t.questions)==null?void 0:n.map(r=>{var i;return`${r.text} ${((i=r.options)==null?void 0:i.join(" "))||""}`}).join(" "))||"";default:return""}}function Wi(e,t){if(!t.trim())return[];const n=[],o=e.toLowerCase(),r=t.toLowerCase();let i=0;for(;i<o.length;){const a=o.indexOf(r,i);if(a===-1)break;n.push(a),i=a+1}return n}const zi=({messages:e,onClose:t,onHighlight:n})=>{const[o,r]=w.useState(""),[i,a]=w.useState(0),l=w.useRef(null);w.useEffect(()=>{var S;(S=l.current)==null||S.focus()},[]);const c=w.useMemo(()=>{if(!o.trim())return[];const S=[];for(const I of e){const g=Bi(I),h=Wi(g,o);h.length>0&&S.push({messageId:I.id,matchPositions:h,text:g})}return S},[e,o]),u=w.useMemo(()=>c.reduce((S,I)=>S+I.matchPositions.length,0),[c]),p=w.useMemo(()=>{if(c.length===0||u===0)return null;let S=0;for(const I of c){if(i<S+I.matchPositions.length){const g=i-S;return{messageId:I.messageId,matchIndex:g,position:I.matchPositions[g],text:I.text}}S+=I.matchPositions.length}return{messageId:c[0].messageId,matchIndex:0,position:c[0].matchPositions[0],text:c[0].text}},[c,i,u]),x=w.useCallback(()=>{if(u===0)return;const S=i>0?i-1:u-1;a(S)},[i,u]),f=w.useCallback(()=>{if(u===0)return;const S=i<u-1?i+1:0;a(S)},[i,u]);w.useEffect(()=>{p&&n(p.messageId,p.matchIndex)},[p,n]);const v=w.useCallback(S=>{S.key==="Escape"?t():S.key==="Enter"?S.shiftKey?x():f():S.key==="ArrowUp"?x():S.key==="ArrowDown"&&f()},[t,x,f]);return s.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 bg-surface-secondary border-b border-edge",children:[s.jsx(Li,{size:14,className:"text-content-tertiary shrink-0"}),s.jsx("input",{ref:l,type:"text",value:o,onChange:S=>{r(S.target.value),a(0)},onKeyDown:v,placeholder:"搜索消息...",className:"flex-1 bg-transparent text-[13px] text-content placeholder:text-content-tertiary outline-none",spellCheck:!1}),s.jsx("div",{className:"text-[11px] text-content-tertiary shrink-0 min-w-[40px] text-right",children:o.trim()?u>0?`${i+1}/${u}`:"无匹配":""}),o.trim()&&u>0&&s.jsxs("div",{className:"flex items-center gap-0.5 shrink-0",children:[s.jsx("button",{onClick:x,className:"p-1 rounded hover:bg-surface-hover text-content-tertiary hover:text-content transition-colors",title:"上一个 (Shift+Enter / ↑)",children:s.jsx(Pi,{size:14})}),s.jsx("button",{onClick:f,className:"p-1 rounded hover:bg-surface-hover text-content-tertiary hover:text-content transition-colors",title:"下一个 (Enter / ↓)",children:s.jsx(Hi,{size:14})})]}),s.jsx("button",{onClick:t,className:"p-1 rounded hover:bg-surface-hover text-content-tertiary hover:text-content transition-colors shrink-0",title:"关闭 (Esc)",children:s.jsx(Oi,{size:14})})]})};function Dt(e){return e.toLocaleString()}function $i(e){const t=e.inputOther??0,n=e.inputCacheRead??0,o=e.inputCacheCreation??0;return t+n+o}function _i(e){return e?e>95?"var(--danger)":e>80?"var(--warning)":"var(--content-secondary)":"var(--content-tertiary)"}function Di(e){return e?e>95?"var(--danger-light)":e>80?"var(--warning-light)":"var(--surface-tertiary)":"var(--surface-tertiary)"}const Fi=()=>{const e=V(o=>o.statusInfo),t=V(o=>o.sessionStatus),n=w.useMemo(()=>{const{tokenUsage:o,contextUsage:r}=e;if(!o)return{statusText:t==="busy"?"生成中...":t==="error"?"错误":t==="stopped"?"已停止":"就绪"};const i=$i(o),a=o.output??0,l=o.inputCacheRead??0,c=o.inputCacheCreation??0;return{input:Dt(i),output:Dt(a),contextUsage:r?Math.round(r*100):void 0,contextColor:_i(r),contextBgColor:Di(r),cacheRead:l,cacheCreation:c}},[e,t]);return e.tokenUsage?s.jsxs("div",{className:"px-3 py-1.5 bg-surface-secondary border-t border-edge text-[11px] flex items-center gap-3 overflow-hidden",children:[s.jsxs("span",{className:"text-content-secondary shrink-0",children:["输入: ",s.jsx("span",{className:"text-content font-medium",children:n.input}),n.cacheRead>0&&s.jsxs("span",{className:"text-success ml-1",title:"缓存读取",children:["(+",Dt(n.cacheRead)," 缓存)"]})]}),s.jsx("span",{className:"text-edge",children:"|"}),s.jsxs("span",{className:"text-content-secondary shrink-0",children:["输出: ",s.jsx("span",{className:"text-content font-medium",children:n.output})]}),s.jsx("span",{className:"text-edge",children:"|"}),n.contextUsage!==void 0&&s.jsxs("span",{className:"px-1.5 py-0.5 rounded shrink-0",style:{background:n.contextBgColor,color:n.contextColor},children:["上下文: ",n.contextUsage,"%",n.contextUsage>80&&s.jsx("span",{className:"ml-1",children:n.contextUsage>95?"!":"⚠"})]}),t==="busy"&&s.jsxs("span",{className:"ml-auto flex items-center gap-1 text-accent shrink-0",children:[s.jsx("svg",{className:"animate-spin",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:s.jsx("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"60",strokeDashoffset:"20"})}),"生成中"]})]}):s.jsx("div",{className:"px-3 py-1.5 bg-surface-secondary border-t border-edge text-[11px] text-content-tertiary flex items-center justify-between",children:s.jsxs("span",{className:"flex items-center gap-1.5",children:[t==="busy"&&s.jsx("svg",{className:"animate-spin",width:"10",height:"10",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",children:s.jsx("circle",{cx:"12",cy:"12",r:"10",strokeDasharray:"60",strokeDashoffset:"20"})}),n.statusText]})})},Vi=({size:e=12,className:t})=>s.jsx("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",className:`transition-transform duration-200 ${t||""}`,children:s.jsx("path",{d:"M9 18l6-6-6-6"})}),Ui=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("circle",{cx:"11",cy:"11",r:"8"}),s.jsx("path",{d:"M21 21l-4.2-4.2"})]}),Gi=({size:e=14})=>s.jsxs("svg",{width:e,height:e,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("polyline",{points:"3 6 5 6 21 6"}),s.jsx("path",{d:"M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]}),Ki=[{value:"all",label:"全部"},{value:"TurnBegin",label:"TurnBegin"},{value:"TurnEnd",label:"TurnEnd"},{value:"StepBegin",label:"StepBegin"},{value:"ContentPart",label:"ContentPart"},{value:"TextPart",label:"TextPart"},{value:"ThinkPart",label:"ThinkPart"},{value:"ToolCall",label:"ToolCall"},{value:"ToolCallPart",label:"ToolCallPart"},{value:"ToolResult",label:"ToolResult"},{value:"StatusUpdate",label:"StatusUpdate"},{value:"QuestionRequest",label:"QuestionRequest"},{value:"SubagentEvent",label:"SubagentEvent"},{value:"SessionStatus",label:"SessionStatus"},{value:"ApprovalRequest",label:"ApprovalRequest"}];function Ji(e){return e.toLocaleTimeString("en-US",{hour12:!1})}function Un(e){try{return JSON.stringify(e).length}catch{return 0}}function Gn(e){return e<1024?`${e}b`:e<1024*1024?`${(e/1024).toFixed(1)}kb`:`${(e/1024/1024).toFixed(1)}mb`}const Xi=({sessionId:e})=>{var I,g;const[t,n]=w.useState([]),[o,r]=w.useState("all"),[i,a]=w.useState(""),[l,c]=w.useState(null),[u,p]=w.useState(!0),x=w.useRef(null);w.useEffect(()=>{const h=window.__wireDebugEvents||{};window.__wireDebugEvents=h;const d=b=>{const E={id:`${Date.now()}-${Math.random().toString(36).slice(2,8)}`,timestamp:Ji(new Date),type:b.type,payload:b.payload};n(T=>[...T,E])};return h[e]=d,()=>{delete h[e]}},[e]),w.useEffect(()=>{u&&x.current&&(x.current.scrollTop=x.current.scrollHeight)},[t,u]);const f=w.useMemo(()=>{let h=t;if(o!=="all"&&(h=h.filter(d=>d.type===o)),i.trim()){const d=i.toLowerCase();h=h.filter(b=>{if(b.type.toLowerCase().includes(d))return!0;try{return JSON.stringify(b.payload).toLowerCase().includes(d)}catch{return!1}})}return h},[t,o,i]),v=w.useCallback(()=>{n([]),c(null)},[]),S=w.useMemo(()=>{const h=t.length,d=t.reduce((E,T)=>E+Un(T.payload),0);let b=null;for(let E=t.length-1;E>=0;E--){const T=t[E];if(T.type==="StatusUpdate"){const W=T.payload;if(W!=null&&W.token_usage){const m=W.token_usage.inputOther??0,C=W.token_usage.inputCacheRead??0,y=W.token_usage.inputCacheCreation??0;b={input:m+C+y,output:W.token_usage.output??0};break}}}return{totalCount:h,filteredCount:f.length,totalSize:d,tokenUsage:b}},[t,f]);return s.jsxs("div",{className:"mt-2 rounded-lg border border-edge bg-surface-secondary overflow-hidden",children:[s.jsxs("div",{className:"flex items-center justify-between px-3 py-2 bg-surface-tertiary border-b border-edge",children:[s.jsx("span",{className:"text-[11px] font-medium text-content",children:"Wire Debug"}),s.jsx("div",{className:"flex items-center gap-1.5",children:s.jsx("button",{onClick:v,className:"p-1 rounded hover:bg-surface-hover text-content-tertiary hover:text-content transition-colors",title:"清除事件",children:s.jsx(Gi,{size:12})})})]}),s.jsxs("div",{className:"flex items-center gap-2 px-3 py-2 border-b border-edge",children:[s.jsx("select",{value:o,onChange:h=>r(h.target.value),className:"px-2 py-1 rounded text-[11px] bg-surface-tertiary text-content border border-edge outline-none cursor-pointer",children:Ki.map(h=>s.jsx("option",{value:h.value,children:h.label},h.value))}),s.jsxs("div",{className:"flex items-center gap-1 flex-1",children:[s.jsx(Ui,{size:12,className:"text-content-tertiary shrink-0"}),s.jsx("input",{type:"text",value:i,onChange:h=>a(h.target.value),placeholder:"搜索...",className:"flex-1 px-2 py-1 rounded text-[11px] bg-surface-tertiary text-content placeholder:text-content-tertiary outline-none border border-edge focus:border-accent",spellCheck:!1})]}),s.jsx("button",{onClick:()=>p(!u),className:`px-2 py-1 rounded text-[11px] font-medium transition-colors cursor-pointer ${u?"bg-accent-light text-accent":"bg-surface-tertiary text-content-tertiary hover:bg-surface-hover"}`,title:"自动滚动",children:"跟随"})]}),s.jsx("div",{ref:x,className:"h-[180px] overflow-y-auto px-2 py-1 space-y-0.5",style:{background:"var(--surface)"},children:f.length===0?s.jsx("div",{className:"text-[11px] text-content-tertiary text-center py-4",children:t.length===0?"等待事件...":"无匹配事件"}):f.map(h=>s.jsxs("button",{onClick:()=>c(h),className:`
|
|
37
|
+
w-full flex items-center gap-2 px-2 py-1.5 rounded text-[11px]
|
|
38
|
+
transition-colors cursor-pointer text-left
|
|
39
|
+
${(l==null?void 0:l.id)===h.id?"bg-accent-light text-accent":"bg-surface-secondary hover:bg-surface-hover text-content"}
|
|
40
|
+
`,children:[s.jsx("span",{className:"text-content-tertiary shrink-0 w-[60px]",children:h.timestamp}),s.jsx("span",{className:"font-medium shrink-0",children:h.type}),s.jsx("span",{className:"text-content-tertiary shrink-0 ml-auto",children:Gn(Un(h.payload))}),s.jsx(Vi,{size:10,className:"text-content-tertiary shrink-0"})]},h.id))}),l&&s.jsxs("div",{className:"px-3 py-2 border-t border-edge",children:[s.jsxs("div",{className:"text-[10px] text-content-tertiary mb-1",children:[l.timestamp," - ",l.type]}),s.jsx("pre",{className:"p-2 rounded text-[10px] font-mono max-h-[100px] overflow-y-auto whitespace-pre-wrap break-all",style:{background:"#1e1e2e",color:"#cdd6f4"},children:JSON.stringify({type:l.type,payload:l.payload},null,2)})]}),s.jsxs("div",{className:"flex items-center justify-between px-3 py-1.5 bg-surface-tertiary border-t border-edge text-[10px] text-content-tertiary",children:[s.jsxs("span",{children:[S.filteredCount===S.totalCount?`${S.totalCount} 事件`:`${S.filteredCount}/${S.totalCount} 事件`,"| ",Gn(S.totalSize)]}),S.tokenUsage&&s.jsxs("span",{children:["Token: ",((I=S.tokenUsage.input)==null?void 0:I.toLocaleString())||0," in / ",((g=S.tokenUsage.output)==null?void 0:g.toLocaleString())||0," out"]})]})]})},Qi=420,qi=320,Yi=520,na=()=>{const e=V(y=>y.aiPanelOpen),t=V(y=>y.aiStatus),n=V(y=>y.setAIStatus),o=V(y=>y.setAISessions),r=V(y=>y.setActiveSession),i=V(y=>y.setAIMessages),a=V(y=>y.setConnected);V(y=>y.setStreaming);const l=V(y=>y.setAIPanelWidth);V(y=>y.setStatusInfo),V(y=>y.setSessionStatus);const c=V(y=>y.aiMessages),u=kt(y=>y.config),p=kt(y=>y.projects),x=V(y=>y.activeSessionId),[f,v]=w.useState(!1),[S,I]=w.useState(null),g=u==null?void 0:u.lastOpenedProject,h=p.find(y=>y.id===g),{width:d,dragHandleProps:b,isDragging:E}=Go({minWidth:qi,maxWidth:Yi,initialWidth:Qi,onResize:l});w.useEffect(()=>{if(!e)return;let y=!1;async function A(){var L;try{console.log("[AIPanel] Init started");const[B,R]=await Promise.all([Pe.getStatus(),g&&h?Pe.listSessions(g):Promise.resolve([])]);if(y||(n(B),console.log(`[AIPanel] AI status: available=${B.available}, version=${B.version}`),!B.available))return;if(o(R),console.log(`[AIPanel] Found ${R.length} sessions for project ${g}`),R.length>0){const N=R[R.length-1];console.log(`[AIPanel] Selecting latest session: ${N.id}`),r(N.id);const H=await Pe.getSessionDetail(N.id);if(y)return;i(H.messages),console.log(`[AIPanel] Session detail loaded: ${((L=H.messages)==null?void 0:L.length)||0} messages`)}else if(g&&h){console.log("[AIPanel] No sessions found, creating new one...");const N=await Pe.createSession(g,h.path);if(y)return;console.log(`[AIPanel] New session created: ${N.id}`),r(N.id),i([]),o([{id:N.id,projectId:g,projectPath:h.path,title:"新对话",status:"active",createdAt:Date.now(),updatedAt:Date.now()}])}console.log("[AIPanel] Init completed")}catch(B){console.error("[AIPanel] Init failed:",B)}}return A(),()=>{y=!0}},[e]),w.useEffect(()=>{if(!e||!x)return;console.log(`[AIPanel] Setting up WebSocket for session ${x}`),a(!1);let y={},A=0;const L={onEvent:B=>{var K,ue,Se,ve;const R=V.getState(),N=R.activeSessionId,H=B.payload;console.log(`[AIPanel] WS onEvent: type=${B.type}`);const X=window.__wireDebugEvents||{};switch(X[x]&&X[x](B),B.type){case"TurnBegin":y={},R.setStreaming(!0),R.setSessionStatus("busy");break;case"StepBegin":y={};break;case"ContentPart":{const O=H==null?void 0:H.type;if(O==="text"){const ee=y.text;if(ee)R.appendToMessage(ee,"text",H.text||"");else{const le=`ai-text-${Date.now()}-${++A}`;R.addMessage({id:le,sessionId:N,role:"assistant",type:"text",content:{text:H.text||""},timestamp:Date.now()}),y.text=le}}else if(O==="think"){const ee=y.think;if(ee)R.appendToMessage(ee,"think",H.think||"");else{const le=`ai-think-${Date.now()}-${++A}`;R.addMessage({id:le,sessionId:N,role:"assistant",type:"think",content:{think:H.think||""},timestamp:Date.now()}),y.think=le}}break}case"TextPart":{const O=y.text;if(O)R.appendToMessage(O,"text",H.text||"");else{const ee=`ai-text-${Date.now()}-${++A}`;R.addMessage({id:ee,sessionId:N,role:"assistant",type:"text",content:{text:H.text||""},timestamp:Date.now()}),y.text=ee}break}case"ThinkPart":{const O=y.think;if(O)R.appendToMessage(O,"think",H.think||"");else{const ee=`ai-think-${Date.now()}-${++A}`;R.addMessage({id:ee,sessionId:N,role:"assistant",type:"think",content:{think:H.think||""},timestamp:Date.now()}),y.think=ee}break}case"ToolCall":R.addMessage({id:`ai-tool-${Date.now()}`,sessionId:N,role:"assistant",type:"tool_call",content:{toolCallId:H.id||"",functionName:((K=H.function)==null?void 0:K.name)||"",arguments:((ue=H.function)==null?void 0:ue.arguments)||""},timestamp:Date.now()});break;case"ToolCallPart":{const O=H.tool_call_id,ee=H.arguments_part;O&&ee&&R.appendToToolCallArgs(O,ee);break}case"ToolResult":R.addMessage({id:`ai-result-${Date.now()}`,sessionId:N,role:"assistant",type:"tool_result",content:{toolCallId:H.tool_call_id||"",isError:((Se=H.return_value)==null?void 0:Se.is_error)||!1,output:((ve=H.return_value)==null?void 0:ve.output)||""},timestamp:Date.now()});break;case"StatusUpdate":{const O=H;if(O.token_usage){const ee={inputOther:O.token_usage.inputOther??0,output:O.token_usage.output??0,inputCacheRead:O.token_usage.inputCacheRead??0,inputCacheCreation:O.token_usage.inputCacheCreation??0};R.setStatusInfo({tokenUsage:ee,contextUsage:O.context_usage})}else R.setStatusInfo({contextUsage:O.context_usage});break}case"QuestionRequest":{const O=H;R.addMessage({id:`ai-question-${Date.now()}`,sessionId:N,role:"assistant",type:"question",content:{questionId:O.id,questions:O.questions},timestamp:Date.now()});break}case"SessionStatus":{const O=H;R.setSessionStatus(O.state),(O.state==="idle"||O.state==="stopped")&&R.setStreaming(!1);break}case"SubagentEvent":{const O=H;if(O!=null&&O.parent_tool_call_id&&(O!=null&&O.agent_id)&&(O!=null&&O.event)){const ee={type:"SubagentEvent",payload:{parent_tool_call_id:O.parent_tool_call_id,agent_id:O.agent_id,subagent_type:O.subagent_type||"agent",event:O.event}};R.addSubagentEvent(O.parent_tool_call_id,O.agent_id,O.subagent_type||"agent",ee),O.event.type==="TurnEnd"&&R.updateSubagentStatus(O.parent_tool_call_id,O.agent_id,"completed")}break}case"TurnEnd":R.setStreaming(!1),R.setSessionStatus("idle");break}},onRequest:B=>{const R=V.getState(),N=B.payload;N!=null&&N.action&&(N!=null&&N.tool_call_id)&&R.addMessage({id:`ai-approval-${Date.now()}`,sessionId:R.activeSessionId,role:"assistant",type:"approval",content:{requestId:N.id||B.id,toolCallId:N.tool_call_id||"",action:N.action||"",description:N.description||"",display:N.display||[],responded:!1},timestamp:Date.now()})},onError:B=>{console.error("[AIPanel] WS onError:",B),V.getState().setConnected(!1),V.getState().setSessionStatus("error")},onClose:B=>{console.log("[AIPanel] WS onClose:",B),V.getState().setConnected(!1),V.getState().setStreaming(!1),V.getState().setSessionStatus("stopped")},onConnect:()=>{console.log("[AIPanel] WS onConnect - connection established"),V.getState().setConnected(!0),V.getState().setSessionStatus("idle")}};return We.connect(x,L),()=>{We.disconnect(),a(!1)}},[e,x]),w.useEffect(()=>{e||(We.disconnect(),v(!1),I(null))},[e]),w.useEffect(()=>{if(!e)return;const y=A=>{(A.ctrlKey||A.metaKey)&&A.key==="f"&&(A.preventDefault(),v(!0)),A.key==="Escape"&&f&&(v(!1),I(null))};return window.addEventListener("keydown",y),()=>window.removeEventListener("keydown",y)},[e,f]);const T=w.useCallback((y,A)=>{I(y)},[]),W=w.useCallback(()=>{v(!1),I(null)},[]),m=(t==null?void 0:t.wireDebug)??!1;if(!e)return null;const C=(t==null?void 0:t.available)!==!1;return s.jsxs("div",{className:"relative h-full shrink-0 flex flex-col border-l border-edge bg-surface animate-slide-in-right",style:{width:`${d}px`,userSelect:E?"none":"auto"},children:[s.jsx("div",{...b,className:"absolute left-0 top-0 bottom-0 w-1.5 cursor-col-resize z-10 hover:bg-accent/30 active:bg-accent/50 transition-colors duration-150"}),C?s.jsxs(s.Fragment,{children:[s.jsx(Zo,{}),f&&s.jsx(zi,{messages:c,onClose:W,onHighlight:T}),(u==null?void 0:u.yolo)&&s.jsxs("div",{className:"flex items-center gap-1.5 px-3 py-1.5 text-[11px] font-medium",style:{background:"var(--warning-light)",color:"var(--warning)"},children:[s.jsx("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})}),"YOLO 自动审批已启用"]}),s.jsx(Ni,{highlightMessageId:S}),s.jsx(Ai,{}),s.jsx(Fi,{}),m&&x&&s.jsx(Xi,{sessionId:x})]}):s.jsx(Mi,{})]})};export{na as AIPanel};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{r as i,u as C,j as e}from"./index-CqfyOQhq.js";import{m as n}from"./mermaid-CKheD1Go.js";import{c as b}from"./clipboard-DZvD3OhL.js";const w=({size:t=14})=>e.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),e.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),L=({size:t=14})=>e.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("polyline",{points:"20 6 9 17 4 12"})}),E=({size:t=14})=>e.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("polyline",{points:"15 3 21 3 21 9"}),e.jsx("polyline",{points:"9 21 3 21 3 15"}),e.jsx("line",{x1:"21",y1:"3",x2:"14",y2:"10"}),e.jsx("line",{x1:"3",y1:"21",x2:"10",y2:"14"})]});let h=!1;function x(){return document.documentElement.getAttribute("data-theme")==="dark"?"dark":"default"}const A=({chart:t})=>{const f=i.useRef(`mermaid-${Date.now()}-${Math.random().toString(36).slice(2,8)}`).current,g=i.useRef(null),[a,l]=i.useState(null),[o,c]=i.useState(""),[y,d]=i.useState(!1),[j,u]=i.useState(!1),m=C(s=>s.openMermaidViewer);i.useEffect(()=>{h||(n.initialize({startOnLoad:!1,theme:x(),securityLevel:"loose",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji"',flowchart:{useMaxWidth:!0,htmlLabels:!0,curve:"basis"},sequence:{useMaxWidth:!0,diagramMarginX:10,diagramMarginY:10},gantt:{useMaxWidth:!0}}),h=!0);let s=!1;async function k(){try{const r=f,M=x();n.initialize({startOnLoad:!1,theme:M,securityLevel:"loose",fontFamily:'system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji"',flowchart:{useMaxWidth:!0,htmlLabels:!0,curve:"basis"},sequence:{useMaxWidth:!0,diagramMarginX:10,diagramMarginY:10},gantt:{useMaxWidth:!0}});const{svg:S}=await n.render(r,t.trim());s||(c(S),l(null))}catch(r){s||(l(r instanceof Error?r.message:"Mermaid rendering failed"),c(""))}}return k(),()=>{s=!0}},[t]);const v=i.useCallback(async()=>{await b(t.trim())&&(d(!0),setTimeout(()=>d(!1),2e3))},[t]),p=i.useCallback(()=>{o&&m(o,t.trim())},[o,t,m]);return a?e.jsx("div",{className:"mermaid-error",children:a}):e.jsxs("div",{className:"mermaid-container",ref:g,onMouseEnter:()=>u(!0),onMouseLeave:()=>u(!1),style:{position:"relative"},children:[e.jsxs("div",{className:"mermaid-actions",style:{position:"absolute",top:8,right:8,display:"flex",gap:4,opacity:j?1:0,transition:"opacity 0.15s ease",zIndex:20},children:[e.jsx("button",{onClick:s=>{s.stopPropagation(),v()},className:"mermaid-action-btn",title:"复制 Mermaid 代码",children:y?e.jsx(L,{size:12}):e.jsx(w,{size:12})}),e.jsx("button",{onClick:s=>{s.stopPropagation(),p()},className:"mermaid-action-btn",title:"查看大图",children:e.jsx(E,{size:12})})]}),e.jsx("div",{onClick:p,style:{cursor:"pointer",userSelect:"none"},title:"点击查看大图",children:o&&e.jsx("div",{className:"mermaid-svg-wrapper",dangerouslySetInnerHTML:{__html:o}})})]})};export{A as default};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import{u as x,r as s,j as e}from"./index-CqfyOQhq.js";import"./mermaid-CKheD1Go.js";const S=({size:t=18})=>e.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("path",{d:"M18 6L6 18"}),e.jsx("path",{d:"M6 6l12 12"})]}),D=({size:t=16})=>e.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"11",cy:"11",r:"8"}),e.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),e.jsx("line",{x1:"11",y1:"8",x2:"11",y2:"14"}),e.jsx("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]}),I=({size:t=16})=>e.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("circle",{cx:"11",cy:"11",r:"8"}),e.jsx("line",{x1:"21",y1:"21",x2:"16.65",y2:"16.65"}),e.jsx("line",{x1:"8",y1:"11",x2:"14",y2:"11"})]}),V=({size:t=16})=>e.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"})}),Z=()=>{const t=x(n=>n.mermaidViewerOpen),r=x(n=>n.mermaidViewerData),a=x(n=>n.closeMermaidViewer),[h,i]=s.useState(1),[l,p]=s.useState(!1),[o,m]=s.useState({x:0,y:0}),[c,g]=s.useState({x:0,y:0}),b=s.useRef(null),y=s.useCallback(()=>{i(n=>Math.min(n*1.2,5))},[]),k=s.useCallback(()=>{i(n=>Math.max(n/1.2,.3))},[]),v=s.useCallback(()=>{i(1),m({x:0,y:0})},[]),w=s.useCallback(n=>{n.button===0&&(p(!0),g({x:n.clientX-o.x,y:n.clientY-o.y}))},[o]),M=s.useCallback(n=>{l&&m({x:n.clientX-c.x,y:n.clientY-c.y})},[l,c]),j=s.useCallback(()=>{p(!1)},[]),C=s.useCallback(n=>{n.preventDefault();const N=n.deltaY>0?.9:1.1;i(L=>Math.max(.3,Math.min(5,L*N)))},[]);return!t||!r?null:e.jsxs("div",{className:"fixed inset-0 z-[1000] flex flex-col animate-fade-in",style:{background:"rgba(0, 0, 0, 0.75)",backdropFilter:"blur(4px)"},onClick:a,children:[e.jsxs("div",{className:`
|
|
2
|
+
flex items-center justify-between
|
|
3
|
+
px-4 py-3
|
|
4
|
+
bg-surface-secondary border-b border-edge
|
|
5
|
+
shrink-0
|
|
6
|
+
`,onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"text-content text-[15px] font-semibold",children:"图表预览"}),e.jsxs("span",{className:"text-content-tertiary text-[13px] font-medium px-2 py-0.5 bg-surface-tertiary rounded",children:[Math.round(h*100),"%"]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsxs("div",{className:"flex items-center gap-px bg-surface-tertiary rounded-lg p-0.5",children:[e.jsx(d,{onClick:k,title:"缩小 (-)",children:e.jsx(I,{size:16})}),e.jsx(d,{onClick:v,title:"适应屏幕 (0)",children:e.jsx(V,{size:16})}),e.jsx(d,{onClick:y,title:"放大 (+)",children:e.jsx(D,{size:16})})]}),e.jsx("div",{className:"w-px h-5 bg-edge mx-1"}),e.jsx("button",{onClick:a,className:`
|
|
7
|
+
p-2 border-none rounded-lg
|
|
8
|
+
text-content-secondary cursor-pointer
|
|
9
|
+
hover:bg-surface-tertiary hover:text-content
|
|
10
|
+
transition-colors duration-150
|
|
11
|
+
`,title:"关闭 (Esc)",children:e.jsx(S,{size:18})})]})]}),e.jsx("div",{ref:b,className:`
|
|
12
|
+
flex-1 overflow-hidden
|
|
13
|
+
flex items-center justify-center
|
|
14
|
+
p-4
|
|
15
|
+
`,style:{cursor:l?"grabbing":"grab"},onMouseDown:w,onMouseMove:M,onMouseUp:j,onMouseLeave:j,onWheel:C,children:e.jsx("div",{style:{transform:`translate3d(${o.x}px, ${o.y}px, 0) scale(${h})`,willChange:"transform",transition:l?"none":"transform 0.15s cubic-bezier(0.4, 0, 0.2, 1)"},className:`
|
|
16
|
+
bg-surface-secondary rounded-xl p-3
|
|
17
|
+
max-w-[calc(100vw-32px)] max-h-[calc(100vh-120px)]
|
|
18
|
+
overflow-auto
|
|
19
|
+
`,onClick:n=>n.stopPropagation(),dangerouslySetInnerHTML:{__html:r.svg}})}),e.jsxs("div",{className:`
|
|
20
|
+
absolute bottom-5 left-1/2 -translate-x-1/2
|
|
21
|
+
px-4 py-2 rounded-full
|
|
22
|
+
bg-black/60 backdrop-blur-sm
|
|
23
|
+
text-white/90 text-[12px]
|
|
24
|
+
pointer-events-none
|
|
25
|
+
flex items-center gap-3
|
|
26
|
+
`,children:[e.jsx(u,{children:"滚轮缩放"}),e.jsx(f,{}),e.jsx(u,{children:"拖拽移动"}),e.jsx(f,{}),e.jsx(u,{children:"点击背景关闭"})]})]})},d=({onClick:t,title:r,children:a})=>e.jsx("button",{onClick:t,title:r,className:`
|
|
27
|
+
p-1.5 px-2.5 border-none rounded-md
|
|
28
|
+
bg-transparent text-content-secondary
|
|
29
|
+
cursor-pointer
|
|
30
|
+
hover:bg-surface-secondary hover:text-content
|
|
31
|
+
transition-colors duration-150
|
|
32
|
+
flex items-center justify-center
|
|
33
|
+
`,children:a}),u=({children:t})=>e.jsx("span",{className:"whitespace-nowrap",children:t}),f=()=>e.jsx("span",{className:"w-1 h-1 rounded-full bg-white/40"});export{Z as default};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/index-CqfyOQhq.js","assets/mermaid-CKheD1Go.js","assets/index-5zPgI2iS.css","assets/index-WbpvO67V.js"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{ap as H}from"./mermaid-CKheD1Go.js";import{u as v,r,e as M,j as s}from"./index-CqfyOQhq.js";import{c as P}from"./clipboard-DZvD3OhL.js";const q={ts:"typescript",tsx:"tsx",js:"javascript",jsx:"javascript",mjs:"javascript",py:"python",pyw:"python",json:"json",jsonc:"json",sh:"bash",bash:"bash",zsh:"bash",css:"css",scss:"scss",less:"less",sql:"sql",yml:"yaml",yaml:"yaml",md:"markdown",mdx:"markdown",java:"java",cpp:"cpp",cc:"cpp",cxx:"cpp",hpp:"cpp",h:"cpp",c:"c",go:"go",rs:"rust",html:"html",xml:"xml",svg:"xml",tf:"hcl",vue:"vue",svelte:"svelte",kt:"kotlin",swift:"swift",r:"r",lua:"lua",php:"php",rb:"ruby",scala:"scala",dart:"dart",el:"elisp",ex:"elixir",exs:"elixir",graphql:"graphql",gql:"graphql",dockerfile:"dockerfile",toml:"toml",ini:"ini",diff:"diff",make:"makefile"};function R(t){var l;const e=((l=t.split(".").pop())==null?void 0:l.toLowerCase())||"";return q[e]||"text"}const T=({size:t=14})=>s.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),s.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]}),A=({size:t=14})=>s.jsx("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:s.jsx("polyline",{points:"20 6 9 17 4 12"})}),F=({size:t=20})=>s.jsxs("svg",{width:t,height:t,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[s.jsx("path",{d:"M18 6L6 18"}),s.jsx("path",{d:"M6 6l12 12"})]});let f=null,y=null;async function I(){return f||y||(y=H(()=>import("./index-CqfyOQhq.js").then(t=>t.q),__vite__mapDeps([0,1,2])).then(async t=>{try{return f=await(await H(()=>import("./index-WbpvO67V.js"),__vite__mapDeps([3,1,0,2]))).createHighlighter({themes:["one-light","one-dark-pro"],langs:["typescript","javascript","python","json","bash","css","scss","sql","yaml","markdown","java","cpp","c","go","rust","tsx","html","xml","vue","jsx","dockerfile","toml","ini","diff","makefile","graphql","svelte","kotlin","swift","r","lua","php","ruby","scala","dart","elixir","hcl"]}),f}catch{return null}}),y)}const B=({code:t,language:e,isDark:l,highlightLines:n,startLineNumber:u=1})=>{const[m,p]=r.useState(null);return r.useEffect(()=>{I().then(x=>{if(!x){const h=t.split(`
|
|
3
|
+
`).map((c,d)=>{const a=u+d;return`<div class="code-line${(n==null?void 0:n.has(a))?" highlighted":""}"><span class="line-number">${a}</span><span class="line-content">${N(c)}</span></div>`}).join("");p(h);return}try{const h=x.codeToHtml(t,{lang:e||"text",theme:l?"one-dark-pro":"one-light"}),c=t.split(`
|
|
4
|
+
`),d=O(h,c,u,n,l);p(d)}catch{const h=t.split(`
|
|
5
|
+
`).map((c,d)=>{const a=u+d;return`<div class="code-line${(n==null?void 0:n.has(a))?" highlighted":""}"><span class="line-number">${a}</span><span class="line-content">${N(c)}</span></div>`}).join("");p(h)}})},[t,e,l,n,u]),m?s.jsx("div",{className:"shiki-code-viewer",dangerouslySetInnerHTML:{__html:m}}):s.jsx("div",{className:"shiki-loading",children:"加载代码..."})};function N(t){return t.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">")}function O(t,e,l,n,u){const m=u?"rgba(0, 100, 100, 0.3)":"rgba(200, 230, 200, 0.5)",p=t.match(/<code[^>]*>(.*?)<\/code>/s);return p?`<pre class="shiki-pre"><code>${p[1].split(`
|
|
6
|
+
`).map((d,a)=>{const o=l+a;return`<div class="shiki-line" style="${(n==null?void 0:n.has(o))?`background: ${m}`:""}"><span class="shiki-line-num">${o}</span><span class="shiki-line-content">${d||" "}</span></div>`}).join(`
|
|
7
|
+
`)}</code></pre>`:t}const G=()=>{const t=v(i=>i.referenceOpen),e=v(i=>i.referenceData),l=v(i=>i.closeReference),[n,u]=r.useState([]),[m,p]=r.useState(!1),[x,h]=r.useState(null),[c,d]=r.useState(!1),a=r.useRef(),o=document.documentElement.getAttribute("data-theme")==="dark",b=r.useMemo(()=>e!=null&&e.filePath?R(e.filePath):"text",[e==null?void 0:e.filePath]);r.useEffect(()=>{t&&e&&w()},[t,e]);const w=async()=>{if(e){p(!0),h(null);try{const i=await M(e.filePath,e.startLine,e.endLine);u(i.lines)}catch(i){h(i instanceof Error?i.message:"Failed to load file")}finally{p(!1)}}},S=r.useCallback(async()=>{if(n.length===0)return;const i=n.map(L=>L.content).join(`
|
|
8
|
+
`);await P(i)&&(d(!0),a.current=setTimeout(()=>d(!1),2e3))},[n]);r.useEffect(()=>()=>{a.current&&clearTimeout(a.current)},[]);const k=(e==null?void 0:e.startLine)??0,j=(e==null?void 0:e.endLine)??0,$=k>0&&j>0,_=r.useMemo(()=>{if(!$)return new Set;const i=new Set;for(let g=k;g<=j;g++)i.add(g);return i},[$,k,j]);if(!t)return null;const C=n.map(i=>i.content).join(`
|
|
9
|
+
`),E=n.length>0?n[0].lineNumber:1;return s.jsxs("div",{className:"overlay overlay-centered",onClick:l,children:[s.jsxs("div",{className:`flex flex-col overflow-hidden rounded-xl shadow-2xl ${o?"bg-[#1e1e2e]":"bg-white"}`,style:{width:"min(85vw, 720px)",maxHeight:"70vh"},onClick:i=>i.stopPropagation(),children:[s.jsxs("div",{className:`flex items-center justify-between px-5 py-4 border-b ${o?"border-[#333]":"border-gray-200"}`,children:[s.jsxs("div",{children:[s.jsx("div",{className:`text-sm font-medium ${o?"text-white":"text-gray-900"}`,children:e==null?void 0:e.filePath}),(e==null?void 0:e.startLine)&&(e==null?void 0:e.endLine)&&s.jsxs("div",{className:`text-xs mt-1 ${o?"text-gray-500":"text-gray-400"}`,children:["L",e.startLine,"-L",e.endLine]})]}),s.jsxs("div",{className:"flex items-center gap-2",children:[s.jsxs("button",{onClick:S,disabled:m||x!==null||n.length===0,className:`
|
|
10
|
+
flex items-center gap-1.5 px-3 py-1.5 rounded-md text-[13px]
|
|
11
|
+
transition-all duration-150
|
|
12
|
+
${c?"bg-success text-white border border-success":`${o?"border-[#444] text-gray-400 hover:text-gray-200":"border-gray-300 text-gray-500 hover:text-gray-700"} border`}
|
|
13
|
+
${m||x!==null||n.length===0?"opacity-50 cursor-not-allowed":"cursor-pointer"}
|
|
14
|
+
`,title:"复制内容",children:[c?s.jsx(A,{size:14}):s.jsx(T,{size:14}),c?"已复制":"复制"]}),s.jsx("button",{onClick:l,className:`p-1.5 rounded-md cursor-pointer ${o?"text-gray-500 hover:text-gray-300":"text-gray-400 hover:text-gray-600"}`,title:"关闭",children:s.jsx(F,{size:20})})]})]}),s.jsx("div",{className:"flex-1 overflow-auto",children:m?s.jsx("div",{className:`text-center py-10 ${o?"text-gray-500":"text-gray-400"}`,children:"加载中..."}):x?s.jsx("div",{className:`text-center py-10 ${o?"text-red-400":"text-red-500"}`,children:x}):C?s.jsx(B,{code:C,language:b,isDark:o,highlightLines:_,startLineNumber:E}):null})]}),s.jsx("style",{children:`
|
|
15
|
+
.shiki-loading {
|
|
16
|
+
padding: 20px;
|
|
17
|
+
text-align: center;
|
|
18
|
+
color: ${o?"#888":"#666"};
|
|
19
|
+
}
|
|
20
|
+
.shiki-code-viewer {
|
|
21
|
+
font-family: 'JetBrains Mono', 'Fira Code', 'SF Mono', monospace;
|
|
22
|
+
font-size: 13px;
|
|
23
|
+
line-height: 1.6;
|
|
24
|
+
}
|
|
25
|
+
.shiki-pre {
|
|
26
|
+
margin: 0;
|
|
27
|
+
padding: 16px 20px;
|
|
28
|
+
background: ${o?"#1e1e2e":"#fafafa"};
|
|
29
|
+
}
|
|
30
|
+
.shiki-pre code {
|
|
31
|
+
display: block;
|
|
32
|
+
}
|
|
33
|
+
.shiki-line {
|
|
34
|
+
display: flex;
|
|
35
|
+
min-height: 1.6em;
|
|
36
|
+
}
|
|
37
|
+
.shiki-line.highlighted {
|
|
38
|
+
background: ${o?"rgba(0, 100, 100, 0.3)":"rgba(200, 230, 200, 0.5)"};
|
|
39
|
+
}
|
|
40
|
+
.shiki-line-num {
|
|
41
|
+
display: inline-block;
|
|
42
|
+
min-width: 3.5em;
|
|
43
|
+
padding-right: 1.5em;
|
|
44
|
+
color: ${o?"#555":"#bbb"};
|
|
45
|
+
text-align: right;
|
|
46
|
+
user-select: none;
|
|
47
|
+
opacity: 0.6;
|
|
48
|
+
}
|
|
49
|
+
.shiki-line-content {
|
|
50
|
+
flex: 1;
|
|
51
|
+
}
|
|
52
|
+
`})]})};export{G as default};
|