zen-gitsync 2.19.8 → 2.19.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +3 -1
- package/src/ui/public/assets/AgentView-BRSZKJfA.css +1 -0
- package/src/ui/public/assets/AgentView-CR5usdnH.js +46 -0
- package/src/ui/public/assets/AppVersionBadge-BHHCcK4D.js +2 -0
- package/src/ui/public/assets/{AppVersionBadge-Ct7s9klu.css → AppVersionBadge-BX4JDHtP.css} +1 -1
- package/src/ui/public/assets/BranchSelector-CXCOcQdJ.js +4 -0
- package/src/ui/public/assets/BranchSelector-F4ibldMN.css +1 -0
- package/src/ui/public/assets/CommitForm-CZmDbdjy.css +1 -0
- package/src/ui/public/assets/CommitForm-DgU5ceFS.js +19 -0
- package/src/ui/public/assets/CommonDialog-BK-EP7t_.js +1 -0
- package/src/ui/public/assets/CommonDialog-w6EmBEXv.css +1 -0
- package/src/ui/public/assets/EditorView-5E2HoEPA.js +11 -0
- package/src/ui/public/assets/EditorView-DCe3Zd1T.css +1 -0
- package/src/ui/public/assets/FlowExecutionViewer-X1ZAwtUs.js +1 -0
- package/src/ui/public/assets/FlowExecutionViewer-jNHI5zdm.css +1 -0
- package/src/ui/public/assets/FlowOrchestrationWorkspace-BuDFxeDm.js +21 -0
- package/src/ui/public/assets/{FlowOrchestrationWorkspace-y58xFQli.css → FlowOrchestrationWorkspace-Cmz-2kXx.css} +1 -1
- package/src/ui/public/assets/IconButton-Ca_axHSP.css +1 -0
- package/src/ui/public/assets/IconButton-rWXbHMlj.js +1 -0
- package/src/ui/public/assets/LogList-2uilXsDH.js +7 -0
- package/src/ui/public/assets/LogList-mx0vNycQ.css +1 -0
- package/src/ui/public/assets/MindmapView-BCC9REDW.css +1 -0
- package/src/ui/public/assets/MindmapView-Dc70h590.js +2 -0
- package/src/ui/public/assets/MonacoDiffViewer-DmY_9w3f.js +2 -0
- package/src/ui/public/assets/MonacoDiffViewer-OeHzOcJT.css +1 -0
- package/src/ui/public/assets/MonacoEditor-B51BvXN7.js +2 -0
- package/src/ui/public/assets/MonacoEditor-Bfmsc0eP.css +1 -0
- package/src/ui/public/assets/MonitorView-1wNAygfd.js +3 -0
- package/src/ui/public/assets/{MonitorView-GIgcNrpD.css → MonitorView-B55J58oZ.css} +1 -1
- package/src/ui/public/assets/ProjectManagerView-BDMDqu3Q.js +10 -0
- package/src/ui/public/assets/ProjectManagerView-BPnAWNBJ.css +1 -0
- package/src/ui/public/assets/ProjectStartupButton-D1vkpfo0.js +1 -0
- package/src/ui/public/assets/ProjectStartupButton-pw0T64va.css +1 -0
- package/src/ui/public/assets/RemoteManagerDialog-7wO9c5YX.js +4 -0
- package/src/ui/public/assets/RemoteManagerDialog-CR_UOc7g.css +1 -0
- package/src/ui/public/assets/RemoteRepoCard-46FT5fIA.js +7 -0
- package/src/ui/public/assets/RemoteRepoCard-o01IrbVz.css +1 -0
- package/src/ui/public/assets/SourceMapView-BTBl_dQF.js +16 -0
- package/src/ui/public/assets/SourceMapView-BYzPczgV.css +1 -0
- package/src/ui/public/assets/{SvgIcon-BQ6bR7l0.css → SvgIcon-CDNsk4-Q.css} +1 -1
- package/src/ui/public/assets/SvgIcon-CdV2Vf7y.js +1 -0
- package/src/ui/public/assets/{TemplateManager-Dn5A-o9I.css → TemplateManager-DtDpRU-r.css} +1 -1
- package/src/ui/public/assets/TemplateManager-Xw10gkAg.js +1 -0
- package/src/ui/public/assets/UserInputNode-BtDF3aoX.js +1 -0
- package/src/ui/public/assets/UserInputNode-CaYsfbJq.css +1 -0
- package/src/ui/public/assets/WorkbenchView-DKm1nASZ.css +1 -0
- package/src/ui/public/assets/WorkbenchView-DP7JxjQs.js +397 -0
- package/src/ui/public/assets/_plugin-vue_export-helper-iXNJ6JSE.js +1 -0
- package/src/ui/public/assets/{abnfDiagram-VCTEODGH-ChA5oDs2.js → abnfDiagram-VCTEODGH-9BmTgIB0.js} +1 -1
- package/src/ui/public/assets/architecture-7GRP2DOG-DlkuS1af.js +1 -0
- package/src/ui/public/assets/{architectureDiagram-5GKGNRK7-62mYFGCE.js → architectureDiagram-5GKGNRK7-M_VCUB78.js} +1 -1
- package/src/ui/public/assets/{blockDiagram-I7D4REHJ-wLpwzhBJ.js → blockDiagram-I7D4REHJ-Djm1wJGG.js} +1 -1
- package/src/ui/public/assets/{c4Diagram-7LVT6UL2-XZx8JHL8.js → c4Diagram-7LVT6UL2-CuX13vZ-.js} +1 -1
- package/src/ui/public/assets/channel-vbR9N9U-.js +1 -0
- package/src/ui/public/assets/checkbox-B7YbNGuH.js +1 -0
- package/src/ui/public/assets/{chunk-4HAMMTFA-CFFbJkK0.js → chunk-4HAMMTFA-DAZqGrza.js} +1 -1
- package/src/ui/public/assets/{chunk-75Z2AOVW-DQtYeQr5.js → chunk-75Z2AOVW-_W5tuIwa.js} +1 -1
- package/src/ui/public/assets/{chunk-DU6HZSFF-2F8cLTjH.js → chunk-DU6HZSFF-yMMoBTo7.js} +1 -1
- package/src/ui/public/assets/{chunk-F27PBJKO-Bo076A-I.js → chunk-F27PBJKO-D3tdEy9d.js} +1 -1
- package/src/ui/public/assets/{chunk-GMAD6QVW-FuFwI_Oi.js → chunk-GMAD6QVW-Due4bpzp.js} +1 -1
- package/src/ui/public/assets/{chunk-GVQU2GXP-CV8ZMXP4.js → chunk-GVQU2GXP-BBBf3tdJ.js} +1 -1
- package/src/ui/public/assets/{chunk-IMKFNOWR-kx_YRlPF.js → chunk-IMKFNOWR-BdNGOHkD.js} +1 -1
- package/src/ui/public/assets/{chunk-L3NEJ4N5-C8tgpiPP.js → chunk-L3NEJ4N5-ATCHpAfZ.js} +1 -1
- package/src/ui/public/assets/{chunk-OSK3NFVY-C6c3NtM_.js → chunk-OSK3NFVY-BH7eo5Tf.js} +1 -1
- package/src/ui/public/assets/{chunk-P2QGCYS3-B80r0Q9v.js → chunk-P2QGCYS3-DTr4IL_e.js} +1 -1
- package/src/ui/public/assets/{chunk-POPQ4Y6H-Do7M9MiP.js → chunk-POPQ4Y6H-BaV7NNDh.js} +1 -1
- package/src/ui/public/assets/{chunk-PWAF6VOD-CSbxmz13.js → chunk-PWAF6VOD-D3SA0mzG.js} +1 -1
- package/src/ui/public/assets/{chunk-SHT3W25Y-CcjtRGjI.js → chunk-SHT3W25Y-B0R4yLS8.js} +1 -1
- package/src/ui/public/assets/{chunk-SVP7TREG-Di_ciK9x.js → chunk-SVP7TREG-DIMcJWWD.js} +1 -1
- package/src/ui/public/assets/{chunk-TICWLB2K-0CfG2yxE.js → chunk-TICWLB2K-HdKmxWOg.js} +1 -1
- package/src/ui/public/assets/classDiagram-ZZMXUADV-D3NlOWpc.js +1 -0
- package/src/ui/public/assets/classDiagram-v2-VYDZK3BY-D3NlOWpc.js +1 -0
- package/src/ui/public/assets/{configStore-DzSV1BYm.js → configStore-Bu9Y7yi8.js} +2 -2
- package/src/ui/public/assets/css-B0yAvfNS.js +1 -0
- package/src/ui/public/assets/{css-DqcEMNnr.js → css-BNFbzzrw.js} +11 -8
- package/src/ui/public/assets/css-COonD8vo.js +5 -0
- package/src/ui/public/assets/css-CeOw7pBa.js +1 -0
- package/src/ui/public/assets/css-DHMJKOSk.js +1 -0
- package/src/ui/public/assets/css-DUZNM4Y2.js +1 -0
- package/src/ui/public/assets/css-DUozUjEY.js +1 -0
- package/src/ui/public/assets/{css-B6iB_IBc.js → css-DY0EjKnI.js} +1 -1
- package/src/ui/public/assets/css-DuOCaNNA.js +1 -0
- package/src/ui/public/assets/css-Dv_BkLAU.js +1 -0
- package/src/ui/public/assets/css-LiAyzznX.js +1 -0
- package/src/ui/public/assets/css-ltJ3T38X.js +1 -0
- package/src/ui/public/assets/css-zjLlfHGW.js +1 -0
- package/src/ui/public/assets/{cssMode-DjTbS4Wq.js → cssMode-hbRIlUMk.js} +1 -1
- package/src/ui/public/assets/{cynefin-OW5HDTMX-B7yxXktH.js → cynefin-OW5HDTMX-t2yRwCcY.js} +1 -1
- package/src/ui/public/assets/{cynefinDiagram-5FMLGOSQ-CmnybSAP.js → cynefinDiagram-5FMLGOSQ-C2e7HWCJ.js} +1 -1
- package/src/ui/public/assets/{dagre-GXQ25YYZ-CoXdn31O.js → dagre-GXQ25YYZ-C9a9pURj.js} +1 -1
- package/src/ui/public/assets/{diagram-S7CK7UJ4-Dn_nD9gA.js → diagram-S7CK7UJ4-Cm-RU4j0.js} +1 -1
- package/src/ui/public/assets/{diagram-UQ7AKVKN-BIi5ZTzR.js → diagram-UQ7AKVKN-DWRHvZqO.js} +1 -1
- package/src/ui/public/assets/{diagram-VSXAHHWV-B6VAL5Zj.js → diagram-VSXAHHWV-DHPokpBs.js} +1 -1
- package/src/ui/public/assets/{diagram-VX7I27RA-isKTV1kf.js → diagram-VX7I27RA-CwF3R0ac.js} +1 -1
- package/src/ui/public/assets/{diagram-Z3DM3KII-CCMf2rm-.js → diagram-Z3DM3KII-DIVaf_QG.js} +1 -1
- package/src/ui/public/assets/{dropdown-BavttwJK.js → dropdown-CtU-luuS.js} +1 -1
- package/src/ui/public/assets/{ebnfDiagram-PWID7BFC-BsbZk3o3.js → ebnfDiagram-PWID7BFC-Du4bymdU.js} +1 -1
- package/src/ui/public/assets/{editor.main-CdUvhqnN.js → editor.main-CMmnTvm1.js} +2 -2
- package/src/ui/public/assets/empty-BsRc9htE.js +1 -0
- package/src/ui/public/assets/{erDiagram-RLTQ6QDP-BJhHfI6b.js → erDiagram-RLTQ6QDP-Bgccqyp8.js} +1 -1
- package/src/ui/public/assets/eventmodeling-NTZA5JFV-BojrOVAZ.js +1 -0
- package/src/ui/public/assets/file-picker-Gn9LzhB0.js +1 -0
- package/src/ui/public/assets/flowDiagram-HODETNUW-C5_mSTs9.js +1 -0
- package/src/ui/public/assets/{ganttDiagram-EL5Y4UJY-z_PhL7PF.js → ganttDiagram-EL5Y4UJY-B1jLr_ff.js} +1 -1
- package/src/ui/public/assets/{gitGraph-4MIJSDKK-C-8-T-QE.js → gitGraph-4MIJSDKK-CEtzqNOb.js} +1 -1
- package/src/ui/public/assets/{gitGraphDiagram-WWUBYQGX-neC7vfjM.js → gitGraphDiagram-WWUBYQGX-DYxRWDG1.js} +1 -1
- package/src/ui/public/assets/{htmlMode-CORVBMgh.js → htmlMode-Ci1PugwK.js} +1 -1
- package/src/ui/public/assets/{index-AOD6hKOd.css → index-BJM2x7X4.css} +1 -1
- package/src/ui/public/assets/index-C1m5EhFo.js +399 -0
- package/src/ui/public/assets/{info-A6RAGUB7-oSUydmXL.js → info-A6RAGUB7-B2CPEMrg.js} +1 -1
- package/src/ui/public/assets/{infoDiagram-27XIBGKW-CHh9KJ6J.js → infoDiagram-27XIBGKW-DcBDWrbC.js} +1 -1
- package/src/ui/public/assets/{ishikawaDiagram-5VMMS53U-a3TkIBT6.js → ishikawaDiagram-5VMMS53U-BcrzKNax.js} +1 -1
- package/src/ui/public/assets/{journeyDiagram-3NMN7TZE-B_yxlGTt.js → journeyDiagram-3NMN7TZE-DB6vqC8g.js} +1 -1
- package/src/ui/public/assets/{jsonMode-5N-oul1n.js → jsonMode-gqPTLeA3.js} +1 -1
- package/src/ui/public/assets/{kanban-definition-UXKFOSKX-C_JW8O7H.js → kanban-definition-UXKFOSKX-CV70bZlu.js} +1 -1
- package/src/ui/public/assets/{lib-DqOQiVl9.js → lib-C043e2hc.js} +1 -1
- package/src/ui/public/assets/lib-CQSScEg5.js +10 -0
- package/src/ui/public/assets/{lib-CpAs2Wj-.js → lib-DvKbuLjs.js} +1 -1
- package/src/ui/public/assets/lib-aDQlNW-L.js +74 -0
- package/src/ui/public/assets/{line-B1cJ2uj_.js → line-12OdRdcE.js} +1 -1
- package/src/ui/public/assets/{mermaid-parser.core-qyaZuPY1.js → mermaid-parser.core-C3pC5XqX.js} +3 -3
- package/src/ui/public/assets/{mermaid.core-BnwRGK85.js → mermaid.core-DT2IMBeS.js} +4 -4
- package/src/ui/public/assets/message-box-CXom4_oM.js +1 -0
- package/src/ui/public/assets/{mindmap-definition-YA3MSWOX-CedMhfH_.js → mindmap-definition-YA3MSWOX-Bz7FDKXU.js} +1 -1
- package/src/ui/public/assets/overlay-BLdJhxTh.js +3 -0
- package/src/ui/public/assets/{packet-AYTQ26CC-BY3WwKkj.js → packet-AYTQ26CC-Bb_El6Ek.js} +1 -1
- package/src/ui/public/assets/{pegDiagram-XKGWAZYB-BIUio9w_.js → pegDiagram-XKGWAZYB-_UGvHWjY.js} +1 -1
- package/src/ui/public/assets/{pie-WAS4IAKB-DBmbJ4Ci.js → pie-WAS4IAKB-CEyQz8oV.js} +1 -1
- package/src/ui/public/assets/{pieDiagram-E7YTZNPT-DlWPQ8tP.js → pieDiagram-E7YTZNPT-Cp0hcHv1.js} +1 -1
- package/src/ui/public/assets/pinia-B1dVyVSb.js +5 -0
- package/src/ui/public/assets/{quadrantDiagram-AXDQQJYC-DtkxMT2U.js → quadrantDiagram-AXDQQJYC-D3P8RRGn.js} +1 -1
- package/src/ui/public/assets/{radar-RG4KPBEZ-BLAgIhup.js → radar-RG4KPBEZ-Ct7UV-yn.js} +1 -1
- package/src/ui/public/assets/{railroad-74A4TZTK-BkwLxF0x.js → railroad-74A4TZTK-BG1IrPR6.js} +1 -1
- package/src/ui/public/assets/railroad-abnf-HS5TGJTU-CRhndnlq.js +1 -0
- package/src/ui/public/assets/railroad-ebnf-LZEXJU2U-CkTh9H6T.js +1 -0
- package/src/ui/public/assets/railroad-peg-WCYAUIDC-DgqvJCaH.js +1 -0
- package/src/ui/public/assets/{railroadDiagram-O6MQD6OU-BtCF9aCR.js → railroadDiagram-O6MQD6OU-DKQlif8Z.js} +1 -1
- package/src/ui/public/assets/{relativeTime-B8664fn0.js → relativeTime-D99DdDf4.js} +1 -1
- package/src/ui/public/assets/{repeat-click-BIbf_jnH.js → repeat-click-B7DOHmvB.js} +1 -1
- package/src/ui/public/assets/{requirementDiagram-BXWQKSXE-h7P36yGJ.js → requirementDiagram-BXWQKSXE-Rd_wG9uK.js} +1 -1
- package/src/ui/public/assets/runtime-dom.esm-bundler-BicOLibD.js +25 -0
- package/src/ui/public/assets/{sankeyDiagram-P5KCCOFB-tOr_1xic.js → sankeyDiagram-P5KCCOFB-BLL_Ya-r.js} +1 -1
- package/src/ui/public/assets/scrollbar-BFArGC-B.js +1 -0
- package/src/ui/public/assets/select-B1mzQ7WN.js +1 -0
- package/src/ui/public/assets/{sequenceDiagram-WJ2MYXX4-BfQLLi3B.js → sequenceDiagram-WJ2MYXX4-CnEAZGeL.js} +1 -1
- package/src/ui/public/assets/{stateDiagram-D77RDMKH-BBSAJdXV.js → stateDiagram-D77RDMKH-ButJt2r0.js} +1 -1
- package/src/ui/public/assets/stateDiagram-v2-MP3YSRHH-DfWAkCkk.js +1 -0
- package/src/ui/public/assets/{swimlanes-42K2YHIH-DNgBV8QY.js → swimlanes-42K2YHIH-CkJuu_tI.js} +1 -1
- package/src/ui/public/assets/swimlanesDiagram-VR7AAH4N-BnHmf8d6.js +8 -0
- package/src/ui/public/assets/table-DydILIY8.js +1 -0
- package/src/ui/public/assets/tag-B4v4gfl_.js +1 -0
- package/src/ui/public/assets/{taskExecutionExport-CkmJ2TPt.js → taskExecutionExport-CfnqRWvh.js} +12 -12
- package/src/ui/public/assets/{taskExecutionExport-BW-iMfDj.css → taskExecutionExport-Ct3WPeis.css} +1 -1
- package/src/ui/public/assets/{timeline-definition-24CTP7MA-cg7CFdnn.js → timeline-definition-24CTP7MA-K3R4Ikor.js} +1 -1
- package/src/ui/public/assets/{toolsStore-AtvXNDnx.js → toolsStore-BTA83WTy.js} +1 -1
- package/src/ui/public/assets/{treeView-Q6P3EWNA-B9UM19dT.js → treeView-Q6P3EWNA-C29hh9uK.js} +1 -1
- package/src/ui/public/assets/{treemap-WGGIJYW6-d4-stV9I.js → treemap-WGGIJYW6-CHDwdfMX.js} +1 -1
- package/src/ui/public/assets/{tsMode-DtEE5Q2d.js → tsMode-Cy0CWBnf.js} +1 -1
- package/src/ui/public/assets/useWorkbenchProjects-9dWumVO1.css +1 -0
- package/src/ui/public/assets/useWorkbenchProjects-C14Jw1yS.js +9 -0
- package/src/ui/public/assets/{vennDiagram-4TSXK5OY-C6UZLLEC.js → vennDiagram-4TSXK5OY-BSCgY5MN.js} +1 -1
- package/src/ui/public/assets/vue-flow-controls-zeko7WMo.js +26 -0
- package/src/ui/public/assets/{wardley-WFR3VGLG-CPJl3V1e.js → wardley-WFR3VGLG-CsM9MTWy.js} +1 -1
- package/src/ui/public/assets/{wardleyDiagram-VM6X3IG4-BCT1k7hd.js → wardleyDiagram-VM6X3IG4-HBJSanUr.js} +1 -1
- package/src/ui/public/assets/{xychartDiagram-S5SC5T6Z-B_7qu4Hj.js → xychartDiagram-S5SC5T6Z-CT-wpDt-.js} +1 -1
- package/src/ui/public/index.html +38 -38
- package/src/ui/server/routes/workbench/index.js +97 -1
- package/src/ui/server/routes/workbench/projectRegistry.js +34 -7
- package/src/ui/server/routes/workbench/replyTriage.js +381 -0
- package/src/ui/server/routes/workbench/shared.js +12 -0
- package/src/ui/server/routes/workbench/taskRunner.js +9 -6
- package/src/ui/public/assets/AgentView-CrW73qMr.js +0 -15
- package/src/ui/public/assets/AgentView-D5MiIZuz.css +0 -1
- package/src/ui/public/assets/AppVersionBadge-B3bjwS49.js +0 -2
- package/src/ui/public/assets/BranchSelector-B4jxlVma.js +0 -1
- package/src/ui/public/assets/BranchSelector-BHbCgJEE.css +0 -1
- package/src/ui/public/assets/CommitForm-CydgbA2C.css +0 -1
- package/src/ui/public/assets/CommitForm-nML0Hd7l.js +0 -2
- package/src/ui/public/assets/CommonDialog-Bzi5ISqT.css +0 -1
- package/src/ui/public/assets/CommonDialog-Xczdxiq2.js +0 -1
- package/src/ui/public/assets/EditorView-BXFaXYHN.css +0 -1
- package/src/ui/public/assets/EditorView-DzsMTIKX.js +0 -1
- package/src/ui/public/assets/FlowExecutionViewer-B5kh7VxS.css +0 -1
- package/src/ui/public/assets/FlowExecutionViewer-DXJpoonX.js +0 -1
- package/src/ui/public/assets/FlowOrchestrationWorkspace-DDTd023p.js +0 -21
- package/src/ui/public/assets/IconButton-CTVZizUz.js +0 -1
- package/src/ui/public/assets/IconButton-DmetnIEM.css +0 -1
- package/src/ui/public/assets/LogList-CdbfO-Vy.js +0 -7
- package/src/ui/public/assets/LogList-DViWAYe9.css +0 -1
- package/src/ui/public/assets/MindmapView-CohUDqAD.css +0 -1
- package/src/ui/public/assets/MindmapView-D1pNx2gE.js +0 -1
- package/src/ui/public/assets/MonacoDiffViewer-CJkqe7R6.css +0 -1
- package/src/ui/public/assets/MonacoDiffViewer-DOAyDjNA.js +0 -2
- package/src/ui/public/assets/MonacoEditor-BXELa4Z1.css +0 -1
- package/src/ui/public/assets/MonacoEditor-DF9Sx8uD.js +0 -2
- package/src/ui/public/assets/MonitorView-DvSXxpuz.js +0 -1
- package/src/ui/public/assets/ProjectManagerView-BFTSvt7X.css +0 -1
- package/src/ui/public/assets/ProjectManagerView-Bv15QOWG.js +0 -1
- package/src/ui/public/assets/ProjectStartupButton-BZYOKfYI.js +0 -1
- package/src/ui/public/assets/ProjectStartupButton-CYJNbO_s.css +0 -1
- package/src/ui/public/assets/RemoteManagerDialog-DecRuME6.css +0 -1
- package/src/ui/public/assets/RemoteManagerDialog-m4xHH1i1.js +0 -1
- package/src/ui/public/assets/RemoteRepoCard-BMHjSbhD.js +0 -1
- package/src/ui/public/assets/RemoteRepoCard-Bud571e2.css +0 -1
- package/src/ui/public/assets/SourceMapView-CyRaXNRJ.js +0 -16
- package/src/ui/public/assets/SourceMapView-W3kEDGi8.css +0 -1
- package/src/ui/public/assets/SvgIcon-BhcuOgBu.js +0 -1
- package/src/ui/public/assets/TemplateManager-v_HdR3uT.js +0 -1
- package/src/ui/public/assets/UserInputNode-4Dz76KjZ.js +0 -1
- package/src/ui/public/assets/UserInputNode-wfqZIucW.css +0 -1
- package/src/ui/public/assets/WorkbenchView-BLHw8-bZ.css +0 -1
- package/src/ui/public/assets/WorkbenchView-BmhoLXyf.js +0 -6
- package/src/ui/public/assets/_plugin-vue_export-helper-C-FFoFVt.js +0 -1
- package/src/ui/public/assets/architecture-7GRP2DOG-BWMpt-wx.js +0 -1
- package/src/ui/public/assets/channel-Bv1i9WZP.js +0 -1
- package/src/ui/public/assets/checkbox-bGrNAhEe.js +0 -1
- package/src/ui/public/assets/classDiagram-ZZMXUADV-C1yU0S1P.js +0 -1
- package/src/ui/public/assets/classDiagram-v2-VYDZK3BY-C1yU0S1P.js +0 -1
- package/src/ui/public/assets/css-97U79mqY.js +0 -1
- package/src/ui/public/assets/css-9c4ARN8B.js +0 -1
- package/src/ui/public/assets/css-BO8scIW3.js +0 -1
- package/src/ui/public/assets/css-C5Ep_hUU.js +0 -5
- package/src/ui/public/assets/css-DA1Hkb0c.js +0 -1
- package/src/ui/public/assets/css-DBfNr0B8.js +0 -1
- package/src/ui/public/assets/css-DUoOEAIc.js +0 -1
- package/src/ui/public/assets/css-DcJScsU6.js +0 -1
- package/src/ui/public/assets/css-DgfxjIuW.js +0 -1
- package/src/ui/public/assets/css-GGntyoo4.js +0 -1
- package/src/ui/public/assets/css-svLaNjH3.js +0 -1
- package/src/ui/public/assets/empty-DYtkD7dz.js +0 -1
- package/src/ui/public/assets/eventmodeling-NTZA5JFV-CuIdpoaV.js +0 -1
- package/src/ui/public/assets/file-picker-DIldo8KL.js +0 -1
- package/src/ui/public/assets/flowDiagram-HODETNUW-DWnAtNvY.js +0 -1
- package/src/ui/public/assets/index-CyaDtSLw.js +0 -215
- package/src/ui/public/assets/lib-BkKP8HsA.js +0 -9
- package/src/ui/public/assets/lib-DHw1U3Aw.js +0 -60
- package/src/ui/public/assets/message-box-B-scWapo.js +0 -1
- package/src/ui/public/assets/overlay-hK0FJjVv.js +0 -3
- package/src/ui/public/assets/pinia-BPF12Yrb.js +0 -1
- package/src/ui/public/assets/railroad-abnf-HS5TGJTU-Dec5uKlc.js +0 -1
- package/src/ui/public/assets/railroad-ebnf-LZEXJU2U-DFXH-gfF.js +0 -1
- package/src/ui/public/assets/railroad-peg-WCYAUIDC-D15mQk0-.js +0 -1
- package/src/ui/public/assets/runtime-dom.esm-bundler-CwnCPTno.js +0 -5
- package/src/ui/public/assets/scrollbar-B3cTlIQS.js +0 -1
- package/src/ui/public/assets/select-C6NmiyE8.js +0 -1
- package/src/ui/public/assets/stateDiagram-v2-MP3YSRHH-Bv-sCrPA.js +0 -1
- package/src/ui/public/assets/swimlanesDiagram-VR7AAH4N-CV5_GTGx.js +0 -8
- package/src/ui/public/assets/table-Y7ONhuJj.js +0 -1
- package/src/ui/public/assets/tag-D5DStZq7.js +0 -1
- package/src/ui/public/assets/useWorkbenchProjects-ClDzjpmk.js +0 -1
- package/src/ui/public/assets/useWorkbenchProjects-oOV26kNH.css +0 -1
- package/src/ui/public/assets/vue-flow-controls-d97G_mZX.js +0 -26
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{$ as e,C as t,Ct as n,E as r,Gt as i,N as a,S as o,T as s,Tt as c,W as l,X as u,_ as d,cn as f,dt as p,h as m,i as h,j as g,mn as _,mt as v,p as y,pt as b,t as x,tt as S,un as C,vt as w,w as T,y as E,z as D}from"./runtime-dom.esm-bundler-BicOLibD.js";import{t as O}from"./_plugin-vue_export-helper-iXNJ6JSE.js";import{F as k,Mn as A,Y as ee,f as te,o as j,t as M}from"./css-BNFbzzrw.js";import{n as N,r as P}from"./overlay-BLdJhxTh.js";import{n as F,t as I}from"./select-B1mzQ7WN.js";import{t as L}from"./css-COonD8vo.js";import{n as ne,t as re}from"./TemplateManager-Xw10gkAg.js";import"./css-CeOw7pBa.js";import"./css-DuOCaNNA.js";import"./css-DUozUjEY.js";import{t as ie}from"./SvgIcon-CdV2Vf7y.js";import{t as ae}from"./IconButton-rWXbHMlj.js";import{l as oe,t as R}from"./configStore-Bu9Y7yi8.js";import{$ as se,Et as z,Mt as B,Tt as V,bt as H,d as ce,f as U,p as W,u as G,wt as K,yt as q}from"./index-C1m5EhFo.js";D();var le=a({__name:`GlobalLoading`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:A(`@2AEBA:加载中...`)},showProgress:{type:Boolean,required:!1,default:!1},progress:{type:Number,required:!1,default:0},mock:{type:Boolean,required:!1,default:!1}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});D(),i(),h();var ue={class:`loading-container`},J={class:`loading-text`},Y={key:0,class:`loading-progress`};function de(n,i,a,o,c,l){return e(),T(E,{to:`body`},[g(x,{name:`loading-fade`},{default:b(()=>[a.visible||a.mock?(e(),r(`div`,{key:0,class:`global-loading-overlay`,onClick:i[0]||=m(()=>{},[`stop`])},[t(`div`,ue,[s(` 主加载器 `),i[1]||=t(`div`,{class:`loading-spinner`},[t(`div`,{class:`spinner-ring`}),t(`div`,{class:`spinner-ring`}),t(`div`,{class:`spinner-ring`})],-1),s(` 加载文字 `),t(`div`,J,_(a.text),1),s(` 进度条(可选/Mock) `),a.showProgress||a.mock?(e(),r(`div`,Y,[t(`div`,{class:f([`progress-bar`,{"is-mock":a.mock&&!a.showProgress}]),style:C(a.showProgress?{width:a.progress+`%`}:void 0)},null,6)])):s(`v-if`,!0)])])):s(`v-if`,!0)]),_:1})])}var fe=O(le,[[`render`,de],[`__scopeId`,`data-v-77e24a5f`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/GlobalLoading.vue`]]);D();var pe=a({__name:`SuccessModal`,props:{visible:{type:Boolean,required:!1,default:!1},text:{type:String,required:!1,default:A(`@71545:操作成功!`)},description:{type:String,required:!1,default:``}},setup(e,{expose:t}){t();let n={};return Object.defineProperty(n,"__isScriptSetup",{enumerable:!1,value:!0}),n}});D(),i(),h();var X={class:`success-container`},me={class:`success-text`},he={key:0,class:`success-description`};function ge(n,i,a,o,c,l){return e(),T(E,{to:`body`},[g(x,{name:`success-fade`},{default:b(()=>[a.visible?(e(),r(`div`,{key:0,class:`success-overlay`,onClick:i[0]||=m(()=>{},[`stop`])},[t(`div`,X,[s(` 成功图标 `),i[1]||=t(`div`,{class:`success-icon`},[t(`svg`,{viewBox:`0 0 52 52`,class:`success-svg`},[t(`circle`,{class:`success-circle`,cx:`26`,cy:`26`,r:`25`,fill:`none`}),t(`path`,{class:`success-check`,fill:`none`,d:`m14.1 27.2l7.1 7.2 16.7-16.8`})])],-1),s(` 成功文字 `),t(`div`,me,_(a.text),1),s(` 描述文字 `),a.description?(e(),r(`div`,he,_(a.description),1)):s(`v-if`,!0)])])):s(`v-if`,!0)]),_:1})])}var _e=O(pe,[[`render`,ge],[`__scopeId`,`data-v-30ab4535`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/SuccessModal.vue`]]);w();var Z=n({visible:!1,text:A(`@F2A3A:加载中...`),showProgress:!1,progress:0});function ve(){return{loadingState:Z,show:e=>{Z.visible=!0,Z.text=e?.text||A(`@F2A3A:加载中...`),Z.showProgress=e?.showProgress||!1,Z.progress=e?.progress||0},hide:()=>{Z.visible=!1},updateProgress:e=>{Z.progress=Math.max(0,Math.min(100,e))},updateText:e=>{Z.text=e},setText:e=>{Z.visible&&(Z.text=e)}}}w();var Q=n({visible:!1,text:A(`@B8591:操作成功!`),description:``});function ye(){let e=e=>{Q.visible=!0,Q.text=e?.text||A(`@B8591:操作成功!`),Q.description=e?.description||``;let n=e?.duration||2e3;setTimeout(()=>{t()},n)},t=()=>{Q.visible=!1};return{successState:Q,show:e,hide:t}}D();var be=a({__name:`QuickCommitButton`,props:{from:{type:String,required:!1,default:`form`},hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1}},emits:[`beforeCommit`,`afterCommit`,`clearFields`],setup(e,{expose:t,emit:n}){let r=H(),i=R(),a=e,s=n,c=o(()=>r.fileList.some(e=>!q(e.path,i.lockedFiles))),l=o(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),u=o(()=>r.hasConflictedFiles?!0:r.isSelectionMode?!l.value||!a.hasUserCommitMessage:!c.value||!a.hasUserCommitMessage),d=o(()=>r.isAddingFiles||r.isCommiting),f=o(()=>r.hasConflictedFiles?A(`@2E184:存在冲突文件,请先解决冲突`):r.isSelectionMode?r.selectedFiles.size===0?A(`@2E184:请先勾选要提交的文件`):r.selectedUnstagedPaths.length===0?A(`@2E184:所选文件无需暂存或被锁定`):a.hasUserCommitMessage?A(`@2E184:一键完成:仅暂存所选文件 → 提交`):A(`@2E184:请输入提交信息`):c.value?a.hasUserCommitMessage?A(`@2E184:一键完成:暂存所有更改 → 提交`):A(`@2E184:请输入提交信息`):A(`@2E184:没有需要提交的更改`)),p=o(()=>r.isSelectionMode&&l.value?A(`@2E184:一键提交所选`):A(`@2E184:一键提交`)),m=o(()=>a.from===`form`?r.isSelectionMode&&l.value?A(`@2E184:暂存所选 + 提交`):A(`@2E184:暂存 + 提交`):``);async function h(){s(`beforeCommit`);try{let e=await r.stageSelectedAndCommit(a.finalCommitMessage,a.skipHooks);e&&s(`clearFields`),s(`afterCommit`,e)}catch(e){console.error(`一键提交失败:`,e),s(`afterCommit`,!1)}}t({triggerQuickCommit:h,isDisabled:u,isLoading:d,buttonTitle:p,buttonDesc:m,tooltipText:f});let g={gitStore:r,configStore:i,props:a,emit:s,hasAnyChanges:c,hasSelectedToStage:l,isDisabled:u,isLoading:d,tooltipText:f,buttonTitle:p,buttonDesc:m,handleQuickCommit:h,get ElTooltip(){return L},get Edit(){return k}};return Object.defineProperty(g,"__isScriptSetup",{enumerable:!1,value:!0}),g}});D(),i();var xe={class:`one-commit-content`},Se={class:`one-commit-text`},Ce={class:`one-commit-title`},we={key:0,class:`one-commit-desc`};function $(n,i,a,o,c,l){let u=j,d=N;return e(),r(`div`,null,[g(o.ElTooltip,{content:o.tooltipText,placement:`top`,"show-after":200},{default:b(()=>[g(d,{type:`primary`,onClick:o.handleQuickCommit,loading:o.isLoading,disabled:o.isDisabled,class:f([a.from,`one-commit-button`])},{default:b(()=>[t(`div`,xe,[g(u,{class:`one-commit-icon`},{default:b(()=>[g(o.Edit)]),_:1}),t(`div`,Se,[t(`span`,Ce,_(o.buttonTitle),1),a.from===`form`?(e(),r(`span`,we,_(o.buttonDesc),1)):s(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Te=O(be,[[`render`,$],[`__scopeId`,`data-v-0c962829`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/buttons/QuickCommitButton.vue`]]);D(),w();var Ee=a({__name:`QuickActionsDropdown`,props:{hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1},from:{type:String,required:!1,default:`form`}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`],setup(e,{expose:t,emit:n}){let r=e,i=n,a=c(null),s=c(null),l=o(()=>a.value?.isDisabled??!0),u=o(()=>a.value?.isLoading??!1),d=o(()=>a.value?.buttonTitle??A(`@2E184:一键提交`)),f=o(()=>l.value?a.value?.tooltipText??``:a.value?.buttonDesc??``),p=o(()=>a.value?.tooltipText??``),m=o(()=>s.value?.isDisabled??!0),h=o(()=>s.value?.isLoading??!1),g=o(()=>s.value?.buttonTitle??A(`@2E184:一键推送所有`)),_=o(()=>m.value?s.value?.tooltipText??``:s.value?.buttonDesc??``),v=o(()=>s.value?.tooltipText??``),y=o(()=>u.value||h.value),b=o(()=>l.value&&m.value),x=o(()=>s.value?.buttonDesc||A(`@2E184:暂存 + 提交 + 推送`));function S(e){e===`commit`?a.value?.triggerQuickCommit():e===`push`&&s.value?.triggerQuickPush()}t({triggerQuickPush:()=>s.value?.triggerQuickPush()});let C={props:r,emit:i,quickCommitRef:a,quickPushRef:s,commitDisabled:l,commitLoading:u,commitTitle:d,commitDesc:f,commitTooltip:p,pushDisabled:m,pushLoading:h,pushTitle:g,pushDesc:_,pushTooltip:v,busy:y,allDisabled:b,triggerDesc:x,handleCommand:S,get Loading(){return ee},get $t(){return A},QuickCommitButton:Te,QuickPushButton:G};return Object.defineProperty(C,"__isScriptSetup",{enumerable:!1,value:!0}),C}});i(),D();var De={class:`qa-wrap`},Oe=[`aria-label`,`title`],ke={class:`qa-trigger__text`},Ae={class:`qa-trigger__title`},je={class:`qa-trigger__desc`},Me={class:`qa-item`},Ne={class:`qa-item__text`},Pe={class:`qa-item__title`},Fe={class:`qa-item__desc`},Ie={class:`qa-item`},Le={class:`qa-item__text`},Re={class:`qa-item__title`},ze={class:`qa-item__desc`},Be={class:`qa-engines`,"aria-hidden":`true`};function Ve(n,i,a,o,c,l){let u=j,p=V,m=z,h=K;return e(),r(`div`,De,[g(h,{trigger:`click`,placement:`bottom-start`,"popper-class":`qa-dropdown-popper`,onCommand:o.handleCommand},{dropdown:b(()=>[g(m,null,{default:b(()=>[g(p,{disabled:o.commitDisabled,command:`commit`},{default:b(()=>[t(`div`,Me,[s(` git-commit(Tabler icons,MIT) `),i[7]||=t(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[t(`path`,{d:`M9 12a3 3 0 1 0 6 0a3 3 0 1 0 -6 0`}),t(`path`,{d:`M12 3l0 6`}),t(`path`,{d:`M12 15l0 6`})],-1),t(`div`,Ne,[t(`span`,Pe,_(o.commitTitle),1),t(`span`,Fe,_(o.commitDesc||o.commitTooltip),1)])])]),_:1},8,[`disabled`]),g(p,{disabled:o.pushDisabled,command:`push`},{default:b(()=>[t(`div`,Ie,[s(` cloud-upload(Tabler icons,MIT) `),i[8]||=t(`svg`,{class:`qa-item__icon`,viewBox:`0 0 24 24`,width:`18`,height:`18`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[t(`path`,{d:`M7 18a4.6 4.4 0 0 1 0 -9a5 4.5 0 0 1 11 2h1a3.5 3.5 0 0 1 0 7h-1`}),t(`path`,{d:`M9 15l3 -3l3 3`}),t(`path`,{d:`M12 12l0 9`})],-1),t(`div`,Le,[t(`span`,Re,_(o.pushTitle),1),t(`span`,ze,_(o.pushDesc||o.pushTooltip),1)])])]),_:1},8,[`disabled`])]),_:1})]),default:b(()=>[t(`div`,{class:f([`qa-trigger`,{"is-quiet":o.allDisabled,"is-busy":o.busy}]),role:`button`,tabindex:`0`,"aria-label":o.$t(`@2E184:提交并推送`),title:o.pushTooltip},[t(`div`,ke,[t(`span`,Ae,_(o.$t(`@2E184:提交并推送`)),1),t(`span`,je,_(o.triggerDesc),1)]),o.busy?(e(),T(u,{key:0,class:`is-loading qa-trigger__caret`},{default:b(()=>[g(o.Loading)]),_:1})):(e(),r(d,{key:1},[s(` chevron-down(Tabler icons,MIT) `),i[6]||=t(`svg`,{class:`qa-trigger__caret`,viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},[t(`path`,{d:`M6 9l6 6l6 -6`})],-1)],2112))],10,Oe)]),_:1}),s(` 引擎:口径的唯一出处,只挂载不显示(见文件头注释) `),t(`div`,Be,[g(o.QuickCommitButton,{ref:`quickCommitRef`,from:o.props.from,"has-user-commit-message":o.props.hasUserCommitMessage,"final-commit-message":o.props.finalCommitMessage,"skip-hooks":o.props.skipHooks,onAfterCommit:i[0]||=e=>o.emit(`afterCommit`,e),onClearFields:i[1]||=()=>o.emit(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),g(o.QuickPushButton,{ref:`quickPushRef`,from:o.props.from,"has-user-commit-message":o.props.hasUserCommitMessage,"final-commit-message":o.props.finalCommitMessage,"skip-hooks":o.props.skipHooks,onBeforePush:i[2]||=()=>o.emit(`beforePush`),onPushStart:i[3]||=()=>o.emit(`pushStart`),onAfterPush:i[4]||=e=>o.emit(`afterPush`,e),onClearFields:i[5]||=()=>o.emit(`clearFields`)},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`])])])}var He=O(Ee,[[`render`,Ve],[`__scopeId`,`data-v-cf0b4514`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/buttons/QuickActionsDropdown.vue`]]);D();var Ue=a({__name:`AiQuickPushButton`,props:{from:{type:String,required:!1,default:`form`},generating:{type:Boolean,required:!1,default:!1}},emits:[`trigger`],setup(e,{expose:t,emit:n}){t();let r=H(),i=R(),a=e,s=n,c=o(()=>r.fileList.some(e=>!q(e.path,i.lockedFiles))),l=o(()=>r.isSelectionMode&&r.selectedFiles.size>0&&r.selectedUnstagedPaths.length>0),u=o(()=>!r.isSelectionMode&&!c.value&&r.branchAhead>0),d=o(()=>r.hasConflictedFiles||!r.hasUpstream?!0:r.isSelectionMode?!l.value:!c.value&&r.branchAhead===0),f=o(()=>a.generating||r.isAddingFiles||r.isCommiting||r.isPushing),p=o(()=>r.hasConflictedFiles?A(`@2E184:存在冲突文件,请先解决冲突`):r.hasUpstream?a.generating?A(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode?l.value?A(`@2E184:一键完成:AI 生成提交信息 → 仅暂存所选文件 → 提交 → 推送`):A(`@2E184:请先勾选要推送的文件`):!c.value&&r.branchAhead===0?A(`@2E184:没有需要提交或推送的更改`):c.value?A(`@2E184:一键完成:AI 生成提交信息 → 暂存所有更改 → 提交 → 推送`):A(`@2E184:本地已提交,AI 将直接推送到远程仓库`):A(`@2E184:当前分支没有上游分支`)),m=o(()=>a.generating?A(`@2E184:AI 正在生成提交信息…`):r.isSelectionMode&&l.value?A(`@2E184:AI 提交并推送所选`):A(`@2E184:AI 提交并推送`)),h=o(()=>a.from!==`form`||a.generating?``:u.value?A(`@2E184:本地已提交,直接推送`):A(`@2E184:AI 生成信息 + 推送`));function g(){d.value||f.value||s(`trigger`)}let _={gitStore:r,configStore:i,props:a,emit:s,hasAnyChanges:c,hasSelectedToStage:l,isPushOnly:u,isDisabled:d,isLoading:f,tooltipText:p,buttonTitle:m,buttonDesc:h,handleClick:g,get ElTooltip(){return L},SvgIcon:ie};return Object.defineProperty(_,"__isScriptSetup",{enumerable:!1,value:!0}),_}});D(),i();var We={class:`one-ai-push`},Ge={class:`one-ai-push-content`},Ke={class:`one-ai-push-text`},qe={class:`one-ai-push-title`},Je={key:0,class:`one-ai-push-desc`};function Ye(n,i,a,o,c,l){let u=N;return e(),r(`div`,We,[g(o.ElTooltip,{content:o.tooltipText,placement:`top`,"show-after":200},{default:b(()=>[g(u,{type:`primary`,onClick:o.handleClick,loading:o.isLoading,disabled:o.isDisabled,class:f([a.from,`one-ai-push-button`])},{default:b(()=>[t(`div`,Ge,[s(` message-chatbot(Tabler icons,MIT):2026-10-16 由它替换三连闪光
|
|
2
|
+
ai-commit.svg —— 与「AI 功能不用星星/闪光」的既定偏好对齐;
|
|
3
|
+
颜色交给样式层(描边档跟随 --role-ai-ink),别再写死行内白 `),g(o.SvgIcon,{class:`one-ai-push-icon`,"icon-class":`message-chatbot`}),t(`div`,Ke,[t(`span`,qe,_(o.buttonTitle),1),a.from===`form`?(e(),r(`span`,Je,_(o.buttonDesc),1)):s(`v-if`,!0)])])]),_:1},8,[`loading`,`disabled`,`class`])]),_:1},8,[`content`])])}var Xe=O(Ue,[[`render`,Ye],[`__scopeId`,`data-v-0a8120f6`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/buttons/AiQuickPushButton.vue`]]);D(),w();var Ze=a({__name:`GitActionButtons`,props:{hasUserCommitMessage:{type:Boolean,required:!1,default:!1},finalCommitMessage:{type:String,required:!1,default:``},skipHooks:{type:Boolean,required:!1,default:!1},from:{type:String,required:!1,default:`form`},aiGenerating:{type:Boolean,required:!1,default:!1}},emits:[`afterCommit`,`afterPush`,`beforePush`,`pushStart`,`clearFields`,`aiQuickPush`],setup(e,{expose:t,emit:n}){let r=n,i=c(null);function a(e){r(`afterCommit`,e)}function o(e){r(`afterPush`,e)}function s(){r(`beforePush`)}function l(){r(`pushStart`)}function u(){r(`clearFields`)}function d(){r(`aiQuickPush`)}async function f(){return i.value?.triggerQuickPush()}t({triggerQuickPush:f});let p={emit:r,quickActionsRef:i,handleAfterCommit:a,handleAfterPush:o,handleBeforePush:s,handlePushStart:l,handleClearFields:u,handleAiQuickPush:d,triggerQuickPush:f,StageButton:W,CommitButton:U,PushButton:ce,QuickActionsDropdown:He,AiQuickPushButton:Xe};return Object.defineProperty(p,"__isScriptSetup",{enumerable:!1,value:!0}),p}});D();var Qe={class:`form-bottom-actions`},$e={class:`actions-flex-container`},et={class:`left-actions`},tt={class:`button-grid`},nt={class:`right-actions`};function rt(n,i,a,o,c,l){return e(),r(`div`,Qe,[t(`div`,$e,[t(`div`,et,[t(`div`,tt,[g(o.StageButton,{onClick:()=>{},from:a.from},null,8,[`from`]),g(o.CommitButton,{"has-user-commit-message":a.hasUserCommitMessage,"final-commit-message":a.finalCommitMessage,"skip-hooks":a.skipHooks,onBeforeCommit:()=>{},onAfterCommit:o.handleAfterCommit,onClick:()=>{},from:a.from},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`from`]),g(o.PushButton,{onBeforePush:()=>{},onAfterPush:o.handleAfterPush,onClick:()=>{},from:a.from},null,8,[`from`])])]),t(`div`,nt,[s(` 「一键提交 / 一键推送所有」合并进这一颗下拉(2026-10-16 走查 P2-1),
|
|
4
|
+
动作逻辑与禁用口径在 QuickActionsDropdown 内部的原按钮引擎里,
|
|
5
|
+
不在本层复制;triggerQuickPush 的 expose 链保持原样
|
|
6
|
+
(Enter 键 / AI 提交流程都经它) `),g(o.QuickActionsDropdown,{ref:`quickActionsRef`,from:a.from,"has-user-commit-message":a.hasUserCommitMessage,"final-commit-message":a.finalCommitMessage,"skip-hooks":a.skipHooks,onAfterCommit:o.handleAfterCommit,onAfterPush:o.handleAfterPush,onBeforePush:o.handleBeforePush,onPushStart:o.handlePushStart,onClearFields:o.handleClearFields},null,8,[`from`,`has-user-commit-message`,`final-commit-message`,`skip-hooks`]),g(o.AiQuickPushButton,{from:a.from,generating:a.aiGenerating,onTrigger:o.handleAiQuickPush},null,8,[`from`,`generating`])])])])}var it=O(Ze,[[`render`,rt],[`__scopeId`,`data-v-12b4dc63`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/GitActionButtons.vue`]]);D(),w();var at=a({__name:`CommitForm`,setup(e,{expose:t}){t();let n=c(!1),r=c(!1);async function i(){let e=d.isSelectionMode&&d.selectedFiles.size>0?[...d.selectedFiles]:[],t=oe(),n=await(await fetch(`/api/config/generate-commit-message`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({selectedPaths:e,locale:t.currentLocale})})).json();if(!n.success){let e=n.code,t=n.error||A(`@76872:AI生成失败`),r=e?{TIMEOUT:`@76872:AI生成超时,请重试或检查模型响应速度`,NO_MODEL:`@76872:未配置AI模型,请先在通用设置中添加模型`,NO_JSON:`@76872:AI未返回有效结果,请重试`,PARSE_FAILED:`@76872:AI返回格式无法解析,请重试`,GENERATE_FAILED:`@76872:AI生成失败`,HTTP_ERR:`@76872:AI生成失败`}[e]:null;return M.error(r?A(r):t),!1}let r=[`feat`,`fix`,`docs`,`style`,`refactor`,`test`,`chore`];if(S.value)n.type&&r.includes(n.type)&&(C.value=n.type),n.scope!==void 0&&(w.value=n.scope),n.description&&(T.value=n.description);else{let e=n.type&&n.description?n.scope?`${n.type}(${n.scope}): ${n.description}`:`${n.type}: ${n.description}`:n.description||``;e&&(m.value=e)}return!0}async function a(){if(!n.value){n.value=!0;try{if(!await i())return;M.success(A(`@76872:AI已生成提交信息`))}catch(e){M.error(`${A(`@76872:AI生成失败`)}: ${e.message}`)}finally{n.value=!1}}}async function s(){if(!r.value){r.value=!0;try{let e=d.isSelectionMode&&d.selectedFiles.size>0,t=d.fileList.some(e=>!q(e.path,f.lockedFiles));if(e||t){if(!await i())return;if(await l(),!V.value){M.error(A(`@76872:AI生成失败`));return}}await L.value?.triggerQuickPush?.()}catch(e){console.error(`AI 提交并推送失败:`,e),M.error(`${A(`@76872:AI生成失败`)}: ${e.message}`)}finally{r.value=!1}}}let d=H(),f=R(),m=c(``),{loadingState:h,show:g,hide:_,setText:v}=ve(),{successState:y}=ye(),b=c(!1),x=c(``),S=o({get:()=>f.isStandardCommit,set:e=>{f.isStandardCommit=e}}),C=c(`feat`),w=c(``),T=c(``),E=c(``),D=c(``),O=c([]),k=c(!1),j=c([]),N=c(!1),P=c(!1),F=o({get:()=>f.skipHooks,set:e=>{f.skipHooks=e}}),I=o({get:()=>f.autoQuickPushOnEnter,set:e=>{f.autoQuickPushOnEnter=e}}),L=c(null),ne=c(!1),ie=o(()=>[{value:`feat`,label:`feat: ${A(`@76872:新功能`)}`},{value:`fix`,label:`fix: ${A(`@76872:修复bug`)}`},{value:`docs`,label:`docs: ${A(`@76872:文档修改`)}`},{value:`style`,label:`style: ${A(`@76872:样式修改`)}`},{value:`refactor`,label:`refactor: ${A(`@76872:代码重构`)}`},{value:`test`,label:`test: ${A(`@76872:测试代码`)}`},{value:`chore`,label:`chore: ${A(`@76872:构建/工具修改`)}`}]),z=c([]),B=o(()=>{if(!S.value)return m.value||x.value;let e=`${C.value||``}`;return w.value&&(e+=`(${w.value})`),e+=`: ${T.value}`,E.value&&(e+=`\n\n${E.value}`),D.value&&(e+=`\n\n${D.value}`),e}),V=o(()=>S.value?(d.isMergeInProgress||(C.value||``).trim()!==``)&&(T.value||``).trim()!==``:m.value.trim()!==``),ce=o(()=>d.hasConflictedFiles?!0:d.isMergeInProgress?!V.value:!d.fileList.some(e=>!q(e.path,f.lockedFiles))||!V.value),U=o(()=>{let e=`${A(`@76872:输入提交信息 (默认: `)}${x.value})`;return I.value?`${e}${A(`@76872:(按回车一键推送)`)}`:e}),W=o(()=>{let e=A(`@76872:简短描述(必填)`);return I.value?A(`@76872:简短描述(必填,按回车一键推送)`):e}),G=o(()=>{let e=`git commit -m "${B.value}"`;return F.value&&(e+=` --no-verify`),e});function K(){let e=f.config;e&&(x.value=e.defaultCommitMessage||``,e.descriptionTemplates&&Array.isArray(e.descriptionTemplates)&&(O.value=e.descriptionTemplates),e.scopeTemplates&&Array.isArray(e.scopeTemplates)&&(j.value=e.scopeTemplates),e.messageTemplates&&Array.isArray(e.messageTemplates)&&(z.value=e.messageTemplates))}function le(e){T.value=e,k.value=!1}function ue(e){w.value=e,N.value=!1}function J(){k.value=!0}function Y(){N.value=!0}function de(){m.value=``,T.value=``,E.value=``,D.value=``,C.value=`feat`,f.autoSetDefaultMessage&&f.defaultCommitMessage&&(S.value?T.value=f.defaultCommitMessage:m.value=f.defaultCommitMessage)}function pe(){g({text:A(`@76872:正在暂存文件…`),showProgress:!1})}function X(){_()}function me(e){if(_(),e){b.value=!0;try{setTimeout(async()=>{try{console.log(A(`@76872:推送成功,状态已更新`))}catch(e){console.error(`一键推送后处理失败:`,e)}finally{b.value=!1}},1e3)}catch(e){console.error(`一键推送后处理失败:`,e),b.value=!1}}}function he(e){m.value=e,P.value=!1}async function ge(e){if(!I.value||!V.value)return;let t=d.fileList.some(e=>!q(e.path,f.lockedFiles)),n=d.hasConflictedFiles;if(t&&V.value&&d.hasUpstream&&!n&&e.key===`Enter`&&!e.shiftKey){e.preventDefault();try{await L.value?.triggerQuickPush()}catch(e){console.error(`回车自动一键提交失败:`,e)}}}async function Z(e){try{await f.saveDefaultMessage(e)&&M.success(A(`@76872:默认提交信息设置成功`))}catch(e){M.error(`${A(`@76872:设置默认提交信息失败: `)}${e.message}`)}}p(()=>d.pendingMergeMessage,e=>{e&&(S.value?(C.value=``,T.value=e):m.value=e,d.pendingMergeMessage=``,M.info(A(`@76872:已自动填充合并提交信息`)))}),p(()=>d.isAddingFiles,e=>{e&&h.visible&&v(A(`@76872:正在暂存文件…`))}),p(()=>d.isCommiting,e=>{e&&h.visible&&v(A(`@76872:正在提交更改...`))}),p(()=>d.isPushing,e=>{e&&h.visible&&_()}),u(async()=>{p(()=>f.config,K,{immediate:!0}),f.config||await f.loadConfig(),f.autoSetDefaultMessage&&f.defaultCommitMessage&&(S.value?T.value||=f.defaultCommitMessage:m.value||=f.defaultCommitMessage),d.pendingMergeMessage&&(S.value?(C.value=``,T.value=d.pendingMergeMessage):m.value=d.pendingMergeMessage,d.pendingMergeMessage=``,M.info(A(`@76872:已自动填充合并提交信息`)))});function Q(e,t){t([...e?O.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):O.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function be(e,t){t([...e?j.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):j.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function xe(e){e.isSettings?(J(),T.value=``):T.value=e.value}function Se(e){e.isSettings?(Y(),w.value=``):w.value=e.value}function Ce(e,t){t([...e?z.value.filter(t=>t.toLowerCase().includes(e.toLowerCase())).map(e=>({value:e})):z.value.map(e=>({value:e})),{value:`⚙️ 管理模板…`,isSettings:!0}])}function we(e){e.isSettings?(P.value=!0,m.value=``):m.value=e.value}let $={aiGenerating:n,aiQuickPushing:r,requestAiCommitMessage:i,handleAiGenerateCommit:a,handleAiQuickPush:s,gitStore:d,configStore:f,commitMessage:m,loadingState:h,showLoading:g,hideLoading:_,setLoadingText:v,successState:y,isUpdatingStatus:b,defaultCommitMessage:x,isStandardCommit:S,commitType:C,commitScope:w,commitDescription:T,commitBody:E,commitFooter:D,descriptionTemplates:O,descriptionDialogVisible:k,scopeTemplates:j,scopeDialogVisible:N,defaultMessageDialogVisible:P,skipHooks:F,autoQuickPushOnEnter:I,gitActionButtonsRef:L,showAdvancedFields:ne,commitTypeOptions:ie,messageTemplates:z,finalCommitMessage:B,hasUserCommitMessage:V,isCommitDisabled:ce,commitMessagePlaceholder:U,descriptionPlaceholder:W,gitCommandPreview:G,updateFromConfig:K,useTemplate:le,useScopeTemplate:ue,openDescriptionSettings:J,openScopeSettings:Y,clearCommitFields:de,handleQuickPushBefore:pe,handlePushStart:X,handleQuickPushAfter:me,useMessageTemplate:he,handleEnterKey:ge,setDefaultFromTemplate:Z,queryDescriptionTemplates:Q,queryScopeTemplates:be,handleDescriptionSelect:xe,handleScopeSelect:Se,queryMessageTemplates:Ce,handleMessageSelect:we,get $t(){return A},get Loading(){return ee},get ArrowDown(){return te},GlobalLoading:fe,SuccessModal:_e,TemplateManager:re,GitCommandPreview:se,GitActionButtons:it,IconButton:ae};return Object.defineProperty($,"__isScriptSetup",{enumerable:!1,value:!0}),$}});D(),i(),h();var ot={class:`card-header app-card-header`},st={class:`header-left`},ct={class:`card-content app-card-content`},lt={class:`layout-container`},ut={key:0,class:`git-config-warning`},dt={key:0,class:`merge-in-progress-banner`},ft={class:`commit-section`},pt={key:0,class:`commit-form`},mt={class:`description-container`},ht={class:`standard-commit-form`},gt={class:`standard-commit-header`},_t={class:`type-scope-container`},vt={class:`scope-wrapper`},yt={class:`description-container description-inline`},bt=[`aria-expanded`],xt={class:`advanced-fields`},St={key:0,class:`status-updating-indicator`},Ct={key:0,class:`status-updating-indicator`};function wt(n,i,a,o,c,l){let u=B,p=ne,m=j,h=I,C=F,w=P;return e(),r(d,null,[t(`div`,{class:f([`card app-card`,{"is-pushing":o.gitStore.isPushing}])},[t(`div`,ot,[t(`div`,st,[o.gitStore.userName!==``&&o.gitStore.userEmail!==``?(e(),T(o.GitActionButtons,{key:0,ref:`gitActionButtonsRef`,"has-user-commit-message":o.hasUserCommitMessage,"final-commit-message":o.finalCommitMessage,"skip-hooks":o.skipHooks,"ai-generating":o.aiQuickPushing,onAfterCommit:i[0]||=e=>{e&&o.clearCommitFields()},onAfterPush:o.handleQuickPushAfter,onBeforePush:o.handleQuickPushBefore,onPushStart:o.handlePushStart,onClearFields:o.clearCommitFields,onAiQuickPush:o.handleAiQuickPush},null,8,[`has-user-commit-message`,`final-commit-message`,`skip-hooks`,`ai-generating`])):s(`v-if`,!0)]),s(` 「命令历史」与「Git 操作」2026-10-06 搬到顶栏(App.vue):这个面板在
|
|
7
|
+
"无事可做"时会整块收起,那两个入口必须常驻 —— 否则工作区干净时
|
|
8
|
+
连 pull / fetch / merge 都点不到。
|
|
9
|
+
2026-10-06:✨「AI 生成提交信息」也从这条工具条搬进了输入框那一行
|
|
10
|
+
(见下面 type-scope-container / description-container 末尾)——
|
|
11
|
+
它生成的就是这个输入框的内容,放在输入框里语义更直接,也省掉一条
|
|
12
|
+
只放一个图标的空工具条。 `)]),t(`div`,ct,[t(`div`,lt,[s(` 如果没有配置Git用户信息,显示提示 `),o.gitStore.userName===``||o.gitStore.userEmail===``?(e(),r(`div`,ut,[g(u,{title:o.$t(`@76872:Git用户信息未配置`),type:`warning`,closable:!1,"show-icon":``},{default:b(()=>[t(`p`,null,_(o.$t(`@76872:您需要配置Git用户名和邮箱才能提交代码。请使用以下命令配置:`)),1),i[11]||=t(`pre`,{class:`config-command`},`git config --global user.name "Your Name"
|
|
13
|
+
git config --global user.email "your.email@example.com"`,-1)]),_:1},8,[`title`])])):(e(),r(d,{key:1},[s(` 正常的提交区域,仅在Git用户信息已配置时显示 `),s(` MERGING 状态提示 `),o.gitStore.isMergeInProgress?(e(),r(`div`,dt,[g(u,{title:o.$t(`@76872:合并进行中`),type:`warning`,closable:!1,"show-icon":``},{default:b(()=>[t(`span`,null,_(o.$t(`@76872:分支合并尚未完成,请输入提交信息后点击「提交」按钮完成合并。`)),1)]),_:1},8,[`title`])])):s(`v-if`,!0),s(` 左侧:提交表单 `),t(`div`,ft,[s(` 普通提交表单 `),o.isStandardCommit?(e(),r(d,{key:1},[s(` 标准化提交表单 `),t(`div`,ht,[t(`div`,gt,[t(`div`,_t,[g(C,{modelValue:o.commitType,"onUpdate:modelValue":i[2]||=e=>o.commitType=e,placeholder:o.$t(`@76872:提交类型`),class:`type-select`,clearable:``},{default:b(()=>[(e(!0),r(d,null,S(o.commitTypeOptions,t=>(e(),T(h,{key:t.value,label:t.label,value:t.value},null,8,[`label`,`value`]))),128))]),_:1},8,[`modelValue`,`placeholder`]),t(`div`,vt,[g(p,{modelValue:o.commitScope,"onUpdate:modelValue":i[3]||=e=>o.commitScope=e,"fetch-suggestions":o.queryScopeTemplates,placeholder:o.$t(`@76872:作用域(可选)`),class:`scope-input`,clearable:``,onSelect:o.handleScopeSelect},null,8,[`modelValue`,`placeholder`])]),s(` 将简短描述放入同一行 `),t(`div`,yt,[g(p,{modelValue:o.commitDescription,"onUpdate:modelValue":i[4]||=e=>o.commitDescription=e,"fetch-suggestions":o.queryDescriptionTemplates,placeholder:o.descriptionPlaceholder,class:`description-input`,clearable:``,onSelect:o.handleDescriptionSelect,onKeydown:o.handleEnterKey},{suffix:b(()=>[g(o.IconButton,{"custom-class":`ai-suffix-btn`,tooltip:o.$t(`@76872:AI生成提交信息`),"icon-class":o.aiGenerating?``:`message-chatbot`,size:`small`,disabled:o.aiGenerating,onClick:o.handleAiGenerateCommit},{default:b(()=>[o.aiGenerating?(e(),T(m,{key:0,class:`is-loading`},{default:b(()=>[g(o.Loading)]),_:1})):s(`v-if`,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])]),_:1},8,[`modelValue`,`placeholder`])])])]),s(` 添加展开/收起高级选项的控制按钮 `),t(`button`,{type:`button`,class:`advanced-options-toggle`,"aria-expanded":o.showAdvancedFields,onClick:i[5]||=e=>o.showAdvancedFields=!o.showAdvancedFields},[t(`span`,null,_(o.showAdvancedFields?o.$t(`@76872:收起`):o.$t(`@76872:正文及页脚`)),1),g(m,{class:f([`toggle-icon`,{"is-active":o.showAdvancedFields}])},{default:b(()=>[g(o.ArrowDown)]),_:1},8,[`class`])],8,bt),s(` 使用过渡效果包装高级字段 `),v(t(`div`,xt,[g(w,{modelValue:o.commitBody,"onUpdate:modelValue":i[6]||=e=>o.commitBody=e,type:`textarea`,rows:4,placeholder:o.$t(`@76872:正文(可选):详细描述本次提交的内容和原因`),class:`body-input`,clearable:``},null,8,[`modelValue`,`placeholder`]),g(w,{modelValue:o.commitFooter,"onUpdate:modelValue":i[7]||=e=>o.commitFooter=e,placeholder:o.$t(`@76872:页脚(可选):如 Closes #123`),class:`footer-input`,clearable:``},null,8,[`modelValue`,`placeholder`])],512),[[y,o.showAdvancedFields]])])],2112)):(e(),r(`div`,pt,[t(`div`,mt,[g(p,{modelValue:o.commitMessage,"onUpdate:modelValue":i[1]||=e=>o.commitMessage=e,"fetch-suggestions":o.queryMessageTemplates,placeholder:o.commitMessagePlaceholder,type:`textarea`,rows:3,resize:`none`,class:`commit-message-input`,onSelect:o.handleMessageSelect,onKeydown:o.handleEnterKey},null,8,[`modelValue`,`placeholder`]),s(` 普通模式(3 行 textarea)**不能**像标准模式那样走 suffix 插槽:
|
|
14
|
+
EP 的 el-input 在 type="textarea" 时切到 el-textarea 分支,
|
|
15
|
+
suffix 插槽被 v-if 短路,整个 .el-input__suffix 容器根本不渲染
|
|
16
|
+
(实测 dump 出来只有 textarea 元素 + 两个 v-if 注释)。
|
|
17
|
+
所以这里回到绝对定位:贴框内右上角,靠 padding-right 让开。
|
|
18
|
+
类名刻意区分(ai-suffix-btn--ta),别和标准模式共用 ——
|
|
19
|
+
两者的定位机制完全不同,共用一套样式会在其中一个上失效。 `),g(o.IconButton,{"custom-class":`ai-suffix-btn ai-suffix-btn--ta`,tooltip:o.$t(`@76872:AI生成提交信息`),"icon-class":o.aiGenerating?``:`message-chatbot`,size:`small`,disabled:o.aiGenerating,onClick:o.handleAiGenerateCommit},{default:b(()=>[o.aiGenerating?(e(),T(m,{key:0,class:`is-loading`},{default:b(()=>[g(o.Loading)]),_:1})):s(`v-if`,!0)]),_:1},8,[`tooltip`,`icon-class`,`disabled`])])])),o.isCommitDisabled?s(`v-if`,!0):(e(),T(o.GitCommandPreview,{key:2,command:o.gitCommandPreview,title:o.$t(`@76872:提交命令预览:`),placeholder:`git commit -m "<提交信息>"`},null,8,[`command`,`title`]))])],64))])])],2),s(` 简短描述模板设置 `),g(o.TemplateManager,{visible:o.descriptionDialogVisible,"onUpdate:visible":i[8]||=e=>o.descriptionDialogVisible=e,type:`description`,title:o.$t(`@76872:简短描述模板设置`),placeholder:o.$t(`@76872:输入新模板内容`),"edit-placeholder":o.$t(`@76872:编辑模板内容`),"empty-description":o.$t(`@76872:暂无保存的模板`),onUseTemplate:o.useTemplate},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),s(` 作用域设置弹窗 `),g(o.TemplateManager,{visible:o.scopeDialogVisible,"onUpdate:visible":i[9]||=e=>o.scopeDialogVisible=e,type:`scope`,title:o.$t(`@76872:作用域模板设置`),placeholder:o.$t(`@76872:输入新作用域模板`),"edit-placeholder":o.$t(`@76872:编辑作用域模板内容`),"empty-description":o.$t(`@76872:暂无保存的作用域`),onUseTemplate:o.useScopeTemplate},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),s(` 默认提交信息设置弹窗 `),g(o.TemplateManager,{visible:o.defaultMessageDialogVisible,"onUpdate:visible":i[10]||=e=>o.defaultMessageDialogVisible=e,type:`message`,title:o.$t(`@76872:默认提交信息设置`),placeholder:o.$t(`@76872:输入新模板内容`),"edit-placeholder":o.$t(`@76872:编辑模板内容`),"empty-description":o.$t(`@76872:暂无保存的模板`),"show-default-section":!0,"show-help-text":!0,onUseTemplate:o.useMessageTemplate,onSetDefault:o.setDefaultFromTemplate},null,8,[`visible`,`title`,`placeholder`,`edit-placeholder`,`empty-description`]),s(` 状态更新指示器 `),g(x,{name:`el-fade-in-linear`},{default:b(()=>[o.isUpdatingStatus?(e(),r(`div`,St,[g(m,{class:`is-loading`},{default:b(()=>[g(o.Loading)]),_:1}),t(`span`,null,_(o.$t(`@76872:更新状态中...`)),1)])):s(`v-if`,!0)]),_:1}),s(` 全局Loading组件 `),g(o.GlobalLoading,{visible:o.loadingState.visible,text:o.loadingState.text,"show-progress":o.loadingState.showProgress,progress:o.loadingState.progress},null,8,[`visible`,`text`,`show-progress`,`progress`]),s(` 成功提示组件 `),g(o.SuccessModal,{visible:o.successState.visible,text:o.successState.text,description:o.successState.description},null,8,[`visible`,`text`,`description`]),s(` 状态更新指示器 `),g(x,{name:`el-fade-in-linear`},{default:b(()=>[o.isUpdatingStatus?(e(),r(`div`,Ct,[g(m,{class:`is-loading`},{default:b(()=>[g(o.Loading)]),_:1}),t(`span`,null,_(o.$t(`@76872:更新状态中...`)),1)])):s(`v-if`,!0)]),_:1})],64)}var Tt=O(at,[[`render`,wt],[`__scopeId`,`data-v-1ba78eef`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/views/components/CommitForm.vue`]]);export{Tt as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{$ as e,A as t,B as n,C as r,E as i,Gt as a,Kt as o,N as s,O as c,P as l,Pt as u,Qt as d,S as f,T as p,Tt as m,U as h,W as g,X as _,Yt as v,at as y,cn as b,ct as x,dt as S,et as C,i as w,j as T,lt as E,mn as D,mt as O,nt as k,p as A,pt as j,t as M,un as N,vt as P,w as F,y as I,z as L}from"./runtime-dom.esm-bundler-BicOLibD.js";import{t as R}from"./_plugin-vue_export-helper-iXNJ6JSE.js";import{Dt as z,It as B,Kt as V,Lt as H,Mn as U,Pt as ee,Ut as W,d as G,i as te,kn as K,o as q,qt as J,rn as ne,s as re,wn as ie,zt as ae}from"./css-BNFbzzrw.js";import{S as Y,_ as oe,d as se,f as ce,g as le,n as ue,t as de}from"./overlay-BLdJhxTh.js";import{l as fe,s as pe,v as X}from"./css-COonD8vo.js";import"./css-CeOw7pBa.js";var Z=V({center:Boolean,alignCenter:{type:Boolean,default:void 0},closeIcon:{type:G},draggable:{type:Boolean,default:void 0},overflow:{type:Boolean,default:void 0},fullscreen:Boolean,headerClass:{type:J([String,Array,Object,Boolean]),default:void 0},bodyClass:{type:J([String,Array,Object,Boolean]),default:void 0},footerClass:{type:J([String,Array,Object,Boolean]),default:void 0},showClose:{type:Boolean,default:!0},title:{type:String,default:``},ariaLevel:{type:String,default:`2`}}),me={close:()=>!0},he={alignCenter:void 0,draggable:void 0,overflow:void 0,showClose:!0,title:``,ariaLevel:`2`,headerClass:void 0,bodyClass:void 0,footerClass:void 0},Q=V({...Z,appendToBody:Boolean,appendTo:{type:J([String,Object]),default:`body`},beforeClose:{type:J(Function)},destroyOnClose:Boolean,closeOnClickModal:{type:Boolean,default:!0},closeOnPressEscape:{type:Boolean,default:!0},lockScroll:{type:Boolean,default:!0},modal:{type:Boolean,default:!0},modalPenetrable:Boolean,openDelay:{type:Number,default:0},closeDelay:{type:Number,default:0},top:{type:String},modelValue:Boolean,modalClass:{type:J([String,Array,Object,Boolean]),default:void 0},width:{type:[String,Number]},zIndex:{type:Number},trapFocus:Boolean,headerAriaLevel:{type:String,default:`2`},transition:{type:J([String,Object]),default:void 0}}),ge={open:()=>!0,opened:()=>!0,close:()=>!0,closed:()=>!0,[Y]:e=>ne(e),openAutoFocus:()=>!0,closeAutoFocus:()=>!0};({...he});var $=Symbol(`dialogInjectionKey`),_e=`dialog-fade`;a(),L(),P();var ve=`ElDialog`,ye=(e,t)=>{let n=l().emit,{nextZIndex:r}=ee(),i=``,a=X(),s=X(),c=m(!1),u=m(!1),p=m(!1),h=m(e.zIndex??r()),y=m(!1),b,x,C=te(),w=f(()=>C.value?.namespace??`el`),T=f(()=>C.value?.dialog),E=f(()=>{let t={},n=`--${w.value}-dialog`;if(!e.fullscreen){e.top&&(t[`${n}-margin-top`]=e.top);let r=ae(e.width);r&&(t[`${n}-width`]=r)}return t}),D=f(()=>(e.draggable??T.value?.draggable??!1)&&!e.fullscreen),O=f(()=>e.alignCenter??T.value?.alignCenter??!1),k=f(()=>e.overflow??T.value?.overflow??!1),A=f(()=>e.modalPenetrable&&!e.modal&&!e.fullscreen),j=f(()=>O.value?{display:`flex`}:{}),M=f(()=>{let t=e.transition??T.value?.transition??`dialog-fade`,n={name:t,onAfterEnter:N,onBeforeLeave:F,onAfterLeave:P};if(d(t)){let e={...t},n=(e,t)=>n=>{o(e)?e.forEach(e=>{v(e)&&e(n)}):v(e)&&e(n),t()};return e.onAfterEnter=n(e.onAfterEnter,N),e.onBeforeLeave=n(e.onBeforeLeave,F),e.onAfterLeave=n(e.onAfterLeave,P),e.name||(e.name=_e,W(ve,`transition.name is missing when using object syntax, fallback to '${_e}'`)),e}return n});function N(){n(`opened`)}function P(){n(`closed`),n(Y,!1),e.destroyOnClose&&(p.value=!1),y.value=!1}function F(){y.value=!0,n(`close`)}function I(){x?.(),b?.(),e.openDelay&&e.openDelay>0?{stop:b}=K(()=>B(),e.openDelay):B()}function L(){b?.(),x?.(),e.closeDelay&&e.closeDelay>0?{stop:x}=K(()=>V(),e.closeDelay):V()}function R(){function t(e){e||(u.value=!0,c.value=!1)}e.beforeClose?e.beforeClose(t):L()}function z(){e.closeOnClickModal&&R()}function B(){ie&&(c.value=!0)}function V(){c.value=!1}function H(){n(`openAutoFocus`)}function U(){n(`closeAutoFocus`)}function G(e){e.detail?.focusReason===`pointer`&&e.preventDefault()}e.lockScroll&&ce(c);function q(){e.closeOnPressEscape&&R()}function J(){c.value&&A.value&&e.zIndex===void 0&&(h.value=r())}return S(()=>e.zIndex,()=>{h.value=e.zIndex??r()}),S(()=>e.modelValue,i=>{i?(u.value=!1,y.value=!1,I(),p.value=!0,h.value=e.zIndex??r(),g(()=>{n(`open`),t.value&&(t.value.parentElement.scrollTop=0,t.value.parentElement.scrollLeft=0,t.value.scrollTop=0)})):c.value&&L()}),S(()=>e.fullscreen,e=>{t.value&&(e?(i=t.value.style.transform,t.value.style.transform=``):t.value.style.transform=i)}),_(()=>{e.modelValue&&(c.value=!0,p.value=!0,I())}),{afterEnter:N,afterLeave:P,beforeLeave:F,handleClose:R,onModalClick:z,close:L,doClose:V,onOpenAutoFocus:H,onCloseAutoFocus:U,onCloseRequested:q,onFocusoutPrevented:G,bringToFront:J,titleId:a,bodyId:s,closed:u,style:E,overlayDialogStyle:j,rendered:p,visible:c,zIndex:h,transitionConfig:M,_draggable:D,_alignCenter:O,_overflow:k,closing:y,penetrable:A}},be=(...e)=>t=>{e.forEach(e=>{e.value=t})};L(),a(),P();var xe=[`aria-level`],Se=[`aria-label`],Ce=[`id`],we=s({name:`ElDialogContent`,__name:`dialog-content`,props:Z,emits:me,setup(t,{expose:a}){let{t:o}=H(),{Close:s}=re,c=t,{dialogRef:l,headerRef:d,bodyId:m,ns:h,style:g}=n($),{focusTrapRef:_}=n(fe),v=be(_,l),x=f(()=>!!c.draggable),{resetPosition:S,updatePosition:C,isDragging:w}=le(l,d,x,f(()=>!!c.overflow)),E=f(()=>[h.b(),h.is(`fullscreen`,c.fullscreen),h.is(`draggable`,x.value),h.is(`dragging`,w.value),h.is(`align-center`,!!c.alignCenter),{[h.m(`center`)]:c.center}]);return a({resetPosition:S,updatePosition:C}),(n,a)=>(e(),i(`div`,{ref:u(v),class:b(E.value),style:N(u(g)),tabindex:`-1`},[r(`header`,{ref_key:`headerRef`,ref:d,class:b([u(h).e(`header`),t.headerClass,{"show-close":t.showClose}])},[k(n.$slots,`header`,{},()=>[r(`span`,{role:`heading`,"aria-level":t.ariaLevel,class:b(u(h).e(`title`))},D(t.title),11,xe)]),t.showClose?(e(),i(`button`,{key:0,"aria-label":u(o)(`el.dialog.close`),class:b(u(h).e(`headerbtn`)),type:`button`,onClick:a[0]||=e=>n.$emit(`close`)},[T(u(q),{class:b(u(h).e(`close`))},{default:j(()=>[(e(),F(y(t.closeIcon||u(s))))]),_:1},8,[`class`])],10,Se)):p(`v-if`,!0)],2),r(`div`,{id:u(m),class:b([u(h).e(`body`),t.bodyClass])},[k(n.$slots,`default`)],10,Ce),n.$slots.footer?(e(),i(`footer`,{key:0,class:b([u(h).e(`footer`),t.footerClass])},[k(n.$slots,`footer`)],2)):p(`v-if`,!0)],6))}});L(),w(),a(),P();var Te=[`aria-label`,`aria-labelledby`,`aria-describedby`],Ee=z(s({name:`ElDialog`,inheritAttrs:!1,__name:`dialog`,props:Q,emits:ge,setup(t,{expose:n}){let i=t,a=E();oe({scope:`el-dialog`,from:`the title slot`,replacement:`the header slot`,version:`3.0.0`,ref:`https://element-plus.org/en-US/component/dialog.html#slots`},f(()=>!!a.title));let o=B(`dialog`),s=m(),l=m(),d=m(),{visible:g,titleId:_,bodyId:v,style:y,overlayDialogStyle:x,rendered:S,transitionConfig:w,zIndex:D,_draggable:P,_alignCenter:L,_overflow:R,penetrable:z,handleClose:V,onModalClick:H,onOpenAutoFocus:U,onCloseAutoFocus:ee,onCloseRequested:W,onFocusoutPrevented:G,bringToFront:te,closing:K}=ye(i,s);C($,{dialogRef:s,headerRef:l,bodyId:v,ns:o,rendered:S,style:y});let q=se(H);return n({visible:g,dialogContentRef:d,resetPosition:()=>{d.value?.resetPosition()},handleClose:V}),(n,i)=>(e(),F(I,{to:t.appendTo,disabled:t.appendTo===`body`&&!t.appendToBody},[T(M,h(u(w),{persisted:``}),{default:j(()=>[O(T(u(de),{"custom-mask-event":``,mask:t.modal,"overlay-class":[t.modalClass??``,`${u(o).namespace.value}-modal-dialog`,u(o).is(`penetrable`,u(z))],"z-index":u(D)},{default:j(()=>[r(`div`,{role:`dialog`,"aria-modal":`true`,"aria-label":t.title||void 0,"aria-labelledby":t.title?void 0:u(_),"aria-describedby":u(v),class:b([`${u(o).namespace.value}-overlay-dialog`,u(o).is(`closing`,u(K))]),style:N(u(x)),onClick:i[0]||=(...e)=>u(q).onClick&&u(q).onClick(...e),onMousedown:i[1]||=(...e)=>u(q).onMousedown&&u(q).onMousedown(...e),onMouseup:i[2]||=(...e)=>u(q).onMouseup&&u(q).onMouseup(...e)},[T(u(pe),{loop:``,trapped:u(g),"focus-start-el":`container`,onFocusAfterTrapped:u(U),onFocusAfterReleased:u(ee),onFocusoutPrevented:u(G),onReleaseRequested:u(W)},{default:j(()=>[u(S)?(e(),F(we,h({key:0,ref_key:`dialogContentRef`,ref:d},n.$attrs,{center:t.center,"align-center":u(L),"close-icon":t.closeIcon,draggable:u(P),overflow:u(R),fullscreen:t.fullscreen,"header-class":t.headerClass,"body-class":t.bodyClass,"footer-class":t.footerClass,"show-close":t.showClose,title:t.title,"aria-level":t.headerAriaLevel,onClose:u(V),onMousedown:u(te)}),c({header:j(()=>[n.$slots.title?k(n.$slots,`title`,{key:1}):k(n.$slots,`header`,{key:0,close:u(V),titleId:u(_),titleClass:u(o).e(`title`)})]),default:j(()=>[k(n.$slots,`default`)]),_:2},[n.$slots.footer?{name:`footer`,fn:j(()=>[k(n.$slots,`footer`)]),key:`0`}:void 0]),1040,[`center`,`align-center`,`close-icon`,`draggable`,`overflow`,`fullscreen`,`header-class`,`body-class`,`footer-class`,`show-close`,`title`,`aria-level`,`onClose`,`onMousedown`])):p(`v-if`,!0)]),_:3},8,[`trapped`,`onFocusAfterTrapped`,`onFocusAfterReleased`,`onFocusoutPrevented`,`onReleaseRequested`])],46,Te)]),_:3},8,[`mask`,`overlay-class`,`z-index`]),[[A,u(g)]])]),_:3},16)],8,[`to`,`disabled`]))}}));L();var De=s({__name:`CommonDialog`,props:{modelValue:{type:Boolean,required:!0},title:{type:String,required:!0},size:{type:String,required:!1,default:`medium`},type:{type:String,required:!1,default:`default`},width:{type:String,required:!1},height:{type:String,required:!1},top:{type:String,required:!1,default:`50px`},closeOnClickModal:{type:Boolean,required:!1,default:!1},closeOnPressEscape:{type:Boolean,required:!1,default:!0},destroyOnClose:{type:Boolean,required:!1,default:!1},draggable:{type:Boolean,required:!1,default:!1},customClass:{type:String,required:!1},modalClass:{type:String,required:!1},appendToBody:{type:Boolean,required:!1,default:!0},lockScroll:{type:Boolean,required:!1,default:!0},zIndex:{type:Number,required:!1},showClose:{type:Boolean,required:!1,default:!0},heightMode:{type:String,required:!1,default:`max`},heightOffset:{type:String,required:!1,default:`100px`},showFooter:{type:Boolean,required:!1,default:!1},confirmText:{type:String,required:!1,default:U(`@803A9:确定`)},cancelText:{type:String,required:!1,default:U(`@803A9:取消`)},showCancel:{type:Boolean,required:!1,default:!0},confirmLoading:{type:Boolean,required:!1,default:!1}},emits:[`update:modelValue`,`confirm`,`cancel`,`close`,`opened`,`closed`],setup(e,{expose:t,emit:n}){t();let r=e,i=n,a=f(()=>{if(r.width)return r.width;switch(r.size){case`small`:return`30%`;case`medium`:return`50%`;case`large`:return`80%`;case`extra-large`:return`90%`;case`fullscreen`:return`100vw`;default:return`50%`}}),o=x(),s=null;function c(){i(`opened`),g(()=>{let e=document.querySelector(`.el-dialog__wrapper:not([style*="display: none"]) .el-dialog`);e&&(e.querySelector(`button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])`)||e).focus?.()})}function l(){i(`closed`),s&&typeof s.focus==`function`&&(g(()=>s?.focus()),s=null)}function u(e){e&&!r.modelValue&&(s=document.activeElement),i(`update:modelValue`,e)}let d=f(()=>r.size===`fullscreen`?`0`:r.top),p=f(()=>{let e=[];return r.customClass&&e.push(r.customClass),r.type===`flex`&&e.push(`common-dialog--flex`),r.type===`full-height`&&e.push(`common-dialog--full-height`),r.size===`fullscreen`&&e.push(`common-dialog--fullscreen`),e.join(` `)}),m=f(()=>{if(r.size===`fullscreen`)return{height:`100vh`,maxHeight:`100vh`};let e=`calc(100% - ${r.heightOffset})`;return r.heightMode===`fixed`?{height:e}:{maxHeight:e}});function h(){i(`update:modelValue`,!1),i(`close`)}function _(){i(`confirm`)}function v(){i(`cancel`),h()}let y={props:r,emit:i,dialogWidth:a,titleId:o,get previouslyFocused(){return s},set previouslyFocused(e){s=e},handleOpened:c,handleClosed:l,handleUpdateModelValue:u,dialogTop:d,dialogClass:p,dialogStyle:m,handleClose:h,handleConfirm:_,handleCancel:v,get ElDialog(){return Ee}};return Object.defineProperty(y,"__isScriptSetup",{enumerable:!1,value:!0}),y}});L(),a();var Oe=[`id`],ke={class:`common-dialog__footer`};function Ae(n,i,a,o,s,l){let u=ue;return e(),F(o.ElDialog,{"model-value":a.modelValue,title:a.title,width:o.dialogWidth,top:o.dialogTop,style:N(o.dialogStyle),"z-index":a.zIndex,fullscreen:a.size===`fullscreen`,"close-on-click-modal":a.closeOnClickModal,"close-on-press-escape":a.closeOnPressEscape,"destroy-on-close":a.destroyOnClose,draggable:a.draggable,class:b(o.dialogClass),"show-close":a.showClose,"modal-class":a.modalClass,"data-dialog-shell":`common`,"append-to-body":a.appendToBody,"lock-scroll":a.lockScroll,"aria-modal":!0,"aria-labelledby":o.titleId,role:`dialog`,onClose:o.handleClose,"onUpdate:modelValue":o.handleUpdateModelValue,onOpened:o.handleOpened,onClosed:o.handleClosed},c({header:j(({titleClass:e})=>[r(`span`,{id:o.titleId,class:b([`el-dialog__title`,e]),role:`heading`,"aria-level":`2`},D(a.title),11,Oe)]),default:j(()=>[k(n.$slots,`default`,{},void 0,!0)]),_:2},[a.showFooter||n.$slots.footer?{name:`footer`,fn:j(()=>[k(n.$slots,`footer`,{},()=>[r(`div`,ke,[a.showCancel?(e(),F(u,{key:0,type:`button`,onClick:o.handleCancel},{default:j(()=>[t(D(a.cancelText),1)]),_:1})):p(`v-if`,!0),T(u,{type:`primary`,loading:a.confirmLoading,onClick:o.handleConfirm},{default:j(()=>[t(D(a.confirmText),1)]),_:1},8,[`loading`])])],!0)]),key:`0`}:void 0]),1032,[`model-value`,`title`,`width`,`top`,`style`,`z-index`,`fullscreen`,`close-on-click-modal`,`close-on-press-escape`,`destroy-on-close`,`draggable`,`class`,`show-close`,`modal-class`,`append-to-body`,`lock-scroll`,`aria-labelledby`])}var je=R(De,[[`render`,Ae],[`__scopeId`,`data-v-c5fee217`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/CommonDialog.vue`]]);export{Q as a,ge as i,be as n,ye as r,je as t};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.common-dialog__footer[data-v-c5fee217]{justify-content:flex-end;align-items:center;gap:var(--spacing-md);width:100%;display:flex}.common-dialog__footer .el-button[data-v-c5fee217]{border-radius:var(--btn-radius);min-width:88px}[data-v-c5fee217] .common-dialog--flex .el-dialog{flex-direction:column;min-height:0;max-height:90vh;display:flex;height:auto!important}[data-v-c5fee217] .common-dialog--flex .el-dialog__header,[data-v-c5fee217] .common-dialog--flex .el-dialog__footer{flex:none}[data-v-c5fee217] .common-dialog--flex .el-dialog__body{min-height:0;padding:var(--spacing-md);box-sizing:border-box;overscroll-behavior:contain;flex-direction:column;flex:1;display:flex;overflow:hidden auto}[data-v-c5fee217] .common-dialog--fullscreen .el-dialog{border-radius:0;width:100vw;margin:0;height:100vh!important;max-height:100vh!important}[data-v-c5fee217] .common-dialog--fullscreen.common-dialog--flex .el-dialog{width:100vw;height:100vh!important;max-height:100vh!important}[data-v-c5fee217] .common-dialog--full-height .el-dialog{flex-direction:column;height:auto;min-height:0;display:flex}[data-v-c5fee217] .common-dialog--full-height .el-dialog__header,[data-v-c5fee217] .common-dialog--full-height .el-dialog__footer{flex:none}[data-v-c5fee217] .common-dialog--full-height .el-dialog__body{overscroll-behavior:contain;min-height:0;padding:8px var(--spacing-md) var(--spacing-md);box-sizing:border-box;flex-direction:column;flex:1;display:flex;overflow:hidden auto}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import"./rolldown-runtime-C0FnF6B9.js";import{$ as e,A as t,C as n,E as r,Gt as i,N as a,Ot as o,S as s,T as c,Tt as l,W as u,X as d,_ as f,c as p,cn as m,dt as h,f as g,h as _,i as v,j as y,k as b,m as x,mn as S,mt as C,p as ee,pt as te,q as ne,tt as w,un as T,vt as re,w as E,y as ie,z as D}from"./runtime-dom.esm-bundler-BicOLibD.js";import{t as O}from"./_plugin-vue_export-helper-iXNJ6JSE.js";import{Mn as k,t as A}from"./css-BNFbzzrw.js";import{t as ae}from"./message-box-CXom4_oM.js";import{t as oe}from"./css-COonD8vo.js";import{t as se}from"./SvgIcon-CdV2Vf7y.js";import{t as ce}from"./configStore-Bu9Y7yi8.js";import{_t as le,ct as j,dt as ue,ft as de,gt as fe,ht as pe,it as me,m as he,mt as ge,nt as _e,ot as ve,pt as ye,rt as be,s as xe,st as Se,ut as Ce}from"./index-C1m5EhFo.js";import{f as we,p as Te}from"./editor.api2-C8SBKnh3.js";import"./editor.main-CMmnTvm1.js";import{a as Ee,i as De,n as Oe,o as ke,r as Ae,t as je}from"./ts.worker-C3-5awnG.js";import{t as Me}from"./clipboard-DTy2aO_N.js";import{r as Ne}from"./relativeTime-D99DdDf4.js";D(),re();var Pe=a({__name:`MediaPreview`,props:{filePath:{type:String,required:!0},fileName:{type:String,required:!1}},setup(e,{expose:t}){t();let n=e,r=s(()=>ge(n.filePath)??`audio`),i=s(()=>pe(n.filePath)),a=s(()=>n.fileName||n.filePath.split(/[\\/]/).pop()||``),o=l(!0),c=l(!1),u=l(0),d=l(0),f=l(0),p=l(0);async function m(){try{let e=await(await fetch(`/api/editor/file?path=${encodeURIComponent(n.filePath)}&meta=1`)).json();e?.success&&typeof e.size==`number`&&(d.value=e.size)}catch{}}h(()=>n.filePath,()=>{o.value=!0,c.value=!1,u.value=0,d.value=0,f.value=0,p.value=0,m()},{immediate:!0});function g(e){let t=e.target;Number.isFinite(t.duration)&&t.duration>0&&(u.value=t.duration),t instanceof HTMLVideoElement&&(f.value=t.videoWidth,p.value=t.videoHeight),o.value=!1}function _(){o.value=!1}function v(){o.value=!1,c.value=!0}function y(e){if(!Number.isFinite(e)||e<=0)return`--:--`;let t=Math.floor(e),n=t%60,r=Math.floor(t/60)%60,i=Math.floor(t/3600),a=String(r).padStart(2,`0`);return i>0?`${i}:${a}:${String(n).padStart(2,`0`)}`:`${r}:${String(n).padStart(2,`0`)}`}function b(e){return!e||e<0?``:e>=1073741824?`${(e/1024/1024/1024).toFixed(2)} GB`:e>=1048576?`${(e/1024/1024).toFixed(1)} MB`:e>=1024?`${Math.round(e/1024)} KB`:`${e} B`}let x={props:n,kind:r,src:i,displayName:a,loading:o,error:c,duration:u,size:d,videoW:f,videoH:p,fetchSize:m,onLoadedMetadata:g,onCanPlay:_,onError:v,formatDuration:y,formatSize:b,metaLine:s(()=>{let e=[r.value===`video`?k(`@EDITOR:视频`):k(`@EDITOR:音频`)];u.value>0&&e.push(y(u.value)),f.value>0&&p.value>0&&e.push(`${f.value} × ${p.value}`);let t=b(d.value);return t&&e.push(t),e.join(` · `)}),get $t(){return k}};return Object.defineProperty(x,"__isScriptSetup",{enumerable:!1,value:!0}),x}});D(),i();var Fe=[`data-media-kind`,`data-media-path`],Ie={class:`media-preview-stage`},Le={key:0,class:`media-preview-error`},Re={class:`media-preview-error-title`},ze={class:`media-preview-error-path`},Be=[`src`],Ve={class:`media-preview-audio`},M=[`title`],N=[`src`],He={key:2,class:`media-preview-loading`},Ue={class:`media-preview-footer`},We={class:`media-preview-meta`},Ge=[`title`];function Ke(t,i,a,o,s,l){return e(),r(`div`,{class:`media-preview`,"data-media-kind":o.kind,"data-media-path":o.props.filePath},[n(`div`,Ie,[o.error?(e(),r(`div`,Le,[i[0]||=n(`svg`,{viewBox:`0 0 24 24`,width:`40`,height:`40`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.4`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`circle`,{cx:`12`,cy:`12`,r:`9`}),n(`line`,{x1:`12`,y1:`8`,x2:`12`,y2:`13`}),n(`line`,{x1:`12`,y1:`16.5`,x2:`12`,y2:`16.6`})],-1),n(`p`,Re,S(o.$t(`@EDITOR:无法播放该文件,可能是编码或格式不受支持`)),1),n(`p`,ze,S(o.props.filePath),1)])):(e(),r(f,{key:1},[c(` 视频:占满可用区域,等比缩放(黑边由舞台底色补) `),o.kind===`video`?(e(),r(`video`,{key:o.props.filePath,class:`media-preview-video`,src:o.src,controls:``,playsinline:``,preload:`metadata`,onLoadedmetadata:o.onLoadedMetadata,onCanplay:o.onCanPlay,onError:o.onError},null,40,Be)):(e(),r(f,{key:1},[c(` 音频:中间一块信息 + 原生控制条。不套"圆角 + 单边框"的卡片 `),n(`div`,Ve,[i[1]||=b(`<div class="media-preview-glyph" aria-hidden="true" data-v-35007775><svg viewBox="0 0 24 24" width="46" height="46" fill="none" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" data-v-35007775><path d="M3 17a3 3 0 1 0 6 0a3 3 0 0 0 -6 0" data-v-35007775></path><path d="M9 17v-13h10v13" data-v-35007775></path><path d="M9 8h10" data-v-35007775></path></svg></div>`,1),n(`p`,{class:`media-preview-title`,title:o.props.filePath},S(o.displayName),9,M),(e(),r(`audio`,{key:o.props.filePath,class:`media-preview-audio-el`,src:o.src,controls:``,preload:`metadata`,onLoadedmetadata:o.onLoadedMetadata,onCanplay:o.onCanPlay,onError:o.onError},null,40,N))])],2112)),o.loading?(e(),r(`div`,He,[i[2]||=n(`span`,{class:`media-preview-spinner`},null,-1),n(`span`,null,S(o.$t(`@EDITOR:正在载入媒体文件…`)),1)])):c(`v-if`,!0)],64))]),n(`div`,Ue,[n(`span`,We,S(o.metaLine),1),o.kind===`video`?(e(),r(`span`,{key:0,class:`media-preview-name`,title:o.props.filePath},S(o.displayName),9,Ge)):c(`v-if`,!0)])],8,Fe)}var qe=O(Pe,[[`render`,Ke],[`__scopeId`,`data-v-35007775`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/MediaPreview.vue`]]);D();var Je=a({__name:`MindmapPreview`,props:{content:{type:String,required:!0}},setup(e,{expose:t}){t();let n=e,r={props:n,data:s(()=>j(n.content||``,`未命名文档`)),get MindMap(){return Ce}};return Object.defineProperty(r,"__isScriptSetup",{enumerable:!1,value:!0}),r}});D();var Ye={class:`mindmap-preview`},Xe={class:`mindmap-preview-canvas`};function Ze(t,i,a,o,s,c){return e(),r(`div`,Ye,[i[0]||=n(`div`,{class:`mindmap-preview-header`},[n(`span`,{class:`mindmap-preview-title`},`整篇导图`),n(`span`,{class:`mindmap-preview-hint`},`基于整篇 Markdown 自动生成 · 阅读模式`)],-1),n(`div`,Xe,[y(o.MindMap,{data:o.data,"preview-mode":``},null,8,[`data`])])])}var Qe=O(Je,[[`render`,Ze],[`__scopeId`,`data-v-3969a8bf`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/MindmapPreview.vue`]]),$e=1080,et=6e5,tt=.86;function P(e){if(!e||e.startsWith(`data:`))return!1;if(e.startsWith(`blob:`)||e.startsWith(`/`))return!0;try{return new URL(e,location.href).origin===location.origin}catch{return!1}}async function F(e){try{let t=await fetch(e);if(!t.ok)return null;let n=await t.blob();return await new Promise(e=>{let t=new FileReader;t.onload=()=>e(t.result||``),t.onerror=()=>e(``),t.readAsDataURL(n)})}catch{return null}}function I(e){return new Promise(t=>{let n=!1,r=e=>{n||(n=!0,t(e))};if(typeof Image>`u`){r(e);return}let i=new Image,a=setTimeout(()=>r(e),4e3);i.onload=()=>{if(clearTimeout(a),!(i.naturalWidth>$e||e.length>et)){r(e);return}try{let t=Math.min(1,$e/i.naturalWidth),n=Math.max(1,Math.round(i.naturalWidth*t)),a=Math.max(1,Math.round(i.naturalHeight*t)),o=document.createElement(`canvas`);o.width=n,o.height=a;let s=o.getContext(`2d`);if(!s){r(e);return}s.fillStyle=`#ffffff`,s.fillRect(0,0,n,a),s.drawImage(i,0,0,n,a),r(o.toDataURL(`image/jpeg`,tt))}catch{r(e)}},i.onerror=()=>{clearTimeout(a),r(e)},i.src=e})}async function nt(e){let t=await F(e);return t?I(t):null}async function rt(e){let t=Array.from(e.querySelectorAll(`img`)).filter(e=>P(e.getAttribute(`src`)||``)),n=0;return await Promise.all(t.map(async e=>{let t=await nt(e.getAttribute(`src`)||``);t?e.setAttribute(`src`,t):n+=1})),n}function L(e){return e.replace(/&/g,`&`).replace(/</g,`<`).replace(/>/g,`>`).replace(/"/g,`"`).replace(/'/g,`'`)}var it={h1:`font-size:26px;font-weight:700;line-height:1.35;margin:28px 0 16px;color:#111;`,h2:`font-size:22px;font-weight:700;line-height:1.4;margin:26px 0 14px;color:#111;`,h3:`font-size:19px;font-weight:700;line-height:1.45;margin:22px 0 12px;color:#222;`,h4:`font-size:17px;font-weight:600;line-height:1.5;margin:20px 0 10px;color:#333;`,h5:`font-size:16px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#333;`,h6:`font-size:15px;font-weight:600;line-height:1.5;margin:18px 0 8px;color:#555;`,p:`font-size:16px;line-height:1.8;margin:16px 0;color:#333;`,li:`font-size:16px;line-height:1.8;margin:0 0 6px;color:#333;`,ul:`margin:16px 0;padding-left:24px;`,ol:`margin:16px 0;padding-left:24px;`,blockquote:`margin:16px 0;padding:8px 16px;border-left:4px solid #e2e2e2;background:#f7f7f7;color:#666;font-size:15px;line-height:1.8;`,hr:`border:none;border-top:1px solid #e5e5e5;margin:26px 0;`,a:`color:#576b95;text-decoration:none;`,strong:`font-weight:700;color:#111;`,em:`font-style:italic;color:#555;`,code:`font-family:Menlo,Consolas,Monaco,monospace;font-size:0.92em;background:#f2f3f5;color:#c7254e;padding:1px 5px;border-radius:3px;`,pre:`font-family:Menlo,Consolas,Monaco,monospace;font-size:13px;line-height:1.6;background:#f6f8fa;color:#24292f;padding:12px 14px;border-radius:6px;overflow-x:auto;margin:16px 0;`,table:`border-collapse:collapse;width:100%;margin:16px 0;font-size:14px;`,th:`border:1px solid #e0e0e0;padding:8px 10px;background:#f6f8fa;font-weight:600;text-align:left;color:#333;`,td:`border:1px solid #e0e0e0;padding:8px 10px;color:#333;`,img:`max-width:100%;height:auto;display:block;margin:16px auto;border-radius:6px;`};function at(e){e.querySelectorAll(`*`).forEach(e=>{let t=it[e.tagName.toLowerCase()];t&&e.setAttribute(`style`,t)}),e.querySelectorAll(`pre code`).forEach(e=>e.setAttribute(`style`,`background:none;padding:0;color:inherit;font-size:inherit;`))}async function ot(e,t){let n=e.cloneNode(!0),r=t?await rt(n):0;return{html:n.innerHTML,leftover:r}}async function st(e,t){let n=e.cloneNode(!0),r=t.inline?await rt(n):0;at(n);let i=(t.title||``).trim();return{html:`<section style="font-size:16px;line-height:1.8;color:#333;word-break:break-word;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif;">${i?`<h1 style="font-size:26px;font-weight:700;line-height:1.35;margin:0 0 22px;color:#111;">${L(i)}</h1>`:``}${n.innerHTML}</section>`,leftover:r}}D(),re();var ct=2,lt=6e4,ut=20,dt=2e4,ft=3e4,pt=300,mt=320,R=a({__name:`EditorView`,props:{pendingFilePath:{type:[String,null],required:!1}},setup(e,{expose:t}){t(),self.MonacoEnvironment={getWorker(e,t){return t===`json`?new De:t===`css`||t===`scss`||t===`less`?new Ae:t===`html`||t===`handlebars`||t===`razor`?new Oe:t===`typescript`||t===`javascript`?new je:new Ee}};let n=e,r=ce(),i=he(),a=l([]),c=l(!1),f=l(``),p=l(``),m=null;function g(){f.value=``,p.value=``,m&&=(clearTimeout(m),null)}h(f,e=>{m&&clearTimeout(m),m=setTimeout(()=>{p.value=e,m=null},180)});let _=l([]),v=l(0),y=l(``),b=l(!1),x=l(!1),S=null,C=0;function ee(){S?.abort(),S=null,C+=1,_.value=[],v.value=0,y.value=``,b.value=!1,x.value=!1}async function te(e){let t=e.trim(),n=r.currentDirectory;if(!n||t.length<ct){ee();return}if(t===y.value&&b.value)return;S?.abort();let i=++C,a=new AbortController;S=a,b.value=!0,y.value=t;try{let e=await(await fetch(`/api/search_content`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n,query:t}),signal:a.signal})).json().catch(()=>null);if(i!==C)return;if(!e?.success){_.value=[],v.value=0,x.value=!1;return}_.value=Array.isArray(e.files)?e.files:[],v.value=typeof e.totalMatches==`number`?e.totalMatches:0,x.value=!!e.truncated}catch(e){if(e?.name===`AbortError`||i!==C)return;_.value=[],v.value=0,x.value=!1}finally{i===C&&(b.value=!1)}}h(p,e=>{te(e)}),ne(()=>{m&&clearTimeout(m),S?.abort(),re(),Mt()});let w=null;function T(){re(),r.ui.fileTreeAutoRefresh&&(w=setInterval(()=>{document.hidden||r.currentDirectory&&(f.value.trim()||(M(),D.value||ge()))},lt))}function re(){w&&=(clearInterval(w),null)}h(()=>r.currentDirectory,async()=>{if(R=!1,ee(),T(),await Le(),j=``,E.value=[],await ge(!0),P.value.some(e=>e.isDirty)){R=!0;return}P.value=[],F.value=null,bt(),await _t()}),h(()=>r.ui.fileTreeAutoRefresh,()=>{T()});let E=l([]),ie=l(!1),D=l(!1),O=0,j=``,pe=0;async function ge(e=!1){let t=r.currentDirectory;if(!t){E.value=[],j=``;return}let n=j===t&&Date.now()-O<dt;if(!e&&n)return;let i=++pe;ie.value=!0;try{let n=new URLSearchParams({path:t,limit:String(ut)});e&&n.set(`refresh`,`1`);let r=await(await fetch(`/api/recent_files?${n.toString()}`)).json().catch(()=>null);if(i!==pe||!r?.success||!Array.isArray(r.items))return;E.value=r.items,O=Date.now(),j=t}catch{}finally{i===pe&&(ie.value=!1)}}function Ce(){D.value=!D.value,D.value||ge()}function Pe(e){return Ne(new Date(e.mtimeMs).toISOString())}function Fe(e){nt({name:e.name,path:e.path,type:`file`,depth:0})}async function Ie(e,t=0){let n=await(await fetch(`/api/browse_directory?path=${encodeURIComponent(e)}`)).json();return n.success?n.items.map(e=>({...e,depth:t,expanded:!1,loading:!1,children:(e.type,void 0)})):[]}async function Le(){let e=r.currentDirectory;if(e){c.value=!0;try{a.value=await Ie(e,0)}finally{c.value=!1}}}function Re(e,t=new Set){for(let n of e)n.type===`directory`&&n.expanded&&(t.add(n.path),n.children&&Re(n.children,t));return t}function ze(e,t=0){return(e||[]).map(e=>{let n={name:e.name,path:e.path,type:e.type,depth:t,expanded:!1,loading:!1};return n.type===`directory`&&Array.isArray(e.children)&&(n.children=ze(e.children,t+1),n.expanded=!0),n})}async function Be(e){let t=r.currentDirectory;if(!t)return null;try{let n=await(await fetch(`/api/browse_directory_tree`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t,expand:e})})).json().catch(()=>null);return!n?.success||!Array.isArray(n.items)?null:ze(n.items,0)}catch{return null}}function Ve(e,t){let n=new Map(e.map(e=>[e.path,e])),r=e.length!==t.length;if(!r){for(let n=0;n<t.length;n++)if(e[n].path!==t[n].path){r=!0;break}}for(let e=0;e<t.length;e++){let i=t[e],a=n.get(i.path);a&&(t[e]=a,a.name!==i.name&&(a.name=i.name,r=!0),a.type===`directory`&&a.expanded&&Array.isArray(i.children)&&(Array.isArray(a.children)?Ve(a.children,i.children)&&(a.children=i.children,r=!0):(a.children=i.children,r=!0)))}return r}async function M(e={}){if(!r.currentDirectory)return;let t=await Be([...Re(a.value)]);if(!t){e.notifyOnError&&A.error(k(`@EDITOR:刷新失败`));return}if(a.value.length===0){a.value=t;return}Ve(a.value,t)&&(a.value=t)}async function N(e){if(e.type===`directory`){if(e.expanded)e.expanded=!1;else{if(!e.children){e.loading=!0;try{e.children=await Ie(e.path,e.depth+1)}finally{e.loading=!1}}e.expanded=!0}}}function He(e){let t=[];for(let n of e)t.push(n),n.type===`directory`&&n.expanded&&n.children&&t.push(...He(n.children));return t}let Ue=s(()=>p.value.trim().toLowerCase());function We(e,t){if(!t)return e;let n=[];for(let r of e){let e=r.name.toLowerCase().includes(t);if(r.type===`directory`){let i=r.children?We(r.children,t):[];if(!e&&i.length===0)continue;n.push({...r,expanded:!0,children:r.children===void 0?void 0:i})}else e&&n.push(r)}return n}function Ge(e,t){for(let n of e){if(n.path===t)return n;if(n.children){let e=Ge(n.children,t);if(e)return e}}return null}let Ke=s(()=>We(a.value,Ue.value)),Je=s(()=>Ue.value.length>0&&Ke.value.length===0),Ye=s(()=>Je.value&&_.value.length===0&&!b.value);function Xe(e){let t=p.value.trim();if(!t)return[{text:e,hit:!1}];let n=e.toLowerCase(),r=t.toLowerCase(),i=[],a=0,o=n.indexOf(r,a);for(;o!==-1;)o>a&&i.push({text:e.slice(a,o),hit:!1}),i.push({text:e.slice(o,o+r.length),hit:!0}),a=o+r.length,o=n.indexOf(r,a);return a<e.length&&i.push({text:e.slice(a),hit:!1}),i}async function Ze(e,t){if(await nt({name:e.name,path:e.path,type:`file`,depth:0}),!t||t<1)return;await u();let n=z.value;n&&n.getModel()&&L()?.path===e.path&&(n.revealLineInCenter(t,Te.ScrollType.Smooth),n.setPosition({lineNumber:t,column:1}),n.focus())}let $e=l(null);function et(){let e=$e.value;e&&(e.focus(),e.select())}function tt(){f.value?(g(),$e.value?.focus()):($e.value?.blur(),z.value?.focus())}let P=l([]),F=l(null),I=l(null);async function nt(e){if(I.value=e,e.type!==`file`){N(Ge(a.value,e.path)??e);return}let t=P.value.find(t=>t.path===e.path);if(console.log(`[debug-open-in-editor] EditorView openFile existing tab check:`,{path:e.path,found:!!t,tabsCount:P.value.length}),t){F.value=e.path,u(()=>H());return}let n=e.name.split(`.`).pop()||``;if(ye.has(n.toLowerCase())){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`media`,diskMtimeMs:null};P.value.push(t),F.value=e.path;return}if(hn.has(n.toLowerCase())){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null};P.value.push(t),F.value=e.path,X.value=!0;return}if(de(e.name)){let t={path:e.path,name:e.name,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null};P.value.push(t),F.value=e.path,Z.value=!1,X.value=!0;return}try{let t=await fetch(`/api/editor/file?path=${encodeURIComponent(e.path)}`),r=await t.json();if(console.log(`[debug-open-in-editor] EditorView fetch /api/editor/file response:`,{path:e.path,status:t.status,data:r}),!r.success){A.error(`${k(`@EDITOR:打开文件失败: `)}${r.error}`);return}let i=ke(n),a=B.get(e.path);a&&!a.isDisposed()&&a.setValue(r.content);let o={path:e.path,name:e.name,content:r.content,originalContent:r.content,isDirty:!1,language:i,diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null};console.log(`[debug-open-in-editor] EditorView pushing tab:`,{path:o.path,name:o.name,contentLen:o.content.length,lang:o.language}),P.value.push(o),F.value=e.path,console.log(`[debug-open-in-editor] EditorView tabs after push:`,P.value.length,`activeTabPath=`,F.value)}catch(e){console.log(`[debug-open-in-editor] EditorView fetch threw:`,e),A.error(`${k(`@EDITOR:打开文件失败: `)}${e.message}`)}}h(()=>n.pendingFilePath,async e=>{if(console.log(`[debug-open-in-editor] EditorView watcher fired, filePath=`,e),!e)return;await u();let t=e.split(/[\\/]/).pop()||e;console.log(`[debug-open-in-editor] EditorView calling openFile, name=`,t,`path=`,e),await nt({name:t,path:e,type:`file`,depth:0}),console.log(`[debug-open-in-editor] EditorView openFile returned`)},{immediate:!0});function rt(e,t){t.stopPropagation();let n=P.value.findIndex(t=>t.path===e);n!==-1&&(!P.value[n].isDirty||confirm(k(`@EDITOR:文件未保存,确认关闭?`)))&&(P.value.splice(n,1),F.value===e&&(F.value=P.value[Math.min(n,P.value.length-1)]?.path??null))}let L=()=>P.value.find(e=>e.path===F.value)??null,it=s(()=>({expandedDirs:[...Re(a.value)],tabs:P.value.map(e=>e.path),activeTab:F.value})),at=!1,R=!1;function ht(){R&&!at&&r.isUiLoaded&&r.saveEditorWorkspace(it.value)}h(it,()=>ht());async function gt(e){if(P.value.some(t=>t.path===e))return;let t=e.split(/[\\/]/).pop()||e,n=(t.split(`.`).pop()||``).toLowerCase();if(ye.has(n)){P.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`media`,diskMtimeMs:null});return}if(hn.has(n)){P.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`plaintext`,diskMtimeMs:null});return}if(de(t)){P.value.push({path:e,name:t,content:``,originalContent:``,isDirty:!1,language:`office`,diskMtimeMs:null});return}try{let r=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();if(!r.success)return;let i=B.get(e);i&&!i.isDisposed()&&z.value?.getModel()!==i&&(i.dispose(),B.delete(e)),P.value.push({path:e,name:t,content:r.content,originalContent:r.content,isDirty:!1,language:ke(n),diskMtimeMs:typeof r.mtimeMs==`number`?r.mtimeMs:null})}catch{}}async function _t(){try{for(let e=0;e<100&&!r.isUiLoaded;e++)await new Promise(e=>setTimeout(e,50));if(!r.isUiLoaded)return;G.value=r.ui.editorSidebarWidth;let e=r.getEditorWorkspace();if(!e)return;at=!0;try{if(e.expandedDirs.length>0){let t=await Be(e.expandedDirs);t&&(a.value=t)}for(let t of e.tabs)await gt(t);if(!n.pendingFilePath&&e.activeTab&&P.value.some(t=>t.path===e.activeTab)){F.value=e.activeTab;let t=L(),n=(t?.name.split(`.`).pop()||``).toLowerCase();t&&(hn.has(n)||de(t.name))&&(X.value=!0)}}finally{at=!1}}finally{R=!0,ht()}}let vt=l(null),z=o(null),B=new Map;function yt(e){let t=B.get(e.path);return(!t||t.isDisposed())&&(t=Te.createModel(e.content,e.language,we.file(e.path)),B.set(e.path,t)),t}function bt(){z.value?.setModel(null);for(let e of B.values())e.isDisposed()||e.dispose();B.clear()}let V=!1;function xt(e){let t=e.target;V=!!(t&&t.closest&&t.closest(`.preview-panel`))}function St(){if(!vt.value)return;W.value?.addEventListener(`mousedown`,xt,!0);let e=document.documentElement.getAttribute(`data-theme`)===`dark`;z.value=Te.create(vt.value,{theme:e?`vs-dark`:`vs`,fontSize:13,lineHeight:20,fontFamily:`'JetBrains Mono', 'Fira Code', 'Cascadia Code', Consolas, monospace`,minimap:{enabled:!0},scrollBeyondLastLine:!1,renderWhitespace:`selection`,automaticLayout:!0,tabSize:2,wordWrap:`off`,smoothScrolling:!0,cursorBlinking:`smooth`,padding:{top:8,bottom:8},editContext:!1}),z.value.onDidChangeModelContent(()=>{let e=L();if(!e)return;let t=z.value.getValue();e.content=t,e.isDirty=t!==e.originalContent}),z.value.onDidBlurEditorText(()=>{r.ui.editorAutoSave&&L()?.isDirty&&Pt(!1),requestAnimationFrame(()=>{if(!W.value||W.value.offsetParent===null)return;let e=V;if(V=!1,e)return;let t=document.activeElement;t&&(t.tagName===`INPUT`||t.tagName===`TEXTAREA`||t.isContentEditable||t.classList?.contains(`native-edit-context`)||t.classList?.contains(`monaco-editor`))||H()})})}h(F,e=>{if(!z.value||!e)return;let t=P.value.find(t=>t.path===e);if(!t)return;let n=yt(t);z.value.setModel(n),u(()=>H()),Ot(e)});function H(){if(!z.value)return;z.value.focus();let e=document.querySelector(`.monaco-editor .native-edit-context`);e&&document.activeElement!==e&&requestAnimationFrame(()=>e.focus?.())}let Ct=0,wt=new Map;async function Tt(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}&meta=1`)).json();return!t?.success||typeof t.mtimeMs!=`number`?null:{mtimeMs:t.mtimeMs}}catch{return null}}async function Et(e){try{let t=await(await fetch(`/api/editor/file?path=${encodeURIComponent(e)}`)).json();return t?.success?{content:t.content,mtimeMs:typeof t.mtimeMs==`number`?t.mtimeMs:null}:null}catch{return null}}function Dt(e,t,n){e.content=t,e.originalContent=t,e.isDirty=!1,e.diskMtimeMs=n;let r=B.get(e.path);if(!r||r.isDisposed())return;let i=z.value;if(!i||i.getModel()!==r){r.setValue(t);return}let a=i.saveViewState();r.pushEditOperations([],[{range:r.getFullModelRange(),text:t}],()=>null),i.restoreViewState(a)}async function Ot(e){if(!e)return;let t=P.value.find(t=>t.path===e);if(!t||t.diskMtimeMs===null)return;let n=++Ct,r=await Tt(e);if(n!==Ct||P.value.find(t=>t.path===e)!==t||!r||r.mtimeMs===t.diskMtimeMs)return;if(t.isDirty){if(wt.get(e)===r.mtimeMs)return;wt.set(e,r.mtimeMs);try{await ae.confirm(k(`@EDITOR:这个文件在磁盘上已被改动,你这边也有未保存的编辑。重新加载会丢弃你的改动。`),k(`@EDITOR:文件已被外部改动`),{confirmButtonText:k(`@EDITOR:重新加载`),cancelButtonText:k(`@EDITOR:保留我的`),type:`warning`})}catch{return}if(t.isDirty)return}let i=await Et(e);i&&P.value.find(t=>t.path===e)===t&&Dt(t,i.content,i.mtimeMs)}function kt(){document.hidden||Ot(F.value)}let At=null;function jt(){Mt(),At=setInterval(()=>{document.hidden||Ot(F.value)},ft)}function Mt(){At&&=(clearInterval(At),null)}h(()=>P.value.filter(e=>e.isDirty).length,e=>{i.setDirtyCount(e)},{immediate:!0}),h(F,e=>{let t=P.value.find(t=>t.path===e)??null;i.setActiveFile(t?.path??``,t?.name??``)},{immediate:!0}),ne(()=>i.setDirtyCount(0)),ve(()=>{let e=document.documentElement.getAttribute(`data-theme`)===`dark`;Te.setTheme(e?`vs-dark`:`vs`)});let U=null;function Nt(){if(U||!W.value)return;let e=[W.value],t=W.value.parentElement;for(;t;){if(t.classList.contains(`view-pane`)||t.classList.contains(`editor-pane`)){e.push(t);break}t=t.parentElement}U=new MutationObserver(()=>{W.value&&W.value.offsetParent!==null&&F.value&&z.value&&(Ot(F.value),requestAnimationFrame(()=>{let e=document.activeElement;e&&(e.tagName===`INPUT`||e.tagName===`TEXTAREA`||e.isContentEditable||e.classList?.contains(`native-edit-context`)||e.classList?.contains(`monaco-editor`))||H()}))});let n=U;e.forEach(e=>n.observe(e,{attributes:!0,attributeFilter:[`style`,`class`,`hidden`]}))}d(async()=>{St(),await Le(),ge(!0),await _t(),Nt(),T(),window.addEventListener(`focus`,kt),document.addEventListener(`visibilitychange`,kt),jt(),F.value&&u(()=>H())}),ne(()=>{W.value?.removeEventListener(`mousedown`,xt,!0),U?.disconnect(),U=null,window.removeEventListener(`focus`,kt),document.removeEventListener(`visibilitychange`,kt),z.value?.dispose(),B.forEach(e=>e.dispose()),B.clear()});async function Pt(e=!1){let t=L();if(t&&!(_n.value||vn.value||yn.value))try{let n=await(await fetch(`/api/editor/file`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:t.path,content:t.content})})).json();if(!n.success){A.error(`${k(`@EDITOR:保存失败: `)}${n.error}`);return}t.originalContent=t.content,t.isDirty=!1,typeof n.mtimeMs==`number`&&(t.diskMtimeMs=n.mtimeMs),e||A.success(k(`@EDITOR:已保存`))}catch(e){A.error(`${k(`@EDITOR:保存失败: `)}${e.message}`)}}function Ft(e){let t=e.ctrlKey||e.metaKey;if(t&&e.key.toLowerCase()===`f`){e.preventDefault(),et();return}t&&e.key===`s`&&(e.preventDefault(),Pt())}d(()=>window.addEventListener(`keydown`,Ft)),ne(()=>window.removeEventListener(`keydown`,Ft));let W=l(null),G=l(r.ui.editorSidebarWidth),It=!1,Lt=0,Rt=0;function zt(e){It=!0,Lt=e.clientX,Rt=G.value,document.addEventListener(`mousemove`,Bt),document.addEventListener(`mouseup`,Vt),e.preventDefault()}function Bt(e){if(!It)return;let t=e.clientX-Lt;G.value=Math.max(140,Math.min(400,Rt+t))}function Vt(){It=!1,document.removeEventListener(`mousemove`,Bt),document.removeEventListener(`mouseup`,Vt),G.value!==r.ui.editorSidebarWidth&&r.setEditorSidebarWidth(G.value)}function Ht(e){return e.type===`directory`?le(e.name):fe(e.name)}let K=l(null),q=l(null),Ut=l(null),Wt=l(null);function Gt(){let e=I.value;return e?e.type===`directory`?{parentPath:e.path,afterNode:e,depth:e.depth+1}:{parentPath:e.path.includes(`/`)||e.path.includes(`\\`)?e.path.replace(/[\\/][^\\/]+$/,``):r.currentDirectory??``,afterNode:e,depth:e.depth}:{parentPath:r.currentDirectory??``,afterNode:null,depth:0}}async function Kt(){let e=Gt();I.value?.type===`directory`&&!I.value.expanded&&await N(I.value),K.value={...e,kind:`file`,value:``},await u(),Ut.value?.focus()}async function qt(){let e=Gt();I.value?.type===`directory`&&!I.value.expanded&&await N(I.value),K.value={...e,kind:`directory`,value:``},await u(),Ut.value?.focus()}function Jt(){K.value=null}async function Yt(){let e=K.value;if(!e||!e.value.trim()){K.value=null;return}let t=e.value.trim(),n=e.parentPath.replace(/[/\\]$/,``)+`/`+t;if(e.kind===`file`){let e=await(await fetch(`/api/editor/file`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){A.error(e.error);return}A.success(k(`@EDITOR:创建成功`))}else{let e=await(await fetch(`/api/editor/directory`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:n})})).json();if(!e.success){A.error(e.error);return}A.success(k(`@EDITOR:创建成功`))}K.value=null,await M()}function Xt(e){e.key===`Enter`&&(e.preventDefault(),Yt()),e.key===`Escape`&&(e.preventDefault(),Jt())}let J=l(null),Zt=l(null);function Qt(e,t){e.preventDefault(),J.value={x:e.clientX,y:e.clientY,node:t}}function Y(){J.value=null}async function $t(){let e=J.value?.node;Y(),e&&(I.value=e),e?.type===`directory`&&!e.expanded&&await N(e);let t=Gt();K.value={...t,kind:`file`,value:``},await u(),Ut.value?.focus()}async function en(){let e=J.value?.node;Y(),e&&(I.value=e),e?.type===`directory`&&!e.expanded&&await N(e);let t=Gt();K.value={...t,kind:`directory`,value:``},await u(),Ut.value?.focus()}async function tn(){let e=J.value?.node;Y(),e&&(q.value={node:e,value:e.name},await u(),Wt.value?.focus(),Wt.value?.select())}async function nn(){let e=q.value;if(!e||!e.value.trim()||e.value.trim()===e.node.name){q.value=null;return}let t=e.value.trim(),n=e.node.path.replace(/[\\/][^\\/]+$/,``).replace(/[/\\]$/,``)+`/`+t,r=await(await fetch(`/api/editor/rename`,{method:`PUT`,headers:{"Content-Type":`application/json`},body:JSON.stringify({oldPath:e.node.path,newPath:n})})).json();if(!r.success){A.error(r.error);return}let i=P.value.find(t=>t.path===e.node.path);i&&(i.path=n,i.name=t,F.value===e.node.path&&(F.value=n)),q.value=null,await M()}function rn(e){e.key===`Enter`&&(e.preventDefault(),nn()),e.key===`Escape`&&(e.preventDefault(),q.value=null)}async function an(){let e=J.value?.node;if(Y(),!e)return;let t=e.type===`directory`?k(`@EDITOR:文件夹`):k(`@EDITOR:文件`);if(!confirm(`${k(`@EDITOR:确认删除`)} ${t} "${e.name}"?`))return;let n=await(await fetch(`/api/editor/entry?path=${encodeURIComponent(e.path)}`,{method:`DELETE`})).json();if(!n.success){A.error(n.error);return}let r=P.value.findIndex(t=>t.path===e.path);r!==-1&&(P.value.splice(r,1),F.value===e.path&&(F.value=P.value[Math.max(0,r-1)]?.path??null)),A.success(k(`@EDITOR:已删除`)),await M()}async function on(){let e=J.value?.node;if(Y(),e)try{let t=await(await fetch(`/api/editor/reveal`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||A.error(t.error)}catch(e){A.error(e?.message||String(e))}}function sn(e){let t=r.currentDirectory;if(!t)return e;let n=e=>e.replace(/\\/g,`/`).replace(/\/+$/,``),i=n(t),a=n(e);return a===i?`.`:a.startsWith(i+`/`)?a.slice(i.length+1):a}async function cn(){let e=J.value?.node;Y(),e&&(await Me(e.path)?A.success(k(`@EDITOR:已复制到剪贴板`)):A.error(k(`@EDITOR:复制失败`)))}async function ln(){let e=J.value?.node;if(Y(),!e)return;let t=sn(e.path);await Me(t)?A.success(k(`@EDITOR:已复制到剪贴板`)):A.error(k(`@EDITOR:复制失败`))}async function un(){let e=J.value?.node;if(Y(),e)try{let t=await(await fetch(`/api/editor/open-in-vscode`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||A.error(t.error||k(`@EDITOR:VSCode 未安装`))}catch(e){A.error(e?.message||String(e))}}let dn=new Set([`html`,`htm`]),fn=s(()=>{let e=J.value?.node;if(!e||e.type!==`file`)return!1;let t=e.name.slice(e.name.lastIndexOf(`.`)+1).toLowerCase();return dn.has(t)});async function pn(){let e=J.value?.node;if(Y(),e)try{let t=await(await fetch(`/api/editor/open-in-browser`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({path:e.path})})).json();t.success||A.error(t.error||k(`@EDITOR:浏览器打开失败`))}catch(e){A.error(e?.message||String(e))}}d(()=>{document.addEventListener(`click`,Y)}),ne(()=>{document.removeEventListener(`click`,Y)});let mn=new Set([`md`,`html`,`htm`,`svg`]),hn=new Set([`png`,`jpg`,`jpeg`,`gif`,`webp`,`ico`,`bmp`]),X=l(!1),Z=l(!1),gn=l(0),Q=s(()=>P.value.find(e=>e.path===F.value)??null),_n=s(()=>Q.value?.language===`plaintext`&&Q.value?.content===``),vn=s(()=>Q.value?.language===`office`),yn=s(()=>Q.value?.language===`media`),$=s(()=>(Q.value?.name??``).split(`.`).pop()?.toLowerCase()??``),bn=s(()=>mn.has($.value)||hn.has($.value)||de($.value)),xn=s(()=>((Q.value?.content??``).match(/^#{1,6}\s+/gm)||[]).length),Sn=s(()=>$.value===`md`&&xn.value>0),Cn=l(null);async function wn(){await u();let e=Cn.value;if(!e)return;let t=e.querySelector(`.editor-tab.active`);if(!t)return;let n=e.getBoundingClientRect(),r=t.getBoundingClientRect();r.left<n.left?e.scrollLeft-=n.left-r.left:r.right>n.right&&(e.scrollLeft+=r.right-n.right)}h(F,()=>{X.value&&!bn.value&&(X.value=!1),Z.value&&!Sn.value&&(Z.value=!1),wn()});function Tn(){bn.value&&(X.value||(Z.value=!1),X.value=!X.value)}function En(){Sn.value&&(Z.value||(X.value=!1),Z.value=!Z.value)}let Dn=s(()=>gn.value<=0||P.value.length===0?{flexBasis:`0px`}:{flex:`0 0 ${gn.value}px`,maxWidth:`calc(100% - 320px)`}),On=l(null),kn=l(!1),An=l(``),jn=l(!0),Mn=null,Nn=s(()=>!Z.value&&X.value&&$.value===`md`&&!!Q.value);function Pn(){return Q.value?.content??``}function Fn(){return Pn().match(/^\s*#\s+(.+?)\s*(?:\r?\n|$)/)?.[1]?.trim()??``}function In(e,t,n){if(!e){A.error(k(`@EDITOR:复制失败`));return}An.value=n,Mn&&clearTimeout(Mn),Mn=setTimeout(()=>{An.value=``},1800),t>0?A.warning(k(`@EDITOR:{n} 张图片未能转成 Base64,已保留原地址`,{n:t})):A.success(k(`@EDITOR:已复制`))}async function Ln(){In(await Me(Pn()),0,`md`)}async function Rn(){let e=On.value?.getRenderedElement();if(e){kn.value=!0;try{let{html:t,leftover:n}=await ot(e,jn.value);In(await Me(t),n,`html`)}finally{kn.value=!1}}}function zn(e){let t=document.createElement(`div`);t.style.cssText=`position:fixed;top:-9999px;left:-9999px;opacity:0;`,t.innerHTML=e,document.body.appendChild(t);try{let e=window.getSelection(),n=document.createRange();n.selectNodeContents(t),e?.removeAllRanges(),e?.addRange(n);let r=document.execCommand(`copy`);return e?.removeAllRanges(),r}catch{return!1}finally{document.body.removeChild(t)}}async function Bn(){let e=On.value?.getRenderedElement();if(e){kn.value=!0;try{let{html:t,leftover:n}=await st(e,{inline:jn.value,title:Fn()}),r=Pn(),i=!1;try{navigator.clipboard?.write&&typeof ClipboardItem<`u`&&(await navigator.clipboard.write([new ClipboardItem({"text/html":new Blob([t],{type:`text/html`}),"text/plain":new Blob([r],{type:`text/plain`})})]),i=!0)}catch{i=!1}i||=zn(t),In(i,n,`rich`)}finally{kn.value=!1}}}let Vn=s(()=>{let e=Q.value;if(!e)return``;let t=$.value,n=document.documentElement.getAttribute(`data-theme`)===`light`?`#ffffff`:`#0d1117`;return t===`html`||t===`htm`?be(e.content):t===`svg`?`<!DOCTYPE html><html><head><meta charset="utf-8"><style>html,body{margin:0;padding:0;background:${n};display:flex;align-items:center;justify-content:center;min-height:100vh;}svg{max-width:100%;max-height:90vh;}</style></head><body>${e.content}</body></html>`:``}),Hn=!1,Un=0,Wn=0,Gn=0;function Kn(e){let t=e.currentTarget,n=t.parentElement;if(!n)return;let r=n.getBoundingClientRect(),i=t.getBoundingClientRect();Hn=!0,Un=e.clientX,Wn=r.right-i.right,Gn=Math.max(pt,r.width-mt),document.addEventListener(`mousemove`,qn),document.addEventListener(`mouseup`,Jn),document.body.style.cursor=`col-resize`,document.body.style.userSelect=`none`,e.preventDefault()}function qn(e){if(!Hn)return;let t=Un-e.clientX;gn.value=Math.round(Math.max(pt,Math.min(Gn,Wn+t)))}function Jn(){Hn=!1,document.removeEventListener(`mousemove`,qn),document.removeEventListener(`mouseup`,Jn),document.body.style.cursor=``,document.body.style.userSelect=``}let Yn={props:n,configStore:r,editorTabsStore:i,treeNodes:a,treeLoading:c,searchQuery:f,debouncedSearchQuery:p,get searchDebounceTimer(){return m},set searchDebounceTimer(e){m=e},clearSearch:g,CONTENT_SEARCH_MIN_LEN:ct,contentHits:_,contentTotalMatches:v,contentQuery:y,contentSearching:b,contentTruncated:x,get contentAbort(){return S},set contentAbort(e){S=e},get contentSeq(){return C},set contentSeq(e){C=e},resetContentSearch:ee,runContentSearch:te,TREE_POLL_MS:lt,get treePollTimer(){return w},set treePollTimer(e){w=e},startTreePolling:T,stopTreePolling:re,RECENT_FILES_LIMIT:ut,RECENT_FILES_STALE_MS:dt,recentFiles:E,recentFilesLoading:ie,recentFilesCollapsed:D,get recentFilesLoadedAt(){return O},set recentFilesLoadedAt(e){O=e},get recentFilesLoadedRoot(){return j},set recentFilesLoadedRoot(e){j=e},get recentFilesSeq(){return pe},set recentFilesSeq(e){pe=e},loadRecentFiles:ge,toggleRecentFiles:Ce,recentFileTime:Pe,openRecentFile:Fe,loadDir:Ie,initTree:Le,collectExpandedPaths:Re,toTreeNodes:ze,fetchTreeSnapshot:Be,reconcileTree:Ve,refreshTree:M,toggleDir:N,flattenTree:He,searchQueryLower:Ue,filterTree:We,findNodeByPath:Ge,visibleTree:Ke,noSearchResults:Je,noAnySearchResults:Ye,highlightText:Xe,openContentHit:Ze,searchInputRef:$e,focusSearchInput:et,onSearchEscape:tt,tabs:P,activeTabPath:F,selectedNode:I,openFile:nt,closeTab:rt,activeTab:L,workspaceSnapshot:it,get workspaceRestoring(){return at},set workspaceRestoring(e){at=e},get workspaceHydrated(){return R},set workspaceHydrated(e){R=e},persistWorkspace:ht,restoreTab:gt,restoreWorkspace:_t,editorContainerRef:vt,editorInstance:z,modelCache:B,getOrCreateModel:yt,disposeAllModels:bt,get pointerDownInPreview(){return V},set pointerDownInPreview(e){V=e},onEditorMouseDownCapture:xt,mountEditor:St,focusEditor:H,get diskSyncSeq(){return Ct},set diskSyncSeq(e){Ct=e},diskConflictPromptedAt:wt,fetchFileMeta:Tt,fetchFileContent:Et,applyDiskContent:Dt,syncActiveTabWithDisk:Ot,handleWindowFocus:kt,DISK_SYNC_POLL_MS:ft,get diskSyncTimer(){return At},set diskSyncTimer(e){At=e},startDiskSyncPolling:jt,stopDiskSyncPolling:Mt,get viewVisibilityObserver(){return U},set viewVisibilityObserver(e){U=e},setupViewVisibilityObserver:Nt,saveCurrentFile:Pt,handleKeydown:Ft,containerRef:W,sidebarWidth:G,get isResizing(){return It},set isResizing(e){It=e},get resizeStartX(){return Lt},set resizeStartX(e){Lt=e},get resizeStartW(){return Rt},set resizeStartW(e){Rt=e},startSidebarResize:zt,onSidebarResize:Bt,stopSidebarResize:Vt,getNodeSpriteId:Ht,inlineInput:K,renameInput:q,inlineInputRef:Ut,renameInputRef:Wt,getTargetDir:Gt,startNewFile:Kt,startNewFolder:qt,cancelInlineInput:Jt,confirmInlineInput:Yt,handleInlineKeydown:Xt,ctxMenu:J,ctxMenuRef:Zt,openContextMenu:Qt,closeContextMenu:Y,ctxNewFile:$t,ctxNewFolder:en,ctxRename:tn,confirmRename:nn,handleRenameKeydown:rn,ctxDelete:an,ctxRevealInExplorer:on,toWorkspaceRelative:sn,ctxCopyAbsolutePath:cn,ctxCopyRelativePath:ln,ctxOpenInVscode:un,BROWSER_OPEN_EXTS:dn,ctxMenuCanOpenInBrowser:fn,ctxOpenInBrowser:pn,PREVIEW_TEXT_EXTS:mn,IMAGE_EXTS:hn,showPreview:X,showMindmap:Z,previewWidth:gn,activeTabRef:Q,activeTabIsImage:_n,activeTabIsOffice:vn,activeTabIsMedia:yn,activeExt:$,isPreviewable:bn,mindmapTitleCount:xn,isMindmapable:Sn,tabsScrollRef:Cn,scrollActiveTabIntoView:wn,togglePreview:Tn,toggleMindmap:En,rightPaneStyle:Dn,mdPreviewRef:On,mdCopyBusy:kn,mdCopiedType:An,mdCopyInlineImages:jn,get mdCopiedTimer(){return Mn},set mdCopiedTimer(e){Mn=e},mdCopyAvailable:Nn,mdSourceText:Pn,mdDocTitle:Fn,mdCopyFeedback:In,copyMarkdownSource:Ln,copyRenderedHtml:Rn,copyRichTextBySelection:zn,copyRichTextToClipboard:Bn,previewSrcdoc:Vn,PREVIEW_MIN_WIDTH:pt,EDITOR_MIN_WIDTH:mt,get isPreviewResizing(){return Hn},set isPreviewResizing(e){Hn=e},get previewResizeStartX(){return Un},set previewResizeStartX(e){Un=e},get previewResizeStartW(){return Wn},set previewResizeStartW(e){Wn=e},get previewResizeMaxW(){return Gn},set previewResizeMaxW(e){Gn=e},startPreviewResize:Kn,onPreviewResize:qn,stopPreviewResize:Jn,get $t(){return k},get ElTooltip(){return oe},get getFileIconClass(){return fe},ImagePreview:ue,MediaPreview:qe,OfficePreview:me,MarkdownPreview:Se,MindmapPreview:Qe,EmptyState:xe,SvgIcon:se,get PREVIEW_IFRAME_SANDBOX(){return _e}};return Object.defineProperty(Yn,"__isScriptSetup",{enumerable:!1,value:!0}),Yn}});D(),i(),v();var ht={class:`editor-view`,ref:`containerRef`},gt={class:`sidebar-header`},_t={class:`sidebar-title`},vt={class:`sidebar-actions`},z={class:`sidebar-search`},B=[`placeholder`,`title`],yt=[`title`,`aria-label`],bt={key:0,class:`sidebar-tree`},V={key:0,class:`search-section-head`},xt={key:1,class:`tree-arrow-spacer`},St={class:`tree-icon mit-icon`,"aria-hidden":`true`},H=[`xlink:href`],Ct=[`onClick`,`onContextmenu`],wt={key:1,class:`tree-arrow-spacer`},Tt={key:2,class:`tree-icon mit-icon`,"aria-hidden":`true`},Et=[`xlink:href`],Dt={key:3,class:`tree-icon mit-icon`,"aria-hidden":`true`},Ot=[`xlink:href`],kt=[`title`],At={key:0,class:`tree-name-hit`},jt={key:4,class:`tree-loading`},Mt={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},U={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},Nt=[`placeholder`],Pt={key:1,class:`tree-node tree-inline-input-row`,style:{paddingLeft:`12px`}},Ft={key:0,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--color-warning-dark)`}},W={key:1,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{"flex-shrink":`0`,color:`var(--text-meta)`}},G=[`placeholder`],It=[`data-query`],Lt={key:0,class:`content-results-status`},Rt={class:`search-section-head`},zt={class:`search-section-count`},Bt={key:0,class:`search-section-note`},Vt=[`title`,`onClick`],Ht={class:`tree-icon mit-icon`,"aria-hidden":`true`},K=[`xlink:href`],q={class:`content-hit-name`},Ut={class:`content-hit-dir`},Wt={class:`content-hit-total`},Gt=[`title`,`onClick`],Kt={class:`content-hit-ln`},qt={class:`content-hit-text`},Jt={key:0,class:`content-hit-mark`},Yt={key:3,class:`tree-empty`},Xt={key:1,class:`sidebar-loading`},J={key:2,class:`recent-files`},Zt={class:`recent-files-head`},Qt=[`aria-expanded`,`title`,`onKeydown`],Y={class:`recent-files-title`},$t={key:0,class:`recent-files-count`},en=[`title`,`aria-label`],tn={class:`recent-files-body`},nn={key:0,class:`recent-files-status`},rn={key:1,class:`recent-files-empty`},an=[`title`,`onClick`],on={class:`tree-icon mit-icon`,"aria-hidden":`true`},sn=[`xlink:href`],cn={class:`recent-file-main`},ln={class:`recent-file-top`},un={class:`recent-file-name`},dn={class:`recent-file-time`},fn={key:0,class:`recent-file-dir`},pn={class:`editor-main`},mn={class:`editor-tabs`},hn={class:`editor-tabs-scroll`,ref:`tabsScrollRef`},X=[`onClick`,`title`],Z={class:`tab-name`},gn={key:0,class:`tab-dirty-dot`},Q=[`onClick`],_n={class:`editor-tabs-actions`},vn=[`title`],yn=[`disabled`,`title`],$={class:`editor-body`},bn={key:1,class:`image-tab-placeholder`},xn={viewBox:`0 0 24 24`,width:`56`,height:`56`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,style:{opacity:`.35`}},Sn={class:`image-tab-placeholder-title`},Cn={class:`image-tab-placeholder-hint`},wn={class:`preview-header`},Tn={class:`preview-title`},En={class:`preview-ext-badge`},Dn=[`title`],On={class:`preview-body`},kn={key:0,class:`preview-copybar`},An=[`disabled`,`title`],jn=[`disabled`,`title`],Mn=[`disabled`,`title`],Nn=[`title`],Pn=[`sandbox`,`srcdoc`];function Fn(i,a,o,s,l,u){return e(),r(f,null,[n(`div`,ht,[c(` 左侧文件树 `),n(`div`,{class:`editor-sidebar`,style:T({width:s.sidebarWidth+`px`})},[n(`div`,gt,[n(`span`,_t,S(s.$t(`@EDITOR:资源管理器`)),1),n(`div`,vt,[y(s.ElTooltip,{content:s.$t(`@EDITOR:新建文件`),placement:`bottom`,"show-after":300},{default:te(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:s.startNewFile},[c(` file-plus.svg(Tabler icons,MIT) `),a[12]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M14 3v4a1 1 0 0 0 1 1h4`}),n(`path`,{d:`M17 21h-10a2 2 0 0 1-2-2v-14a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2`}),n(`path`,{d:`M12 11l0 6`}),n(`path`,{d:`M9 14l6 0`})],-1)])]),_:1},8,[`content`]),y(s.ElTooltip,{content:s.$t(`@EDITOR:新建文件夹`),placement:`bottom`,"show-after":300},{default:te(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:s.startNewFolder},[c(` folder-plus.svg(Tabler icons,MIT) `),a[13]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M12 19h-7a2 2 0 0 1-2-2v-11a2 2 0 0 1 2-2h4l3 3h7a2 2 0 0 1 2 2v3.5`}),n(`path`,{d:`M16 19h6`}),n(`path`,{d:`M19 16v6`})],-1)])]),_:1},8,[`content`]),y(s.ElTooltip,{content:s.$t(`@EDITOR:刷新`),placement:`bottom`,"show-after":300},{default:te(()=>[n(`button`,{class:`sidebar-action-btn`,onClick:a[0]||=e=>s.refreshTree({notifyOnError:!0})},[c(` refresh.svg(Tabler icons,MIT) `),a[14]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M20 11a8.1 8.1 0 0 0-15.5-2m-.5-4v4h4`}),n(`path`,{d:`M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4`})],-1)])]),_:1},8,[`content`])])]),n(`div`,z,[a[16]||=n(`svg`,{class:`sidebar-search-icon`,viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`circle`,{cx:`11`,cy:`11`,r:`7`}),n(`line`,{x1:`21`,y1:`21`,x2:`16.65`,y2:`16.65`})],-1),C(n(`input`,{ref:`searchInputRef`,"onUpdate:modelValue":a[1]||=e=>s.searchQuery=e,type:`text`,class:`sidebar-search-input`,placeholder:s.$t(`@EDITOR:搜索文件名或内容...`),title:s.$t(`@EDITOR:搜索文件名或内容...`),spellcheck:`false`,autocomplete:`off`,onKeydown:x(s.onSearchEscape,[`escape`])},null,40,B),[[g,s.searchQuery]]),s.searchQuery?(e(),r(`button`,{key:0,class:`sidebar-search-clear`,title:s.$t(`@EDITOR:清除搜索`),"aria-label":s.$t(`@EDITOR:清除搜索`),onClick:s.clearSearch},[...a[15]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,yt)):c(`v-if`,!0)]),s.treeLoading?(e(),r(`div`,Xt,[...a[26]||=[n(`span`,{class:`spin-icon`},null,-1)]])):(e(),r(`div`,bt,[c(` 搜索态下给上方森林一个分组标题:下面还有「内容匹配」,不标一下分不清两块 `),s.searchQueryLower&&s.visibleTree.length>0?(e(),r(`div`,V,S(s.$t(`@EDITOR:名称匹配`)),1)):c(`v-if`,!0),(e(!0),r(f,null,w(s.flattenTree(s.visibleTree),i=>(e(),r(f,{key:i.path},[c(` 重命名时用输入框替换节点 `),s.renameInput&&s.renameInput.node.path===i.path?(e(),r(`div`,{key:0,class:`tree-node tree-inline-input-row`,style:T({paddingLeft:12+i.depth*14+`px`})},[i.type===`directory`?(e(),r(`span`,{key:0,class:m([`tree-arrow`,{expanded:i.expanded}])},[...a[17]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(e(),r(`span`,xt)),(e(),r(`svg`,St,[n(`use`,{"xlink:href":`#${s.getNodeSpriteId(i)}`},null,8,H)])),C(n(`input`,{ref_for:!0,ref:`renameInputRef`,"onUpdate:modelValue":a[2]||=e=>s.renameInput.value=e,onKeydown:s.handleRenameKeydown,onBlur:s.confirmRename,onClick:a[3]||=_(()=>{},[`stop`])},null,544),[[g,s.renameInput.value]])],4)):(e(),r(f,{key:1},[c(` 普通节点 `),n(`div`,{class:m([`tree-node`,{"tree-node--dir":i.type===`directory`,"tree-node--file":i.type===`file`,"tree-node--active":s.activeTabPath===i.path,"tree-node--selected":s.selectedNode?.path===i.path&&s.activeTabPath!==i.path}]),style:T({paddingLeft:12+i.depth*14+`px`}),onClick:e=>s.openFile(i),onContextmenu:e=>s.openContextMenu(e,i)},[c(` 展开箭头 `),i.type===`directory`?(e(),r(`span`,{key:0,class:m([`tree-arrow`,{expanded:i.expanded}])},[...a[18]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`polyline`,{points:`9 18 15 12 9 6`})],-1)]],2)):(e(),r(`span`,wt)),c(` 图标 `),i.type===`directory`?(e(),r(`svg`,Tt,[n(`use`,{"xlink:href":`#${s.getNodeSpriteId(i)}`},null,8,Et)])):(e(),r(`svg`,Dt,[n(`use`,{"xlink:href":`#${s.getNodeSpriteId(i)}`},null,8,Ot)])),c(` 名称(命中关键字高亮) `),n(`span`,{class:`tree-name`,title:i.path},[(e(!0),r(f,null,w(s.highlightText(i.name),(n,i)=>(e(),r(f,{key:i},[n.hit?(e(),r(`span`,At,S(n.text),1)):(e(),r(f,{key:1},[t(S(n.text),1)],64))],64))),128))],8,kt),i.loading?(e(),r(`span`,jt)):c(`v-if`,!0)],46,Ct)],2112)),c(` 内联新建输入框:紧跟在 afterNode 之后 `),s.inlineInput&&s.inlineInput.afterNode?.path===i.path?(e(),r(`div`,{key:2,class:`tree-node tree-inline-input-row`,style:T({paddingLeft:12+s.inlineInput.depth*14+`px`})},[a[21]||=n(`span`,{class:`tree-arrow-spacer`},null,-1),s.inlineInput.kind===`directory`?(e(),r(`svg`,Mt,[...a[19]||=[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(e(),r(`svg`,U,[...a[20]||=[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),n(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),C(n(`input`,{ref_for:!0,ref:`inlineInputRef`,class:`tree-inline-input`,"onUpdate:modelValue":a[4]||=e=>s.inlineInput.value=e,placeholder:s.inlineInput.kind===`file`?s.$t(`@EDITOR:输入文件名`):s.$t(`@EDITOR:输入文件夹名`),onKeydown:s.handleInlineKeydown,onBlur:s.cancelInlineInput,onClick:a[5]||=_(()=>{},[`stop`])},null,40,Nt),[[g,s.inlineInput.value]])],4)):c(`v-if`,!0)],64))),128)),c(` 根级输入框(无选中节点时出现在列表末尾) `),s.inlineInput&&s.inlineInput.afterNode===null?(e(),r(`div`,Pt,[a[24]||=n(`span`,{class:`tree-arrow-spacer`},null,-1),s.inlineInput.kind===`directory`?(e(),r(`svg`,Ft,[...a[22]||=[n(`path`,{d:`M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z`},null,-1)]])):(e(),r(`svg`,W,[...a[23]||=[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`},null,-1),n(`polyline`,{points:`14 2 14 8 20 8`},null,-1)]])),C(n(`input`,{ref:`inlineInputRef`,class:`tree-inline-input`,"onUpdate:modelValue":a[6]||=e=>s.inlineInput.value=e,placeholder:s.inlineInput.kind===`file`?s.$t(`@EDITOR:输入文件名`):s.$t(`@EDITOR:输入文件夹名`),onKeydown:s.handleInlineKeydown,onBlur:s.cancelInlineInput,onClick:a[7]||=_(()=>{},[`stop`])},null,40,G),[[g,s.inlineInput.value]])])):c(`v-if`,!0),c(` 内容匹配:搜索框的第二块结果。名称在树里已经能懒加载,内容命中只能平铺 `),s.searchQueryLower?(e(),r(`div`,{key:2,class:`content-results`,"data-query":s.contentQuery},[s.contentSearching?(e(),r(`div`,Lt,[a[25]||=n(`span`,{class:`content-search-spin`},null,-1),n(`span`,null,S(s.$t(`@EDITOR:正在搜索文件内容...`)),1)])):s.contentHits.length>0?(e(),r(f,{key:1},[n(`div`,Rt,[n(`span`,null,S(s.$t(`@EDITOR:内容匹配`)),1),n(`span`,zt,S(s.contentTotalMatches),1),s.contentTruncated?(e(),r(`span`,Bt,S(s.$t(`@EDITOR:结果过多,已截断`)),1)):c(`v-if`,!0)]),(e(!0),r(f,null,w(s.contentHits,i=>(e(),r(`div`,{key:i.path,class:`content-hit`},[n(`div`,{class:`content-hit-file`,title:i.relPath,onClick:e=>s.openContentHit(i,i.matches[0]?.line)},[(e(),r(`svg`,Ht,[n(`use`,{"xlink:href":`#${s.getFileIconClass(i.name)}`},null,8,K)])),n(`span`,q,S(i.name),1),n(`span`,Ut,S(i.dir),1),n(`span`,Wt,S(i.total),1)],8,Vt),(e(!0),r(f,null,w(i.matches,a=>(e(),r(`div`,{key:`${i.path}:${a.line}`,class:`content-hit-line`,title:s.$t(`@EDITOR:点击跳到该行`),onClick:e=>s.openContentHit(i,a.line)},[n(`span`,Kt,S(a.line),1),n(`span`,qt,[(e(!0),r(f,null,w(s.highlightText(a.text),(n,i)=>(e(),r(f,{key:i},[n.hit?(e(),r(`span`,Jt,S(n.text),1)):(e(),r(f,{key:1},[t(S(n.text),1)],64))],64))),128))])],8,Gt))),128))]))),128))],64)):c(`v-if`,!0)],8,It)):c(`v-if`,!0),!s.inlineInput&&(s.noAnySearchResults||s.treeNodes.length===0)?(e(),r(`div`,Yt,S(s.noAnySearchResults?s.$t(`@EDITOR:未找到匹配文件`):s.$t(`@EDITOR:暂无文件`)),1)):c(`v-if`,!0)])),c(` 最近修改:按磁盘 mtime 排序(不是打开历史)。同步盘里别的电脑改过的文件也在这 `),s.configStore.currentDirectory?(e(),r(`div`,J,[n(`div`,Zt,[n(`div`,{class:`recent-files-toggle`,role:`button`,tabindex:`0`,"aria-expanded":!s.recentFilesCollapsed,title:s.$t(`@EDITOR:最近修改的文件`),onClick:s.toggleRecentFiles,onKeydown:[x(_(s.toggleRecentFiles,[`prevent`]),[`enter`]),x(_(s.toggleRecentFiles,[`prevent`]),[`space`])]},[(e(),r(`svg`,{class:m([`recent-files-chevron`,{expanded:!s.recentFilesCollapsed}]),viewBox:`0 0 24 24`,width:`10`,height:`10`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`,"stroke-linejoin":`round`,"aria-hidden":`true`},[...a[27]||=[n(`polyline`,{points:`9 18 15 12 9 6`},null,-1)]],2)),n(`span`,Y,S(s.$t(`@EDITOR:最近修改的文件`)),1),s.recentFiles.length?(e(),r(`span`,$t,S(s.recentFiles.length),1)):c(`v-if`,!0)],40,Qt),n(`button`,{class:`sidebar-action-btn recent-files-refresh`,title:s.$t(`@EDITOR:刷新`),"aria-label":s.$t(`@EDITOR:刷新`),onClick:a[8]||=e=>s.loadRecentFiles(!0)},[...a[28]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M20 11a8.1 8.1 0 0 0-15.5-2m-.5-4v4h4`}),n(`path`,{d:`M4 13a8.1 8.1 0 0 0 15.5 2m.5 4v-4h-4`})],-1)]],8,en)]),C(n(`div`,tn,[s.recentFilesLoading&&s.recentFiles.length===0?(e(),r(`div`,nn,[...a[29]||=[n(`span`,{class:`spin-icon`},null,-1)]])):s.recentFiles.length===0?(e(),r(`div`,rn,S(s.$t(`@EDITOR:暂无最近修改的文件`)),1)):(e(!0),r(f,{key:2},w(s.recentFiles,t=>(e(),r(`div`,{key:t.path,class:m([`recent-file`,{"recent-file--active":s.activeTabPath===t.path}]),title:t.relPath,onClick:e=>s.openRecentFile(t)},[(e(),r(`svg`,on,[n(`use`,{"xlink:href":`#${s.getFileIconClass(t.name)}`},null,8,sn)])),n(`span`,cn,[n(`span`,ln,[n(`span`,un,S(t.name),1),n(`span`,dn,S(s.recentFileTime(t)),1)]),t.dir?(e(),r(`span`,fn,S(t.dir),1)):c(`v-if`,!0)])],10,an))),128))],512),[[ee,!s.recentFilesCollapsed]])])):c(`v-if`,!0)],4),c(` 拖拽分隔条 `),n(`div`,{class:`editor-resizer`,onMousedown:s.startSidebarResize},null,32),c(` 右侧编辑区 `),n(`div`,pn,[c(` 标签栏:没有打开文件时也留着(空的 tab 条 + 右端按钮)。
|
|
2
|
+
左半边是横向滚动的 tab 条,右端按钮固定在栏内 —— 以前按钮和 tab 挤在同一个
|
|
3
|
+
滚动容器里,tab 一多就把「预览 / 思维导图」推出可视区(滚动条还隐藏了),
|
|
4
|
+
表现为"预览按钮不见了"。 `),n(`div`,mn,[n(`div`,hn,[(e(!0),r(f,null,w(s.tabs,t=>(e(),r(`div`,{key:t.path,class:m([`editor-tab`,{active:s.activeTabPath===t.path,dirty:t.isDirty}]),onClick:e=>s.activeTabPath=t.path,title:t.path},[n(`span`,Z,S(t.name),1),t.isDirty?(e(),r(`span`,gn)):c(`v-if`,!0),n(`button`,{class:`tab-close`,onClick:e=>s.closeTab(t.path,e)},[...a[30]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`12`,height:`12`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Q)],10,X))),128))],512),n(`div`,_n,[c(` 预览切换按钮 `),s.isPreviewable?(e(),r(`button`,{key:0,class:m([`preview-toggle-btn`,{active:s.showPreview}]),title:s.showPreview?s.$t(`@EDITOR:关闭预览`):s.$t(`@EDITOR:打开预览`),onClick:s.togglePreview},[c(` eye.svg(Tabler icons,MIT) `),a[31]||=n(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M10 12a2 2 0 1 0 4 0a2 2 0 0 0-4 0`}),n(`path`,{d:`M21 12c-2.4 4-5.4 6-9 6c-3.6 0-6.6-2-9-6c2.4-4 5.4-6 9-6c3.6 0 6.6 2 9 6`})],-1),n(`span`,null,S(s.$t(`@EDITOR:预览`)),1)],10,vn)):c(`v-if`,!0),c(` 思维导图:整篇 markdown 渲染为一张大导图 `),s.isMindmapable?(e(),r(`button`,{key:1,class:m([`preview-toggle-btn mindmap-toggle-btn`,{active:s.showMindmap,disabled:!s.isMindmapable}]),disabled:!s.isMindmapable,title:s.isMindmapable?s.showMindmap?s.$t(`@EDITOR:关闭思维导图`):s.$t(`@EDITOR:打开思维导图`):s.$t(`@EDITOR:需要至少一个 # 标题`),onClick:s.toggleMindmap},[c(` topology-star.svg(Tabler icons,MIT):中心节点 + 四向辐射(与左栏「思维导图」同款) `),a[32]||=b(`<svg viewBox="0 0 24 24" width="14" height="14" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" data-v-fc2ebf13><path d="M8 18a2 2 0 1 0-4 0a2 2 0 0 0 4 0" data-v-fc2ebf13></path><path d="M20 6a2 2 0 1 0-4 0a2 2 0 0 0 4 0" data-v-fc2ebf13></path><path d="M8 6a2 2 0 1 0-4 0a2 2 0 0 0 4 0" data-v-fc2ebf13></path><path d="M20 18a2 2 0 1 0-4 0a2 2 0 0 0 4 0" data-v-fc2ebf13></path><path d="M14 12a2 2 0 1 0-4 0a2 2 0 0 0 4 0" data-v-fc2ebf13></path><path d="M7.5 7.5l3 3" data-v-fc2ebf13></path><path d="M7.5 16.5l3-3" data-v-fc2ebf13></path><path d="M13.5 13.5l3 3" data-v-fc2ebf13></path><path d="M16.5 7.5l-3 3" data-v-fc2ebf13></path></svg>`,1),n(`span`,null,S(s.$t(`@EDITOR:思维导图`)),1)],10,yn)):c(`v-if`,!0)])]),c(` 无文件打开时的提示 `),s.tabs.length===0?(e(),E(s.EmptyState,{key:0,class:`editor-empty`,title:s.$t(`@EDITOR:从左侧选择文件打开`),hint:s.$t(`@EDITOR:Ctrl+S 保存`)},{icon:te(()=>[...a[33]||=[n(`svg`,{viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,"stroke-width":`1.2`,"stroke-linecap":`round`,"stroke-linejoin":`round`},[n(`path`,{d:`M14.5 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7.5L14.5 2z`}),n(`polyline`,{points:`14 2 14 8 20 8`})],-1)]]),_:1},8,[`title`,`hint`])):c(`v-if`,!0),c(` Monaco 容器(始终挂载,tab 为空或 image tab 时隐藏) `),n(`div`,$,[n(`div`,{class:m([`monaco-container`,{hidden:s.tabs.length===0||s.activeTabIsImage||s.activeTabIsOffice||s.activeTabIsMedia}]),ref:`editorContainerRef`},null,2),c(` 音视频 tab:播放器直接铺满主区域(不走右侧预览面板 —— 音频没必要和空编辑区平分) `),s.activeTabIsMedia&&s.activeTabRef?(e(),E(s.MediaPreview,{key:s.activeTabRef.path,"file-path":s.activeTabRef.path,"file-name":s.activeTabRef.name},null,8,[`file-path`,`file-name`])):c(`v-if`,!0),c(` 图片 tab 时的占位提示(主预览区在右侧 preview-panel) `),s.activeTabIsImage&&s.tabs.length>0&&!s.showPreview&&!s.showMindmap?(e(),r(`div`,bn,[(e(),r(`svg`,xn,[...a[34]||=[n(`rect`,{x:`3`,y:`3`,width:`18`,height:`18`,rx:`2`},null,-1),n(`circle`,{cx:`9`,cy:`9`,r:`2`},null,-1),n(`path`,{d:`m21 15-5-5L5 21`},null,-1)]])),n(`p`,Sn,S(s.activeTabRef?.name),1),n(`p`,Cn,S(s.$t(`@EDITOR:这是图片文件,已在右侧预览面板中打开`)),1)])):c(`v-if`,!0),c(` 分隔条:贴在右侧面板的**左边缘**(DOM 顺序在面板之前),向左拖 = 面板变宽。
|
|
5
|
+
以前靠 order:99 挂在容器最右端,用户根本分不清拖的是哪条边。 `),(s.showPreview||s.showMindmap)&&s.tabs.length>0?(e(),r(`div`,{key:2,class:`preview-resizer`,onMousedown:s.startPreviewResize},null,32)):c(`v-if`,!0),c(` 预览面板 `),(s.showPreview||s.showMindmap)&&s.tabs.length>0?(e(),r(`div`,{key:3,class:`preview-panel`,style:T(s.rightPaneStyle)},[n(`div`,wn,[n(`span`,Tn,S(s.showMindmap?s.$t(`@EDITOR:思维导图`):s.$t(`@EDITOR:预览`)),1),n(`span`,En,S(s.activeExt.toUpperCase()),1),a[36]||=n(`div`,{class:`preview-header-spacer`},null,-1),n(`button`,{class:`preview-close-btn`,title:s.showMindmap?s.$t(`@EDITOR:关闭思维导图`):s.$t(`@EDITOR:关闭预览`),onClick:a[9]||=e=>s.showMindmap?s.showMindmap=!1:s.showPreview=!1},[...a[35]||=[n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2.5`,"stroke-linecap":`round`},[n(`line`,{x1:`18`,y1:`6`,x2:`6`,y2:`18`}),n(`line`,{x1:`6`,y1:`6`,x2:`18`,y2:`18`})],-1)]],8,Dn)]),n(`div`,On,[c(` 复制栏:Markdown 预览导出到公众号 / 其它富文本编辑器 `),s.mdCopyAvailable?(e(),r(`div`,kn,[n(`button`,{class:m([`preview-copy-btn`,{done:s.mdCopiedType===`md`}]),disabled:s.mdCopyBusy,title:s.$t(`@EDITOR:复制 Markdown 源码`),onClick:s.copyMarkdownSource},[a[37]||=n(`span`,{class:`preview-copy-btn-icon`},`{ }`,-1),n(`span`,null,S(s.mdCopiedType===`md`?s.$t(`@EDITOR:已复制`):`Markdown`),1)],10,An),n(`button`,{class:m([`preview-copy-btn`,{done:s.mdCopiedType===`html`}]),disabled:s.mdCopyBusy,title:s.$t(`@EDITOR:复制渲染后的 HTML(图片按开关内嵌)`),onClick:s.copyRenderedHtml},[a[38]||=n(`span`,{class:`preview-copy-btn-icon`},`</>`,-1),n(`span`,null,S(s.mdCopiedType===`html`?s.$t(`@EDITOR:已复制`):`HTML`),1)],10,jn),n(`button`,{class:m([`preview-copy-btn preview-copy-btn--primary`,{done:s.mdCopiedType===`rich`}]),disabled:s.mdCopyBusy,title:s.$t(`@EDITOR:复制为富文本,可直接粘贴到公众号编辑器`),onClick:s.copyRichTextToClipboard},[a[39]||=n(`span`,{class:`preview-copy-btn-icon`},`⊞`,-1),n(`span`,null,S(s.mdCopyBusy?s.$t(`@EDITOR:转换图片中…`):s.mdCopiedType===`rich`?s.$t(`@EDITOR:已复制`):s.$t(`@EDITOR:复制富文本`)),1)],10,Mn),n(`label`,{class:`preview-copy-embed`,title:s.$t(`@EDITOR:复制时把本地图片转成 Base64 内嵌,关闭后保留原图地址`)},[C(n(`input`,{"onUpdate:modelValue":a[10]||=e=>s.mdCopyInlineImages=e,type:`checkbox`},null,512),[[p,s.mdCopyInlineImages]]),n(`span`,null,S(s.$t(`@EDITOR:图片转 Base64`)),1)],8,Nn)])):c(`v-if`,!0),c(` 思维导图:整篇 markdown → 一张大导图 `),s.showMindmap&&s.activeExt===`md`&&s.activeTabRef?(e(),E(s.MindmapPreview,{key:1,content:s.activeTabRef.content,class:`preview-mindmap`},null,8,[`content`])):s.showPreview&&s.activeExt===`md`&&s.activeTabRef?(e(),r(f,{key:2},[c(` Markdown → in-app 渲染 `),c(` :key 按文件路径切 —— 预览的滚动容器就是这个组件自己的根节点
|
|
6
|
+
(.preview-markdown[overflow:auto]),不换 key 时切 tab 走的是同类型
|
|
7
|
+
组件 → Vue 复用同一个 DOM 节点、只把内容换掉,scrollTop 不在 patch
|
|
8
|
+
范围里,会从上一个文件原样带过来(表现为"新文件预览停在上一个文件的
|
|
9
|
+
滚动位置")。key 随路径变 → 重建节点,天然回到顶部。
|
|
10
|
+
注意 key 只取 path、不取 content:同一个文件里改字时预览是实时镜像,
|
|
11
|
+
那种情况下不该把用户踢回顶部。 `),(e(),E(s.MarkdownPreview,{ref:`mdPreviewRef`,key:s.activeTabRef.path,content:s.activeTabRef.content,"base-path":s.activeTabRef.path,class:`preview-markdown`},null,8,[`content`,`base-path`]))],2112)):s.showPreview&&[`html`,`htm`,`svg`].includes(s.activeExt)?(e(),r(f,{key:3},[c(` HTML / SVG → sandboxed iframe (JS 可执行,不透明 origin 隔离宿主) `),n(`iframe`,{class:`preview-iframe`,sandbox:s.PREVIEW_IFRAME_SANDBOX,srcdoc:s.previewSrcdoc},null,8,Pn)],2112)):s.showPreview&&s.IMAGE_EXTS.has(s.activeExt)&&s.activeTabRef?(e(),r(f,{key:4},[c(` 图片预览(使用增强版 ImagePreview,支持缩放/拖拽) `),y(s.ImagePreview,{"file-path":s.activeTabRef.path,"file-name":s.activeTabRef.name},null,8,[`file-path`,`file-name`])],2112)):s.showPreview&&s.activeTabIsOffice&&s.activeTabRef?(e(),E(s.OfficePreview,{key:5,"file-path":s.activeTabRef.path},null,8,[`file-path`])):c(`v-if`,!0)])],4)):c(`v-if`,!0)])])],512),c(` 右键菜单 `),(e(),E(ie,{to:`body`},[s.ctxMenu?(e(),r(`div`,{key:0,ref:`ctxMenuRef`,class:`ctx-menu`,style:T({left:s.ctxMenu.x+`px`,top:s.ctxMenu.y+`px`}),onClick:a[11]||=_(()=>{},[`stop`])},[n(`button`,{class:`ctx-menu-item`,onClick:s.ctxNewFile},[c(` file-plus.svg(Tabler icons,MIT) `),a[40]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M14 3v4a1 1 0 0 0 1 1h4`}),n(`path`,{d:`M17 21h-10a2 2 0 0 1-2-2v-14a2 2 0 0 1 2-2h7l5 5v11a2 2 0 0 1-2 2`}),n(`path`,{d:`M12 11l0 6`}),n(`path`,{d:`M9 14l6 0`})],-1),t(` `+S(s.$t(`@EDITOR:新建文件`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxNewFolder},[c(` folder-plus.svg(Tabler icons,MIT) `),a[41]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M12 19h-7a2 2 0 0 1-2-2v-11a2 2 0 0 1 2-2h4l3 3h7a2 2 0 0 1 2 2v3.5`}),n(`path`,{d:`M16 19h6`}),n(`path`,{d:`M19 16v6`})],-1),t(` `+S(s.$t(`@EDITOR:新建文件夹`)),1)]),a[48]||=n(`div`,{class:`ctx-menu-sep`},null,-1),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxCopyAbsolutePath},[c(` copy.svg(Tabler icons,MIT) `),a[42]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M7 9.667a2.667 2.667 0 0 1 2.667-2.667h8.666a2.667 2.667 0 0 1 2.667 2.667v8.666a2.667 2.667 0 0 1-2.667 2.667h-8.666a2.667 2.667 0 0 1-2.667-2.667l0-8.666`}),n(`path`,{d:`M4.012 16.737a2.005 2.005 0 0 1-1.012-1.737v-10c0-1.1.9-2 2-2h10c.75 0 1.158.385 1.5 1`})],-1),t(` `+S(s.$t(`@EDITOR:复制绝对路径`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxCopyRelativePath},[c(` link.svg(Tabler icons,MIT) `),a[43]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M9 15l6-6`}),n(`path`,{d:`M11 6l.463-.536a5 5 0 0 1 7.071 7.072l-.534.464`}),n(`path`,{d:`M13 18l-.397.534a5.068 5.068 0 0 1-7.127 0a4.972 4.972 0 0 1 0-7.071l.524-.463`})],-1),t(` `+S(s.$t(`@EDITOR:复制相对路径`)),1)]),a[49]||=n(`div`,{class:`ctx-menu-sep`},null,-1),c(` 只有 HTML 才有"用浏览器打开":浏览器能直接渲染出结果 `),s.ctxMenuCanOpenInBrowser?(e(),r(`button`,{key:0,class:`ctx-menu-item`,onClick:s.ctxOpenInBrowser},[c(` world.svg(Tabler icons,MIT) `),a[44]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M3 12a9 9 0 1 0 18 0a9 9 0 0 0-18 0`}),n(`path`,{d:`M3.6 9h16.8`}),n(`path`,{d:`M3.6 15h16.8`}),n(`path`,{d:`M11.5 3a17 17 0 0 0 0 18`}),n(`path`,{d:`M12.5 3a17 17 0 0 1 0 18`})],-1),t(` `+S(s.$t(`@EDITOR:在浏览器中打开`)),1)])):c(`v-if`,!0),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxRevealInExplorer},[c(` folder-open.svg(Tabler icons,MIT) `),a[45]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M5 19l2.757-7.351a1 1 0 0 1 .936-.649h12.307a1 1 0 0 1 .986 1.164l-.996 5.211a2 2 0 0 1-1.964 1.625h-14.026a2 2 0 0 1-2-2v-11a2 2 0 0 1 2-2h4l3 3h7a2 2 0 0 1 2 2v2`})],-1),t(` `+S(s.$t(`@EDITOR:在资源管理器中打开`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxOpenInVscode},[y(s.SvgIcon,{"icon-class":`vscode`,"class-name":`ctx-menu-icon`}),t(` `+S(s.$t(`@EDITOR:在 VSCode 中打开`)),1)]),n(`button`,{class:`ctx-menu-item`,onClick:s.ctxRename},[c(` edit.svg(Tabler icons,MIT) `),a[46]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M7 7h-1a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-1`}),n(`path`,{d:`M20.385 6.585a2.1 2.1 0 0 0-2.97-2.97l-8.415 8.385v3h3l8.385-8.415`}),n(`path`,{d:`M16 5l3 3`})],-1),t(` `+S(s.$t(`@EDITOR:重命名`)),1)]),n(`button`,{class:`ctx-menu-item ctx-menu-item--danger`,onClick:s.ctxDelete},[c(` trash.svg(Tabler icons,MIT) `),a[47]||=n(`svg`,{viewBox:`0 0 24 24`,width:`13`,height:`13`,fill:`none`,stroke:`currentColor`,"stroke-width":`2`,"stroke-linecap":`round`,"stroke-linejoin":`round`,xmlns:`http://www.w3.org/2000/svg`},[n(`path`,{d:`M4 7l16 0`}),n(`path`,{d:`M10 11l0 6`}),n(`path`,{d:`M14 11l0 6`}),n(`path`,{d:`M5 7l1 12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2l1-12`}),n(`path`,{d:`M9 7v-3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v3`})],-1),t(` `+S(s.$t(`@EDITOR:删除`)),1)])],4)):c(`v-if`,!0)]))],64)}var In=O(R,[[`render`,Fn],[`__scopeId`,`data-v-fc2ebf13`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/views/EditorView.vue`]]);export{In as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.media-preview[data-v-35007775]{background:var(--bg-container);flex-direction:column;flex:1;min-width:0;min-height:0;display:flex;overflow:hidden}.media-preview-stage[data-v-35007775]{min-height:0;padding:var(--spacing-lg);background:var(--bg-panel);flex:1;justify-content:center;align-items:center;display:flex;position:relative}.media-preview-video[data-v-35007775]{background:#000;max-width:100%;min-height:0;max-height:100%;display:block}.media-preview-audio[data-v-35007775]{align-items:center;gap:var(--spacing-md);flex-direction:column;width:min(560px,100%);display:flex}.media-preview-glyph[data-v-35007775]{color:var(--color-primary);opacity:.85}.media-preview-title[data-v-35007775]{max-width:100%;font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:var(--text-primary);text-align:center;word-break:break-all;margin:0}.media-preview-audio-el[data-v-35007775]{width:100%;color-scheme:inherit}.media-preview-loading[data-v-35007775]{justify-content:center;align-items:center;gap:var(--spacing-sm);font-size:var(--font-size-sm);color:var(--text-secondary);background:color-mix(in srgb, var(--bg-panel) 78%, transparent);pointer-events:none;display:flex;position:absolute;inset:0}.media-preview-spinner[data-v-35007775]{border:2px solid var(--border-color);border-top-color:var(--color-primary);border-radius:50%;width:14px;height:14px;animation:.8s linear infinite media-spin-35007775}@keyframes media-spin-35007775{to{transform:rotate(360deg)}}.media-preview-error[data-v-35007775]{align-items:center;gap:var(--spacing-sm);color:var(--text-secondary);text-align:center;padding:var(--spacing-lg);flex-direction:column;display:flex}.media-preview-error-title[data-v-35007775]{color:var(--text-primary);font-size:var(--font-size-md);margin:0}.media-preview-error-path[data-v-35007775]{max-width:520px;color:var(--text-meta);font-size:var(--font-size-xs);word-break:break-all;margin:0}.media-preview-footer[data-v-35007775]{align-items:center;gap:var(--spacing-sm);background:var(--bg-panel);font-size:var(--font-size-xs);color:var(--text-meta);flex-shrink:0;padding:4px 12px;display:flex}.media-preview-meta[data-v-35007775]{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.media-preview-name[data-v-35007775]{max-width:55%;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;margin-left:auto;overflow:hidden}.mindmap-preview[data-v-3969a8bf]{background:var(--bg-container,#fff);flex-direction:column;width:100%;height:100%;display:flex}.mindmap-preview-header[data-v-3969a8bf]{background:var(--bg-panel,var(--md-bg-subtle));font-size:var(--font-size-sm);align-items:center;gap:12px;padding:8px 14px;display:flex}.mindmap-preview-title[data-v-3969a8bf]{color:var(--text-primary,var(--md-text-strong));letter-spacing:.5px;font-weight:600}.mindmap-preview-hint[data-v-3969a8bf]{color:var(--text-secondary,var(--md-text-muted));font-size:var(--font-size-xs)}.mindmap-preview-canvas[data-v-3969a8bf]{flex:1;width:100%;min-height:0}.mindmap-preview-canvas[data-v-3969a8bf] .zm-mindmap,.mindmap-preview-canvas[data-v-3969a8bf]>*{width:100%;height:100%}.editor-view[data-v-fc2ebf13]{background:var(--bg-container);width:100%;height:100%;box-shadow:var(--shadow-sm);border-radius:0;display:flex;overflow:hidden}.editor-sidebar[data-v-fc2ebf13]{background:var(--bg-panel);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden}.sidebar-header[data-v-fc2ebf13]{flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 10px 6px;display:flex}.sidebar-title[data-v-fc2ebf13]{font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none;font-weight:700}.sidebar-action-btn[data-v-fc2ebf13]{cursor:pointer;color:var(--text-meta);border-radius:var(--radius-base);background:0 0;border:none;align-items:center;padding:3px;display:flex}.sidebar-action-btn[data-v-fc2ebf13]:hover{color:var(--text-primary);background:var(--bg-hover)}.sidebar-search[data-v-fc2ebf13]{flex-shrink:0;align-items:center;padding:6px 10px;display:flex;position:relative}.sidebar-search-icon[data-v-fc2ebf13]{color:var(--text-meta);pointer-events:none;position:absolute;left:18px}.sidebar-search-input[data-v-fc2ebf13]{min-width:0;height:26px;font-size:var(--font-size-sm);color:var(--text-primary);background:var(--bg-input,#ffffff0a);border:1px solid var(--border-color);border-radius:var(--radius-base);transition:border-color var(--transition-fast), background var(--transition-fast);outline:none;flex:1;padding:0 24px 0 26px}.sidebar-search-input[data-v-fc2ebf13]::placeholder{color:var(--text-meta)}.sidebar-search-input[data-v-fc2ebf13]:hover{border-color:var(--text-tertiary)}.sidebar-search-input[data-v-fc2ebf13]:focus{border-color:var(--color-primary);background:var(--bg-panel)}.sidebar-search-clear[data-v-fc2ebf13]{cursor:pointer;width:18px;height:18px;color:var(--text-meta);transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;border-radius:50%;justify-content:center;align-items:center;padding:0;display:flex;position:absolute;right:14px}.sidebar-search-clear[data-v-fc2ebf13]:hover{background:var(--bg-hover);color:var(--text-primary)}.tree-name-hit[data-v-fc2ebf13]{color:var(--color-warning-light);border-radius:var(--radius-xs);background:#f59e0b26;padding:0 1px}.search-section-head[data-v-fc2ebf13]{letter-spacing:.04em;color:var(--text-meta);-webkit-user-select:none;user-select:none;align-items:center;gap:6px;padding:7px 12px 3px;font-size:11px;font-weight:600;display:flex}.search-section-count[data-v-fc2ebf13]{text-align:center;min-width:14px;color:var(--text-meta);background:var(--bg-hover);border-radius:var(--radius-xs);padding:0 4px;font-size:10px;line-height:14px}.search-section-note[data-v-fc2ebf13]{color:var(--text-meta);margin-left:auto;font-size:10px;font-weight:400}.content-results[data-v-fc2ebf13]{margin-top:6px;padding-bottom:6px}.content-results>.search-section-head[data-v-fc2ebf13],.content-results-status[data-v-fc2ebf13]{border-top:1px solid var(--border-color)}.content-results-status[data-v-fc2ebf13]{color:var(--text-meta);align-items:center;gap:6px;padding:8px 12px;font-size:12px;display:flex}.content-search-spin[data-v-fc2ebf13]{border:1.5px solid var(--color-primary);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:11px;height:11px;animation:.8s linear infinite spin-fc2ebf13}.content-hit-file[data-v-fc2ebf13]{cursor:pointer;height:24px;color:var(--text-primary);transition:background var(--transition-fast);align-items:center;gap:5px;padding:0 8px 0 12px;display:flex}.content-hit-file[data-v-fc2ebf13]:hover,.content-hit-line[data-v-fc2ebf13]:hover{background:var(--bg-hover)}.content-hit-name[data-v-fc2ebf13]{font-size:var(--font-size-mid);white-space:nowrap}.content-hit-dir[data-v-fc2ebf13]{min-width:0;color:var(--text-meta);white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:11px;overflow:hidden}.content-hit-total[data-v-fc2ebf13]{text-align:center;min-width:16px;color:var(--text-meta);background:var(--bg-hover);border-radius:var(--radius-xs);flex-shrink:0;font-size:10px;line-height:14px}.content-hit-line[data-v-fc2ebf13]{cursor:pointer;align-items:baseline;gap:6px;padding:1px 10px 1px 24px;display:flex}.content-hit-ln[data-v-fc2ebf13]{text-align:right;width:30px;color:var(--text-meta);flex-shrink:0;font-family:JetBrains Mono,Consolas,monospace;font-size:10.5px}.content-hit-text[data-v-fc2ebf13]{min-width:0;color:var(--text-secondary);white-space:pre;text-overflow:ellipsis;flex:1;font-family:JetBrains Mono,Consolas,monospace;font-size:11px;overflow:hidden}.content-hit-mark[data-v-fc2ebf13]{color:var(--color-warning-light);border-radius:var(--radius-xs);background:#f59e0b26;padding:0 1px}.sidebar-tree[data-v-fc2ebf13]{flex:1;padding:4px 0;overflow:hidden auto}.tree-node[data-v-fc2ebf13]{cursor:pointer;border-radius:var(--radius-base);-webkit-user-select:none;user-select:none;height:24px;color:var(--text-primary);font-size:var(--font-size-mid);transition:background var(--transition-fast);white-space:nowrap;align-items:center;gap:4px;padding-right:8px;display:flex;overflow:hidden}.tree-node[data-v-fc2ebf13]:hover{background:var(--bg-hover)}.tree-node--active[data-v-fc2ebf13]{background:var(--tint-primary-12);color:var(--color-primary)}.tree-node--selected[data-v-fc2ebf13]{outline-offset:-1px;background:#63b3ed26;outline:1px solid #63b3ed59}.tree-arrow[data-v-fc2ebf13]{color:var(--text-meta);transition:transform var(--transition-fast);flex-shrink:0;align-items:center;width:12px;display:flex}.tree-arrow.expanded[data-v-fc2ebf13]{transform:rotate(90deg)}.tree-arrow-spacer[data-v-fc2ebf13]{flex-shrink:0;width:12px}.tree-icon[data-v-fc2ebf13]{font-size:var(--font-size-base);flex-shrink:0;align-items:center;line-height:1;display:flex}.tree-icon.mit-icon[data-v-fc2ebf13]{fill:currentColor;vertical-align:middle;width:14px;height:14px;display:inline-block}.tree-icon--dir[data-v-fc2ebf13]{color:#e8b84b}.tree-name[data-v-fc2ebf13]{text-overflow:ellipsis;min-width:0;font-size:var(--font-size-mid);flex:1;overflow:hidden}.tree-loading[data-v-fc2ebf13]{border:1.5px solid var(--color-primary);border-top-color:#0000;border-radius:50%;flex-shrink:0;width:10px;height:10px;animation:.8s linear infinite spin-fc2ebf13;display:inline-block}.tree-empty[data-v-fc2ebf13]{font-size:var(--font-size-sm);color:var(--text-meta);text-align:center;padding:24px 12px}.sidebar-loading[data-v-fc2ebf13]{flex:1;justify-content:center;align-items:center;display:flex}.spin-icon[data-v-fc2ebf13]{border:2px solid var(--color-primary);border-top-color:#0000;border-radius:50%;width:20px;height:20px;animation:.8s linear infinite spin-fc2ebf13;display:inline-block}@keyframes spin-fc2ebf13{to{transform:rotate(360deg)}}.recent-files[data-v-fc2ebf13]{border-top:1px solid var(--border-color);flex-direction:column;flex:none;min-height:0;max-height:45%;display:flex}.recent-files-head[data-v-fc2ebf13]{height:30px;color:var(--text-secondary);transition:background var(--transition-fast);flex-shrink:0;align-items:center;gap:4px;padding:0 6px 0 0;display:flex}.recent-files-head[data-v-fc2ebf13]:hover{background:var(--bg-hover)}.recent-files-toggle[data-v-fc2ebf13]{cursor:pointer;-webkit-user-select:none;user-select:none;flex:1;align-items:center;gap:6px;min-width:0;height:100%;padding-left:10px;display:flex}.recent-files-chevron[data-v-fc2ebf13]{color:var(--text-meta);transition:transform var(--transition-fast);flex-shrink:0}.recent-files-chevron.expanded[data-v-fc2ebf13]{transform:rotate(90deg)}.recent-files-title[data-v-fc2ebf13]{font-size:var(--font-size-xs);letter-spacing:.08em;color:var(--text-secondary);white-space:nowrap;text-overflow:ellipsis;font-weight:700;overflow:hidden}.recent-files-count[data-v-fc2ebf13]{color:var(--text-meta);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:11px}.recent-files-refresh[data-v-fc2ebf13]{flex-shrink:0}.recent-files-body[data-v-fc2ebf13]{flex:1;min-height:0;padding:2px 0 6px;overflow:hidden auto}.recent-files-status[data-v-fc2ebf13]{justify-content:center;align-items:center;padding:14px 0;display:flex}.recent-files-status .spin-icon[data-v-fc2ebf13]{border-width:1.5px;width:14px;height:14px}.recent-files-empty[data-v-fc2ebf13]{text-align:center;font-size:var(--font-size-sm);color:var(--text-meta);padding:14px 12px}.recent-file[data-v-fc2ebf13]{cursor:pointer;color:var(--text-primary);transition:background var(--transition-fast);align-items:flex-start;gap:6px;padding:4px 10px;display:flex}.recent-file[data-v-fc2ebf13]:hover{background:var(--bg-hover)}.recent-file--active[data-v-fc2ebf13]{background:var(--tint-primary-12);color:var(--color-primary)}.recent-file>.tree-icon[data-v-fc2ebf13]{margin-top:2px}.recent-file-main[data-v-fc2ebf13]{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.recent-file-top[data-v-fc2ebf13]{align-items:baseline;gap:8px;min-width:0;display:flex}.recent-file-name[data-v-fc2ebf13]{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--font-size-mid);flex:1;overflow:hidden}.recent-file-time[data-v-fc2ebf13]{color:var(--text-meta);font-variant-numeric:tabular-nums;white-space:nowrap;flex-shrink:0;font-size:11px}.recent-file-dir[data-v-fc2ebf13]{color:var(--text-meta);text-overflow:ellipsis;white-space:nowrap;font-size:10.5px;overflow:hidden}.editor-resizer[data-v-fc2ebf13]{cursor:col-resize;width:6px;transition:background var(--transition-fast);z-index:2;background:0 0;flex-shrink:0;position:relative}.editor-resizer[data-v-fc2ebf13]:after{content:"";background:var(--color-gray-300);border-radius:var(--radius-xs);width:2px;height:32px;transition:background var(--transition-fast), height var(--transition-fast);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.editor-resizer[data-v-fc2ebf13]:hover{background:var(--tint-primary-06)}.editor-resizer[data-v-fc2ebf13]:hover:after{background:var(--color-primary);height:48px;box-shadow:0 0 8px #3b82f666}.editor-main[data-v-fc2ebf13]{flex-direction:column;flex:1;display:flex;overflow:hidden}.editor-tabs[data-v-fc2ebf13]{background:var(--bg-panel);flex-shrink:0;align-items:stretch;display:flex}.editor-tabs-scroll[data-v-fc2ebf13]{scrollbar-width:none;flex:auto;min-width:0;display:flex;overflow:auto hidden}.editor-tabs-scroll[data-v-fc2ebf13]::-webkit-scrollbar{display:none}.editor-tabs-actions[data-v-fc2ebf13]{flex-shrink:0;align-items:center;display:flex}.editor-tab[data-v-fc2ebf13]{cursor:pointer;height:34px;font-size:var(--font-size-mid);color:var(--text-secondary);transition:background var(--transition-fast), color var(--transition-fast);-webkit-user-select:none;user-select:none;flex-shrink:0;align-items:center;gap:6px;min-width:80px;max-width:200px;padding:0 12px;display:flex}.editor-tab[data-v-fc2ebf13]:hover{background:var(--bg-hover);color:var(--text-primary)}.editor-tab.active[data-v-fc2ebf13]{background:var(--bg-container);color:var(--text-primary);border-bottom:2px solid var(--color-primary)}.tab-name[data-v-fc2ebf13]{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.tab-dirty-dot[data-v-fc2ebf13]{background:var(--color-warning);border-radius:50%;flex-shrink:0;width:6px;height:6px}.tab-close[data-v-fc2ebf13]{cursor:pointer;color:var(--text-meta);border-radius:var(--radius-base);opacity:0;transition:opacity var(--transition-fast), background var(--transition-fast);background:0 0;border:none;flex-shrink:0;align-items:center;padding:2px;display:flex}.editor-tab:hover .tab-close[data-v-fc2ebf13],.editor-tab.active .tab-close[data-v-fc2ebf13]{opacity:1}.tab-close[data-v-fc2ebf13]:hover{background:var(--bg-hover);color:var(--color-danger-dark)}.editor-empty[data-v-fc2ebf13]{flex:1}.monaco-container[data-v-fc2ebf13]{flex:1;min-width:0;overflow:hidden}.monaco-container.hidden[data-v-fc2ebf13]{display:none}.image-tab-placeholder[data-v-fc2ebf13]{justify-content:center;align-items:center;gap:var(--spacing-sm);color:var(--text-secondary);background:var(--bg-container);text-align:center;padding:var(--spacing-lg);flex-direction:column;flex:1;display:flex}.image-tab-placeholder-title[data-v-fc2ebf13]{font-size:var(--font-size-md);font-weight:var(--font-weight-medium);color:var(--text-primary);word-break:break-all;margin:0}.image-tab-placeholder-hint[data-v-fc2ebf13]{font-size:var(--font-size-sm);color:var(--text-meta);margin:0}.editor-body[data-v-fc2ebf13]{flex:1;min-height:0;display:flex;position:relative;overflow:hidden}.preview-resizer[data-v-fc2ebf13]{cursor:col-resize;z-index:2;background:0 0;flex-shrink:0;width:7px;position:relative}.preview-resizer[data-v-fc2ebf13]:after{content:"";background:var(--border-color);width:1px;transition:background var(--transition-fast), width var(--transition-fast);position:absolute;top:0;bottom:0;left:50%;transform:translate(-50%)}.preview-resizer:hover[data-v-fc2ebf13]{background:var(--tint-primary-06)}.preview-resizer:hover[data-v-fc2ebf13]:after{background:var(--color-primary);width:2px}.preview-panel[data-v-fc2ebf13]{background:var(--bg-panel);flex-direction:column;flex:1 1 0;min-width:200px;display:flex;overflow:hidden}.preview-header[data-v-fc2ebf13]{background:var(--bg-panel);flex-shrink:0;align-items:center;gap:6px;height:34px;padding:0 10px;display:flex}.preview-title[data-v-fc2ebf13]{font-size:var(--font-size-xs);letter-spacing:.08em;text-transform:uppercase;color:var(--text-secondary);-webkit-user-select:none;user-select:none;font-weight:700}.preview-ext-badge[data-v-fc2ebf13]{font-size:var(--font-size-xs);border-radius:var(--radius-base);background:var(--tint-primary-16);color:var(--color-primary);letter-spacing:.04em;padding:1px 5px;font-weight:600}.preview-header-spacer[data-v-fc2ebf13]{flex:1}.preview-close-btn[data-v-fc2ebf13]{cursor:pointer;color:var(--text-meta);border-radius:var(--radius-base);transition:color var(--transition-fast), background var(--transition-fast);background:0 0;border:none;align-items:center;padding:3px;display:flex}.preview-close-btn[data-v-fc2ebf13]:hover{color:var(--color-danger-dark);background:var(--bg-hover)}.preview-body[data-v-fc2ebf13]{flex-direction:column;flex:1;display:flex;overflow:hidden}.preview-copybar[data-v-fc2ebf13]{border-bottom:1px solid var(--border-color);background:var(--bg-panel);flex-wrap:wrap;flex-shrink:0;align-items:center;gap:6px;padding:6px 10px;display:flex}.preview-copy-btn[data-v-fc2ebf13]{border:1px solid var(--border-color);border-radius:var(--radius-base);background:var(--bg-panel);color:var(--text-secondary);font-size:var(--font-size-xs);cursor:pointer;white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast), border-color var(--transition-fast);align-items:center;gap:5px;padding:3px 10px;font-weight:600;display:inline-flex}.preview-copy-btn[data-v-fc2ebf13]:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.preview-copy-btn[data-v-fc2ebf13]:disabled{opacity:.6;cursor:default}.preview-copy-btn.done[data-v-fc2ebf13]{border-color:var(--color-primary);color:var(--color-primary);background:var(--tint-primary-12)}.preview-copy-btn--primary[data-v-fc2ebf13]{background:var(--color-primary);color:#fff;border-color:#0000}.preview-copy-btn--primary[data-v-fc2ebf13]:hover:not(:disabled){background:var(--color-primary-dark,var(--color-primary));color:#fff}.preview-copy-btn--primary.done[data-v-fc2ebf13]{background:var(--color-primary);color:#fff;border-color:#0000}.preview-copy-btn-icon[data-v-fc2ebf13]{opacity:.75;font-family:monospace;font-size:11px}.preview-copy-embed[data-v-fc2ebf13]{color:var(--text-meta);font-size:var(--font-size-xs);cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:5px;margin-left:auto;display:inline-flex}.preview-copy-embed input[data-v-fc2ebf13]{accent-color:var(--color-primary);margin:0}.preview-iframe[data-v-fc2ebf13]{background:0 0;border:none;flex:1;width:100%;height:100%}.preview-markdown[data-v-fc2ebf13]{flex:1;width:100%;height:100%;overflow:auto}.preview-mindmap[data-v-fc2ebf13]{background:var(--bg-container,#fff);flex-direction:column;flex:1;width:100%;height:100%;display:flex;overflow:hidden}.mindmap-toggle-btn.disabled[data-v-fc2ebf13]{opacity:.45;cursor:not-allowed}.mindmap-toggle-btn.active[data-v-fc2ebf13]{color:#fff;background:linear-gradient(#6366f1 0%,#4f46e5 100%);border-color:#4f46e5}.preview-image-wrap[data-v-fc2ebf13]{background:var(--bg-container);flex:1;justify-content:center;align-items:center;padding:16px;display:flex;overflow:auto}.preview-image-wrap img[data-v-fc2ebf13]{object-fit:contain;border-radius:var(--radius-base);max-width:100%;max-height:100%;box-shadow:0 2px 12px #0003}.preview-toggle-btn[data-v-fc2ebf13]{cursor:pointer;height:34px;color:var(--text-secondary);font-size:var(--font-size-sm);white-space:nowrap;transition:background var(--transition-fast), color var(--transition-fast);background:0 0;border:none;flex-shrink:0;align-items:center;gap:5px;padding:0 10px;display:flex}.preview-toggle-btn[data-v-fc2ebf13]:hover{background:var(--bg-hover);color:var(--text-primary)}.preview-toggle-btn.active[data-v-fc2ebf13]{color:var(--color-primary);background:var(--tint-primary-08)}.sidebar-actions[data-v-fc2ebf13]{align-items:center;gap:2px;display:flex}.tree-inline-input-row[data-v-fc2ebf13]{cursor:default;background:var(--bg-hover)}.tree-inline-input[data-v-fc2ebf13]{min-width:0;height:20px;font-size:var(--font-size-mid);background:var(--bg-container);border:1px solid var(--color-primary);border-radius:var(--radius-base);color:var(--text-primary);outline:none;flex:1;padding:0 5px;font-family:inherit}.ctx-menu[data-v-fc2ebf13]{z-index:var(--z-menu-float);background:var(--bg-container);border:1px solid var(--border-color);border-radius:var(--radius-md);-webkit-user-select:none;user-select:none;min-width:160px;padding:4px;position:fixed;box-shadow:0 8px 24px #00000059}.ctx-menu-icon[data-v-fc2ebf13]{flex-shrink:0;width:13px;height:13px}.ctx-menu-item[data-v-fc2ebf13]{border-radius:var(--radius-base);cursor:pointer;width:100%;font-size:var(--font-size-mid);color:var(--text-primary);text-align:left;transition:background var(--transition-fast);background:0 0;border:none;align-items:center;gap:8px;padding:6px 10px;display:flex}.ctx-menu-item[data-v-fc2ebf13]:hover{background:var(--bg-hover)}.ctx-menu-item--danger[data-v-fc2ebf13]{color:var(--color-danger-dark)}.ctx-menu-item--danger[data-v-fc2ebf13]:hover{background:#ef44441a}.ctx-menu-sep[data-v-fc2ebf13]{background:var(--border-color);height:1px;margin:4px 2px}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{$ as e,E as t,I as n,N as r,S as i,W as a,Z as o,dt as s,j as c,pt as l,vt as u,xt as d,z as f}from"./runtime-dom.esm-bundler-BicOLibD.js";import{t as p}from"./_plugin-vue_export-helper-iXNJ6JSE.js";import{Mn as m}from"./css-BNFbzzrw.js";import{p as h,r as g,s as _,t as v}from"./vue-flow-controls-zeko7WMo.js";import{a as y,c as b,i as x,n as S,o as C,r as w,s as T,t as E}from"./UserInputNode-BtDF3aoX.js";f(),u();var D=`flow-execution-viewer`,O=r({__name:`FlowExecutionViewer`,props:{flowData:{type:Object,required:!0},currentNodeId:{type:String,default:void 0},executedNodeIds:{type:Array,default:()=>[]},failedNodeIds:{type:Array,default:()=>[]},executedEdgeIds:{type:Array,default:()=>[]}},setup(e,{expose:t}){t();function c(e){switch(e){case`command`:return`📋`;case`wait`:return`⏰`;case`version`:return`📦`;case`confirm`:return`✋`;case`code`:return`🧩`;case`start`:return`🚀`;case`condition`:return`🔀`;case`user_input`:return`⌨️`;default:return``}}let l=r({name:`FlowExecStartNodeRenderer`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(e){return()=>n(b,{id:e.id,nodeId:e.id,nodeType:`start`,title:m(`@FLOWNODE:开始`),icon:c(`start`),enabled:e.data?.enabled,selected:e.data?.selected,execStatus:e.data?.execStatus,deletable:!1},{})}});function u(e){return r({name:`FlowExecWrappedNode`,props:{id:{type:String,required:!0},data:{type:Object,required:!0}},setup(t){let r=i(()=>{let e=t.data?.config,n=[...Array.isArray(e?.conditionBranches)?e.conditionBranches:[]].sort((e,t)=>{let n=e?.handleId==="default"||e?.isDefault,r=t?.handleId==="default"||t?.isDefault;return n&&!r?1:!n&&r?-1:Number(e?.priority??0)-Number(t?.priority??0)}).map(e=>String(e?.handleId||``).trim()).filter(e=>!!e);return n.includes(`default`)||n.push(`default`),n.length?n:[`default`]});return()=>n(b,{id:t.id,nodeId:t.id,nodeType:t.data?.type,title:t.data?.label,icon:c(t.data?.type),enabled:t.data?.enabled,selected:t.data?.selected,execStatus:t.data?.execStatus,sourceHandleIds:t.data?.type===`condition`?r.value:void 0,deletable:!1},{default:()=>n(e,{data:t.data,id:t.id})})}})}let f={start:d(l),command:d(u(T)),wait:d(u(C)),version:d(u(y)),confirm:d(u(x)),code:d(u(w)),condition:d(u(S)),user_input:d(u(E))},p=e,{onPaneReady:O}=h({id:D}),k=null,A=null;async function j(e){if(e){if(!k){A=e;return}for(let t=0;t<6;t+=1){if(await a(),await new Promise(e=>requestAnimationFrame(()=>e())),!(typeof k?.findNode==`function`&&k.findNode(e))){await new Promise(e=>window.setTimeout(()=>e(),60));continue}try{await k.fitView({nodes:[e],padding:.35,includeHiddenNodes:!0,minZoom:.35,maxZoom:1.2,duration:200})}catch{}break}}}O(e=>{k=e,console.log(`[FlowExecutionViewer] onPaneReady, flowId=`,D),console.log(`[FlowExecutionViewer] instance keys=`,Object.keys(e||{}));try{k.fitView({padding:.2,includeHiddenNodes:!0,duration:0})}catch{}let t=(p.currentNodeId||A||``).trim();t&&(A=null,j(t))});let M=null;s(()=>p.currentNodeId,async e=>{e&&(M&&=(window.clearTimeout(M),null),M=window.setTimeout(async()=>{if(console.log(`[FlowExecutionViewer] focus request, flowId=`,D,`nodeId=`,e),!k){A=e,console.log(`[FlowExecutionViewer] flowInstance not ready, pendingFocusNodeId=`,A);return}j(e)},150))}),o(()=>{M&&=(window.clearTimeout(M),null)});let N={getNodeIcon:c,StartNodeRenderer:l,createWrappedNode:u,nodeTypes:f,props:p,flowId:D,onPaneReady:O,get flowInstance(){return k},set flowInstance(e){k=e},get pendingFocusNodeId(){return A},set pendingFocusNodeId(e){A=e},focusNode:j,get focusTimer(){return M},set focusTimer(e){M=e},nodesForRender:i(()=>{let e=Array.isArray(p.flowData?.nodes)?p.flowData.nodes:[],t=new Set(p.executedNodeIds),n=new Set(p.failedNodeIds),r=p.currentNodeId;return e.map(e=>{let i;r&&e.id===r?i=`running`:n.has(e.id)?i=`failed`:t.has(e.id)&&(i=`success`);let a=[];return t.has(e.id)&&a.push(`exec-node-done`),{...e,data:{...e.data,execStatus:i},class:a.join(` `)}})}),edgesForRender:i(()=>{let e=Array.isArray(p.flowData?.edges)?p.flowData.edges:[],t=new Set(p.executedEdgeIds);return e.map(e=>{let n=[];return t.has(e.id)&&n.push(`exec-edge-done`),{...e,class:n.join(` `)}})}),get VueFlow(){return _},get Background(){return g},get Controls(){return v}};return Object.defineProperty(N,"__isScriptSetup",{enumerable:!1,value:!0}),N}});f();var k={class:`flow-exec-viewer`};function A(n,r,i,a,o,s){return e(),t(`div`,k,[c(a.VueFlow,{id:a.flowId,nodes:a.nodesForRender,edges:a.edgesForRender,"node-types":a.nodeTypes,"nodes-draggable":!1,"nodes-connectable":!1,"elements-selectable":!1,"zoom-on-scroll":!0,"zoom-on-double-click":!1,"pan-on-drag":!0,"min-zoom":.2,"max-zoom":1.5},{default:l(()=>[c(a.Background),c(a.Controls)]),_:1},8,[`nodes`,`edges`])])}var j=p(O,[[`render`,A],[`__scopeId`,`data-v-edba3f0b`],[`__file`,`D:/workspace/github_workspace/zen-gitsync/src/ui/client/src/components/flow/FlowExecutionViewer.vue`]]);export{j as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.flow-exec-viewer[data-v-edba3f0b]{border:1px solid var(--border-component);background:var(--bg-code);height:240px;overflow:hidden}[data-v-edba3f0b] .vue-flow__node.exec-node-done{opacity:.85}[data-v-edba3f0b] .vue-flow__edge.exec-edge-done .vue-flow__edge-path{stroke:var(--color-success);stroke-width:2.5px}
|