@band-app/server 0.15.0 → 0.16.3
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/dist/client/assets/{DockviewTerminalContainer-DJBIrF63.js → DockviewTerminalContainer-D2lnsm6V.js} +2 -2
- package/dist/client/assets/TerminalPanel-SEbvgXv_.js +4 -0
- package/dist/client/assets/{_basePickBy-Dc0lZvrW.js → _basePickBy-C-uqClKF.js} +1 -1
- package/dist/client/assets/{_baseUniq-Cf73kSyg.js → _baseUniq-sN_xdSud.js} +1 -1
- package/dist/client/assets/{arc-CwSM8pE7.js → arc-DOqEiCLs.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-CH39Gb3A.js → architectureDiagram-VXUJARFQ-DqRs-Rmj.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-DDxgl1uo.js → blockDiagram-VD42YOAC-Dxh5tO7I.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-BfEjKk-g.js → c4Diagram-YG6GDRKO-CykynX-A.js} +1 -1
- package/dist/client/assets/channel-DijZVjmy.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-m8XoXk_H.js → chunk-4BX2VUAB-BckEbEmg.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CtGE4lZU.js → chunk-55IACEB6-Ds9A0UL5.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-e8RHFxfZ.js → chunk-B4BG7PRW-BbdA9dFb.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-6OH7qKMA.js → chunk-DI55MBZ5-C10prUQu.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-OC-xaPXK.js → chunk-FMBD7UC4-CMO5VhEI.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-OAk8wo3f.js → chunk-QN33PNHL-BrbSzW7G.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-BQaX9Wrw.js → chunk-QZHKN3VN-BjFQUCU6.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-BB9WpJAf.js → chunk-TZMSLE5B-B6ZDwm2_.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-DkjTgKpR.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-DkjTgKpR.js +1 -0
- package/dist/client/assets/clone-DTHwmURu.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-C9h_X8Kk.js → cose-bilkent-S5V4N54A-DbSjwZ4l.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-DqYC11ua.js → dagre-6UL2VRFP-Q5hxi0O0.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-CI1DRC6A.js → diagram-PSM6KHXK-D7kyAUq5.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-fCfXFf0Y.js → diagram-QEK2KX5R-B7mpl_Jj.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-ShkC9z2o.js → diagram-S2PKOQOG-CcIvSvFS.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-CaIQw3Ar.js → erDiagram-Q2GNP2WA-M2OHKSFi.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-CBTayrED.js → flowDiagram-NV44I4VS-Ot2zCa0t.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-BXX1Htdo.js → ganttDiagram-JELNMOA3-Dtl6PI3C.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-Dwzg4ngG.js → gitGraphDiagram-V2S2FVAM-DJCTwkyi.js} +1 -1
- package/dist/client/assets/{graph-CiXo3Prx.js → graph-DhvBAydB.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-7aLtgz8i.js → highlighted-body-B3W2YXNL-C6fHuUGl.js} +1 -1
- package/dist/client/assets/{index-Du9yJkB_.js → index-26c50Xcq.js} +1 -1
- package/dist/client/assets/index-B1K9dSWl.js +1 -0
- package/dist/client/assets/{index-C1zwysWn.js → index-B7VmPIW6.js} +1 -1
- package/dist/client/assets/{index-De1kIhJh.js → index-BBv9ZEF9.js} +1 -1
- package/dist/client/assets/{index-CVm5Qdu2.js → index-BDHBx5UL.js} +1 -1
- package/dist/client/assets/{index-BMWcJGJE.js → index-BUTfo7TS.js} +1 -1
- package/dist/client/assets/{index-Cg6YccFW.js → index-BYvWvSws.js} +1 -1
- package/dist/client/assets/{index-DmilV26W.js → index-CDbyr_lc.js} +1 -1
- package/dist/client/assets/{index-DQmzIoYb.js → index-CHGnZzhm.js} +1 -1
- package/dist/client/assets/{index-DRtcpY-M.js → index-CKHhLCNz.js} +1 -1
- package/dist/client/assets/{index-Gs7HImF7.js → index-CfsvL24Z.js} +1 -1
- package/dist/client/assets/{index-BCNUajNr.js → index-CjXcgzNg.js} +1 -1
- package/dist/client/assets/{index-DypgdPcb.js → index-CuNktTO3.js} +1 -1
- package/dist/client/assets/{index-CO6I2abN.js → index-DDe15mVl.js} +1 -1
- package/dist/client/assets/{index-CfYqVQ5p.js → index-I4Tc5Cuc.js} +1 -1
- package/dist/client/assets/{index-Di4toQJ5.js → index-MZ-6_xYm.js} +1 -1
- package/dist/client/assets/{index-DZu_2Bx_.js → index-SeTSJcqN.js} +1 -1
- package/dist/client/assets/{index-CR-ehys5.js → index-_yteHBmq.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-CWD1TyOW.js → infoDiagram-HS3SLOUP-CbAjFJUe.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DhxNYqmd.js → journeyDiagram-XKPGCS4Q-Bf_0viAE.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-CnS4C6i0.js → kanban-definition-3W4ZIXB7-CB2ylbw7.js} +1 -1
- package/dist/client/assets/{layout-CSID7t17.js → layout-Cp_4dcMO.js} +1 -1
- package/dist/client/assets/{linear-DoyBnBXg.js → linear-D1KyszeO.js} +1 -1
- package/dist/client/assets/main-CBJTAZFq.css +1 -0
- package/dist/client/assets/{main-DqsO5O95.js → main-Cl2c5yKs.js} +236 -236
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-DInqVMnG.js → mindmap-definition-VGOIOE7T-Cm_2Y7ZK.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-9NXrhDdT.js → pieDiagram-ADFJNKIX-C9PiUHN5.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-C9V_pdwH.js → quadrantDiagram-AYHSOK5B-Cj0nbFw-.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-D7InXBsj.js → requirementDiagram-UZGBJVZJ-BVgceiyR.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-wucasjR9.js → sankeyDiagram-TZEHDZUN-D7dheggz.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-z8y3Dw_f.js → sequenceDiagram-WL72ISMW-DVDMYgkc.js} +1 -1
- package/dist/client/assets/{square-terminal-BGmf1D-6.js → square-terminal-C64ybmC7.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-UgwHItEV.js → stateDiagram-FKZM4ZOC-ClAcB9Xo.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BH91aEUE.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-BFRCSYLj.js → timeline-definition-IT6M3QCI-Cs1CMQvF.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-aQmWnuZQ.js → treemap-GDKQZRPO-DerMxDGL.js} +1 -1
- package/dist/client/assets/{useSessionListContext-HoR6j8FY.js → useSessionListContext-BcM5_lz3.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId-DGCQw9gi.js → workspace._workspaceId-C4dZT1kN.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.changes-DBE9NcLH.js → workspace._workspaceId.changes-BbnFHDel.js} +1 -1
- package/dist/client/assets/workspace._workspaceId.code-5MY9mEL9.js +1 -0
- package/dist/client/assets/{workspace._workspaceId.code._-CsnvG2rj.js → workspace._workspaceId.code._-DRRjmZ4D.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.code.index-BdfNmZpz.js → workspace._workspaceId.code.index-CQLsjESL.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.index-C7NyedGf.js → workspace._workspaceId.index-CE3X4XHe.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.terminal-C5ph2UWn.js → workspace._workspaceId.terminal-0Iuu4wZI.js} +2 -2
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-DElSdzdM.js → xychartDiagram-PRI3JC2R-BVo__gVD.js} +1 -1
- package/dist/migrations/20260518175010_wealthy_talon/migration.sql +1 -0
- package/dist/migrations/20260518175010_wealthy_talon/snapshot.json +856 -0
- package/dist/openapi.json +11356 -0
- package/dist/server/assets/{DockviewTerminalContainer-Btn06b30.js → DockviewTerminalContainer-RbFw8Eo4.js} +3 -3
- package/dist/server/assets/{TerminalPanel-DiuUhPK5.js → TerminalPanel-BS0KF1ac.js} +52 -22
- package/dist/server/assets/{_basePickBy-D5WFbUhD.js → _basePickBy-Vtp-JFm9.js} +2 -2
- package/dist/server/assets/{_baseUniq-DFZeWlPn.js → _baseUniq-CRtvsDi1.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-UCApGYfd.js → _tanstack-start-manifest_v-787sukfk.js} +1 -1
- package/dist/server/assets/{arc-B1QmYB3V.js → arc-ChWehBm_.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-SXElPY6g.js → architecture-7HQA4BMR-BiLezQsp.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-H4ZI6Opr.js → architectureDiagram-VXUJARFQ-tjTQ4ZaT.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-UhTmqpkK.js → blockDiagram-VD42YOAC-C0oBPtSv.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-BcLh1QQl.js → c4Diagram-YG6GDRKO-nGE1cXwD.js} +2 -2
- package/dist/server/assets/{channel-DVtl256s.js → channel-CqQOLgw9.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-BYUElNcW.js → chunk-4BX2VUAB-DrJXJmx5.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-CQXVz3Ix.js → chunk-55IACEB6-CKxRFH9J.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-xbFaXlOL.js → chunk-B4BG7PRW-BxyNZV2w.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-BWUyQjGD.js → chunk-DI55MBZ5-CajwqGPE.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-tuJ9minw.js → chunk-FMBD7UC4-D1CO-v-G.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-B9p522HA.js → chunk-QN33PNHL-D4KiZklP.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-C6GPdMrh.js → chunk-QZHKN3VN-CNElfh9C.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-6Ng3t3Od.js → chunk-TZMSLE5B-CHBqvPAr.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-BvOdRP7s.js → classDiagram-2ON5EDUG-D3C4Rk7Q.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-BvOdRP7s.js → classDiagram-v2-WZHVMYZB-D3C4Rk7Q.js} +5 -5
- package/dist/server/assets/{clone-CuDKCzEN.js → clone-DsPS0_DH.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-BhU6LMhN.js → cose-bilkent-S5V4N54A-V_MYkZlm.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-CH-VbyTI.js → dagre-6UL2VRFP-D_Mh5gNH.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-BE0vVJdc.js → diagram-PSM6KHXK-B9dGPsE9.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-rlYyF51_.js → diagram-QEK2KX5R-BcfmavO-.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-CsrxbKjr.js → diagram-S2PKOQOG-B8urPf9c.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-DeBKeqCX.js → erDiagram-Q2GNP2WA-CzG0zKt-.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-hg6b4dSR.js → flowDiagram-NV44I4VS-Bk7aIalC.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-oy5gzveG.js → ganttDiagram-JELNMOA3-wmt8nm9q.js} +2 -2
- package/dist/server/assets/{gitGraph-G5XIXVHT-DyKGpXFt.js → gitGraph-G5XIXVHT-CmiFNHiv.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CN8rFh7o.js → gitGraphDiagram-V2S2FVAM-OV2DR1Ux.js} +7 -7
- package/dist/server/assets/{graph-CdsnxBHP.js → graph-ziMVg61H.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-D6ahbJdi.js → highlighted-body-B3W2YXNL-DX00yTJM.js} +1 -1
- package/dist/server/assets/{index-BJorH749.js → index-9M09S61v.js} +2 -2
- package/dist/server/assets/{index-Crgd09US.js → index-B5x9IUkQ.js} +2 -2
- package/dist/server/assets/{index-CaRM9svU.js → index-BvBMEwhL.js} +4 -4
- package/dist/server/assets/{index-D2P0pxCr.js → index-C-k9sCKq.js} +2 -2
- package/dist/server/assets/{index-BhJN38EV.js → index-CKmyLecf.js} +2 -2
- package/dist/server/assets/{index-DsLZMKNC.js → index-CXnsJrX8.js} +5 -5
- package/dist/server/assets/{index-CchdHjwq.js → index-Ce2uXVrE.js} +2 -2
- package/dist/server/assets/{index-BT8sxrq0.js → index-CiWhFogO.js} +2 -2
- package/dist/server/assets/{index-CsnrxvSd.js → index-D5nqcxSY.js} +3 -3
- package/dist/server/assets/{index-BzYp7sVL.js → index-DLmI6-iR.js} +1 -1
- package/dist/server/assets/{index-C9H7VUtp.js → index-DNaA-OTp.js} +2 -2
- package/dist/server/assets/{index-7k2BqwZv.js → index-DPAkuW3l.js} +2 -2
- package/dist/server/assets/{index-XaoY6ovr.js → index-VtjR2oZj.js} +2 -2
- package/dist/server/assets/{index-DBbuiN2t.js → index-ayG05uhc.js} +3 -3
- package/dist/server/assets/{index-B9hFfb3C.js → index-l8a7u6GS.js} +2 -2
- package/dist/server/assets/{index-Dp5TbN68.js → index-sKmEy2Z2.js} +5 -5
- package/dist/server/assets/{index-aOrOBCQS.js → index-sbo2EHgw.js} +2 -2
- package/dist/server/assets/{index-DIv5BUol.js → index-xVhCXu45.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-HckNvgz-.js → info-VBDWY6EO-muqpsCRw.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-P_hugt8D.js → infoDiagram-HS3SLOUP-D8EoxteQ.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-lQfkL_-i.js → journeyDiagram-XKPGCS4Q-BwZk-fnC.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-CFh-YdaO.js → kanban-definition-3W4ZIXB7-DEfYos8T.js} +2 -2
- package/dist/server/assets/{layout-Ce1d_Ibk.js → layout-CKMmyz2h.js} +4 -4
- package/dist/server/assets/{linear-CuiUQTrq.js → linear-DXR7qYUB.js} +1 -1
- package/dist/server/assets/{mermaid-3ZIDBTTL-C7xGj9Xg.js → mermaid-3ZIDBTTL-DxhML77C.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-BOlp9l_E.js → mermaid-parser.core-DBGA5y48.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-Byc-qFo2.js → mindmap-definition-VGOIOE7T-Bg8B0Ls9.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-BiRLh9CC.js → packet-DYOGHKS2-CnH_YgfD.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-hgf7Lgm4.js → pie-VRWISCQL-iceCWNPC.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-YXV3ET4_.js → pieDiagram-ADFJNKIX-Bw3RR9nb.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-r_peNHCA.js → quadrantDiagram-AYHSOK5B-CpLsW_Ir.js} +2 -2
- package/dist/server/assets/{radar-ZZBFDIW7-CGIDKJlK.js → radar-ZZBFDIW7-Bab4MCR4.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-aI3jQPLf.js → requirementDiagram-UZGBJVZJ-DkGtaEnw.js} +3 -3
- package/dist/server/assets/{router-BNIoB7QX.js → router-yk-AJHab.js} +1119 -880
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-B1Sb9Zvd.js → sankeyDiagram-TZEHDZUN-CtEV3_Bx.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-DrJxigNy.js → sequenceDiagram-WL72ISMW-BMW4qEme.js} +3 -3
- package/dist/server/assets/{square-terminal-DWTC1p8r.js → square-terminal-Bui9B6KN.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-Dnsp85zH.js → stateDiagram-FKZM4ZOC-C7xazM8E.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-C6x8SVRv.js → stateDiagram-v2-4FDKWEC3-D_rYvDGP.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-DSIrepaO.js → timeline-definition-IT6M3QCI-BaAlfxrc.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-C9hefMmZ.js → treemap-GDKQZRPO-DlP1TABE.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-BY5hpCRH.js → workspace._workspaceId-Be45P7LL.js} +2 -2
- package/dist/server/assets/{workspace._workspaceId.changes-CiekaeTG.js → workspace._workspaceId.changes-EoyIscxQ.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code._-Bi-RxK7c.js → workspace._workspaceId.code._-CcX7Gt0G.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code.index-DRR8qo6z.js → workspace._workspaceId.code.index-CFbCDVph.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.index-BRFgw3FA.js → workspace._workspaceId.index-DmYHy6nH.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.terminal-BhyASMi7.js → workspace._workspaceId.terminal-D_KPwmYr.js} +2 -2
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-0ftH7hFg.js → xychartDiagram-PRI3JC2R-Cq7t_yS-.js} +2 -2
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +710 -467
- package/package.json +6 -5
- package/dist/client/assets/TerminalPanel-CJRwWyR3.js +0 -4
- package/dist/client/assets/channel-CXGOk1aw.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-CN-WyCFd.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-CN-WyCFd.js +0 -1
- package/dist/client/assets/clone-BLJrTeWA.js +0 -1
- package/dist/client/assets/index-eX1Ljh4a.js +0 -1
- package/dist/client/assets/main-DYrDxnSM.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-B0Y2fSqT.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code-Cc2uBW1l.js +0 -1
|
@@ -1093,44 +1093,44 @@ const createLucideIcon = (iconName, iconNode) => {
|
|
|
1093
1093
|
Component.displayName = toPascalCase(iconName);
|
|
1094
1094
|
return Component;
|
|
1095
1095
|
};
|
|
1096
|
-
const __iconNode$
|
|
1096
|
+
const __iconNode$1z = [
|
|
1097
1097
|
["path", { d: "M12 17V3", key: "1cwfxf" }],
|
|
1098
1098
|
["path", { d: "m6 11 6 6 6-6", key: "12ii2o" }],
|
|
1099
1099
|
["path", { d: "M19 21H5", key: "150jfl" }]
|
|
1100
1100
|
];
|
|
1101
|
-
const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$
|
|
1102
|
-
const __iconNode$
|
|
1101
|
+
const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1z);
|
|
1102
|
+
const __iconNode$1y = [
|
|
1103
1103
|
["path", { d: "M12 5v14", key: "s699le" }],
|
|
1104
1104
|
["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
|
|
1105
1105
|
];
|
|
1106
|
-
const ArrowDown = createLucideIcon("arrow-down", __iconNode$
|
|
1107
|
-
const __iconNode$
|
|
1106
|
+
const ArrowDown = createLucideIcon("arrow-down", __iconNode$1y);
|
|
1107
|
+
const __iconNode$1x = [
|
|
1108
1108
|
["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
|
|
1109
1109
|
["path", { d: "M19 12H5", key: "x3x0zl" }]
|
|
1110
1110
|
];
|
|
1111
|
-
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$
|
|
1112
|
-
const __iconNode$
|
|
1111
|
+
const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1x);
|
|
1112
|
+
const __iconNode$1w = [
|
|
1113
1113
|
["path", { d: "M5 12h14", key: "1ays0h" }],
|
|
1114
1114
|
["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
|
|
1115
1115
|
];
|
|
1116
|
-
const ArrowRight = createLucideIcon("arrow-right", __iconNode$
|
|
1117
|
-
const __iconNode$
|
|
1116
|
+
const ArrowRight = createLucideIcon("arrow-right", __iconNode$1w);
|
|
1117
|
+
const __iconNode$1v = [
|
|
1118
1118
|
["path", { d: "m18 9-6-6-6 6", key: "kcunyi" }],
|
|
1119
1119
|
["path", { d: "M12 3v14", key: "7cf3v8" }],
|
|
1120
1120
|
["path", { d: "M5 21h14", key: "11awu3" }]
|
|
1121
1121
|
];
|
|
1122
|
-
const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$
|
|
1123
|
-
const __iconNode$
|
|
1122
|
+
const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1v);
|
|
1123
|
+
const __iconNode$1u = [
|
|
1124
1124
|
["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
|
|
1125
1125
|
["path", { d: "M12 19V5", key: "x0mq9r" }]
|
|
1126
1126
|
];
|
|
1127
|
-
const ArrowUp = createLucideIcon("arrow-up", __iconNode$
|
|
1128
|
-
const __iconNode$
|
|
1127
|
+
const ArrowUp = createLucideIcon("arrow-up", __iconNode$1u);
|
|
1128
|
+
const __iconNode$1t = [
|
|
1129
1129
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1130
1130
|
["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
|
|
1131
1131
|
];
|
|
1132
|
-
const Ban = createLucideIcon("ban", __iconNode$
|
|
1133
|
-
const __iconNode$
|
|
1132
|
+
const Ban = createLucideIcon("ban", __iconNode$1t);
|
|
1133
|
+
const __iconNode$1s = [
|
|
1134
1134
|
["path", { d: "M12 8V4H8", key: "hb8ula" }],
|
|
1135
1135
|
["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
|
|
1136
1136
|
["path", { d: "M2 14h2", key: "vft8re" }],
|
|
@@ -1138,8 +1138,8 @@ const __iconNode$1r = [
|
|
|
1138
1138
|
["path", { d: "M15 13v2", key: "1xurst" }],
|
|
1139
1139
|
["path", { d: "M9 13v2", key: "rq6x2g" }]
|
|
1140
1140
|
];
|
|
1141
|
-
const Bot = createLucideIcon("bot", __iconNode$
|
|
1142
|
-
const __iconNode$
|
|
1141
|
+
const Bot = createLucideIcon("bot", __iconNode$1s);
|
|
1142
|
+
const __iconNode$1r = [
|
|
1143
1143
|
[
|
|
1144
1144
|
"path",
|
|
1145
1145
|
{ d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" }
|
|
@@ -1152,62 +1152,62 @@ const __iconNode$1q = [
|
|
|
1152
1152
|
}
|
|
1153
1153
|
]
|
|
1154
1154
|
];
|
|
1155
|
-
const Braces = createLucideIcon("braces", __iconNode$
|
|
1156
|
-
const __iconNode$
|
|
1155
|
+
const Braces = createLucideIcon("braces", __iconNode$1r);
|
|
1156
|
+
const __iconNode$1q = [
|
|
1157
1157
|
["path", { d: "m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16", key: "d5nyq2" }],
|
|
1158
1158
|
["path", { d: "M22 9v7", key: "pvm9v3" }],
|
|
1159
1159
|
["path", { d: "M3.304 13h6.392", key: "1q3zxz" }],
|
|
1160
1160
|
["circle", { cx: "18.5", cy: "12.5", r: "3.5", key: "z97x68" }]
|
|
1161
1161
|
];
|
|
1162
|
-
const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$
|
|
1163
|
-
const __iconNode$
|
|
1164
|
-
const Check = createLucideIcon("check", __iconNode$
|
|
1165
|
-
const __iconNode$
|
|
1166
|
-
const ChevronDown = createLucideIcon("chevron-down", __iconNode$
|
|
1167
|
-
const __iconNode$
|
|
1168
|
-
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$
|
|
1169
|
-
const __iconNode$
|
|
1170
|
-
const ChevronRight = createLucideIcon("chevron-right", __iconNode$
|
|
1171
|
-
const __iconNode$
|
|
1172
|
-
const ChevronUp = createLucideIcon("chevron-up", __iconNode$
|
|
1173
|
-
const __iconNode$
|
|
1162
|
+
const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1q);
|
|
1163
|
+
const __iconNode$1p = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
1164
|
+
const Check = createLucideIcon("check", __iconNode$1p);
|
|
1165
|
+
const __iconNode$1o = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1166
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$1o);
|
|
1167
|
+
const __iconNode$1n = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
1168
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1n);
|
|
1169
|
+
const __iconNode$1m = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
1170
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$1m);
|
|
1171
|
+
const __iconNode$1l = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
1172
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$1l);
|
|
1173
|
+
const __iconNode$1k = [
|
|
1174
1174
|
["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }],
|
|
1175
1175
|
["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }]
|
|
1176
1176
|
];
|
|
1177
|
-
const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$
|
|
1178
|
-
const __iconNode$
|
|
1177
|
+
const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1k);
|
|
1178
|
+
const __iconNode$1j = [
|
|
1179
1179
|
["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
|
|
1180
1180
|
["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
|
|
1181
1181
|
];
|
|
1182
|
-
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$
|
|
1183
|
-
const __iconNode$
|
|
1182
|
+
const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1j);
|
|
1183
|
+
const __iconNode$1i = [
|
|
1184
1184
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1185
1185
|
["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
|
|
1186
1186
|
["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
|
|
1187
1187
|
];
|
|
1188
|
-
const CircleAlert = createLucideIcon("circle-alert", __iconNode$
|
|
1189
|
-
const __iconNode$
|
|
1188
|
+
const CircleAlert = createLucideIcon("circle-alert", __iconNode$1i);
|
|
1189
|
+
const __iconNode$1h = [
|
|
1190
1190
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1191
1191
|
["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
|
|
1192
1192
|
];
|
|
1193
|
-
const CircleCheck = createLucideIcon("circle-check", __iconNode$
|
|
1194
|
-
const __iconNode$
|
|
1193
|
+
const CircleCheck = createLucideIcon("circle-check", __iconNode$1h);
|
|
1194
|
+
const __iconNode$1g = [
|
|
1195
1195
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1196
1196
|
["path", { d: "m15 9-6 6", key: "1uzhvr" }],
|
|
1197
1197
|
["path", { d: "m9 9 6 6", key: "z0biqf" }]
|
|
1198
1198
|
];
|
|
1199
|
-
const CircleX = createLucideIcon("circle-x", __iconNode$
|
|
1200
|
-
const __iconNode$
|
|
1201
|
-
const Circle = createLucideIcon("circle", __iconNode$
|
|
1202
|
-
const __iconNode$
|
|
1199
|
+
const CircleX = createLucideIcon("circle-x", __iconNode$1g);
|
|
1200
|
+
const __iconNode$1f = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
1201
|
+
const Circle = createLucideIcon("circle", __iconNode$1f);
|
|
1202
|
+
const __iconNode$1e = [
|
|
1203
1203
|
["path", { d: "M11 14h10", key: "1w8e9d" }],
|
|
1204
1204
|
["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
|
|
1205
1205
|
["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
|
|
1206
1206
|
["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113", key: "bjbb7m" }],
|
|
1207
1207
|
["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
|
|
1208
1208
|
];
|
|
1209
|
-
const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$
|
|
1210
|
-
const __iconNode$
|
|
1209
|
+
const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$1e);
|
|
1210
|
+
const __iconNode$1d = [
|
|
1211
1211
|
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
1212
1212
|
[
|
|
1213
1213
|
"path",
|
|
@@ -1217,59 +1217,59 @@ const __iconNode$1c = [
|
|
|
1217
1217
|
}
|
|
1218
1218
|
]
|
|
1219
1219
|
];
|
|
1220
|
-
const Clipboard = createLucideIcon("clipboard", __iconNode$
|
|
1221
|
-
const __iconNode$
|
|
1220
|
+
const Clipboard = createLucideIcon("clipboard", __iconNode$1d);
|
|
1221
|
+
const __iconNode$1c = [
|
|
1222
1222
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1223
1223
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
|
|
1224
1224
|
];
|
|
1225
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
1226
|
-
const __iconNode$
|
|
1225
|
+
const Clock = createLucideIcon("clock", __iconNode$1c);
|
|
1226
|
+
const __iconNode$1b = [
|
|
1227
1227
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
1228
1228
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
1229
1229
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
1230
1230
|
];
|
|
1231
|
-
const CodeXml = createLucideIcon("code-xml", __iconNode$
|
|
1232
|
-
const __iconNode$
|
|
1231
|
+
const CodeXml = createLucideIcon("code-xml", __iconNode$1b);
|
|
1232
|
+
const __iconNode$1a = [
|
|
1233
1233
|
["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
|
|
1234
1234
|
["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
|
|
1235
1235
|
];
|
|
1236
|
-
const Code = createLucideIcon("code", __iconNode$
|
|
1237
|
-
const __iconNode$
|
|
1236
|
+
const Code = createLucideIcon("code", __iconNode$1a);
|
|
1237
|
+
const __iconNode$19 = [
|
|
1238
1238
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
1239
1239
|
["path", { d: "M12 3v18", key: "108xh3" }]
|
|
1240
1240
|
];
|
|
1241
|
-
const Columns2 = createLucideIcon("columns-2", __iconNode$
|
|
1242
|
-
const __iconNode$
|
|
1241
|
+
const Columns2 = createLucideIcon("columns-2", __iconNode$19);
|
|
1242
|
+
const __iconNode$18 = [
|
|
1243
1243
|
[
|
|
1244
1244
|
"path",
|
|
1245
1245
|
{ d: "M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3", key: "11bfej" }
|
|
1246
1246
|
]
|
|
1247
1247
|
];
|
|
1248
|
-
const Command$1 = createLucideIcon("command", __iconNode$
|
|
1249
|
-
const __iconNode$
|
|
1248
|
+
const Command$1 = createLucideIcon("command", __iconNode$18);
|
|
1249
|
+
const __iconNode$17 = [
|
|
1250
1250
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
1251
1251
|
["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
|
|
1252
1252
|
];
|
|
1253
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
1254
|
-
const __iconNode$
|
|
1253
|
+
const Copy = createLucideIcon("copy", __iconNode$17);
|
|
1254
|
+
const __iconNode$16 = [
|
|
1255
1255
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1256
1256
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1257
1257
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1258
1258
|
];
|
|
1259
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
1260
|
-
const __iconNode$
|
|
1259
|
+
const Database = createLucideIcon("database", __iconNode$16);
|
|
1260
|
+
const __iconNode$15 = [
|
|
1261
1261
|
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
1262
1262
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
1263
1263
|
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
1264
1264
|
];
|
|
1265
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
1266
|
-
const __iconNode$
|
|
1265
|
+
const Download = createLucideIcon("download", __iconNode$15);
|
|
1266
|
+
const __iconNode$14 = [
|
|
1267
1267
|
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
1268
1268
|
["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
|
|
1269
1269
|
["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
|
|
1270
1270
|
];
|
|
1271
|
-
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$
|
|
1272
|
-
const __iconNode$
|
|
1271
|
+
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$14);
|
|
1272
|
+
const __iconNode$13 = [
|
|
1273
1273
|
["path", { d: "m15 15 6 6", key: "1s409w" }],
|
|
1274
1274
|
["path", { d: "m15 9 6-6", key: "ko1vev" }],
|
|
1275
1275
|
["path", { d: "M21 16v5h-5", key: "1ck2sf" }],
|
|
@@ -1279,14 +1279,14 @@ const __iconNode$12 = [
|
|
|
1279
1279
|
["path", { d: "M3 8V3h5", key: "1ln10m" }],
|
|
1280
1280
|
["path", { d: "M9 9 3 3", key: "v551iv" }]
|
|
1281
1281
|
];
|
|
1282
|
-
const Expand = createLucideIcon("expand", __iconNode$
|
|
1283
|
-
const __iconNode$
|
|
1282
|
+
const Expand = createLucideIcon("expand", __iconNode$13);
|
|
1283
|
+
const __iconNode$12 = [
|
|
1284
1284
|
["path", { d: "M15 3h6v6", key: "1q9fwt" }],
|
|
1285
1285
|
["path", { d: "M10 14 21 3", key: "gplh6r" }],
|
|
1286
1286
|
["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
|
|
1287
1287
|
];
|
|
1288
|
-
const ExternalLink$1 = createLucideIcon("external-link", __iconNode$
|
|
1289
|
-
const __iconNode$
|
|
1288
|
+
const ExternalLink$1 = createLucideIcon("external-link", __iconNode$12);
|
|
1289
|
+
const __iconNode$11 = [
|
|
1290
1290
|
[
|
|
1291
1291
|
"path",
|
|
1292
1292
|
{
|
|
@@ -1296,8 +1296,8 @@ const __iconNode$10 = [
|
|
|
1296
1296
|
],
|
|
1297
1297
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
|
|
1298
1298
|
];
|
|
1299
|
-
const Eye = createLucideIcon("eye", __iconNode$
|
|
1300
|
-
const __iconNode
|
|
1299
|
+
const Eye = createLucideIcon("eye", __iconNode$11);
|
|
1300
|
+
const __iconNode$10 = [
|
|
1301
1301
|
[
|
|
1302
1302
|
"path",
|
|
1303
1303
|
{
|
|
@@ -1315,8 +1315,8 @@ const __iconNode$$ = [
|
|
|
1315
1315
|
{ d: "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1", key: "mpwhp6" }
|
|
1316
1316
|
]
|
|
1317
1317
|
];
|
|
1318
|
-
const FileBraces = createLucideIcon("file-braces", __iconNode
|
|
1319
|
-
const __iconNode
|
|
1318
|
+
const FileBraces = createLucideIcon("file-braces", __iconNode$10);
|
|
1319
|
+
const __iconNode$$ = [
|
|
1320
1320
|
[
|
|
1321
1321
|
"path",
|
|
1322
1322
|
{
|
|
@@ -1328,8 +1328,8 @@ const __iconNode$_ = [
|
|
|
1328
1328
|
["path", { d: "m5 16-3 3 3 3", key: "331omg" }],
|
|
1329
1329
|
["path", { d: "m9 22 3-3-3-3", key: "lsp7cz" }]
|
|
1330
1330
|
];
|
|
1331
|
-
const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode
|
|
1332
|
-
const __iconNode$
|
|
1331
|
+
const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$$);
|
|
1332
|
+
const __iconNode$_ = [
|
|
1333
1333
|
[
|
|
1334
1334
|
"path",
|
|
1335
1335
|
{
|
|
@@ -1340,8 +1340,8 @@ const __iconNode$Z = [
|
|
|
1340
1340
|
["path", { d: "M12 9v4", key: "juzpu7" }],
|
|
1341
1341
|
["path", { d: "M12 17h.01", key: "p32p05" }]
|
|
1342
1342
|
];
|
|
1343
|
-
const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$
|
|
1344
|
-
const __iconNode$
|
|
1343
|
+
const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$_);
|
|
1344
|
+
const __iconNode$Z = [
|
|
1345
1345
|
[
|
|
1346
1346
|
"path",
|
|
1347
1347
|
{
|
|
@@ -1353,8 +1353,8 @@ const __iconNode$Y = [
|
|
|
1353
1353
|
["path", { d: "M2 15h10", key: "jfw4w8" }],
|
|
1354
1354
|
["path", { d: "m9 18 3-3-3-3", key: "112psh" }]
|
|
1355
1355
|
];
|
|
1356
|
-
const FileInput = createLucideIcon("file-input", __iconNode$
|
|
1357
|
-
const __iconNode$
|
|
1356
|
+
const FileInput = createLucideIcon("file-input", __iconNode$Z);
|
|
1357
|
+
const __iconNode$Y = [
|
|
1358
1358
|
[
|
|
1359
1359
|
"path",
|
|
1360
1360
|
{
|
|
@@ -1366,8 +1366,8 @@ const __iconNode$X = [
|
|
|
1366
1366
|
["path", { d: "M9 15h6", key: "cctwl0" }],
|
|
1367
1367
|
["path", { d: "M12 18v-6", key: "17g6i2" }]
|
|
1368
1368
|
];
|
|
1369
|
-
const FilePlus = createLucideIcon("file-plus", __iconNode$
|
|
1370
|
-
const __iconNode$
|
|
1369
|
+
const FilePlus = createLucideIcon("file-plus", __iconNode$Y);
|
|
1370
|
+
const __iconNode$X = [
|
|
1371
1371
|
[
|
|
1372
1372
|
"path",
|
|
1373
1373
|
{
|
|
@@ -1380,8 +1380,8 @@ const __iconNode$W = [
|
|
|
1380
1380
|
["path", { d: "M16 13H8", key: "t4e002" }],
|
|
1381
1381
|
["path", { d: "M16 17H8", key: "z1uh3a" }]
|
|
1382
1382
|
];
|
|
1383
|
-
const FileText = createLucideIcon("file-text", __iconNode$
|
|
1384
|
-
const __iconNode$
|
|
1383
|
+
const FileText = createLucideIcon("file-text", __iconNode$X);
|
|
1384
|
+
const __iconNode$W = [
|
|
1385
1385
|
[
|
|
1386
1386
|
"path",
|
|
1387
1387
|
{
|
|
@@ -1391,8 +1391,8 @@ const __iconNode$V = [
|
|
|
1391
1391
|
],
|
|
1392
1392
|
["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
|
|
1393
1393
|
];
|
|
1394
|
-
const File = createLucideIcon("file", __iconNode$
|
|
1395
|
-
const __iconNode$
|
|
1394
|
+
const File = createLucideIcon("file", __iconNode$W);
|
|
1395
|
+
const __iconNode$V = [
|
|
1396
1396
|
[
|
|
1397
1397
|
"path",
|
|
1398
1398
|
{
|
|
@@ -1401,8 +1401,8 @@ const __iconNode$U = [
|
|
|
1401
1401
|
}
|
|
1402
1402
|
]
|
|
1403
1403
|
];
|
|
1404
|
-
const FolderOpen = createLucideIcon("folder-open", __iconNode$
|
|
1405
|
-
const __iconNode$
|
|
1404
|
+
const FolderOpen = createLucideIcon("folder-open", __iconNode$V);
|
|
1405
|
+
const __iconNode$U = [
|
|
1406
1406
|
["path", { d: "M12 10v6", key: "1bos4e" }],
|
|
1407
1407
|
["path", { d: "M9 13h6", key: "1uhe8q" }],
|
|
1408
1408
|
[
|
|
@@ -1413,8 +1413,8 @@ const __iconNode$T = [
|
|
|
1413
1413
|
}
|
|
1414
1414
|
]
|
|
1415
1415
|
];
|
|
1416
|
-
const FolderPlus = createLucideIcon("folder-plus", __iconNode$
|
|
1417
|
-
const __iconNode$
|
|
1416
|
+
const FolderPlus = createLucideIcon("folder-plus", __iconNode$U);
|
|
1417
|
+
const __iconNode$T = [
|
|
1418
1418
|
[
|
|
1419
1419
|
"path",
|
|
1420
1420
|
{
|
|
@@ -1423,8 +1423,8 @@ const __iconNode$S = [
|
|
|
1423
1423
|
}
|
|
1424
1424
|
]
|
|
1425
1425
|
];
|
|
1426
|
-
const Folder = createLucideIcon("folder", __iconNode$
|
|
1427
|
-
const __iconNode$
|
|
1426
|
+
const Folder = createLucideIcon("folder", __iconNode$T);
|
|
1427
|
+
const __iconNode$S = [
|
|
1428
1428
|
[
|
|
1429
1429
|
"path",
|
|
1430
1430
|
{
|
|
@@ -1437,39 +1437,39 @@ const __iconNode$R = [
|
|
|
1437
1437
|
{ d: "M3 8.268a2 2 0 0 0-1 1.738V19a2 2 0 0 0 2 2h11a2 2 0 0 0 1.732-1", key: "yxbcw3" }
|
|
1438
1438
|
]
|
|
1439
1439
|
];
|
|
1440
|
-
const Folders = createLucideIcon("folders", __iconNode$
|
|
1441
|
-
const __iconNode$
|
|
1440
|
+
const Folders = createLucideIcon("folders", __iconNode$S);
|
|
1441
|
+
const __iconNode$R = [
|
|
1442
1442
|
["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
|
|
1443
1443
|
["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
|
|
1444
1444
|
["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
|
|
1445
1445
|
];
|
|
1446
|
-
const GitBranch = createLucideIcon("git-branch", __iconNode$
|
|
1447
|
-
const __iconNode$
|
|
1446
|
+
const GitBranch = createLucideIcon("git-branch", __iconNode$R);
|
|
1447
|
+
const __iconNode$Q = [
|
|
1448
1448
|
["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
|
|
1449
1449
|
["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
|
|
1450
1450
|
["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
|
|
1451
1451
|
];
|
|
1452
|
-
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$
|
|
1453
|
-
const __iconNode$
|
|
1452
|
+
const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$Q);
|
|
1453
|
+
const __iconNode$P = [
|
|
1454
1454
|
["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
|
|
1455
1455
|
["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
|
|
1456
1456
|
["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
|
|
1457
1457
|
["path", { d: "M11 18H8a2 2 0 0 1-2-2V9", key: "19pyzm" }]
|
|
1458
1458
|
];
|
|
1459
|
-
const GitCompare = createLucideIcon("git-compare", __iconNode$
|
|
1460
|
-
const __iconNode$
|
|
1459
|
+
const GitCompare = createLucideIcon("git-compare", __iconNode$P);
|
|
1460
|
+
const __iconNode$O = [
|
|
1461
1461
|
["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
|
|
1462
1462
|
["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
|
|
1463
1463
|
["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }]
|
|
1464
1464
|
];
|
|
1465
|
-
const GitMerge = createLucideIcon("git-merge", __iconNode$
|
|
1466
|
-
const __iconNode$
|
|
1465
|
+
const GitMerge = createLucideIcon("git-merge", __iconNode$O);
|
|
1466
|
+
const __iconNode$N = [
|
|
1467
1467
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1468
1468
|
["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
|
|
1469
1469
|
["path", { d: "M2 12h20", key: "9i4pu4" }]
|
|
1470
1470
|
];
|
|
1471
|
-
const Globe = createLucideIcon("globe", __iconNode$
|
|
1472
|
-
const __iconNode$
|
|
1471
|
+
const Globe = createLucideIcon("globe", __iconNode$N);
|
|
1472
|
+
const __iconNode$M = [
|
|
1473
1473
|
["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
|
|
1474
1474
|
["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
|
|
1475
1475
|
["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
|
|
@@ -1477,14 +1477,14 @@ const __iconNode$L = [
|
|
|
1477
1477
|
["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
|
|
1478
1478
|
["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
|
|
1479
1479
|
];
|
|
1480
|
-
const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$
|
|
1481
|
-
const __iconNode$
|
|
1480
|
+
const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$M);
|
|
1481
|
+
const __iconNode$L = [
|
|
1482
1482
|
["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
|
|
1483
1483
|
["path", { d: "M3 3v5h5", key: "1xhq8a" }],
|
|
1484
1484
|
["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
|
|
1485
1485
|
];
|
|
1486
|
-
const History = createLucideIcon("history", __iconNode$
|
|
1487
|
-
const __iconNode$
|
|
1486
|
+
const History = createLucideIcon("history", __iconNode$L);
|
|
1487
|
+
const __iconNode$K = [
|
|
1488
1488
|
["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }],
|
|
1489
1489
|
["path", { d: "M10.41 10.41a2 2 0 1 1-2.83-2.83", key: "1bzlo9" }],
|
|
1490
1490
|
["line", { x1: "13.5", x2: "6", y1: "13.5", y2: "21", key: "1q0aeu" }],
|
|
@@ -1498,13 +1498,19 @@ const __iconNode$J = [
|
|
|
1498
1498
|
],
|
|
1499
1499
|
["path", { d: "M21 15V5a2 2 0 0 0-2-2H9", key: "43el77" }]
|
|
1500
1500
|
];
|
|
1501
|
-
const ImageOff = createLucideIcon("image-off", __iconNode$
|
|
1502
|
-
const __iconNode$
|
|
1501
|
+
const ImageOff = createLucideIcon("image-off", __iconNode$K);
|
|
1502
|
+
const __iconNode$J = [
|
|
1503
1503
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
|
|
1504
1504
|
["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
|
|
1505
1505
|
["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
|
|
1506
1506
|
];
|
|
1507
|
-
const Image$1 = createLucideIcon("image", __iconNode$
|
|
1507
|
+
const Image$1 = createLucideIcon("image", __iconNode$J);
|
|
1508
|
+
const __iconNode$I = [
|
|
1509
|
+
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1510
|
+
["path", { d: "M12 16v-4", key: "1dtifu" }],
|
|
1511
|
+
["path", { d: "M12 8h.01", key: "e9boi3" }]
|
|
1512
|
+
];
|
|
1513
|
+
const Info$1 = createLucideIcon("info", __iconNode$I);
|
|
1508
1514
|
const __iconNode$H = [
|
|
1509
1515
|
["path", { d: "M16 5H3", key: "m91uny" }],
|
|
1510
1516
|
["path", { d: "M11 12H3", key: "51ecnj" }],
|
|
@@ -18343,11 +18349,22 @@ function useUpdateProjectLabel() {
|
|
|
18343
18349
|
}
|
|
18344
18350
|
});
|
|
18345
18351
|
}
|
|
18346
|
-
function
|
|
18352
|
+
function usePromoteProjectToGit() {
|
|
18347
18353
|
const adapter2 = useAdapter();
|
|
18354
|
+
const queryClient2 = useQueryClient();
|
|
18348
18355
|
const setError = useDashboardStore((s2) => s2.setError);
|
|
18349
18356
|
return useMutation({
|
|
18350
|
-
mutationFn: (
|
|
18357
|
+
mutationFn: (name2) => {
|
|
18358
|
+
if (!adapter2.promoteProjectToGit) {
|
|
18359
|
+
return Promise.reject(
|
|
18360
|
+
new Error("This dashboard adapter doesn't support promoting plain projects to git.")
|
|
18361
|
+
);
|
|
18362
|
+
}
|
|
18363
|
+
return adapter2.promoteProjectToGit(name2);
|
|
18364
|
+
},
|
|
18365
|
+
onSuccess: () => {
|
|
18366
|
+
queryClient2.invalidateQueries({ queryKey: queryKeys.projects });
|
|
18367
|
+
},
|
|
18351
18368
|
onError: (err) => {
|
|
18352
18369
|
setError(String(err));
|
|
18353
18370
|
}
|
|
@@ -18401,42 +18418,39 @@ function useRemoveWorkspace() {
|
|
|
18401
18418
|
}
|
|
18402
18419
|
function AddProjectDialog({ open: open2, onOpenChange, defaultLabel }) {
|
|
18403
18420
|
const [path2, setPath] = reactExports.useState("");
|
|
18404
|
-
const [
|
|
18405
|
-
const [isChecking, setIsChecking] = reactExports.useState(false);
|
|
18421
|
+
const [isGitRepo, setIsGitRepo] = reactExports.useState(null);
|
|
18406
18422
|
const addProjectMutation = useAddProject();
|
|
18407
|
-
const gitInitMutation = useGitInit();
|
|
18408
18423
|
const adapter2 = useAdapter();
|
|
18409
18424
|
const capabilities2 = useCapabilities();
|
|
18410
18425
|
const resetAndClose = () => {
|
|
18411
18426
|
setPath("");
|
|
18412
|
-
|
|
18413
|
-
setIsChecking(false);
|
|
18427
|
+
setIsGitRepo(null);
|
|
18414
18428
|
onOpenChange(false);
|
|
18415
18429
|
};
|
|
18430
|
+
reactExports.useEffect(() => {
|
|
18431
|
+
const trimmed = path2.trim();
|
|
18432
|
+
if (!trimmed) {
|
|
18433
|
+
setIsGitRepo(null);
|
|
18434
|
+
return;
|
|
18435
|
+
}
|
|
18436
|
+
let cancelled = false;
|
|
18437
|
+
const timer2 = setTimeout(async () => {
|
|
18438
|
+
try {
|
|
18439
|
+
const res = await adapter2.checkPath(trimmed);
|
|
18440
|
+
if (!cancelled) setIsGitRepo(res.isGitRepo);
|
|
18441
|
+
} catch {
|
|
18442
|
+
if (!cancelled) setIsGitRepo(null);
|
|
18443
|
+
}
|
|
18444
|
+
}, 300);
|
|
18445
|
+
return () => {
|
|
18446
|
+
cancelled = true;
|
|
18447
|
+
clearTimeout(timer2);
|
|
18448
|
+
};
|
|
18449
|
+
}, [path2, adapter2]);
|
|
18416
18450
|
const handleSubmit = async (e2) => {
|
|
18417
18451
|
e2.preventDefault();
|
|
18418
18452
|
if (!path2.trim()) return;
|
|
18419
18453
|
const trimmedPath = path2.trim();
|
|
18420
|
-
if (needsGitInit) {
|
|
18421
|
-
await gitInitMutation.mutateAsync(trimmedPath);
|
|
18422
|
-
await addProjectMutation.mutateAsync({
|
|
18423
|
-
path: trimmedPath,
|
|
18424
|
-
label: defaultLabel ?? void 0
|
|
18425
|
-
});
|
|
18426
|
-
resetAndClose();
|
|
18427
|
-
return;
|
|
18428
|
-
}
|
|
18429
|
-
setIsChecking(true);
|
|
18430
|
-
try {
|
|
18431
|
-
const { isGitRepo } = await adapter2.checkPath(trimmedPath);
|
|
18432
|
-
if (!isGitRepo) {
|
|
18433
|
-
setNeedsGitInit(true);
|
|
18434
|
-
setIsChecking(false);
|
|
18435
|
-
return;
|
|
18436
|
-
}
|
|
18437
|
-
} catch {
|
|
18438
|
-
}
|
|
18439
|
-
setIsChecking(false);
|
|
18440
18454
|
await addProjectMutation.mutateAsync({
|
|
18441
18455
|
path: trimmedPath,
|
|
18442
18456
|
label: defaultLabel ?? void 0
|
|
@@ -18446,14 +18460,13 @@ function AddProjectDialog({ open: open2, onOpenChange, defaultLabel }) {
|
|
|
18446
18460
|
const handleOpenChange = (open22) => {
|
|
18447
18461
|
if (!open22) {
|
|
18448
18462
|
setPath("");
|
|
18449
|
-
|
|
18450
|
-
setIsChecking(false);
|
|
18463
|
+
setIsGitRepo(null);
|
|
18451
18464
|
}
|
|
18452
18465
|
onOpenChange(open22);
|
|
18453
18466
|
};
|
|
18454
18467
|
const handlePathChange = (e2) => {
|
|
18455
18468
|
setPath(e2.target.value);
|
|
18456
|
-
|
|
18469
|
+
setIsGitRepo(null);
|
|
18457
18470
|
};
|
|
18458
18471
|
const handleBrowse = async () => {
|
|
18459
18472
|
if (!capabilities2.pickFolder) return;
|
|
@@ -18461,25 +18474,25 @@ function AddProjectDialog({ open: open2, onOpenChange, defaultLabel }) {
|
|
|
18461
18474
|
const selected = await capabilities2.pickFolder();
|
|
18462
18475
|
if (selected) {
|
|
18463
18476
|
setPath(selected);
|
|
18464
|
-
|
|
18477
|
+
setIsGitRepo(null);
|
|
18465
18478
|
}
|
|
18466
18479
|
} catch {
|
|
18467
18480
|
}
|
|
18468
18481
|
};
|
|
18469
|
-
const isBusy =
|
|
18482
|
+
const isBusy = addProjectMutation.isPending;
|
|
18470
18483
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DialogContent, { className: "sm:max-w-[425px]", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("form", { onSubmit: handleSubmit, children: [
|
|
18471
18484
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { children: [
|
|
18472
18485
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Register Project" }),
|
|
18473
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Add a
|
|
18486
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Add a folder to manage its workspaces. Git repositories enable branches and PRs; plain folders work too, with a single implicit workspace." })
|
|
18474
18487
|
] }),
|
|
18475
18488
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid gap-3 py-4", children: [
|
|
18476
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { htmlFor: "project-path", children: "
|
|
18489
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Label, { htmlFor: "project-path", children: "Folder path" }),
|
|
18477
18490
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex gap-2", children: [
|
|
18478
18491
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
18479
18492
|
Input,
|
|
18480
18493
|
{
|
|
18481
18494
|
id: "project-path",
|
|
18482
|
-
placeholder: "Path to git
|
|
18495
|
+
placeholder: "Path to folder (git repo or plain folder)",
|
|
18483
18496
|
value: path2,
|
|
18484
18497
|
onChange: handlePathChange,
|
|
18485
18498
|
autoFocus: true
|
|
@@ -18487,19 +18500,14 @@ function AddProjectDialog({ open: open2, onOpenChange, defaultLabel }) {
|
|
|
18487
18500
|
),
|
|
18488
18501
|
capabilities2.pickFolder && /* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", size: "icon", onClick: handleBrowse, children: /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, {}) })
|
|
18489
18502
|
] }),
|
|
18490
|
-
|
|
18491
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
18492
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
18493
|
-
"This folder is not a git repository. Initialize it with",
|
|
18494
|
-
" ",
|
|
18495
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "rounded bg-muted px-1 py-0.5 font-mono text-xs", children: "git init" }),
|
|
18496
|
-
"?"
|
|
18497
|
-
] })
|
|
18503
|
+
isGitRepo === false && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 rounded-md border border-blue-500/30 bg-blue-500/10 p-3 text-sm", children: [
|
|
18504
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Info$1, { className: "size-4 shrink-0 text-blue-500 mt-0.5" }),
|
|
18505
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "This folder isn't a git repo. Branch and PR features will be disabled. You can promote it to git later from the project context menu." })
|
|
18498
18506
|
] })
|
|
18499
18507
|
] }),
|
|
18500
18508
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
|
|
18501
18509
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "button", variant: "ghost", onClick: resetAndClose, children: "Cancel" }),
|
|
18502
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "submit", disabled: isBusy, children:
|
|
18510
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { type: "submit", disabled: isBusy, children: "Add Project" })
|
|
18503
18511
|
] })
|
|
18504
18512
|
] }) }) });
|
|
18505
18513
|
}
|
|
@@ -40605,53 +40613,53 @@ async function loadLanguage(lang) {
|
|
|
40605
40613
|
try {
|
|
40606
40614
|
switch (lang) {
|
|
40607
40615
|
case "javascript":
|
|
40608
|
-
return import("./index-
|
|
40616
|
+
return import("./index-C-k9sCKq.js").then((m2) => m2.javascript());
|
|
40609
40617
|
case "jsx":
|
|
40610
|
-
return import("./index-
|
|
40618
|
+
return import("./index-C-k9sCKq.js").then((m2) => m2.javascript({ jsx: true }));
|
|
40611
40619
|
case "typescript":
|
|
40612
|
-
return import("./index-
|
|
40620
|
+
return import("./index-C-k9sCKq.js").then(
|
|
40613
40621
|
(m2) => m2.javascript({ typescript: true })
|
|
40614
40622
|
);
|
|
40615
40623
|
case "tsx":
|
|
40616
|
-
return import("./index-
|
|
40624
|
+
return import("./index-C-k9sCKq.js").then(
|
|
40617
40625
|
(m2) => m2.javascript({ jsx: true, typescript: true })
|
|
40618
40626
|
);
|
|
40619
40627
|
case "python":
|
|
40620
|
-
return import("./index-
|
|
40628
|
+
return import("./index-CiWhFogO.js").then((m2) => m2.python());
|
|
40621
40629
|
case "html":
|
|
40622
|
-
return import("./index-
|
|
40630
|
+
return import("./index-BvBMEwhL.js").then((m2) => m2.html());
|
|
40623
40631
|
case "css":
|
|
40624
|
-
return import("./index-
|
|
40632
|
+
return import("./index-DPAkuW3l.js").then((m2) => m2.css());
|
|
40625
40633
|
case "scss":
|
|
40626
40634
|
case "sass":
|
|
40627
|
-
return import("./index-
|
|
40635
|
+
return import("./index-ayG05uhc.js").then((m2) => m2.sass());
|
|
40628
40636
|
case "less":
|
|
40629
|
-
return import("./index-
|
|
40637
|
+
return import("./index-D5nqcxSY.js").then((m2) => m2.less());
|
|
40630
40638
|
case "json":
|
|
40631
40639
|
case "jsonc":
|
|
40632
|
-
return import("./index-
|
|
40640
|
+
return import("./index-DNaA-OTp.js").then((m2) => m2.json());
|
|
40633
40641
|
case "markdown":
|
|
40634
40642
|
case "mdx":
|
|
40635
|
-
return import("./index-
|
|
40643
|
+
return import("./index-sKmEy2Z2.js").then((m2) => m2.markdown());
|
|
40636
40644
|
case "xml":
|
|
40637
|
-
return import("./index-
|
|
40645
|
+
return import("./index-xVhCXu45.js").then((m2) => m2.xml());
|
|
40638
40646
|
case "yaml":
|
|
40639
|
-
return import("./index-
|
|
40647
|
+
return import("./index-l8a7u6GS.js").then((m2) => m2.yaml());
|
|
40640
40648
|
case "sql":
|
|
40641
|
-
return import("./index-
|
|
40649
|
+
return import("./index-9M09S61v.js").then((m2) => m2.sql());
|
|
40642
40650
|
case "rust":
|
|
40643
|
-
return import("./index-
|
|
40651
|
+
return import("./index-Ce2uXVrE.js").then((m2) => m2.rust());
|
|
40644
40652
|
case "go":
|
|
40645
|
-
return import("./index-
|
|
40653
|
+
return import("./index-B5x9IUkQ.js").then((m2) => m2.go());
|
|
40646
40654
|
case "java":
|
|
40647
|
-
return import("./index-
|
|
40655
|
+
return import("./index-VtjR2oZj.js").then((m2) => m2.java());
|
|
40648
40656
|
case "kotlin":
|
|
40649
|
-
return import("./index-
|
|
40657
|
+
return import("./index-VtjR2oZj.js").then((m2) => m2.java());
|
|
40650
40658
|
case "c":
|
|
40651
40659
|
case "cpp":
|
|
40652
|
-
return import("./index-
|
|
40660
|
+
return import("./index-CKmyLecf.js").then((m2) => m2.cpp());
|
|
40653
40661
|
case "php":
|
|
40654
|
-
return import("./index-
|
|
40662
|
+
return import("./index-CXnsJrX8.js").then((m2) => m2.php());
|
|
40655
40663
|
// Legacy modes via StreamLanguage
|
|
40656
40664
|
case "bash":
|
|
40657
40665
|
case "fish":
|
|
@@ -41459,13 +41467,13 @@ function buildCommands(deps) {
|
|
|
41459
41467
|
action: () => deps.openQuickOpen()
|
|
41460
41468
|
},
|
|
41461
41469
|
{
|
|
41462
|
-
//
|
|
41463
|
-
//
|
|
41464
|
-
//
|
|
41465
|
-
//
|
|
41470
|
+
// ⇧⌘F → Search in Files (matches VS Code's "Search in Files" /
|
|
41471
|
+
// "Find in Files" binding, the same kbd hint advertised by the
|
|
41472
|
+
// file-tree tooltip and the file-toolbar dropdown). Format
|
|
41473
|
+
// Current File lives at ⇧⌥F (also VS Code parity, see below).
|
|
41466
41474
|
id: "search-files",
|
|
41467
41475
|
label: "Search in Files",
|
|
41468
|
-
shortcut: "Cmd+Shift+
|
|
41476
|
+
shortcut: "Cmd+Shift+F",
|
|
41469
41477
|
action: () => deps.openSearchFiles()
|
|
41470
41478
|
},
|
|
41471
41479
|
{
|
|
@@ -41481,9 +41489,14 @@ function buildCommands(deps) {
|
|
|
41481
41489
|
// event with detail, so the matching FileViewer responds. The
|
|
41482
41490
|
// keyboard handler dispatches the same event with the same detail
|
|
41483
41491
|
// shape — both paths funnel through one FileViewer listener.
|
|
41492
|
+
//
|
|
41493
|
+
// ⇧⌥F mirrors VS Code's default "Format Document" binding. Note
|
|
41494
|
+
// it's the only entry in this registry without Cmd/Ctrl in the
|
|
41495
|
+
// chord — the keyboard handler special-cases it above its mod
|
|
41496
|
+
// gate so the keystroke reaches us in the first place.
|
|
41484
41497
|
id: "format-current-file",
|
|
41485
41498
|
label: "Format Current File",
|
|
41486
|
-
shortcut: "
|
|
41499
|
+
shortcut: "Shift+Alt+F",
|
|
41487
41500
|
action: () => deps.formatCurrentFile()
|
|
41488
41501
|
},
|
|
41489
41502
|
{
|
|
@@ -46595,6 +46608,28 @@ function NewWorkspaceDialog({ projectName, open: open2, onOpenChange }) {
|
|
|
46595
46608
|
] })
|
|
46596
46609
|
] }) }) });
|
|
46597
46610
|
}
|
|
46611
|
+
function PromoteToGitDialog({ open: open2, onOpenChange, onConfirm, projectName }) {
|
|
46612
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "sm:max-w-[425px]", onClick: (e2) => e2.stopPropagation(), children: [
|
|
46613
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { children: [
|
|
46614
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Promote to git" }),
|
|
46615
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogDescription, { children: [
|
|
46616
|
+
"This will run ",
|
|
46617
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("code", { children: "git init -b main" }),
|
|
46618
|
+
" in ",
|
|
46619
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: projectName }),
|
|
46620
|
+
" and turn it into a git repository."
|
|
46621
|
+
] })
|
|
46622
|
+
] }),
|
|
46623
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-2 text-sm", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start gap-2 rounded-md border border-blue-500/30 bg-blue-500/10 p-3", children: [
|
|
46624
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(GitBranch, { className: "size-4 shrink-0 text-blue-500 mt-0.5" }),
|
|
46625
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "After promotion you'll be able to create branches, view diffs, and use git pull / push for this project. The existing workspace stays in place." })
|
|
46626
|
+
] }) }),
|
|
46627
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DialogFooter, { children: [
|
|
46628
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { variant: "ghost", onClick: () => onOpenChange(false), children: "Cancel" }),
|
|
46629
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Button, { onClick: onConfirm, children: "Promote to git" })
|
|
46630
|
+
] })
|
|
46631
|
+
] }) });
|
|
46632
|
+
}
|
|
46598
46633
|
function GitStatusIndicator({ git }) {
|
|
46599
46634
|
const parts = [];
|
|
46600
46635
|
if (git.conflict) {
|
|
@@ -46650,10 +46685,31 @@ function SetupStatusIndicator({ setup }) {
|
|
|
46650
46685
|
}
|
|
46651
46686
|
return null;
|
|
46652
46687
|
}
|
|
46688
|
+
const RECENT_ACTIVATION_WINDOW_MS = 300;
|
|
46689
|
+
let recentlyActivatedWorkspaceId = null;
|
|
46690
|
+
let recentlyActivatedTimer = null;
|
|
46691
|
+
function markRecentActivation(workspaceId) {
|
|
46692
|
+
recentlyActivatedWorkspaceId = workspaceId;
|
|
46693
|
+
if (recentlyActivatedTimer) clearTimeout(recentlyActivatedTimer);
|
|
46694
|
+
recentlyActivatedTimer = setTimeout(() => {
|
|
46695
|
+
recentlyActivatedWorkspaceId = null;
|
|
46696
|
+
recentlyActivatedTimer = null;
|
|
46697
|
+
}, RECENT_ACTIVATION_WINDOW_MS);
|
|
46698
|
+
}
|
|
46699
|
+
function consumeRecentActivation(workspaceId) {
|
|
46700
|
+
if (recentlyActivatedWorkspaceId !== workspaceId) return false;
|
|
46701
|
+
recentlyActivatedWorkspaceId = null;
|
|
46702
|
+
if (recentlyActivatedTimer) {
|
|
46703
|
+
clearTimeout(recentlyActivatedTimer);
|
|
46704
|
+
recentlyActivatedTimer = null;
|
|
46705
|
+
}
|
|
46706
|
+
return true;
|
|
46707
|
+
}
|
|
46653
46708
|
const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
46654
46709
|
worktree,
|
|
46655
46710
|
projectName,
|
|
46656
46711
|
defaultBranch,
|
|
46712
|
+
projectKind,
|
|
46657
46713
|
status,
|
|
46658
46714
|
branchStatus,
|
|
46659
46715
|
setupStatus,
|
|
@@ -46662,13 +46718,9 @@ const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
|
46662
46718
|
showProjectName,
|
|
46663
46719
|
onTogglePinned
|
|
46664
46720
|
}) {
|
|
46721
|
+
const isPlain = projectKind === "plain";
|
|
46665
46722
|
const cardRef = reactExports.useRef(null);
|
|
46666
46723
|
const capabilities2 = useCapabilities();
|
|
46667
|
-
reactExports.useEffect(() => {
|
|
46668
|
-
if (isFocused) {
|
|
46669
|
-
cardRef.current?.scrollIntoView({ block: "nearest" });
|
|
46670
|
-
}
|
|
46671
|
-
}, [isFocused]);
|
|
46672
46724
|
const openWorkspace = useDashboardStore((s2) => s2.openWorkspace);
|
|
46673
46725
|
const clearNeedsAttention = useDashboardStore((s2) => s2.clearNeedsAttention);
|
|
46674
46726
|
const runScript = useDashboardStore((s2) => s2.runScript);
|
|
@@ -46679,8 +46731,14 @@ const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
|
46679
46731
|
const workspaceId = toWorkspaceId(projectName, worktree.branch);
|
|
46680
46732
|
const isActive = useDashboardStore((s2) => s2.activeWorkspaceId === workspaceId);
|
|
46681
46733
|
const href = capabilities2.getWorkspaceHref?.(workspaceId);
|
|
46734
|
+
reactExports.useEffect(() => {
|
|
46735
|
+
if (!isActive) return;
|
|
46736
|
+
if (consumeRecentActivation(workspaceId)) return;
|
|
46737
|
+
cardRef.current?.scrollIntoView({ block: "center" });
|
|
46738
|
+
}, [isActive, workspaceId]);
|
|
46682
46739
|
const handleClick = () => {
|
|
46683
46740
|
clearNeedsAttention(workspaceId);
|
|
46741
|
+
markRecentActivation(workspaceId);
|
|
46684
46742
|
if (href && capabilities2.navigate) {
|
|
46685
46743
|
capabilities2.navigate(href);
|
|
46686
46744
|
} else if (!href) {
|
|
@@ -46692,6 +46750,12 @@ const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
|
46692
46750
|
ref: cardRef,
|
|
46693
46751
|
className,
|
|
46694
46752
|
tabIndex: 0,
|
|
46753
|
+
// Semantic markers — let tests, screen readers, and future styling
|
|
46754
|
+
// changes target the active card without depending on the Tailwind
|
|
46755
|
+
// class string. `aria-current="page"` is the standard ARIA pattern for
|
|
46756
|
+
// "currently-active link in a list of related links".
|
|
46757
|
+
"data-active": isActive || void 0,
|
|
46758
|
+
"aria-current": isActive ? "page" : void 0,
|
|
46695
46759
|
onClick: (e2) => {
|
|
46696
46760
|
e2.stopPropagation();
|
|
46697
46761
|
handleClick();
|
|
@@ -46737,8 +46801,8 @@ const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
|
46737
46801
|
] }),
|
|
46738
46802
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden @[10rem]:flex group-hover:flex items-center gap-2 shrink-0 ml-auto pl-2", children: [
|
|
46739
46803
|
/* @__PURE__ */ jsxRuntimeExports.jsx(SetupStatusIndicator, { setup: setupStatus }),
|
|
46740
|
-
branchStatus && /* @__PURE__ */ jsxRuntimeExports.jsx(GitStatusIndicator, { git: branchStatus.git }),
|
|
46741
|
-
branchStatus && /* @__PURE__ */ jsxRuntimeExports.jsx(CIStatusIndicator, { ci: branchStatus.ci })
|
|
46804
|
+
!isPlain && branchStatus && /* @__PURE__ */ jsxRuntimeExports.jsx(GitStatusIndicator, { git: branchStatus.git }),
|
|
46805
|
+
!isPlain && branchStatus && /* @__PURE__ */ jsxRuntimeExports.jsx(CIStatusIndicator, { ci: branchStatus.ci })
|
|
46742
46806
|
] })
|
|
46743
46807
|
] }) }),
|
|
46744
46808
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { children: [
|
|
@@ -46763,15 +46827,15 @@ const WorkspaceCard = reactExports.memo(function WorkspaceCard2({
|
|
|
46763
46827
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Square, {}),
|
|
46764
46828
|
"Run teardown"
|
|
46765
46829
|
] }),
|
|
46766
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => gitPull(projectName, worktree.branch), children: [
|
|
46830
|
+
!isPlain && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => gitPull(projectName, worktree.branch), children: [
|
|
46767
46831
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ArrowDownToLine, {}),
|
|
46768
46832
|
"Git pull"
|
|
46769
46833
|
] }),
|
|
46770
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => gitPush(projectName, worktree.branch), children: [
|
|
46834
|
+
!isPlain && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => gitPush(projectName, worktree.branch), children: [
|
|
46771
46835
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ArrowUpFromLine, {}),
|
|
46772
46836
|
"Git push"
|
|
46773
46837
|
] }),
|
|
46774
|
-
worktree.branch !== defaultBranch && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { variant: "destructive", onClick: handleDelete2, children: [
|
|
46838
|
+
!isPlain && worktree.branch !== defaultBranch && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { variant: "destructive", onClick: handleDelete2, children: [
|
|
46775
46839
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, {}),
|
|
46776
46840
|
"Delete workspace"
|
|
46777
46841
|
] })
|
|
@@ -46785,6 +46849,7 @@ function SortableProject({
|
|
|
46785
46849
|
setupStatuses,
|
|
46786
46850
|
removeProject,
|
|
46787
46851
|
updateProjectLabel,
|
|
46852
|
+
onPromoteToGit,
|
|
46788
46853
|
labels,
|
|
46789
46854
|
setWorkspaceDialog,
|
|
46790
46855
|
onShowDeleteDialog,
|
|
@@ -46795,24 +46860,46 @@ function SortableProject({
|
|
|
46795
46860
|
hasPinnedSiblings,
|
|
46796
46861
|
onTogglePinned
|
|
46797
46862
|
}) {
|
|
46863
|
+
const isPlain = project.kind === "plain";
|
|
46798
46864
|
const { attributes, listeners: listeners2, setNodeRef, transform: transform2, transition, isDragging } = useSortable({
|
|
46799
46865
|
id: project.name
|
|
46800
46866
|
});
|
|
46801
46867
|
const capabilities2 = useCapabilities();
|
|
46868
|
+
const adapter2 = useAdapter();
|
|
46869
|
+
const canPromoteToGit = typeof adapter2.promoteProjectToGit === "function";
|
|
46802
46870
|
const { active } = useDndContext();
|
|
46803
46871
|
const style2 = {
|
|
46804
46872
|
transform: CSS$1.Translate.toString(transform2),
|
|
46805
46873
|
transition: active ? transition : void 0,
|
|
46806
46874
|
opacity: isDragging ? 0.5 : void 0
|
|
46807
46875
|
};
|
|
46876
|
+
const openWorkspace = useDashboardStore((s2) => s2.openWorkspace);
|
|
46877
|
+
const clearNeedsAttention = useDashboardStore((s2) => s2.clearNeedsAttention);
|
|
46878
|
+
const plainBranch = isPlain ? project.worktrees[0].branch : "";
|
|
46879
|
+
const plainWorkspaceId = isPlain ? toWorkspaceId(project.name, plainBranch) : "";
|
|
46880
|
+
const plainIsActive = useDashboardStore(
|
|
46881
|
+
(s2) => isPlain && s2.activeWorkspaceId === plainWorkspaceId
|
|
46882
|
+
);
|
|
46883
|
+
const plainHref = isPlain ? capabilities2.getWorkspaceHref?.(plainWorkspaceId) : void 0;
|
|
46884
|
+
const plainAgent = isPlain ? statuses.get(plainWorkspaceId)?.agent : void 0;
|
|
46885
|
+
const plainIsFocused = isPlain && workspaceIndexStart === focusedIndex;
|
|
46886
|
+
const handlePlainOpen = () => {
|
|
46887
|
+
clearNeedsAttention(plainWorkspaceId);
|
|
46888
|
+
if (plainHref && capabilities2.navigate) {
|
|
46889
|
+
capabilities2.navigate(plainHref);
|
|
46890
|
+
} else if (!plainHref) {
|
|
46891
|
+
openWorkspace(plainWorkspaceId);
|
|
46892
|
+
}
|
|
46893
|
+
};
|
|
46808
46894
|
let workspaceIndex = workspaceIndexStart;
|
|
46895
|
+
const headerClassName = isPlain ? `group flex items-center justify-between mb-0.5 pl-1 pr-1 py-1.5 min-w-0 overflow-hidden cursor-pointer select-none touch-pan-y transition-colors hover:bg-accent/50 ${plainIsActive ? "bg-accent/50 border-l-2 border-l-primary" : ""} ${plainIsFocused ? "ring-2 ring-inset ring-ring" : ""}` : "group flex items-center justify-between mb-0.5 pl-1 pr-0 select-none touch-pan-y";
|
|
46809
46896
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref: setNodeRef, style: style2, className: "min-w-0 px-2", children: [
|
|
46810
46897
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenu, { children: [
|
|
46811
46898
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ContextMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
46812
46899
|
"div",
|
|
46813
46900
|
{
|
|
46814
|
-
className:
|
|
46815
|
-
onClick: () => onToggleCollapse(project.name),
|
|
46901
|
+
className: headerClassName,
|
|
46902
|
+
onClick: () => isPlain ? handlePlainOpen() : onToggleCollapse(project.name),
|
|
46816
46903
|
children: [
|
|
46817
46904
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
46818
46905
|
"div",
|
|
@@ -46821,15 +46908,30 @@ function SortableProject({
|
|
|
46821
46908
|
...attributes,
|
|
46822
46909
|
...listeners2,
|
|
46823
46910
|
children: [
|
|
46824
|
-
|
|
46911
|
+
isPlain ? (
|
|
46912
|
+
// Plain project: agent-status dot when the agent is
|
|
46913
|
+
// working / needs attention, otherwise a project-sized
|
|
46914
|
+
// (size-4) Folder icon. Inlined rather than routing
|
|
46915
|
+
// through AgentStatusIndicator's fallback so the idle
|
|
46916
|
+
// icon can match a git project's folder size — using the
|
|
46917
|
+
// indicator's size-3 fallback would make plain headers
|
|
46918
|
+
// read as nested workspace cards (see #427 review).
|
|
46919
|
+
plainAgent && (plainAgent.status === "working" || plainAgent.status === "needs_attention") ? /* @__PURE__ */ jsxRuntimeExports.jsx(AgentStatusIndicator, { agent: plainAgent, isActive: plainIsActive }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-4 shrink-0 text-muted-foreground" })
|
|
46920
|
+
) : collapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(Folder, { className: "size-4 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(FolderOpen, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
46825
46921
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
46826
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
46922
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
46923
|
+
"h2",
|
|
46924
|
+
{
|
|
46925
|
+
className: `text-sm font-semibold truncate ${isPlain && plainIsActive ? "text-foreground" : "text-foreground/80"}`,
|
|
46926
|
+
children: project.name
|
|
46927
|
+
}
|
|
46928
|
+
) }),
|
|
46827
46929
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "top", children: project.name })
|
|
46828
46930
|
] })
|
|
46829
46931
|
]
|
|
46830
46932
|
}
|
|
46831
46933
|
),
|
|
46832
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
46934
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center gap-1", children: !isPlain && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
46833
46935
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
46834
46936
|
Button,
|
|
46835
46937
|
{
|
|
@@ -46849,7 +46951,7 @@ function SortableProject({
|
|
|
46849
46951
|
}
|
|
46850
46952
|
) }),
|
|
46851
46953
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuContent, { children: [
|
|
46852
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => onToggleCollapse(project.name), children: [
|
|
46954
|
+
!isPlain && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => onToggleCollapse(project.name), children: [
|
|
46853
46955
|
/* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: collapsed ? "" : "rotate-90" }),
|
|
46854
46956
|
collapsed ? "Expand" : "Collapse"
|
|
46855
46957
|
] }),
|
|
@@ -46883,6 +46985,10 @@ function SortableProject({
|
|
|
46883
46985
|
))
|
|
46884
46986
|
] }) })
|
|
46885
46987
|
] }),
|
|
46988
|
+
isPlain && canPromoteToGit && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => onPromoteToGit(project.name), children: [
|
|
46989
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(GitBranch, {}),
|
|
46990
|
+
"Promote to git…"
|
|
46991
|
+
] }),
|
|
46886
46992
|
capabilities2.copyPath && /* @__PURE__ */ jsxRuntimeExports.jsxs(ContextMenuItem, { onClick: () => navigator.clipboard.writeText(project.path), children: [
|
|
46887
46993
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Clipboard, {}),
|
|
46888
46994
|
"Copy path"
|
|
@@ -46897,7 +47003,7 @@ function SortableProject({
|
|
|
46897
47003
|
] })
|
|
46898
47004
|
] })
|
|
46899
47005
|
] }),
|
|
46900
|
-
!collapsed && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-0.5 overflow-hidden", children: project.worktrees.length === 0 ? hasPinnedSiblings ? null : /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground px-4 py-2", children: "No workspaces yet" }) : project.worktrees.map((wt2) => {
|
|
47006
|
+
!isPlain && !collapsed && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-0.5 overflow-hidden", children: project.worktrees.length === 0 ? hasPinnedSiblings ? null : /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground px-4 py-2", children: "No workspaces yet" }) : project.worktrees.map((wt2) => {
|
|
46901
47007
|
const wsId = toWorkspaceId(project.name, wt2.branch);
|
|
46902
47008
|
const currentIndex = workspaceIndex++;
|
|
46903
47009
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -46906,6 +47012,7 @@ function SortableProject({
|
|
|
46906
47012
|
worktree: wt2,
|
|
46907
47013
|
projectName: project.name,
|
|
46908
47014
|
defaultBranch: project.defaultBranch,
|
|
47015
|
+
projectKind: project.kind,
|
|
46909
47016
|
status: statuses.get(wsId),
|
|
46910
47017
|
branchStatus: branchStatuses.get(wsId),
|
|
46911
47018
|
setupStatus: setupStatuses.get(wsId),
|
|
@@ -46975,9 +47082,11 @@ function ProjectList({ labelFilter }) {
|
|
|
46975
47082
|
const removeProjectMutation = useRemoveProject();
|
|
46976
47083
|
const reorderProjectsMutation = useReorderProjects();
|
|
46977
47084
|
const updateProjectLabelMutation = useUpdateProjectLabel();
|
|
47085
|
+
const promoteProjectToGitMutation = usePromoteProjectToGit();
|
|
46978
47086
|
const removeWorkspaceMutation = useRemoveWorkspace();
|
|
46979
47087
|
const [workspaceDialog, setWorkspaceDialog] = reactExports.useState(null);
|
|
46980
47088
|
const [deleteDialog, setDeleteDialog] = reactExports.useState(null);
|
|
47089
|
+
const [promoteDialog, setPromoteDialog] = reactExports.useState(null);
|
|
46981
47090
|
const [focusedIndex, setFocusedIndex] = reactExports.useState(-1);
|
|
46982
47091
|
const [activeDragId, setActiveDragId] = reactExports.useState(null);
|
|
46983
47092
|
const containerRef = reactExports.useRef(null);
|
|
@@ -46985,7 +47094,11 @@ function ProjectList({ labelFilter }) {
|
|
|
46985
47094
|
const projectCollapse = useCollapseState(PROJECTS_COLLAPSE_KEY);
|
|
46986
47095
|
const labelCollapse = useCollapseState(LABELS_COLLAPSE_KEY);
|
|
46987
47096
|
const pinnedCollapse = useCollapseState(PINNED_COLLAPSE_KEY);
|
|
46988
|
-
const { pinned:
|
|
47097
|
+
const { pinned: pinnedEntriesRaw, toggle: togglePinned } = usePinnedWorkspaces();
|
|
47098
|
+
const pinnedEntries = reactExports.useMemo(
|
|
47099
|
+
() => pinnedEntriesRaw.filter((e2) => e2.project.kind !== "plain"),
|
|
47100
|
+
[pinnedEntriesRaw]
|
|
47101
|
+
);
|
|
46989
47102
|
const sensors = useSensors(
|
|
46990
47103
|
useSensor(MouseSensor, { activationConstraint: { distance: 8 } }),
|
|
46991
47104
|
useSensor(TouchSensor, { activationConstraint: { delay: 250, tolerance: 5 } })
|
|
@@ -46993,6 +47106,7 @@ function ProjectList({ labelFilter }) {
|
|
|
46993
47106
|
const { displayProjects, projectsWithPinned } = reactExports.useMemo(() => {
|
|
46994
47107
|
const withPinned = /* @__PURE__ */ new Set();
|
|
46995
47108
|
const display = projects.map((p2) => {
|
|
47109
|
+
if (p2.kind === "plain") return p2;
|
|
46996
47110
|
const filtered = p2.worktrees.filter((w3) => !w3.pinned);
|
|
46997
47111
|
if (filtered.length !== p2.worktrees.length) withPinned.add(p2.name);
|
|
46998
47112
|
return { ...p2, worktrees: filtered };
|
|
@@ -47134,6 +47248,7 @@ function ProjectList({ labelFilter }) {
|
|
|
47134
47248
|
const capabilities2 = useCapabilities();
|
|
47135
47249
|
const selectWorkspace = reactExports.useCallback(
|
|
47136
47250
|
(wsId) => {
|
|
47251
|
+
markRecentActivation(wsId);
|
|
47137
47252
|
const href = capabilities2.getWorkspaceHref?.(wsId);
|
|
47138
47253
|
if (href && capabilities2.navigate) {
|
|
47139
47254
|
capabilities2.navigate(href);
|
|
@@ -47196,7 +47311,7 @@ function ProjectList({ labelFilter }) {
|
|
|
47196
47311
|
if (projects.length === 0) {
|
|
47197
47312
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center justify-center py-16 text-muted-foreground", children: [
|
|
47198
47313
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-lg mb-2", children: "No projects registered" }),
|
|
47199
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: "Click the + button to register a
|
|
47314
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm", children: "Click the + button to register a folder" })
|
|
47200
47315
|
] });
|
|
47201
47316
|
}
|
|
47202
47317
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
@@ -47237,6 +47352,7 @@ function ProjectList({ labelFilter }) {
|
|
|
47237
47352
|
worktree,
|
|
47238
47353
|
projectName: project.name,
|
|
47239
47354
|
defaultBranch: project.defaultBranch,
|
|
47355
|
+
projectKind: project.kind,
|
|
47240
47356
|
status: statuses.get(workspaceId),
|
|
47241
47357
|
branchStatus: branchStatuses.get(workspaceId),
|
|
47242
47358
|
setupStatus: setupStatuses.get(workspaceId),
|
|
@@ -47285,6 +47401,7 @@ function ProjectList({ labelFilter }) {
|
|
|
47285
47401
|
setupStatuses,
|
|
47286
47402
|
removeProject: (name2) => removeProjectMutation.mutate(name2),
|
|
47287
47403
|
updateProjectLabel: (name2, label) => updateProjectLabelMutation.mutate({ name: name2, label }),
|
|
47404
|
+
onPromoteToGit: setPromoteDialog,
|
|
47288
47405
|
labels,
|
|
47289
47406
|
setWorkspaceDialog,
|
|
47290
47407
|
onShowDeleteDialog: setDeleteDialog,
|
|
@@ -47337,6 +47454,22 @@ function ProjectList({ labelFilter }) {
|
|
|
47337
47454
|
isDirty: deleteDialog?.isDirty ?? false,
|
|
47338
47455
|
hasUnpushedCommits: deleteDialog?.hasUnpushedCommits ?? false
|
|
47339
47456
|
}
|
|
47457
|
+
),
|
|
47458
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
47459
|
+
PromoteToGitDialog,
|
|
47460
|
+
{
|
|
47461
|
+
open: promoteDialog !== null,
|
|
47462
|
+
onOpenChange: (open2) => {
|
|
47463
|
+
if (!open2) setPromoteDialog(null);
|
|
47464
|
+
},
|
|
47465
|
+
onConfirm: () => {
|
|
47466
|
+
if (!promoteDialog) return;
|
|
47467
|
+
promoteProjectToGitMutation.mutate(promoteDialog, {
|
|
47468
|
+
onSettled: () => setPromoteDialog(null)
|
|
47469
|
+
});
|
|
47470
|
+
},
|
|
47471
|
+
projectName: promoteDialog ?? ""
|
|
47472
|
+
}
|
|
47340
47473
|
)
|
|
47341
47474
|
] });
|
|
47342
47475
|
}
|
|
@@ -48272,9 +48405,13 @@ function DashboardShell({ toolbarMenuItems, hideTitleBar, hideMenu }) {
|
|
|
48272
48405
|
ref: rootRef,
|
|
48273
48406
|
className: cn$2(
|
|
48274
48407
|
"w-full overflow-hidden flex flex-col bg-background text-foreground p-0",
|
|
48275
|
-
hideTitleBar
|
|
48408
|
+
hideTitleBar && "h-full",
|
|
48276
48409
|
!isDesktop$1 && "pt-[env(safe-area-inset-top)]"
|
|
48277
48410
|
),
|
|
48411
|
+
style: hideTitleBar ? void 0 : {
|
|
48412
|
+
// sync-with: ZOOM_CSS_VAR in apps/web/src/lib/zoom.ts
|
|
48413
|
+
height: "calc(100dvh / var(--app-zoom, 1))"
|
|
48414
|
+
},
|
|
48278
48415
|
children: [
|
|
48279
48416
|
isDesktop$1 && !hideTitleBar && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
48280
48417
|
"div",
|
|
@@ -50110,6 +50247,22 @@ function useDiffTarget(workspaceId) {
|
|
|
50110
50247
|
);
|
|
50111
50248
|
return { diffMode, compareBranch, setDiffMode, setCompareBranch };
|
|
50112
50249
|
}
|
|
50250
|
+
function useProjectKindMap() {
|
|
50251
|
+
const { projects } = useProjects();
|
|
50252
|
+
return reactExports.useMemo(() => {
|
|
50253
|
+
const map2 = /* @__PURE__ */ new Map();
|
|
50254
|
+
for (const p2 of projects) {
|
|
50255
|
+
for (const wt2 of p2.worktrees) {
|
|
50256
|
+
map2.set(toWorkspaceId(p2.name, wt2.branch), p2.kind);
|
|
50257
|
+
}
|
|
50258
|
+
}
|
|
50259
|
+
return map2;
|
|
50260
|
+
}, [projects]);
|
|
50261
|
+
}
|
|
50262
|
+
function useProjectKindForWorkspace(workspaceId) {
|
|
50263
|
+
const map2 = useProjectKindMap();
|
|
50264
|
+
return map2.get(workspaceId);
|
|
50265
|
+
}
|
|
50113
50266
|
const DEFAULT_SEARCH_OPTIONS = {
|
|
50114
50267
|
caseSensitive: false,
|
|
50115
50268
|
wholeWord: false,
|
|
@@ -50794,11 +50947,20 @@ function ChangesFileTree({
|
|
|
50794
50947
|
onRevertPaths
|
|
50795
50948
|
}) {
|
|
50796
50949
|
const tree = reactExports.useMemo(() => buildFileTree(fileStatuses), [fileStatuses]);
|
|
50797
|
-
const
|
|
50798
|
-
|
|
50799
|
-
|
|
50950
|
+
const seenDirPathsRef = reactExports.useRef(new Set(collectDirPaths(tree)));
|
|
50951
|
+
const [expandedPaths, setExpandedPaths] = reactExports.useState(
|
|
50952
|
+
() => new Set(seenDirPathsRef.current)
|
|
50953
|
+
);
|
|
50800
50954
|
reactExports.useEffect(() => {
|
|
50801
|
-
|
|
50955
|
+
const currentDirs = collectDirPaths(tree);
|
|
50956
|
+
const newDirs = currentDirs.filter((p2) => !seenDirPathsRef.current.has(p2));
|
|
50957
|
+
if (newDirs.length === 0) return;
|
|
50958
|
+
for (const p2 of newDirs) seenDirPathsRef.current.add(p2);
|
|
50959
|
+
setExpandedPaths((prev2) => {
|
|
50960
|
+
const next2 = new Set(prev2);
|
|
50961
|
+
for (const p2 of newDirs) next2.add(p2);
|
|
50962
|
+
return next2;
|
|
50963
|
+
});
|
|
50802
50964
|
}, [tree]);
|
|
50803
50965
|
const handleToggle = (path2) => {
|
|
50804
50966
|
setExpandedPaths((prev2) => {
|
|
@@ -50846,9 +51008,6 @@ function ChangesFileTree({
|
|
|
50846
51008
|
}
|
|
50847
51009
|
}, [pendingReset, onRevertPaths]);
|
|
50848
51010
|
const canReset = Boolean(onRevertPaths);
|
|
50849
|
-
if (tree.length === 0) {
|
|
50850
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-16 items-center justify-center text-[13px] text-muted-foreground", children: "No files" });
|
|
50851
|
-
}
|
|
50852
51011
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
50853
51012
|
tree.map((node2) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50854
51013
|
ChangesTreeNode,
|
|
@@ -51668,6 +51827,8 @@ function DiffView({
|
|
|
51668
51827
|
onFindInFile
|
|
51669
51828
|
}) {
|
|
51670
51829
|
const adapter2 = useAdapter();
|
|
51830
|
+
const projectKind = useProjectKindForWorkspace(workspaceId);
|
|
51831
|
+
const isPlain = projectKind === "plain";
|
|
51671
51832
|
const [summary, setSummary] = reactExports.useState(null);
|
|
51672
51833
|
const summaryRef = reactExports.useRef(null);
|
|
51673
51834
|
const [error, setError] = reactExports.useState(null);
|
|
@@ -52037,6 +52198,15 @@ function DiffView({
|
|
|
52037
52198
|
reactExports.useEffect(() => {
|
|
52038
52199
|
const getWorkspaceDiffSummary = adapter2.getWorkspaceDiffSummary;
|
|
52039
52200
|
if (!getWorkspaceDiffSummary) return;
|
|
52201
|
+
if (isPlain) {
|
|
52202
|
+
setLoading(false);
|
|
52203
|
+
setSummary(null);
|
|
52204
|
+
summaryRef.current = null;
|
|
52205
|
+
setError(null);
|
|
52206
|
+
onStatsChange?.(null);
|
|
52207
|
+
return;
|
|
52208
|
+
}
|
|
52209
|
+
if (projectKind === void 0) return;
|
|
52040
52210
|
let cancelled = false;
|
|
52041
52211
|
setLoading(true);
|
|
52042
52212
|
setSummary(null);
|
|
@@ -52078,8 +52248,8 @@ function DiffView({
|
|
|
52078
52248
|
}
|
|
52079
52249
|
}
|
|
52080
52250
|
}
|
|
52081
|
-
const
|
|
52082
|
-
onStatsChange?.(
|
|
52251
|
+
const hasChanges2 = result.stats.filesChanged > 0;
|
|
52252
|
+
onStatsChange?.(hasChanges2 ? result.stats : null);
|
|
52083
52253
|
}
|
|
52084
52254
|
}).catch((err) => {
|
|
52085
52255
|
if (!cancelled) setError(err instanceof Error ? err.message : "Failed to load diff");
|
|
@@ -52103,7 +52273,22 @@ function DiffView({
|
|
|
52103
52273
|
fetchSummaryRef.current = null;
|
|
52104
52274
|
unsubscribe?.();
|
|
52105
52275
|
};
|
|
52106
|
-
}, [
|
|
52276
|
+
}, [
|
|
52277
|
+
adapter2,
|
|
52278
|
+
workspaceId,
|
|
52279
|
+
active,
|
|
52280
|
+
onStatsChange,
|
|
52281
|
+
diffMode,
|
|
52282
|
+
compareBranch,
|
|
52283
|
+
fetchFileDiff,
|
|
52284
|
+
// `isPlain` and `projectKind` are both listed even though the
|
|
52285
|
+
// former is derived from the latter — required to keep
|
|
52286
|
+
// react/exhaustive-deps quiet. The body references both: `isPlain`
|
|
52287
|
+
// drives the short-circuit, `projectKind` gates the
|
|
52288
|
+
// undefined-during-load early return.
|
|
52289
|
+
isPlain,
|
|
52290
|
+
projectKind
|
|
52291
|
+
]);
|
|
52107
52292
|
const summaryCompareBranch = summary?.compareBranch ?? null;
|
|
52108
52293
|
const defaultBranch = summary?.defaultBranch ?? availableDefaultBranch ?? null;
|
|
52109
52294
|
const branchOptions = availableBranches.length > 0 ? availableBranches : summaryCompareBranch ? [summaryCompareBranch] : [];
|
|
@@ -52134,11 +52319,8 @@ function DiffView({
|
|
|
52134
52319
|
otherBranches.map((branch) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: branch, children: branch }, branch))
|
|
52135
52320
|
] })
|
|
52136
52321
|
] });
|
|
52137
|
-
if (
|
|
52138
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-sm text-muted-foreground", children: "
|
|
52139
|
-
}
|
|
52140
|
-
if (error) {
|
|
52141
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-sm text-destructive", children: error });
|
|
52322
|
+
if (isPlain) {
|
|
52323
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center px-6 text-center text-sm text-muted-foreground", children: "This folder is not a git repository — changes are not tracked." });
|
|
52142
52324
|
}
|
|
52143
52325
|
const ghostBtnClass = "hidden size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground @[40rem]/diff:inline-flex";
|
|
52144
52326
|
const ghostBtnAlwaysClass = "inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground";
|
|
@@ -52187,52 +52369,22 @@ function DiffView({
|
|
|
52187
52369
|
}
|
|
52188
52370
|
)
|
|
52189
52371
|
] });
|
|
52190
|
-
|
|
52191
|
-
|
|
52192
|
-
|
|
52193
|
-
|
|
52194
|
-
|
|
52195
|
-
|
|
52196
|
-
|
|
52197
|
-
|
|
52198
|
-
|
|
52199
|
-
|
|
52200
|
-
|
|
52201
|
-
|
|
52202
|
-
|
|
52203
|
-
gitOpStatus.state === "running" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
52204
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, { className: "size-3.5" }),
|
|
52205
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: gitOpStatus.op === "pull" ? "Pulling…" : "Pushing…" })
|
|
52206
|
-
] }),
|
|
52207
|
-
gitOpStatus.state === "success" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
52208
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-green-600 dark:text-green-400" }),
|
|
52209
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: gitOpStatus.op === "pull" ? "Pulled" : "Pushed" })
|
|
52210
|
-
] }),
|
|
52211
|
-
gitOpStatus.state === "error" && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
52212
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "font-medium", children: [
|
|
52213
|
-
gitOpStatus.op === "pull" ? "Pull failed" : "Push failed",
|
|
52214
|
-
":"
|
|
52215
|
-
] }),
|
|
52216
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 flex-1 truncate", title: gitOpStatus.message, children: gitOpStatus.message }),
|
|
52217
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52218
|
-
"button",
|
|
52219
|
-
{
|
|
52220
|
-
type: "button",
|
|
52221
|
-
onClick: () => setGitOpStatus(null),
|
|
52222
|
-
className: "shrink-0 rounded px-1 text-destructive hover:bg-destructive/20",
|
|
52223
|
-
"aria-label": "Dismiss error",
|
|
52224
|
-
children: "×"
|
|
52225
|
-
}
|
|
52226
|
-
)
|
|
52227
|
-
] })
|
|
52228
|
-
]
|
|
52229
|
-
}
|
|
52230
|
-
)
|
|
52231
|
-
] });
|
|
52232
|
-
}
|
|
52233
|
-
const fileStatuses = summary.fileStatuses || {};
|
|
52372
|
+
const renderReloadButton = () => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52373
|
+
"button",
|
|
52374
|
+
{
|
|
52375
|
+
type: "button",
|
|
52376
|
+
onClick: () => fetchSummaryRef.current?.(true),
|
|
52377
|
+
className: ghostBtnAlwaysClass,
|
|
52378
|
+
title: "Reload changes",
|
|
52379
|
+
"aria-label": "Reload changes",
|
|
52380
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "size-3.5" })
|
|
52381
|
+
}
|
|
52382
|
+
);
|
|
52383
|
+
const hasChanges = Boolean(!error && summary && summary.stats.filesChanged > 0);
|
|
52384
|
+
const fileStatuses = hasChanges ? summary?.fileStatuses ?? {} : {};
|
|
52234
52385
|
const filenames = flattenFileTreeOrder(buildFileTree(fileStatuses));
|
|
52235
52386
|
filenamesRef.current = filenames;
|
|
52387
|
+
const stats = hasChanges ? summary.stats : null;
|
|
52236
52388
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref: rootRef, className: "@container/diff flex h-full overflow-hidden", children: [
|
|
52237
52389
|
sidebarOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
52238
52390
|
"div",
|
|
@@ -52249,7 +52401,8 @@ function DiffView({
|
|
|
52249
52401
|
onSelectFile: handleScrollToFile,
|
|
52250
52402
|
activeFile,
|
|
52251
52403
|
onRevertPaths: adapter2.revertFile ? handleRevertPaths : void 0
|
|
52252
|
-
}
|
|
52404
|
+
},
|
|
52405
|
+
workspaceId
|
|
52253
52406
|
) })
|
|
52254
52407
|
]
|
|
52255
52408
|
}
|
|
@@ -52265,9 +52418,13 @@ function DiffView({
|
|
|
52265
52418
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center justify-between gap-3 border-b border-border pl-2 pr-3", children: [
|
|
52266
52419
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
52267
52420
|
renderSidebarToggle(),
|
|
52268
|
-
renderBranchIndicator(summary
|
|
52421
|
+
renderBranchIndicator(summary?.headBranch)
|
|
52269
52422
|
] }),
|
|
52270
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
52423
|
+
!hasChanges && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [
|
|
52424
|
+
renderGitSyncButtons(),
|
|
52425
|
+
renderReloadButton()
|
|
52426
|
+
] }),
|
|
52427
|
+
hasChanges && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1 @[44rem]/diff:flex", children: [
|
|
52271
52428
|
canCommit && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52272
52429
|
"button",
|
|
52273
52430
|
{
|
|
@@ -52304,17 +52461,7 @@ function DiffView({
|
|
|
52304
52461
|
children: isPushing ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowUpFromLine, { className: "size-3.5" })
|
|
52305
52462
|
}
|
|
52306
52463
|
),
|
|
52307
|
-
|
|
52308
|
-
"button",
|
|
52309
|
-
{
|
|
52310
|
-
type: "button",
|
|
52311
|
-
onClick: () => fetchSummaryRef.current?.(true),
|
|
52312
|
-
className: ghostBtnAlwaysClass,
|
|
52313
|
-
title: "Reload changes",
|
|
52314
|
-
"aria-label": "Reload changes",
|
|
52315
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "size-3.5" })
|
|
52316
|
-
}
|
|
52317
|
-
),
|
|
52464
|
+
renderReloadButton(),
|
|
52318
52465
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52319
52466
|
"button",
|
|
52320
52467
|
{
|
|
@@ -52365,7 +52512,7 @@ function DiffView({
|
|
|
52365
52512
|
)
|
|
52366
52513
|
] })
|
|
52367
52514
|
] }),
|
|
52368
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center @[44rem]/diff:hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
52515
|
+
hasChanges && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center @[44rem]/diff:hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
52369
52516
|
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52370
52517
|
"button",
|
|
52371
52518
|
{
|
|
@@ -52377,10 +52524,17 @@ function DiffView({
|
|
|
52377
52524
|
}
|
|
52378
52525
|
) }),
|
|
52379
52526
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "end", children: [
|
|
52380
|
-
canCommit && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
52381
|
-
|
|
52382
|
-
|
|
52383
|
-
|
|
52527
|
+
canCommit && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
52528
|
+
DropdownMenuItem,
|
|
52529
|
+
{
|
|
52530
|
+
onSelect: () => setCommitDialogOpen(true),
|
|
52531
|
+
disabled: gitOpBusy,
|
|
52532
|
+
children: [
|
|
52533
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(GitCommitHorizontal, { className: "size-4" }),
|
|
52534
|
+
"Commit changes"
|
|
52535
|
+
]
|
|
52536
|
+
}
|
|
52537
|
+
),
|
|
52384
52538
|
canPull && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => handleGitPull(), disabled: gitOpBusy, children: [
|
|
52385
52539
|
isPulling ? /* @__PURE__ */ jsxRuntimeExports.jsx(Spinner, { className: "size-4" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowDownToLine, { className: "size-4" }),
|
|
52386
52540
|
"Git pull"
|
|
@@ -52415,7 +52569,7 @@ function DiffView({
|
|
|
52415
52569
|
] })
|
|
52416
52570
|
] }) })
|
|
52417
52571
|
] }),
|
|
52418
|
-
search2.searchOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52572
|
+
hasChanges && search2.searchOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52419
52573
|
SearchBar,
|
|
52420
52574
|
{
|
|
52421
52575
|
ref: search2.searchBarRef,
|
|
@@ -52430,7 +52584,31 @@ function DiffView({
|
|
|
52430
52584
|
onClose: search2.handleCloseSearch
|
|
52431
52585
|
}
|
|
52432
52586
|
),
|
|
52433
|
-
|
|
52587
|
+
!hasChanges && // role="status" implies aria-live="polite" — spell both out as a
|
|
52588
|
+
// defensive pattern. aria-atomic ensures the whole label is
|
|
52589
|
+
// re-read on each transition (e.g. "Loading changes…" → "No
|
|
52590
|
+
// changes" after a ref switch). `<output>` would be biome's
|
|
52591
|
+
// preferred semantic element but it's specifically for the
|
|
52592
|
+
// result of a form computation; a generic status region is
|
|
52593
|
+
// a better fit here.
|
|
52594
|
+
// biome-ignore lint/a11y/useSemanticElements: see comment above.
|
|
52595
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52596
|
+
"div",
|
|
52597
|
+
{
|
|
52598
|
+
role: "status",
|
|
52599
|
+
"aria-live": "polite",
|
|
52600
|
+
"aria-atomic": "true",
|
|
52601
|
+
className: "flex min-h-0 flex-1 items-center justify-center",
|
|
52602
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52603
|
+
"span",
|
|
52604
|
+
{
|
|
52605
|
+
className: `text-sm ${!loading && error ? "text-destructive" : "text-muted-foreground"}`,
|
|
52606
|
+
children: loading ? "Loading changes..." : error ? error : "No changes"
|
|
52607
|
+
}
|
|
52608
|
+
)
|
|
52609
|
+
}
|
|
52610
|
+
),
|
|
52611
|
+
hasChanges && /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: scrollContainerRef, className: "min-h-0 flex-1 overflow-y-auto", children: /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-col gap-3 p-3", children: filenames.map((filename, index2) => {
|
|
52434
52612
|
const isLast = index2 === filenames.length - 1;
|
|
52435
52613
|
const row2 = /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
52436
52614
|
LazyFileRow,
|
|
@@ -52500,19 +52678,19 @@ function DiffView({
|
|
|
52500
52678
|
]
|
|
52501
52679
|
}
|
|
52502
52680
|
),
|
|
52503
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center border-t border-border px-3 text-sm text-muted-foreground", children: [
|
|
52504
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children:
|
|
52681
|
+
stats && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center border-t border-border px-3 text-sm text-muted-foreground", children: [
|
|
52682
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: stats.filesChanged }),
|
|
52505
52683
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-1", children: [
|
|
52506
|
-
|
|
52684
|
+
stats.filesChanged === 1 ? "file" : "files",
|
|
52507
52685
|
" changed"
|
|
52508
52686
|
] }),
|
|
52509
|
-
|
|
52687
|
+
stats.insertions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 text-green-600 dark:text-green-400", children: [
|
|
52510
52688
|
"+",
|
|
52511
|
-
|
|
52689
|
+
stats.insertions
|
|
52512
52690
|
] }),
|
|
52513
|
-
|
|
52691
|
+
stats.deletions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-1 text-red-600 dark:text-red-400", children: [
|
|
52514
52692
|
"-",
|
|
52515
|
-
|
|
52693
|
+
stats.deletions
|
|
52516
52694
|
] })
|
|
52517
52695
|
] })
|
|
52518
52696
|
] }),
|
|
@@ -52522,7 +52700,7 @@ function DiffView({
|
|
|
52522
52700
|
open: commitDialogOpen,
|
|
52523
52701
|
onOpenChange: setCommitDialogOpen,
|
|
52524
52702
|
workspaceId,
|
|
52525
|
-
filesChanged:
|
|
52703
|
+
filesChanged: stats?.filesChanged ?? 0,
|
|
52526
52704
|
onCommitted: () => {
|
|
52527
52705
|
fetchSummaryRef.current?.(true);
|
|
52528
52706
|
}
|
|
@@ -54287,8 +54465,12 @@ function QuickOpenDialog({
|
|
|
54287
54465
|
const canOpenExternal = !!capabilities2.pickFile;
|
|
54288
54466
|
const handleOpenExternal = reactExports.useCallback(() => {
|
|
54289
54467
|
onOpenChange(false);
|
|
54290
|
-
window.dispatchEvent(
|
|
54291
|
-
|
|
54468
|
+
window.dispatchEvent(
|
|
54469
|
+
new CustomEvent("band:open-file-external", {
|
|
54470
|
+
detail: { workspaceId }
|
|
54471
|
+
})
|
|
54472
|
+
);
|
|
54473
|
+
}, [onOpenChange, workspaceId]);
|
|
54292
54474
|
const displayFiles = showRecent ? recentFiles : files;
|
|
54293
54475
|
const groupHeading = showRecent ? "Recent files" : void 0;
|
|
54294
54476
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2 && dialogVisible, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "overflow-hidden p-0 sm:max-w-[520px]", showCloseButton: false, children: [
|
|
@@ -61089,7 +61271,10 @@ class WebDashboardAdapter {
|
|
|
61089
61271
|
});
|
|
61090
61272
|
async listProjects() {
|
|
61091
61273
|
const data = await this.trpc.projects.list.query();
|
|
61092
|
-
return data.projects
|
|
61274
|
+
return data.projects.map((p2) => ({
|
|
61275
|
+
...p2,
|
|
61276
|
+
kind: p2.kind ?? "git"
|
|
61277
|
+
}));
|
|
61093
61278
|
}
|
|
61094
61279
|
async addProject(path2, label) {
|
|
61095
61280
|
await this.trpc.projects.add.mutate({ path: path2, label });
|
|
@@ -61109,6 +61294,9 @@ class WebDashboardAdapter {
|
|
|
61109
61294
|
async gitInit(path2) {
|
|
61110
61295
|
await this.trpc.projects.gitInit.mutate({ path: path2 });
|
|
61111
61296
|
}
|
|
61297
|
+
async promoteProjectToGit(name2) {
|
|
61298
|
+
await this.trpc.projects.promoteToGit.mutate({ name: name2 });
|
|
61299
|
+
}
|
|
61112
61300
|
async createWorkspace(project, branch, base2, prompt) {
|
|
61113
61301
|
await this.trpc.workspaces.create.mutate({ project, branch, base: base2, prompt });
|
|
61114
61302
|
}
|
|
@@ -61980,45 +62168,6 @@ function DesktopTitleBar({
|
|
|
61980
62168
|
function DesktopDragRegion() {
|
|
61981
62169
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-[38px] shrink-0", style: DRAG_STYLE });
|
|
61982
62170
|
}
|
|
61983
|
-
function parseWorkspaceFromPath(pathname) {
|
|
61984
|
-
const match = pathname.match(/^\/workspace\/([^/]+)/);
|
|
61985
|
-
return match ? decodeURIComponent(match[1]) : null;
|
|
61986
|
-
}
|
|
61987
|
-
const state$1 = /* @__PURE__ */ new Map();
|
|
61988
|
-
const listeners$2 = /* @__PURE__ */ new Map();
|
|
61989
|
-
const DEFAULT = { wsActive: true };
|
|
61990
|
-
function notify(workspaceId) {
|
|
61991
|
-
const set2 = listeners$2.get(workspaceId);
|
|
61992
|
-
if (set2) {
|
|
61993
|
-
for (const cb of set2) cb();
|
|
61994
|
-
}
|
|
61995
|
-
}
|
|
61996
|
-
function setWsActive(workspaceId, wsActive) {
|
|
61997
|
-
const prev2 = state$1.get(workspaceId);
|
|
61998
|
-
if (prev2?.wsActive === wsActive) return;
|
|
61999
|
-
state$1.set(workspaceId, { wsActive });
|
|
62000
|
-
notify(workspaceId);
|
|
62001
|
-
}
|
|
62002
|
-
function getWsActive(workspaceId) {
|
|
62003
|
-
return state$1.get(workspaceId)?.wsActive ?? DEFAULT.wsActive;
|
|
62004
|
-
}
|
|
62005
|
-
function subscribe$3(workspaceId, cb) {
|
|
62006
|
-
let set2 = listeners$2.get(workspaceId);
|
|
62007
|
-
if (!set2) {
|
|
62008
|
-
set2 = /* @__PURE__ */ new Set();
|
|
62009
|
-
listeners$2.set(workspaceId, set2);
|
|
62010
|
-
}
|
|
62011
|
-
set2.add(cb);
|
|
62012
|
-
return () => {
|
|
62013
|
-
set2.delete(cb);
|
|
62014
|
-
if (set2.size === 0) listeners$2.delete(workspaceId);
|
|
62015
|
-
};
|
|
62016
|
-
}
|
|
62017
|
-
function useWsActive(workspaceId) {
|
|
62018
|
-
const sub2 = reactExports.useCallback((cb) => subscribe$3(workspaceId, cb), [workspaceId]);
|
|
62019
|
-
const snap = reactExports.useCallback(() => getWsActive(workspaceId), [workspaceId]);
|
|
62020
|
-
return reactExports.useSyncExternalStore(sub2, snap);
|
|
62021
|
-
}
|
|
62022
62171
|
class TransferObject {
|
|
62023
62172
|
}
|
|
62024
62173
|
class PanelTransfer extends TransferObject {
|
|
@@ -76986,6 +77135,10 @@ function useRecentFiles(workspaceId) {
|
|
|
76986
77135
|
);
|
|
76987
77136
|
return { recentFiles, trackFile };
|
|
76988
77137
|
}
|
|
77138
|
+
function parseWorkspaceFromPath(pathname) {
|
|
77139
|
+
const match = pathname.match(/^\/workspace\/([^/]+)/);
|
|
77140
|
+
return match ? decodeURIComponent(match[1]) : null;
|
|
77141
|
+
}
|
|
76989
77142
|
function gt(e2, t2) {
|
|
76990
77143
|
const n2 = getComputedStyle(e2), o3 = parseFloat(n2.fontSize);
|
|
76991
77144
|
return t2 * o3;
|
|
@@ -105180,7 +105333,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
|
|
|
105180
105333
|
var et$1 = ({ className: e2, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f$5("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e2), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
|
|
105181
105334
|
var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
|
|
105182
105335
|
var ot$1 = ({ language: e2 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e2, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e2 }) });
|
|
105183
|
-
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
105336
|
+
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DX00yTJM.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
|
|
105184
105337
|
let i2 = reactExports.useMemo(() => e2.replace(cn, ""), [e2]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
|
|
105185
105338
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
|
|
105186
105339
|
return jsxRuntimeExports.jsx(Se$1.Provider, { value: { code: e2 }, children: jsxRuntimeExports.jsxs(et$1, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot$1, { language: t2 }), n2 ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n2 }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe$1, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
|
|
@@ -105502,7 +105655,7 @@ var Dt = ({ children: e2, className: t2, onDownload: o3, onError: n2 }) => {
|
|
|
105502
105655
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f$5("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t2), disabled: c2, onClick: () => r2(!s2), title: "Download table", type: "button", children: e2 != null ? e2 : jsxRuntimeExports.jsx(Z$2, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
|
|
105503
105656
|
};
|
|
105504
105657
|
var Vt = ({ children: e2, className: t2, showControls: o3, ...n2 }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o3 ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f$5("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e2 }) })] });
|
|
105505
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
105658
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-DxhML77C.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
105506
105659
|
function ke$1(e2, t2) {
|
|
105507
105660
|
if (!(e2 != null && e2.position || t2 != null && t2.position)) return true;
|
|
105508
105661
|
if (!(e2 != null && e2.position && (t2 != null && t2.position))) return false;
|
|
@@ -155304,12 +155457,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
|
|
|
155304
155457
|
registerLayoutLoaders([
|
|
155305
155458
|
{
|
|
155306
155459
|
name: "dagre",
|
|
155307
|
-
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-
|
|
155460
|
+
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-D_Mh5gNH.js"), "loader")
|
|
155308
155461
|
},
|
|
155309
155462
|
...[
|
|
155310
155463
|
{
|
|
155311
155464
|
name: "cose-bilkent",
|
|
155312
|
-
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-
|
|
155465
|
+
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-V_MYkZlm.js"), "loader")
|
|
155313
155466
|
}
|
|
155314
155467
|
]
|
|
155315
155468
|
]);
|
|
@@ -155748,7 +155901,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
|
|
|
155748
155901
|
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
|
155749
155902
|
}, "detector");
|
|
155750
155903
|
var loader = /* @__PURE__ */ __name(async () => {
|
|
155751
|
-
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-
|
|
155904
|
+
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-nGE1cXwD.js");
|
|
155752
155905
|
return { id, diagram: diagram2 };
|
|
155753
155906
|
}, "loader");
|
|
155754
155907
|
var plugin = {
|
|
@@ -155765,7 +155918,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155765
155918
|
return /^\s*graph/.test(txt);
|
|
155766
155919
|
}, "detector");
|
|
155767
155920
|
var loader2 = /* @__PURE__ */ __name(async () => {
|
|
155768
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
155921
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Bk7aIalC.js");
|
|
155769
155922
|
return { id: id2, diagram: diagram2 };
|
|
155770
155923
|
}, "loader");
|
|
155771
155924
|
var plugin2 = {
|
|
@@ -155788,7 +155941,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155788
155941
|
return /^\s*flowchart/.test(txt);
|
|
155789
155942
|
}, "detector");
|
|
155790
155943
|
var loader3 = /* @__PURE__ */ __name(async () => {
|
|
155791
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
155944
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Bk7aIalC.js");
|
|
155792
155945
|
return { id: id3, diagram: diagram2 };
|
|
155793
155946
|
}, "loader");
|
|
155794
155947
|
var plugin3 = {
|
|
@@ -155802,7 +155955,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
|
|
|
155802
155955
|
return /^\s*erDiagram/.test(txt);
|
|
155803
155956
|
}, "detector");
|
|
155804
155957
|
var loader4 = /* @__PURE__ */ __name(async () => {
|
|
155805
|
-
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-
|
|
155958
|
+
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-CzG0zKt-.js");
|
|
155806
155959
|
return { id: id4, diagram: diagram2 };
|
|
155807
155960
|
}, "loader");
|
|
155808
155961
|
var plugin4 = {
|
|
@@ -155816,7 +155969,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
|
|
|
155816
155969
|
return /^\s*gitGraph/.test(txt);
|
|
155817
155970
|
}, "detector");
|
|
155818
155971
|
var loader5 = /* @__PURE__ */ __name(async () => {
|
|
155819
|
-
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-
|
|
155972
|
+
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-OV2DR1Ux.js");
|
|
155820
155973
|
return { id: id5, diagram: diagram2 };
|
|
155821
155974
|
}, "loader");
|
|
155822
155975
|
var plugin5 = {
|
|
@@ -155830,7 +155983,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
|
|
|
155830
155983
|
return /^\s*gantt/.test(txt);
|
|
155831
155984
|
}, "detector");
|
|
155832
155985
|
var loader6 = /* @__PURE__ */ __name(async () => {
|
|
155833
|
-
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-
|
|
155986
|
+
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-wmt8nm9q.js");
|
|
155834
155987
|
return { id: id6, diagram: diagram2 };
|
|
155835
155988
|
}, "loader");
|
|
155836
155989
|
var plugin6 = {
|
|
@@ -155844,7 +155997,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
|
|
|
155844
155997
|
return /^\s*info/.test(txt);
|
|
155845
155998
|
}, "detector");
|
|
155846
155999
|
var loader7 = /* @__PURE__ */ __name(async () => {
|
|
155847
|
-
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-
|
|
156000
|
+
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-D8EoxteQ.js");
|
|
155848
156001
|
return { id: id7, diagram: diagram2 };
|
|
155849
156002
|
}, "loader");
|
|
155850
156003
|
var info = {
|
|
@@ -155857,7 +156010,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
|
|
|
155857
156010
|
return /^\s*pie/.test(txt);
|
|
155858
156011
|
}, "detector");
|
|
155859
156012
|
var loader8 = /* @__PURE__ */ __name(async () => {
|
|
155860
|
-
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-
|
|
156013
|
+
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-Bw3RR9nb.js");
|
|
155861
156014
|
return { id: id8, diagram: diagram2 };
|
|
155862
156015
|
}, "loader");
|
|
155863
156016
|
var pie = {
|
|
@@ -155870,7 +156023,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
|
|
|
155870
156023
|
return /^\s*quadrantChart/.test(txt);
|
|
155871
156024
|
}, "detector");
|
|
155872
156025
|
var loader9 = /* @__PURE__ */ __name(async () => {
|
|
155873
|
-
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-
|
|
156026
|
+
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-CpLsW_Ir.js");
|
|
155874
156027
|
return { id: id9, diagram: diagram2 };
|
|
155875
156028
|
}, "loader");
|
|
155876
156029
|
var plugin7 = {
|
|
@@ -155884,7 +156037,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
|
|
|
155884
156037
|
return /^\s*xychart(-beta)?/.test(txt);
|
|
155885
156038
|
}, "detector");
|
|
155886
156039
|
var loader10 = /* @__PURE__ */ __name(async () => {
|
|
155887
|
-
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-
|
|
156040
|
+
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-Cq7t_yS-.js");
|
|
155888
156041
|
return { id: id10, diagram: diagram2 };
|
|
155889
156042
|
}, "loader");
|
|
155890
156043
|
var plugin8 = {
|
|
@@ -155898,7 +156051,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
|
|
|
155898
156051
|
return /^\s*requirement(Diagram)?/.test(txt);
|
|
155899
156052
|
}, "detector");
|
|
155900
156053
|
var loader11 = /* @__PURE__ */ __name(async () => {
|
|
155901
|
-
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-
|
|
156054
|
+
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-DkGtaEnw.js");
|
|
155902
156055
|
return { id: id11, diagram: diagram2 };
|
|
155903
156056
|
}, "loader");
|
|
155904
156057
|
var plugin9 = {
|
|
@@ -155912,7 +156065,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
|
|
|
155912
156065
|
return /^\s*sequenceDiagram/.test(txt);
|
|
155913
156066
|
}, "detector");
|
|
155914
156067
|
var loader12 = /* @__PURE__ */ __name(async () => {
|
|
155915
|
-
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-
|
|
156068
|
+
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-BMW4qEme.js");
|
|
155916
156069
|
return { id: id12, diagram: diagram2 };
|
|
155917
156070
|
}, "loader");
|
|
155918
156071
|
var plugin10 = {
|
|
@@ -155929,7 +156082,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155929
156082
|
return /^\s*classDiagram/.test(txt);
|
|
155930
156083
|
}, "detector");
|
|
155931
156084
|
var loader13 = /* @__PURE__ */ __name(async () => {
|
|
155932
|
-
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-
|
|
156085
|
+
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-D3C4Rk7Q.js");
|
|
155933
156086
|
return { id: id13, diagram: diagram2 };
|
|
155934
156087
|
}, "loader");
|
|
155935
156088
|
var plugin11 = {
|
|
@@ -155946,7 +156099,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155946
156099
|
return /^\s*classDiagram-v2/.test(txt);
|
|
155947
156100
|
}, "detector");
|
|
155948
156101
|
var loader14 = /* @__PURE__ */ __name(async () => {
|
|
155949
|
-
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-
|
|
156102
|
+
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-D3C4Rk7Q.js");
|
|
155950
156103
|
return { id: id14, diagram: diagram2 };
|
|
155951
156104
|
}, "loader");
|
|
155952
156105
|
var plugin12 = {
|
|
@@ -155963,7 +156116,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155963
156116
|
return /^\s*stateDiagram/.test(txt);
|
|
155964
156117
|
}, "detector");
|
|
155965
156118
|
var loader15 = /* @__PURE__ */ __name(async () => {
|
|
155966
|
-
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-
|
|
156119
|
+
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-C7xazM8E.js");
|
|
155967
156120
|
return { id: id15, diagram: diagram2 };
|
|
155968
156121
|
}, "loader");
|
|
155969
156122
|
var plugin13 = {
|
|
@@ -155983,7 +156136,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
155983
156136
|
return false;
|
|
155984
156137
|
}, "detector");
|
|
155985
156138
|
var loader16 = /* @__PURE__ */ __name(async () => {
|
|
155986
|
-
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-
|
|
156139
|
+
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-D_rYvDGP.js");
|
|
155987
156140
|
return { id: id16, diagram: diagram2 };
|
|
155988
156141
|
}, "loader");
|
|
155989
156142
|
var plugin14 = {
|
|
@@ -155997,7 +156150,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
|
|
|
155997
156150
|
return /^\s*journey/.test(txt);
|
|
155998
156151
|
}, "detector");
|
|
155999
156152
|
var loader17 = /* @__PURE__ */ __name(async () => {
|
|
156000
|
-
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-
|
|
156153
|
+
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-BwZk-fnC.js");
|
|
156001
156154
|
return { id: id17, diagram: diagram2 };
|
|
156002
156155
|
}, "loader");
|
|
156003
156156
|
var plugin15 = {
|
|
@@ -156064,7 +156217,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
|
|
|
156064
156217
|
return false;
|
|
156065
156218
|
}, "detector");
|
|
156066
156219
|
var loader18 = /* @__PURE__ */ __name(async () => {
|
|
156067
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
156220
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Bk7aIalC.js");
|
|
156068
156221
|
return { id: id18, diagram: diagram2 };
|
|
156069
156222
|
}, "loader");
|
|
156070
156223
|
var plugin16 = {
|
|
@@ -156078,7 +156231,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
|
|
|
156078
156231
|
return /^\s*timeline/.test(txt);
|
|
156079
156232
|
}, "detector");
|
|
156080
156233
|
var loader19 = /* @__PURE__ */ __name(async () => {
|
|
156081
|
-
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-
|
|
156234
|
+
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-BaAlfxrc.js");
|
|
156082
156235
|
return { id: id19, diagram: diagram2 };
|
|
156083
156236
|
}, "loader");
|
|
156084
156237
|
var plugin17 = {
|
|
@@ -156092,7 +156245,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
|
|
|
156092
156245
|
return /^\s*mindmap/.test(txt);
|
|
156093
156246
|
}, "detector");
|
|
156094
156247
|
var loader20 = /* @__PURE__ */ __name(async () => {
|
|
156095
|
-
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-
|
|
156248
|
+
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-Bg8B0Ls9.js");
|
|
156096
156249
|
return { id: id20, diagram: diagram2 };
|
|
156097
156250
|
}, "loader");
|
|
156098
156251
|
var plugin18 = {
|
|
@@ -156106,7 +156259,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
|
|
|
156106
156259
|
return /^\s*kanban/.test(txt);
|
|
156107
156260
|
}, "detector");
|
|
156108
156261
|
var loader21 = /* @__PURE__ */ __name(async () => {
|
|
156109
|
-
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-
|
|
156262
|
+
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-DEfYos8T.js");
|
|
156110
156263
|
return { id: id21, diagram: diagram2 };
|
|
156111
156264
|
}, "loader");
|
|
156112
156265
|
var plugin19 = {
|
|
@@ -156120,7 +156273,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
|
|
|
156120
156273
|
return /^\s*sankey(-beta)?/.test(txt);
|
|
156121
156274
|
}, "detector");
|
|
156122
156275
|
var loader22 = /* @__PURE__ */ __name(async () => {
|
|
156123
|
-
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-
|
|
156276
|
+
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-CtEV3_Bx.js");
|
|
156124
156277
|
return { id: id22, diagram: diagram2 };
|
|
156125
156278
|
}, "loader");
|
|
156126
156279
|
var plugin20 = {
|
|
@@ -156134,7 +156287,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
|
|
|
156134
156287
|
return /^\s*packet(-beta)?/.test(txt);
|
|
156135
156288
|
}, "detector");
|
|
156136
156289
|
var loader23 = /* @__PURE__ */ __name(async () => {
|
|
156137
|
-
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-
|
|
156290
|
+
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-B8urPf9c.js");
|
|
156138
156291
|
return { id: id23, diagram: diagram2 };
|
|
156139
156292
|
}, "loader");
|
|
156140
156293
|
var packet = {
|
|
@@ -156147,7 +156300,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
|
|
|
156147
156300
|
return /^\s*radar-beta/.test(txt);
|
|
156148
156301
|
}, "detector");
|
|
156149
156302
|
var loader24 = /* @__PURE__ */ __name(async () => {
|
|
156150
|
-
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-
|
|
156303
|
+
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-BcfmavO-.js");
|
|
156151
156304
|
return { id: id24, diagram: diagram2 };
|
|
156152
156305
|
}, "loader");
|
|
156153
156306
|
var radar = {
|
|
@@ -156160,7 +156313,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
|
|
|
156160
156313
|
return /^\s*block(-beta)?/.test(txt);
|
|
156161
156314
|
}, "detector");
|
|
156162
156315
|
var loader25 = /* @__PURE__ */ __name(async () => {
|
|
156163
|
-
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-
|
|
156316
|
+
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-C0oBPtSv.js");
|
|
156164
156317
|
return { id: id25, diagram: diagram2 };
|
|
156165
156318
|
}, "loader");
|
|
156166
156319
|
var plugin21 = {
|
|
@@ -156174,7 +156327,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
|
|
|
156174
156327
|
return /^\s*architecture/.test(txt);
|
|
156175
156328
|
}, "detector");
|
|
156176
156329
|
var loader26 = /* @__PURE__ */ __name(async () => {
|
|
156177
|
-
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-
|
|
156330
|
+
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-tjTQ4ZaT.js");
|
|
156178
156331
|
return { id: id26, diagram: diagram2 };
|
|
156179
156332
|
}, "loader");
|
|
156180
156333
|
var architecture = {
|
|
@@ -156188,7 +156341,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
|
|
|
156188
156341
|
return /^\s*treemap/.test(txt);
|
|
156189
156342
|
}, "detector");
|
|
156190
156343
|
var loader27 = /* @__PURE__ */ __name(async () => {
|
|
156191
|
-
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-
|
|
156344
|
+
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-B9dGPsE9.js");
|
|
156192
156345
|
return { id: id27, diagram: diagram2 };
|
|
156193
156346
|
}, "loader");
|
|
156194
156347
|
var treemap = {
|
|
@@ -157809,13 +157962,26 @@ function CodeBrowserView({
|
|
|
157809
157962
|
},
|
|
157810
157963
|
[notifySelectFile, pushDepartureAndArrival, fileTabs.openTabPinned, viewFilePath]
|
|
157811
157964
|
);
|
|
157965
|
+
const handleTabClose = reactExports.useCallback(
|
|
157966
|
+
(filePath) => {
|
|
157967
|
+
tabState.removeFile(filePath);
|
|
157968
|
+
delete savedEditorStatesRef.current[filePath];
|
|
157969
|
+
window.dispatchEvent(new CustomEvent("band:dirty-change"));
|
|
157970
|
+
fileTabs.closeTab(filePath);
|
|
157971
|
+
},
|
|
157972
|
+
[fileTabs.closeTab, tabState.removeFile]
|
|
157973
|
+
);
|
|
157812
157974
|
const handleBack = reactExports.useCallback(() => {
|
|
157975
|
+
if (viewFilePath && isUntitledPath(viewFilePath)) {
|
|
157976
|
+
handleTabClose(viewFilePath);
|
|
157977
|
+
return;
|
|
157978
|
+
}
|
|
157813
157979
|
setViewFilePath("");
|
|
157814
157980
|
setViewLine(void 0);
|
|
157815
157981
|
setViewLineEnd(void 0);
|
|
157816
157982
|
setViewColumn(void 0);
|
|
157817
157983
|
notifySelectFile(null);
|
|
157818
|
-
}, [notifySelectFile]);
|
|
157984
|
+
}, [viewFilePath, handleTabClose, notifySelectFile]);
|
|
157819
157985
|
const handleTabSelect = reactExports.useCallback(
|
|
157820
157986
|
(filePath) => {
|
|
157821
157987
|
const view = editorViewRef.current;
|
|
@@ -157840,15 +158006,6 @@ function CodeBrowserView({
|
|
|
157840
158006
|
},
|
|
157841
158007
|
[fileTabs.setActiveTab, notifySelectFile, viewFilePath, tabState.update]
|
|
157842
158008
|
);
|
|
157843
|
-
const handleTabClose = reactExports.useCallback(
|
|
157844
|
-
(filePath) => {
|
|
157845
|
-
tabState.removeFile(filePath);
|
|
157846
|
-
delete savedEditorStatesRef.current[filePath];
|
|
157847
|
-
window.dispatchEvent(new CustomEvent("band:dirty-change"));
|
|
157848
|
-
fileTabs.closeTab(filePath);
|
|
157849
|
-
},
|
|
157850
|
-
[fileTabs.closeTab, tabState.removeFile]
|
|
157851
|
-
);
|
|
157852
158009
|
const skipInitialTabSync = reactExports.useRef(true);
|
|
157853
158010
|
reactExports.useEffect(() => {
|
|
157854
158011
|
if (skipInitialTabSync.current) {
|
|
@@ -157984,12 +158141,14 @@ function CodeBrowserView({
|
|
|
157984
158141
|
}, [pickFile, fileTabs.openTabExternal]);
|
|
157985
158142
|
reactExports.useEffect(() => {
|
|
157986
158143
|
if (!pickFile) return;
|
|
157987
|
-
const handler = () => {
|
|
158144
|
+
const handler = (e2) => {
|
|
158145
|
+
const detail = e2.detail;
|
|
158146
|
+
if (detail?.workspaceId && detail.workspaceId !== workspaceId) return;
|
|
157988
158147
|
void handleOpenExternalFile();
|
|
157989
158148
|
};
|
|
157990
158149
|
window.addEventListener("band:open-file-external", handler);
|
|
157991
158150
|
return () => window.removeEventListener("band:open-file-external", handler);
|
|
157992
|
-
}, [pickFile, handleOpenExternalFile]);
|
|
158151
|
+
}, [pickFile, handleOpenExternalFile, workspaceId]);
|
|
157993
158152
|
const pickSaveFile = capabilities2.pickSaveFile;
|
|
157994
158153
|
const handleNewUntitled = reactExports.useCallback(() => {
|
|
157995
158154
|
const { filePath } = fileTabs.openTabUntitled();
|
|
@@ -158065,14 +158224,24 @@ function CodeBrowserView({
|
|
|
158065
158224
|
},
|
|
158066
158225
|
[handleSaveUntitled, tabState]
|
|
158067
158226
|
);
|
|
158227
|
+
const [, bumpLanguageOverrideVersion] = reactExports.useReducer((x2) => x2 + 1, 0);
|
|
158068
158228
|
const handleLanguageOverride = reactExports.useCallback(
|
|
158069
158229
|
(filePath, languageId) => {
|
|
158070
158230
|
if (languageId === AUTO_DETECT_LANGUAGE_ID) {
|
|
158071
158231
|
tabState.update(filePath, { language: void 0 });
|
|
158072
|
-
|
|
158232
|
+
} else {
|
|
158233
|
+
tabState.setLanguage(filePath, languageId);
|
|
158073
158234
|
}
|
|
158074
|
-
|
|
158235
|
+
bumpLanguageOverrideVersion();
|
|
158075
158236
|
},
|
|
158237
|
+
// `bumpLanguageOverrideVersion` is the dispatch returned by
|
|
158238
|
+
// `useReducer`, which React guarantees is referentially stable —
|
|
158239
|
+
// both biome's `useExhaustiveDependencies` rule and
|
|
158240
|
+
// `eslint-plugin-react-hooks` recognise the stable-dispatch
|
|
158241
|
+
// contract and treat its omission as correct (in fact biome flags
|
|
158242
|
+
// its inclusion as over-specifying). If a future refactor swaps
|
|
158243
|
+
// the bump source for something less stable (e.g. a regular
|
|
158244
|
+
// useState setter wrapped in a closure), add it to this array.
|
|
158076
158245
|
[tabState]
|
|
158077
158246
|
);
|
|
158078
158247
|
const flushActiveEditorState = reactExports.useCallback(() => {
|
|
@@ -158453,7 +158622,7 @@ function injectInitialUrls(layout, urls) {
|
|
|
158453
158622
|
}
|
|
158454
158623
|
let domOverlayCount = 0;
|
|
158455
158624
|
let manualHoldCount = 0;
|
|
158456
|
-
const listeners$
|
|
158625
|
+
const listeners$2 = /* @__PURE__ */ new Set();
|
|
158457
158626
|
let lastEmitted = false;
|
|
158458
158627
|
function isFrozen() {
|
|
158459
158628
|
return domOverlayCount + manualHoldCount > 0;
|
|
@@ -158462,12 +158631,12 @@ function emitIfChanged() {
|
|
|
158462
158631
|
const next2 = isFrozen();
|
|
158463
158632
|
if (next2 === lastEmitted) return;
|
|
158464
158633
|
lastEmitted = next2;
|
|
158465
|
-
for (const l4 of listeners$
|
|
158634
|
+
for (const l4 of listeners$2) l4();
|
|
158466
158635
|
}
|
|
158467
158636
|
function subscribe$1(l4) {
|
|
158468
|
-
listeners$
|
|
158637
|
+
listeners$2.add(l4);
|
|
158469
158638
|
return () => {
|
|
158470
|
-
listeners$
|
|
158639
|
+
listeners$2.delete(l4);
|
|
158471
158640
|
};
|
|
158472
158641
|
}
|
|
158473
158642
|
function getSnapshot$1() {
|
|
@@ -158856,13 +159025,13 @@ function useBrowserPaneFreeze(args) {
|
|
|
158856
159025
|
return { snapshot };
|
|
158857
159026
|
}
|
|
158858
159027
|
let hosts = /* @__PURE__ */ new Set();
|
|
158859
|
-
const listeners = /* @__PURE__ */ new Set();
|
|
159028
|
+
const listeners$1 = /* @__PURE__ */ new Set();
|
|
158860
159029
|
let bootstrapped = false;
|
|
158861
159030
|
function setHosts(updater) {
|
|
158862
159031
|
const next2 = updater(hosts);
|
|
158863
159032
|
if (next2 === hosts) return;
|
|
158864
159033
|
hosts = next2;
|
|
158865
|
-
for (const cb of listeners) cb();
|
|
159034
|
+
for (const cb of listeners$1) cb();
|
|
158866
159035
|
}
|
|
158867
159036
|
function addHost(raw2) {
|
|
158868
159037
|
const h2 = raw2.toLowerCase();
|
|
@@ -158892,9 +159061,9 @@ function bootstrap() {
|
|
|
158892
159061
|
}
|
|
158893
159062
|
function subscribe(cb) {
|
|
158894
159063
|
bootstrap();
|
|
158895
|
-
listeners.add(cb);
|
|
159064
|
+
listeners$1.add(cb);
|
|
158896
159065
|
return () => {
|
|
158897
|
-
listeners.delete(cb);
|
|
159066
|
+
listeners$1.delete(cb);
|
|
158898
159067
|
};
|
|
158899
159068
|
}
|
|
158900
159069
|
function getSnapshot() {
|
|
@@ -172946,6 +173115,109 @@ function createDefaultPanel(api, workspaceId) {
|
|
|
172946
173115
|
}
|
|
172947
173116
|
});
|
|
172948
173117
|
}
|
|
173118
|
+
const states = /* @__PURE__ */ new Map();
|
|
173119
|
+
const listeners = /* @__PURE__ */ new Map();
|
|
173120
|
+
const EMPTY_STATE = Object.freeze({ openFilePath: null });
|
|
173121
|
+
function getPerWorkspaceState(workspaceId) {
|
|
173122
|
+
return states.get(workspaceId) ?? EMPTY_STATE;
|
|
173123
|
+
}
|
|
173124
|
+
function setPerWorkspaceState(workspaceId, patch2) {
|
|
173125
|
+
const prev2 = getPerWorkspaceState(workspaceId);
|
|
173126
|
+
const next2 = { ...prev2, ...patch2 };
|
|
173127
|
+
if (prev2.currentFile === next2.currentFile && prev2.openFilePath === next2.openFilePath) return;
|
|
173128
|
+
states.set(workspaceId, next2);
|
|
173129
|
+
const set2 = listeners.get(workspaceId);
|
|
173130
|
+
if (set2) for (const cb of set2) cb();
|
|
173131
|
+
}
|
|
173132
|
+
function subscribePerWorkspaceState(workspaceId, cb) {
|
|
173133
|
+
let set2 = listeners.get(workspaceId);
|
|
173134
|
+
if (!set2) {
|
|
173135
|
+
set2 = /* @__PURE__ */ new Set();
|
|
173136
|
+
listeners.set(workspaceId, set2);
|
|
173137
|
+
}
|
|
173138
|
+
set2.add(cb);
|
|
173139
|
+
return () => {
|
|
173140
|
+
set2?.delete(cb);
|
|
173141
|
+
if (set2 && set2.size === 0) listeners.delete(workspaceId);
|
|
173142
|
+
};
|
|
173143
|
+
}
|
|
173144
|
+
function clearPerWorkspaceState(workspaceId) {
|
|
173145
|
+
states.delete(workspaceId);
|
|
173146
|
+
}
|
|
173147
|
+
function usePerWorkspaceState(workspaceId) {
|
|
173148
|
+
return reactExports.useSyncExternalStore(
|
|
173149
|
+
(cb) => subscribePerWorkspaceState(workspaceId, cb),
|
|
173150
|
+
() => getPerWorkspaceState(workspaceId)
|
|
173151
|
+
);
|
|
173152
|
+
}
|
|
173153
|
+
const DEFAULT_MAX_CACHED_WORKSPACES = 3;
|
|
173154
|
+
const MIN_MAX_CACHED_WORKSPACES = 1;
|
|
173155
|
+
function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
|
|
173156
|
+
const [cache, setCache] = reactExports.useState(/* @__PURE__ */ new Map());
|
|
173157
|
+
const pathname = useRouterState({ select: (s2) => s2.location.pathname });
|
|
173158
|
+
const { settings } = useSettingsQuery();
|
|
173159
|
+
const maxCachedWorkspaces = Math.max(
|
|
173160
|
+
MIN_MAX_CACHED_WORKSPACES,
|
|
173161
|
+
settings.maxCachedWorkspaces ?? DEFAULT_MAX_CACHED_WORKSPACES
|
|
173162
|
+
);
|
|
173163
|
+
const activeWorkspaceId = parseWorkspaceFromPath(pathname);
|
|
173164
|
+
if (activeWorkspaceId && !cache.has(activeWorkspaceId)) {
|
|
173165
|
+
setCache((prev2) => {
|
|
173166
|
+
if (prev2.has(activeWorkspaceId)) return prev2;
|
|
173167
|
+
const next2 = new Map(prev2);
|
|
173168
|
+
next2.set(activeWorkspaceId, {
|
|
173169
|
+
workspaceId: activeWorkspaceId,
|
|
173170
|
+
lastAccessed: Date.now()
|
|
173171
|
+
});
|
|
173172
|
+
if (next2.size > maxCachedWorkspaces) {
|
|
173173
|
+
let oldestKey = null;
|
|
173174
|
+
let oldestTime = Number.POSITIVE_INFINITY;
|
|
173175
|
+
for (const [key2, entry] of next2) {
|
|
173176
|
+
if (key2 !== activeWorkspaceId && entry.lastAccessed < oldestTime) {
|
|
173177
|
+
oldestTime = entry.lastAccessed;
|
|
173178
|
+
oldestKey = key2;
|
|
173179
|
+
}
|
|
173180
|
+
}
|
|
173181
|
+
if (oldestKey) next2.delete(oldestKey);
|
|
173182
|
+
}
|
|
173183
|
+
return next2;
|
|
173184
|
+
});
|
|
173185
|
+
}
|
|
173186
|
+
reactExports.useEffect(() => {
|
|
173187
|
+
if (!activeWorkspaceId) return;
|
|
173188
|
+
setCache((prev2) => {
|
|
173189
|
+
const existing = prev2.get(activeWorkspaceId);
|
|
173190
|
+
if (!existing) return prev2;
|
|
173191
|
+
const next2 = new Map(prev2);
|
|
173192
|
+
next2.set(activeWorkspaceId, { ...existing, lastAccessed: Date.now() });
|
|
173193
|
+
return next2;
|
|
173194
|
+
});
|
|
173195
|
+
}, [activeWorkspaceId]);
|
|
173196
|
+
const lastCacheKeysRef = reactExports.useRef(/* @__PURE__ */ new Set());
|
|
173197
|
+
reactExports.useEffect(() => {
|
|
173198
|
+
const current = new Set(cache.keys());
|
|
173199
|
+
for (const prev2 of lastCacheKeysRef.current) {
|
|
173200
|
+
if (!current.has(prev2)) clearPerWorkspaceState(prev2);
|
|
173201
|
+
}
|
|
173202
|
+
lastCacheKeysRef.current = current;
|
|
173203
|
+
}, [cache]);
|
|
173204
|
+
if (!activeWorkspaceId) return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full w-full", children: emptyState });
|
|
173205
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "relative h-full w-full", children: Array.from(cache.values()).map(({ workspaceId }) => {
|
|
173206
|
+
const isActive = workspaceId === activeWorkspaceId;
|
|
173207
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
173208
|
+
"div",
|
|
173209
|
+
{
|
|
173210
|
+
className: "absolute inset-0 transition-opacity duration-150 ease-out",
|
|
173211
|
+
style: {
|
|
173212
|
+
opacity: isActive ? 1 : 0,
|
|
173213
|
+
pointerEvents: isActive ? void 0 : "none"
|
|
173214
|
+
},
|
|
173215
|
+
children: children2(workspaceId, isActive)
|
|
173216
|
+
},
|
|
173217
|
+
workspaceId
|
|
173218
|
+
);
|
|
173219
|
+
}) });
|
|
173220
|
+
}
|
|
172949
173221
|
const TABS_POLL_MS = 5e3;
|
|
172950
173222
|
const screencastTabTheme = {
|
|
172951
173223
|
name: "band",
|
|
@@ -175947,10 +176219,20 @@ const PANEL_SHORTCUTS = {
|
|
|
175947
176219
|
browser: "⇧⌘B"
|
|
175948
176220
|
};
|
|
175949
176221
|
const DockviewTerminalContainer = reactExports.lazy(
|
|
175950
|
-
() => import("./DockviewTerminalContainer-
|
|
176222
|
+
() => import("./DockviewTerminalContainer-RbFw8Eo4.js").then((m2) => ({
|
|
175951
176223
|
default: m2.DockviewTerminalContainer
|
|
175952
176224
|
}))
|
|
175953
176225
|
);
|
|
176226
|
+
const crossPanelHandlers = {
|
|
176227
|
+
onOpenFile: () => {
|
|
176228
|
+
},
|
|
176229
|
+
onSelectFile: () => {
|
|
176230
|
+
},
|
|
176231
|
+
onFileOpened: () => {
|
|
176232
|
+
},
|
|
176233
|
+
onFindInFile: () => {
|
|
176234
|
+
}
|
|
176235
|
+
};
|
|
175954
176236
|
function NoWorkspaceMessage({ Icon: Icon2 }) {
|
|
175955
176237
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col items-center gap-3 text-center px-8", children: [
|
|
175956
176238
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-8 text-muted-foreground/30" }),
|
|
@@ -175960,61 +176242,95 @@ function NoWorkspaceMessage({ Icon: Icon2 }) {
|
|
|
175960
176242
|
function ProjectsPanelComponent() {
|
|
175961
176243
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(DashboardShell, { hideTitleBar: isDesktop, hideMenu: true });
|
|
175962
176244
|
}
|
|
175963
|
-
function ChatPanelComponent({
|
|
176245
|
+
function ChatPanelComponent({ api }) {
|
|
175964
176246
|
const [isVisible, setIsVisible] = reactExports.useState(api.isVisible);
|
|
175965
|
-
const wsActive = useWsActive(params.workspaceId ?? "");
|
|
175966
176247
|
reactExports.useEffect(() => {
|
|
175967
176248
|
const d2 = api.onDidVisibilityChange((e2) => setIsVisible(e2.isVisible));
|
|
175968
176249
|
return () => d2.dispose();
|
|
175969
176250
|
}, [api]);
|
|
175970
|
-
|
|
175971
|
-
|
|
175972
|
-
|
|
176251
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MultiWorkspacePanelHost, { emptyState: /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: MessageSquare }), children: (workspaceId, wsActive) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176252
|
+
DockviewChatContainer,
|
|
176253
|
+
{
|
|
176254
|
+
workspaceId,
|
|
176255
|
+
visible: isVisible && wsActive,
|
|
176256
|
+
wsActive
|
|
176257
|
+
}
|
|
176258
|
+
) });
|
|
175973
176259
|
}
|
|
175974
|
-
function ChangesPanelComponent(
|
|
175975
|
-
|
|
175976
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176260
|
+
function ChangesPanelComponent(_props) {
|
|
176261
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MultiWorkspacePanelHost, { emptyState: /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: GitCompare }), children: (workspaceId, wsActive) => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
175977
176262
|
DiffView,
|
|
175978
176263
|
{
|
|
175979
|
-
workspaceId
|
|
175980
|
-
active:
|
|
175981
|
-
|
|
175982
|
-
|
|
175983
|
-
onFindInFile: params.onFindInFile
|
|
176264
|
+
workspaceId,
|
|
176265
|
+
active: wsActive,
|
|
176266
|
+
onOpenFile: (filename) => crossPanelHandlers.onOpenFile(workspaceId, filename),
|
|
176267
|
+
onFindInFile: (fn2) => crossPanelHandlers.onFindInFile(workspaceId, fn2)
|
|
175984
176268
|
}
|
|
175985
|
-
);
|
|
176269
|
+
) });
|
|
175986
176270
|
}
|
|
175987
|
-
function FilesPanelComponent(
|
|
175988
|
-
|
|
176271
|
+
function FilesPanelComponent(_props) {
|
|
176272
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MultiWorkspacePanelHost, { emptyState: /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: FolderOpen }), children: (workspaceId, _wsActive) => /* @__PURE__ */ jsxRuntimeExports.jsx(FilesPanelChild, { workspaceId }) });
|
|
176273
|
+
}
|
|
176274
|
+
function FilesPanelChild({ workspaceId }) {
|
|
176275
|
+
const state2 = usePerWorkspaceState(workspaceId);
|
|
175989
176276
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
175990
176277
|
CodeBrowserView,
|
|
175991
176278
|
{
|
|
175992
|
-
workspaceId
|
|
175993
|
-
file:
|
|
175994
|
-
|
|
175995
|
-
|
|
175996
|
-
onFileOpened:
|
|
175997
|
-
onFindInFile:
|
|
176279
|
+
workspaceId,
|
|
176280
|
+
file: state2.currentFile,
|
|
176281
|
+
openFilePath: state2.openFilePath,
|
|
176282
|
+
onSelectFile: (filePath) => crossPanelHandlers.onSelectFile(workspaceId, filePath),
|
|
176283
|
+
onFileOpened: () => crossPanelHandlers.onFileOpened(workspaceId),
|
|
176284
|
+
onFindInFile: (fn2) => crossPanelHandlers.onFindInFile(workspaceId, fn2)
|
|
175998
176285
|
}
|
|
175999
176286
|
);
|
|
176000
176287
|
}
|
|
176001
|
-
function TerminalPanelComponent({
|
|
176288
|
+
function TerminalPanelComponent({ api }) {
|
|
176002
176289
|
const [isVisible, setIsVisible] = reactExports.useState(api.isVisible);
|
|
176003
|
-
const wsActive = useWsActive(params.workspaceId ?? "");
|
|
176004
176290
|
reactExports.useEffect(() => {
|
|
176005
176291
|
const d2 = api.onDidVisibilityChange((e2) => setIsVisible(e2.isVisible));
|
|
176006
176292
|
return () => d2.dispose();
|
|
176007
176293
|
}, [api]);
|
|
176008
|
-
|
|
176009
|
-
if (!params.workspaceId) return /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: Terminal });
|
|
176010
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176294
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MultiWorkspacePanelHost, { emptyState: /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: Terminal }), children: (workspaceId, wsActive) => /* @__PURE__ */ jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: null, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176011
176295
|
DockviewTerminalContainer,
|
|
176012
176296
|
{
|
|
176013
|
-
workspaceId
|
|
176014
|
-
visible,
|
|
176297
|
+
workspaceId,
|
|
176298
|
+
visible: isVisible && wsActive,
|
|
176015
176299
|
wsActive
|
|
176016
176300
|
}
|
|
176017
|
-
) });
|
|
176301
|
+
) }) });
|
|
176302
|
+
}
|
|
176303
|
+
function BrowserPanelComponent({ api }) {
|
|
176304
|
+
const [isVisible, setIsVisible] = reactExports.useState(api.isVisible);
|
|
176305
|
+
const { settings } = useSettingsQuery();
|
|
176306
|
+
const cdpEnabled = settings.webBrowserCdpEnabled ?? false;
|
|
176307
|
+
reactExports.useEffect(() => {
|
|
176308
|
+
const d2 = api.onDidVisibilityChange((e2) => setIsVisible(e2.isVisible));
|
|
176309
|
+
return () => d2.dispose();
|
|
176310
|
+
}, [api]);
|
|
176311
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(MultiWorkspacePanelHost, { emptyState: /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: Globe }), children: (workspaceId, wsActive) => {
|
|
176312
|
+
const visible = isVisible && wsActive;
|
|
176313
|
+
if (!isDesktop) {
|
|
176314
|
+
if (cdpEnabled) {
|
|
176315
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ScreencastPanel, { workspaceId, visible });
|
|
176316
|
+
}
|
|
176317
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center p-6 text-sm text-muted-foreground", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-md text-center", children: [
|
|
176318
|
+
"The Browser pane is only available in the desktop app. Enable",
|
|
176319
|
+
" ",
|
|
176320
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: "Settings → Browser → Stream desktop tabs to web" }),
|
|
176321
|
+
" ",
|
|
176322
|
+
"to use it from a browser tab."
|
|
176323
|
+
] }) });
|
|
176324
|
+
}
|
|
176325
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176326
|
+
DockviewBrowserContainer,
|
|
176327
|
+
{
|
|
176328
|
+
workspaceId,
|
|
176329
|
+
visible,
|
|
176330
|
+
wsActive
|
|
176331
|
+
}
|
|
176332
|
+
);
|
|
176333
|
+
} });
|
|
176018
176334
|
}
|
|
176019
176335
|
function DefaultTab2(props) {
|
|
176020
176336
|
const Icon2 = PANEL_ICONS[props.api.component];
|
|
@@ -176085,38 +176401,6 @@ function BadgeTab(props) {
|
|
|
176085
176401
|
] })
|
|
176086
176402
|
] });
|
|
176087
176403
|
}
|
|
176088
|
-
function BrowserPanelComponent({ params, api }) {
|
|
176089
|
-
const [isVisible, setIsVisible] = reactExports.useState(api.isVisible);
|
|
176090
|
-
const wsActive = useWsActive(params.workspaceId ?? "");
|
|
176091
|
-
const { settings } = useSettingsQuery();
|
|
176092
|
-
const cdpEnabled = settings.webBrowserCdpEnabled ?? false;
|
|
176093
|
-
reactExports.useEffect(() => {
|
|
176094
|
-
const d2 = api.onDidVisibilityChange((e2) => setIsVisible(e2.isVisible));
|
|
176095
|
-
return () => d2.dispose();
|
|
176096
|
-
}, [api]);
|
|
176097
|
-
const visible = wsActive && isVisible;
|
|
176098
|
-
if (!params.workspaceId) return /* @__PURE__ */ jsxRuntimeExports.jsx(NoWorkspaceMessage, { Icon: Globe });
|
|
176099
|
-
if (!isDesktop) {
|
|
176100
|
-
if (cdpEnabled) {
|
|
176101
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(ScreencastPanel, { workspaceId: params.workspaceId, visible });
|
|
176102
|
-
}
|
|
176103
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center p-6 text-sm text-muted-foreground", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "max-w-md text-center", children: [
|
|
176104
|
-
"The Browser pane is only available in the desktop app. Enable",
|
|
176105
|
-
" ",
|
|
176106
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: "Settings → Browser → Stream desktop tabs to web" }),
|
|
176107
|
-
" ",
|
|
176108
|
-
"to use it from a browser tab."
|
|
176109
|
-
] }) });
|
|
176110
|
-
}
|
|
176111
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176112
|
-
DockviewBrowserContainer,
|
|
176113
|
-
{
|
|
176114
|
-
workspaceId: params.workspaceId,
|
|
176115
|
-
visible,
|
|
176116
|
-
wsActive
|
|
176117
|
-
}
|
|
176118
|
-
);
|
|
176119
|
-
}
|
|
176120
176404
|
const components = {
|
|
176121
176405
|
projects: ProjectsPanelComponent,
|
|
176122
176406
|
chat: ChatPanelComponent,
|
|
@@ -176161,11 +176445,14 @@ const MainGroupRightActions = reactExports.memo(function MainGroupRightActions2(
|
|
|
176161
176445
|
] })
|
|
176162
176446
|
] }) });
|
|
176163
176447
|
});
|
|
176164
|
-
function useDiffFileCount(workspaceId
|
|
176165
|
-
const { diffMode, compareBranch } = useDiffTarget(workspaceId);
|
|
176448
|
+
function useDiffFileCount(workspaceId) {
|
|
176449
|
+
const { diffMode, compareBranch } = useDiffTarget(workspaceId ?? "");
|
|
176166
176450
|
const [count2, setCount] = reactExports.useState(0);
|
|
176167
176451
|
reactExports.useEffect(() => {
|
|
176168
|
-
if (!
|
|
176452
|
+
if (!workspaceId) {
|
|
176453
|
+
setCount(0);
|
|
176454
|
+
return;
|
|
176455
|
+
}
|
|
176169
176456
|
let cancelled = false;
|
|
176170
176457
|
const fetchCount = () => {
|
|
176171
176458
|
trpc.workspace.getDiffSummary.query({
|
|
@@ -176183,7 +176470,7 @@ function useDiffFileCount(workspaceId, isActive) {
|
|
|
176183
176470
|
cancelled = true;
|
|
176184
176471
|
clearInterval(interval2);
|
|
176185
176472
|
};
|
|
176186
|
-
}, [workspaceId,
|
|
176473
|
+
}, [workspaceId, diffMode, compareBranch]);
|
|
176187
176474
|
return count2;
|
|
176188
176475
|
}
|
|
176189
176476
|
const REQUIRED_PANEL_IDS = ["projects", "chat", "changes", "files", "terminal", "browser"];
|
|
@@ -176276,17 +176563,13 @@ function stripPanelParams(json2) {
|
|
|
176276
176563
|
function saveLayout(api, workspaceId, lastStructureRef) {
|
|
176277
176564
|
try {
|
|
176278
176565
|
const json2 = stripPanelParams(api.toJSON());
|
|
176279
|
-
|
|
176280
|
-
|
|
176281
|
-
|
|
176282
|
-
const fingerprint = getStructuralFingerprint(json2);
|
|
176283
|
-
if (fingerprint !== lastStructureRef.current) {
|
|
176284
|
-
lastStructureRef.current = fingerprint;
|
|
176285
|
-
return true;
|
|
176566
|
+
if (workspaceId) {
|
|
176567
|
+
const activeState = extractActiveState(json2);
|
|
176568
|
+
localStorage.setItem(`${ACTIVE_STATE_KEY_PREFIX}${workspaceId}`, JSON.stringify(activeState));
|
|
176286
176569
|
}
|
|
176287
|
-
|
|
176570
|
+
localStorage.setItem(GLOBAL_LAYOUT_KEY, JSON.stringify(json2));
|
|
176571
|
+
lastStructureRef.current = getStructuralFingerprint(json2);
|
|
176288
176572
|
} catch {
|
|
176289
|
-
return false;
|
|
176290
176573
|
}
|
|
176291
176574
|
}
|
|
176292
176575
|
function stripRemovedPanels(layout) {
|
|
@@ -176314,21 +176597,21 @@ function loadLayout(workspaceId) {
|
|
|
176314
176597
|
if (!raw2) return null;
|
|
176315
176598
|
const layout = JSON.parse(raw2);
|
|
176316
176599
|
stripRemovedPanels(layout);
|
|
176317
|
-
|
|
176318
|
-
|
|
176319
|
-
|
|
176320
|
-
|
|
176600
|
+
if (workspaceId) {
|
|
176601
|
+
const activeRaw = localStorage.getItem(`${ACTIVE_STATE_KEY_PREFIX}${workspaceId}`);
|
|
176602
|
+
if (activeRaw) {
|
|
176603
|
+
const activeState = JSON.parse(activeRaw);
|
|
176604
|
+
applyActiveState(layout, activeState);
|
|
176605
|
+
}
|
|
176321
176606
|
}
|
|
176322
176607
|
return layout;
|
|
176323
176608
|
} catch {
|
|
176324
176609
|
return null;
|
|
176325
176610
|
}
|
|
176326
176611
|
}
|
|
176327
|
-
|
|
176328
|
-
|
|
176329
|
-
|
|
176330
|
-
}) {
|
|
176331
|
-
const isActive = useWsActive(workspaceId);
|
|
176612
|
+
function SharedDockviewLayout() {
|
|
176613
|
+
const pathname = useRouterState({ select: (s2) => s2.location.pathname });
|
|
176614
|
+
const activeWorkspaceId = parseWorkspaceFromPath(pathname);
|
|
176332
176615
|
const apiRef = reactExports.useRef(null);
|
|
176333
176616
|
const containerRef = reactExports.useRef(null);
|
|
176334
176617
|
const { settings } = useSettingsQuery();
|
|
@@ -176338,55 +176621,72 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176338
176621
|
);
|
|
176339
176622
|
const hiddenPanelsRef = reactExports.useRef(hiddenPanels);
|
|
176340
176623
|
hiddenPanelsRef.current = hiddenPanels;
|
|
176341
|
-
const onLayoutChangeRef = reactExports.useRef(onLayoutChange);
|
|
176342
|
-
onLayoutChangeRef.current = onLayoutChange;
|
|
176343
176624
|
const initializedRef = reactExports.useRef(false);
|
|
176344
|
-
const injectParamsRef = reactExports.useRef(() => {
|
|
176345
|
-
});
|
|
176346
|
-
const isActiveRef = reactExports.useRef(isActive);
|
|
176347
|
-
isActiveRef.current = isActive;
|
|
176348
176625
|
const lastStructureRef = reactExports.useRef("");
|
|
176349
|
-
const
|
|
176350
|
-
|
|
176351
|
-
|
|
176626
|
+
const activeWorkspaceIdRef = reactExports.useRef(activeWorkspaceId);
|
|
176627
|
+
activeWorkspaceIdRef.current = activeWorkspaceId;
|
|
176628
|
+
reactExports.useEffect(() => {
|
|
176629
|
+
if (activeWorkspaceId) recordWorkspaceAccess(activeWorkspaceId);
|
|
176630
|
+
}, [activeWorkspaceId]);
|
|
176631
|
+
const { recentFiles, trackFile } = useRecentFiles(activeWorkspaceId ?? "");
|
|
176632
|
+
const diffFileCount = useDiffFileCount(activeWorkspaceId);
|
|
176352
176633
|
const currentFileRef = reactExports.useRef(void 0);
|
|
176353
|
-
|
|
176634
|
+
const findInFileRegistry = reactExports.useRef(/* @__PURE__ */ new Map());
|
|
176354
176635
|
const [quickOpenOpen, setQuickOpenOpen] = reactExports.useState(false);
|
|
176355
176636
|
const [quickOpenQuery, setQuickOpenQuery] = reactExports.useState(void 0);
|
|
176356
176637
|
const [searchFilesOpen, setSearchFilesOpen] = reactExports.useState(false);
|
|
176357
176638
|
const [workspacePickerOpen, setWorkspacePickerOpen] = reactExports.useState(false);
|
|
176358
176639
|
const [commandPaletteOpen, setCommandPaletteOpen] = reactExports.useState(false);
|
|
176359
176640
|
const [lastQuickOpenQuery, setLastQuickOpenQuery] = reactExports.useState("");
|
|
176360
|
-
const
|
|
176361
|
-
|
|
176362
|
-
|
|
176363
|
-
|
|
176364
|
-
|
|
176365
|
-
|
|
176366
|
-
|
|
176641
|
+
const [activeCurrentFile, setActiveCurrentFile] = reactExports.useState(void 0);
|
|
176642
|
+
reactExports.useEffect(() => {
|
|
176643
|
+
if (!activeWorkspaceId) {
|
|
176644
|
+
setActiveCurrentFile(void 0);
|
|
176645
|
+
currentFileRef.current = void 0;
|
|
176646
|
+
return;
|
|
176647
|
+
}
|
|
176648
|
+
const state2 = getPerWorkspaceState(activeWorkspaceId);
|
|
176649
|
+
setActiveCurrentFile(state2.currentFile);
|
|
176650
|
+
currentFileRef.current = state2.currentFile;
|
|
176651
|
+
const unsub = subscribePerWorkspaceState(activeWorkspaceId, () => {
|
|
176652
|
+
const next2 = getPerWorkspaceState(activeWorkspaceId).currentFile;
|
|
176653
|
+
setActiveCurrentFile(next2);
|
|
176654
|
+
currentFileRef.current = next2;
|
|
176655
|
+
});
|
|
176656
|
+
return unsub;
|
|
176657
|
+
}, [activeWorkspaceId]);
|
|
176367
176658
|
const handleOpenFile = reactExports.useCallback(
|
|
176368
|
-
(filename) => {
|
|
176659
|
+
(workspaceId, filename) => {
|
|
176369
176660
|
const cleanPath = parseFileLocation(filename).filePath;
|
|
176370
|
-
|
|
176371
|
-
|
|
176661
|
+
setPerWorkspaceState(workspaceId, {
|
|
176662
|
+
currentFile: cleanPath,
|
|
176663
|
+
openFilePath: filename
|
|
176664
|
+
});
|
|
176372
176665
|
trackFile(cleanPath);
|
|
176373
|
-
|
|
176374
|
-
|
|
176375
|
-
api.getPanel("files")?.api.setActive();
|
|
176666
|
+
if (workspaceId === activeWorkspaceIdRef.current) {
|
|
176667
|
+
apiRef.current?.getPanel("files")?.api.setActive();
|
|
176376
176668
|
}
|
|
176377
176669
|
},
|
|
176378
176670
|
[trackFile]
|
|
176379
176671
|
);
|
|
176380
|
-
const handleFileOpened = reactExports.useCallback(() => {
|
|
176381
|
-
|
|
176672
|
+
const handleFileOpened = reactExports.useCallback((workspaceId) => {
|
|
176673
|
+
setPerWorkspaceState(workspaceId, { openFilePath: null });
|
|
176382
176674
|
}, []);
|
|
176383
176675
|
const handleSelectFile = reactExports.useCallback(
|
|
176384
|
-
(filePath) => {
|
|
176385
|
-
|
|
176676
|
+
(workspaceId, filePath) => {
|
|
176677
|
+
setPerWorkspaceState(workspaceId, { currentFile: filePath ?? void 0 });
|
|
176386
176678
|
if (filePath) trackFile(filePath);
|
|
176387
176679
|
},
|
|
176388
176680
|
[trackFile]
|
|
176389
176681
|
);
|
|
176682
|
+
const handleSetFindInFile = reactExports.useCallback((workspaceId, fn2) => {
|
|
176683
|
+
if (fn2) findInFileRegistry.current.set(workspaceId, fn2);
|
|
176684
|
+
else findInFileRegistry.current.delete(workspaceId);
|
|
176685
|
+
}, []);
|
|
176686
|
+
crossPanelHandlers.onOpenFile = handleOpenFile;
|
|
176687
|
+
crossPanelHandlers.onFileOpened = handleFileOpened;
|
|
176688
|
+
crossPanelHandlers.onSelectFile = handleSelectFile;
|
|
176689
|
+
crossPanelHandlers.onFindInFile = handleSetFindInFile;
|
|
176390
176690
|
const paletteCommands = reactExports.useMemo(
|
|
176391
176691
|
() => buildCommands({
|
|
176392
176692
|
getApi: () => apiRef.current,
|
|
@@ -176394,17 +176694,21 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176394
176694
|
openQuickOpen: () => setQuickOpenOpen(true),
|
|
176395
176695
|
openSearchFiles: () => setSearchFilesOpen(true),
|
|
176396
176696
|
findInFile: () => {
|
|
176397
|
-
|
|
176398
|
-
|
|
176697
|
+
const ws = activeWorkspaceIdRef.current;
|
|
176698
|
+
const fn2 = ws ? findInFileRegistry.current.get(ws) : void 0;
|
|
176699
|
+
if (fn2) {
|
|
176700
|
+
fn2();
|
|
176399
176701
|
} else {
|
|
176400
176702
|
window.dispatchEvent(new CustomEvent("band:find-in-file"));
|
|
176401
176703
|
}
|
|
176402
176704
|
},
|
|
176403
176705
|
formatCurrentFile: () => {
|
|
176706
|
+
const ws = activeWorkspaceIdRef.current;
|
|
176707
|
+
if (!ws) return;
|
|
176404
176708
|
const filePath = currentFileRef.current;
|
|
176405
176709
|
window.dispatchEvent(
|
|
176406
176710
|
new CustomEvent("band:format-current-file", {
|
|
176407
|
-
detail: { workspaceId, filePath }
|
|
176711
|
+
detail: { workspaceId: ws, filePath }
|
|
176408
176712
|
})
|
|
176409
176713
|
);
|
|
176410
176714
|
},
|
|
@@ -176412,19 +176716,21 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176412
176716
|
window.dispatchEvent(new CustomEvent("band:new-untitled-tab"));
|
|
176413
176717
|
},
|
|
176414
176718
|
changeLanguageMode: () => {
|
|
176719
|
+
const ws = activeWorkspaceIdRef.current;
|
|
176720
|
+
if (!ws) return;
|
|
176415
176721
|
const filePath = currentFileRef.current;
|
|
176416
176722
|
window.dispatchEvent(
|
|
176417
176723
|
new CustomEvent("band:open-language-picker", {
|
|
176418
|
-
detail: { workspaceId, filePath }
|
|
176724
|
+
detail: { workspaceId: ws, filePath }
|
|
176419
176725
|
})
|
|
176420
176726
|
);
|
|
176421
176727
|
}
|
|
176422
176728
|
}),
|
|
176423
|
-
[
|
|
176729
|
+
[]
|
|
176424
176730
|
);
|
|
176425
176731
|
reactExports.useEffect(() => {
|
|
176426
|
-
if (!isActive) return;
|
|
176427
176732
|
const handler = (e2) => {
|
|
176733
|
+
const ws = activeWorkspaceIdRef.current;
|
|
176428
176734
|
const terminalFocused = document.activeElement?.closest(".xterm") != null;
|
|
176429
176735
|
if (e2.ctrlKey && !e2.metaKey && e2.key.toLowerCase() === "r" && !e2.shiftKey) {
|
|
176430
176736
|
if (terminalFocused) return;
|
|
@@ -176469,6 +176775,18 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176469
176775
|
window.dispatchEvent(new CustomEvent("band:prev-file-tab"));
|
|
176470
176776
|
return;
|
|
176471
176777
|
}
|
|
176778
|
+
if (e2.code === "KeyF" && e2.altKey && e2.shiftKey && !e2.metaKey && !e2.ctrlKey) {
|
|
176779
|
+
if (terminalFocused) return;
|
|
176780
|
+
e2.preventDefault();
|
|
176781
|
+
if (!ws) return;
|
|
176782
|
+
const filePath = currentFileRef.current;
|
|
176783
|
+
window.dispatchEvent(
|
|
176784
|
+
new CustomEvent("band:format-current-file", {
|
|
176785
|
+
detail: { workspaceId: ws, filePath }
|
|
176786
|
+
})
|
|
176787
|
+
);
|
|
176788
|
+
return;
|
|
176789
|
+
}
|
|
176472
176790
|
const mod = e2.metaKey || e2.ctrlKey;
|
|
176473
176791
|
if (!mod) return;
|
|
176474
176792
|
if (terminalFocused && !e2.metaKey) return;
|
|
@@ -176486,27 +176804,25 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176486
176804
|
} else if (key2 === "p" && !e2.shiftKey) {
|
|
176487
176805
|
e2.preventDefault();
|
|
176488
176806
|
setQuickOpenOpen(true);
|
|
176489
|
-
} else if (key2 === "f" && e2.altKey) {
|
|
176490
|
-
e2.preventDefault();
|
|
176491
|
-
const filePath = currentFileRef.current;
|
|
176492
|
-
window.dispatchEvent(
|
|
176493
|
-
new CustomEvent("band:format-current-file", {
|
|
176494
|
-
detail: { workspaceId, filePath }
|
|
176495
|
-
})
|
|
176496
|
-
);
|
|
176497
|
-
} else if (key2 === "f" && e2.shiftKey) {
|
|
176807
|
+
} else if (key2 === "f" && e2.shiftKey && !e2.altKey) {
|
|
176498
176808
|
e2.preventDefault();
|
|
176499
176809
|
setSearchFilesOpen(true);
|
|
176500
176810
|
} else if (key2 === "f" && !e2.shiftKey && !e2.altKey) {
|
|
176501
176811
|
e2.preventDefault();
|
|
176502
|
-
|
|
176503
|
-
|
|
176812
|
+
const fn2 = ws ? findInFileRegistry.current.get(ws) : void 0;
|
|
176813
|
+
if (fn2) {
|
|
176814
|
+
fn2();
|
|
176504
176815
|
} else {
|
|
176505
176816
|
window.dispatchEvent(new CustomEvent("band:find-in-file"));
|
|
176506
176817
|
}
|
|
176507
176818
|
} else if (key2 === "o" && !e2.shiftKey && !e2.altKey) {
|
|
176508
176819
|
e2.preventDefault();
|
|
176509
|
-
|
|
176820
|
+
if (!ws) return;
|
|
176821
|
+
window.dispatchEvent(
|
|
176822
|
+
new CustomEvent("band:open-file-external", {
|
|
176823
|
+
detail: { workspaceId: ws }
|
|
176824
|
+
})
|
|
176825
|
+
);
|
|
176510
176826
|
} else if (key2 === "i" && e2.ctrlKey && e2.metaKey && api) {
|
|
176511
176827
|
e2.preventDefault();
|
|
176512
176828
|
if (!hiddenPanelsRef.current.includes("chat")) {
|
|
@@ -176560,9 +176876,8 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176560
176876
|
};
|
|
176561
176877
|
window.addEventListener("keydown", handler, true);
|
|
176562
176878
|
return () => window.removeEventListener("keydown", handler, true);
|
|
176563
|
-
}, [
|
|
176879
|
+
}, []);
|
|
176564
176880
|
reactExports.useEffect(() => {
|
|
176565
|
-
if (!isActive) return;
|
|
176566
176881
|
const handler = (e2) => {
|
|
176567
176882
|
const detail = e2.detail;
|
|
176568
176883
|
if (detail?.filename) {
|
|
@@ -176572,9 +176887,8 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176572
176887
|
};
|
|
176573
176888
|
window.addEventListener("band:open-file", handler);
|
|
176574
176889
|
return () => window.removeEventListener("band:open-file", handler);
|
|
176575
|
-
}, [
|
|
176890
|
+
}, []);
|
|
176576
176891
|
reactExports.useEffect(() => {
|
|
176577
|
-
if (!isActive) return;
|
|
176578
176892
|
const openQO = () => setQuickOpenOpen(true);
|
|
176579
176893
|
const openSF = () => setSearchFilesOpen(true);
|
|
176580
176894
|
window.addEventListener("band:open-quick-open", openQO);
|
|
@@ -176583,9 +176897,8 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176583
176897
|
window.removeEventListener("band:open-quick-open", openQO);
|
|
176584
176898
|
window.removeEventListener("band:open-search-files", openSF);
|
|
176585
176899
|
};
|
|
176586
|
-
}, [
|
|
176900
|
+
}, []);
|
|
176587
176901
|
reactExports.useEffect(() => {
|
|
176588
|
-
if (!isActive) return;
|
|
176589
176902
|
const handler = (e2) => {
|
|
176590
176903
|
const panelId = e2.detail?.panelId;
|
|
176591
176904
|
if (panelId && apiRef.current && !hiddenPanelsRef.current.includes(panelId)) {
|
|
@@ -176594,192 +176907,146 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176594
176907
|
};
|
|
176595
176908
|
window.addEventListener("band:activate-panel", handler);
|
|
176596
176909
|
return () => window.removeEventListener("band:activate-panel", handler);
|
|
176597
|
-
}, [
|
|
176598
|
-
const
|
|
176599
|
-
(
|
|
176600
|
-
|
|
176601
|
-
|
|
176602
|
-
|
|
176603
|
-
|
|
176604
|
-
|
|
176605
|
-
|
|
176606
|
-
|
|
176607
|
-
|
|
176608
|
-
|
|
176609
|
-
|
|
176610
|
-
|
|
176611
|
-
|
|
176612
|
-
|
|
176613
|
-
|
|
176614
|
-
|
|
176615
|
-
|
|
176616
|
-
|
|
176617
|
-
|
|
176618
|
-
|
|
176619
|
-
|
|
176620
|
-
|
|
176621
|
-
|
|
176622
|
-
|
|
176623
|
-
});
|
|
176624
|
-
},
|
|
176625
|
-
[
|
|
176626
|
-
workspaceId,
|
|
176627
|
-
currentFile,
|
|
176628
|
-
openFilePath,
|
|
176629
|
-
diffFileCount,
|
|
176630
|
-
setDiffStats,
|
|
176631
|
-
handleOpenFile,
|
|
176632
|
-
handleFileOpened,
|
|
176633
|
-
handleSelectFile,
|
|
176634
|
-
setFindInFile
|
|
176635
|
-
]
|
|
176636
|
-
);
|
|
176637
|
-
injectParamsRef.current = injectParams;
|
|
176638
|
-
const addMissingPanel = reactExports.useCallback(
|
|
176639
|
-
(api, panelId) => {
|
|
176640
|
-
if (!(panelId in components)) return;
|
|
176641
|
-
const anyExisting = api.getPanel("changes") ?? api.getPanel("files") ?? api.getPanel("terminal") ?? api.getPanel("chat");
|
|
176642
|
-
const titleMap = {
|
|
176643
|
-
projects: "Projects",
|
|
176644
|
-
chat: "Chat",
|
|
176645
|
-
changes: "Changes",
|
|
176646
|
-
files: "Files",
|
|
176647
|
-
terminal: "Terminal",
|
|
176648
|
-
browser: "Browser"
|
|
176649
|
-
};
|
|
176650
|
-
const opts = {
|
|
176651
|
-
id: panelId,
|
|
176652
|
-
component: panelId,
|
|
176653
|
-
title: titleMap[panelId] ?? panelId,
|
|
176654
|
-
params: { workspaceId },
|
|
176655
|
-
inactive: true
|
|
176656
|
-
};
|
|
176657
|
-
if (panelId === "changes") {
|
|
176658
|
-
opts.tabComponent = "badge";
|
|
176659
|
-
}
|
|
176660
|
-
if (panelId === "projects") {
|
|
176661
|
-
try {
|
|
176662
|
-
if (!api.groups.some((g2) => g2.id === "edge-left")) {
|
|
176663
|
-
api.addEdgeGroup("left", { id: "edge-left" });
|
|
176664
|
-
}
|
|
176665
|
-
} catch {
|
|
176910
|
+
}, []);
|
|
176911
|
+
const addMissingPanel = reactExports.useCallback((api, panelId) => {
|
|
176912
|
+
if (!(panelId in components)) return;
|
|
176913
|
+
const anyExisting = api.getPanel("changes") ?? api.getPanel("files") ?? api.getPanel("terminal") ?? api.getPanel("chat");
|
|
176914
|
+
const titleMap = {
|
|
176915
|
+
projects: "Projects",
|
|
176916
|
+
chat: "Chat",
|
|
176917
|
+
changes: "Changes",
|
|
176918
|
+
files: "Files",
|
|
176919
|
+
terminal: "Terminal",
|
|
176920
|
+
browser: "Browser"
|
|
176921
|
+
};
|
|
176922
|
+
const opts = {
|
|
176923
|
+
id: panelId,
|
|
176924
|
+
component: panelId,
|
|
176925
|
+
title: titleMap[panelId] ?? panelId,
|
|
176926
|
+
params: {},
|
|
176927
|
+
inactive: true
|
|
176928
|
+
};
|
|
176929
|
+
if (panelId === "changes") {
|
|
176930
|
+
opts.tabComponent = "badge";
|
|
176931
|
+
}
|
|
176932
|
+
if (panelId === "projects") {
|
|
176933
|
+
try {
|
|
176934
|
+
if (!api.groups.some((g2) => g2.id === "edge-left")) {
|
|
176935
|
+
api.addEdgeGroup("left", { id: "edge-left" });
|
|
176666
176936
|
}
|
|
176667
|
-
|
|
176668
|
-
api.addPanel(opts);
|
|
176669
|
-
return;
|
|
176670
|
-
}
|
|
176671
|
-
if (panelId === "chat" && anyExisting) {
|
|
176672
|
-
opts.position = { referencePanel: anyExisting.id, direction: "left" };
|
|
176673
|
-
} else if (anyExisting) {
|
|
176674
|
-
opts.position = { referencePanel: anyExisting.id, direction: "within" };
|
|
176937
|
+
} catch {
|
|
176675
176938
|
}
|
|
176939
|
+
opts.position = { referenceGroup: "edge-left", direction: "within" };
|
|
176676
176940
|
api.addPanel(opts);
|
|
176677
|
-
|
|
176678
|
-
|
|
176679
|
-
|
|
176680
|
-
|
|
176681
|
-
(
|
|
176682
|
-
|
|
176941
|
+
return;
|
|
176942
|
+
}
|
|
176943
|
+
if (panelId === "chat" && anyExisting) {
|
|
176944
|
+
opts.position = { referencePanel: anyExisting.id, direction: "left" };
|
|
176945
|
+
} else if (anyExisting) {
|
|
176946
|
+
opts.position = { referencePanel: anyExisting.id, direction: "within" };
|
|
176947
|
+
}
|
|
176948
|
+
api.addPanel(opts);
|
|
176949
|
+
}, []);
|
|
176950
|
+
const buildDefaultLayout = reactExports.useCallback((api) => {
|
|
176951
|
+
const hidden2 = hiddenPanelsRef.current;
|
|
176952
|
+
api.addPanel({
|
|
176953
|
+
id: "chat",
|
|
176954
|
+
component: "chat",
|
|
176955
|
+
title: "Chat",
|
|
176956
|
+
params: {}
|
|
176957
|
+
});
|
|
176958
|
+
let rightGroupRef = null;
|
|
176959
|
+
if (!hidden2.includes("changes")) {
|
|
176683
176960
|
api.addPanel({
|
|
176684
|
-
id: "
|
|
176685
|
-
component: "
|
|
176686
|
-
|
|
176687
|
-
|
|
176961
|
+
id: "changes",
|
|
176962
|
+
component: "changes",
|
|
176963
|
+
tabComponent: "badge",
|
|
176964
|
+
title: "Changes",
|
|
176965
|
+
params: {},
|
|
176966
|
+
position: { referencePanel: "chat", direction: "right" }
|
|
176688
176967
|
});
|
|
176689
|
-
|
|
176690
|
-
|
|
176968
|
+
rightGroupRef = "changes";
|
|
176969
|
+
}
|
|
176970
|
+
if (!hidden2.includes("files")) {
|
|
176971
|
+
if (rightGroupRef) {
|
|
176691
176972
|
api.addPanel({
|
|
176692
|
-
id: "
|
|
176693
|
-
component: "
|
|
176694
|
-
|
|
176695
|
-
|
|
176696
|
-
|
|
176973
|
+
id: "files",
|
|
176974
|
+
component: "files",
|
|
176975
|
+
title: "Files",
|
|
176976
|
+
params: {},
|
|
176977
|
+
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
176978
|
+
inactive: true
|
|
176979
|
+
});
|
|
176980
|
+
} else {
|
|
176981
|
+
api.addPanel({
|
|
176982
|
+
id: "files",
|
|
176983
|
+
component: "files",
|
|
176984
|
+
title: "Files",
|
|
176985
|
+
params: {},
|
|
176697
176986
|
position: { referencePanel: "chat", direction: "right" }
|
|
176698
176987
|
});
|
|
176699
|
-
rightGroupRef = "
|
|
176700
|
-
}
|
|
176701
|
-
if (!hidden2.includes("files")) {
|
|
176702
|
-
if (rightGroupRef) {
|
|
176703
|
-
api.addPanel({
|
|
176704
|
-
id: "files",
|
|
176705
|
-
component: "files",
|
|
176706
|
-
title: "Files",
|
|
176707
|
-
params: { workspaceId },
|
|
176708
|
-
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
176709
|
-
inactive: true
|
|
176710
|
-
});
|
|
176711
|
-
} else {
|
|
176712
|
-
api.addPanel({
|
|
176713
|
-
id: "files",
|
|
176714
|
-
component: "files",
|
|
176715
|
-
title: "Files",
|
|
176716
|
-
params: { workspaceId },
|
|
176717
|
-
position: { referencePanel: "chat", direction: "right" }
|
|
176718
|
-
});
|
|
176719
|
-
rightGroupRef = "files";
|
|
176720
|
-
}
|
|
176721
|
-
}
|
|
176722
|
-
if (!hidden2.includes("terminal")) {
|
|
176723
|
-
if (rightGroupRef) {
|
|
176724
|
-
api.addPanel({
|
|
176725
|
-
id: "terminal",
|
|
176726
|
-
component: "terminal",
|
|
176727
|
-
title: "Terminal",
|
|
176728
|
-
params: { workspaceId },
|
|
176729
|
-
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
176730
|
-
inactive: true
|
|
176731
|
-
});
|
|
176732
|
-
} else {
|
|
176733
|
-
api.addPanel({
|
|
176734
|
-
id: "terminal",
|
|
176735
|
-
component: "terminal",
|
|
176736
|
-
title: "Terminal",
|
|
176737
|
-
params: { workspaceId },
|
|
176738
|
-
position: { referencePanel: "chat", direction: "right" }
|
|
176739
|
-
});
|
|
176740
|
-
rightGroupRef = "terminal";
|
|
176741
|
-
}
|
|
176742
|
-
}
|
|
176743
|
-
if (!hidden2.includes("browser")) {
|
|
176744
|
-
if (rightGroupRef) {
|
|
176745
|
-
api.addPanel({
|
|
176746
|
-
id: "browser",
|
|
176747
|
-
component: "browser",
|
|
176748
|
-
title: "Browser",
|
|
176749
|
-
params: { workspaceId },
|
|
176750
|
-
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
176751
|
-
inactive: true
|
|
176752
|
-
});
|
|
176753
|
-
} else {
|
|
176754
|
-
api.addPanel({
|
|
176755
|
-
id: "browser",
|
|
176756
|
-
component: "browser",
|
|
176757
|
-
title: "Browser",
|
|
176758
|
-
params: { workspaceId },
|
|
176759
|
-
position: { referencePanel: "chat", direction: "right" }
|
|
176760
|
-
});
|
|
176761
|
-
}
|
|
176988
|
+
rightGroupRef = "files";
|
|
176762
176989
|
}
|
|
176763
|
-
|
|
176764
|
-
|
|
176765
|
-
|
|
176990
|
+
}
|
|
176991
|
+
if (!hidden2.includes("terminal")) {
|
|
176992
|
+
if (rightGroupRef) {
|
|
176993
|
+
api.addPanel({
|
|
176994
|
+
id: "terminal",
|
|
176995
|
+
component: "terminal",
|
|
176996
|
+
title: "Terminal",
|
|
176997
|
+
params: {},
|
|
176998
|
+
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
176999
|
+
inactive: true
|
|
177000
|
+
});
|
|
177001
|
+
} else {
|
|
177002
|
+
api.addPanel({
|
|
177003
|
+
id: "terminal",
|
|
177004
|
+
component: "terminal",
|
|
177005
|
+
title: "Terminal",
|
|
177006
|
+
params: {},
|
|
177007
|
+
position: { referencePanel: "chat", direction: "right" }
|
|
177008
|
+
});
|
|
177009
|
+
rightGroupRef = "terminal";
|
|
176766
177010
|
}
|
|
176767
|
-
|
|
176768
|
-
|
|
176769
|
-
|
|
176770
|
-
|
|
176771
|
-
|
|
177011
|
+
}
|
|
177012
|
+
if (!hidden2.includes("browser")) {
|
|
177013
|
+
if (rightGroupRef) {
|
|
177014
|
+
api.addPanel({
|
|
177015
|
+
id: "browser",
|
|
177016
|
+
component: "browser",
|
|
177017
|
+
title: "Browser",
|
|
177018
|
+
params: {},
|
|
177019
|
+
position: { referencePanel: rightGroupRef, direction: "within" },
|
|
177020
|
+
inactive: true
|
|
177021
|
+
});
|
|
177022
|
+
} else {
|
|
177023
|
+
api.addPanel({
|
|
177024
|
+
id: "browser",
|
|
177025
|
+
component: "browser",
|
|
177026
|
+
title: "Browser",
|
|
177027
|
+
params: {},
|
|
177028
|
+
position: { referencePanel: "chat", direction: "right" }
|
|
177029
|
+
});
|
|
176772
177030
|
}
|
|
176773
|
-
|
|
176774
|
-
|
|
176775
|
-
|
|
176776
|
-
|
|
176777
|
-
|
|
176778
|
-
|
|
176779
|
-
|
|
176780
|
-
|
|
176781
|
-
|
|
176782
|
-
|
|
177031
|
+
}
|
|
177032
|
+
try {
|
|
177033
|
+
api.getPanel("chat")?.api.setSize({ width: api.width * 0.5 });
|
|
177034
|
+
} catch {
|
|
177035
|
+
}
|
|
177036
|
+
try {
|
|
177037
|
+
if (!api.groups.some((g2) => g2.id === "edge-left")) {
|
|
177038
|
+
api.addEdgeGroup("left", { id: "edge-left", initialSize: 240 });
|
|
177039
|
+
}
|
|
177040
|
+
} catch {
|
|
177041
|
+
}
|
|
177042
|
+
api.addPanel({
|
|
177043
|
+
id: "projects",
|
|
177044
|
+
component: "projects",
|
|
177045
|
+
title: "Projects",
|
|
177046
|
+
params: {},
|
|
177047
|
+
position: { referenceGroup: "edge-left", direction: "within" }
|
|
177048
|
+
});
|
|
177049
|
+
}, []);
|
|
176783
177050
|
const onReady = reactExports.useCallback(
|
|
176784
177051
|
(event) => {
|
|
176785
177052
|
apiRef.current = event.api;
|
|
@@ -176788,8 +177055,9 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176788
177055
|
localStorage.removeItem("band:group-expanded-widths");
|
|
176789
177056
|
} catch {
|
|
176790
177057
|
}
|
|
177058
|
+
const initialWorkspaceId = activeWorkspaceIdRef.current;
|
|
176791
177059
|
let restored = false;
|
|
176792
|
-
const saved = loadLayout(
|
|
177060
|
+
const saved = loadLayout(initialWorkspaceId);
|
|
176793
177061
|
if (saved) {
|
|
176794
177062
|
try {
|
|
176795
177063
|
event.api.fromJSON(saved);
|
|
@@ -176832,14 +177100,12 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176832
177100
|
} catch {
|
|
176833
177101
|
}
|
|
176834
177102
|
}
|
|
176835
|
-
setTimeout(() => injectParamsRef.current(event.api), 0);
|
|
176836
177103
|
event.api.onDidRemovePanel((panel) => {
|
|
176837
177104
|
const id28 = panel.id;
|
|
176838
177105
|
if (REQUIRED_PANEL_IDS.includes(id28) && !hiddenPanelsRef.current.includes(id28)) {
|
|
176839
177106
|
setTimeout(() => {
|
|
176840
177107
|
if (!event.api.getPanel(id28) && !hiddenPanelsRef.current.includes(id28)) {
|
|
176841
177108
|
addMissingPanel(event.api, id28);
|
|
176842
|
-
injectParamsRef.current(event.api);
|
|
176843
177109
|
}
|
|
176844
177110
|
}, 0);
|
|
176845
177111
|
}
|
|
@@ -176850,20 +177116,35 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176850
177116
|
}
|
|
176851
177117
|
event.api.onDidLayoutChange(() => {
|
|
176852
177118
|
if (!initializedRef.current) return;
|
|
176853
|
-
|
|
176854
|
-
const structureChanged = saveLayout(event.api, workspaceId, lastStructureRef);
|
|
176855
|
-
if (structureChanged) {
|
|
176856
|
-
onLayoutChangeRef.current?.();
|
|
176857
|
-
}
|
|
177119
|
+
saveLayout(event.api, activeWorkspaceIdRef.current, lastStructureRef);
|
|
176858
177120
|
});
|
|
176859
177121
|
initializedRef.current = true;
|
|
176860
177122
|
},
|
|
176861
177123
|
[buildDefaultLayout, addMissingPanel]
|
|
176862
177124
|
);
|
|
176863
177125
|
reactExports.useEffect(() => {
|
|
177126
|
+
const panel = apiRef.current?.getPanel("changes");
|
|
177127
|
+
if (!panel) return;
|
|
177128
|
+
panel.api.updateParameters({ badge: diffFileCount });
|
|
177129
|
+
}, [diffFileCount]);
|
|
177130
|
+
reactExports.useEffect(() => {
|
|
177131
|
+
if (!initializedRef.current) return;
|
|
176864
177132
|
const api = apiRef.current;
|
|
176865
|
-
if (api)
|
|
176866
|
-
|
|
177133
|
+
if (!api || !activeWorkspaceId) return;
|
|
177134
|
+
try {
|
|
177135
|
+
const raw2 = localStorage.getItem(`${ACTIVE_STATE_KEY_PREFIX}${activeWorkspaceId}`);
|
|
177136
|
+
if (!raw2) return;
|
|
177137
|
+
const activeState = JSON.parse(raw2);
|
|
177138
|
+
for (const [_groupId, viewId] of Object.entries(activeState.groups)) {
|
|
177139
|
+
const panel = api.getPanel(viewId);
|
|
177140
|
+
if (!panel) continue;
|
|
177141
|
+
if (panel.api.isActive) continue;
|
|
177142
|
+
if (panel.group.panels.length <= 1) continue;
|
|
177143
|
+
panel.api.setActive();
|
|
177144
|
+
}
|
|
177145
|
+
} catch {
|
|
177146
|
+
}
|
|
177147
|
+
}, [activeWorkspaceId]);
|
|
176867
177148
|
const prevHiddenRef = reactExports.useRef(hiddenPanels);
|
|
176868
177149
|
reactExports.useEffect(() => {
|
|
176869
177150
|
const api = apiRef.current;
|
|
@@ -176881,12 +177162,11 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176881
177162
|
for (const id28 of nowShown) {
|
|
176882
177163
|
if (!api.getPanel(id28)) {
|
|
176883
177164
|
addMissingPanel(api, id28);
|
|
176884
|
-
injectParamsRef.current(api);
|
|
176885
177165
|
}
|
|
176886
177166
|
}
|
|
176887
177167
|
}, [hiddenPanels, addMissingPanel]);
|
|
176888
177168
|
reactExports.useEffect(() => {
|
|
176889
|
-
if (!
|
|
177169
|
+
if (!apiRef.current || !containerRef.current) return;
|
|
176890
177170
|
const api = apiRef.current;
|
|
176891
177171
|
const el = containerRef.current;
|
|
176892
177172
|
requestAnimationFrame(() => {
|
|
@@ -176895,9 +177175,8 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176895
177175
|
api.layout(clientWidth, clientHeight);
|
|
176896
177176
|
}
|
|
176897
177177
|
});
|
|
176898
|
-
}, [
|
|
177178
|
+
}, []);
|
|
176899
177179
|
reactExports.useEffect(() => {
|
|
176900
|
-
if (!isActive) return;
|
|
176901
177180
|
const api = apiRef.current;
|
|
176902
177181
|
if (!api) return;
|
|
176903
177182
|
let isDragging = false;
|
|
@@ -176937,18 +177216,23 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176937
177216
|
document.removeEventListener("drop", onDragEndNative, true);
|
|
176938
177217
|
document.removeEventListener("dragend", onDragEndNative, true);
|
|
176939
177218
|
};
|
|
176940
|
-
}, [
|
|
177219
|
+
}, []);
|
|
176941
177220
|
const toolbarDialogOpen = useAnyToolbarDialogOpen();
|
|
176942
177221
|
reactExports.useEffect(() => {
|
|
176943
177222
|
if (!isDesktop) return;
|
|
177223
|
+
if (!activeWorkspaceId) return;
|
|
176944
177224
|
const isDialogOpen = quickOpenOpen || searchFilesOpen || workspacePickerOpen || commandPaletteOpen || toolbarDialogOpen;
|
|
176945
177225
|
if (isDialogOpen) {
|
|
176946
|
-
invoke("browser_hide_all_for_workspace", {
|
|
177226
|
+
invoke("browser_hide_all_for_workspace", {
|
|
177227
|
+
workspaceId: activeWorkspaceId
|
|
177228
|
+
}).catch(() => {
|
|
176947
177229
|
});
|
|
176948
177230
|
} else {
|
|
176949
177231
|
const browserPanel = apiRef.current?.getPanel("browser");
|
|
176950
177232
|
if (browserPanel?.api.isActive) {
|
|
176951
|
-
invoke("browser_show_all_for_workspace", {
|
|
177233
|
+
invoke("browser_show_all_for_workspace", {
|
|
177234
|
+
workspaceId: activeWorkspaceId
|
|
177235
|
+
}).catch(() => {
|
|
176952
177236
|
});
|
|
176953
177237
|
}
|
|
176954
177238
|
}
|
|
@@ -176958,10 +177242,10 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176958
177242
|
workspacePickerOpen,
|
|
176959
177243
|
commandPaletteOpen,
|
|
176960
177244
|
toolbarDialogOpen,
|
|
176961
|
-
|
|
177245
|
+
activeWorkspaceId
|
|
176962
177246
|
]);
|
|
176963
177247
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
176964
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: containerRef, className: "
|
|
177248
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: containerRef, className: "absolute inset-0", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176965
177249
|
DockviewReact,
|
|
176966
177250
|
{
|
|
176967
177251
|
theme: bandTheme,
|
|
@@ -176976,14 +177260,16 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176976
177260
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176977
177261
|
QuickOpenDialog,
|
|
176978
177262
|
{
|
|
176979
|
-
workspaceId,
|
|
177263
|
+
workspaceId: activeWorkspaceId ?? "",
|
|
176980
177264
|
open: quickOpenOpen,
|
|
176981
177265
|
onOpenChange: (open2) => {
|
|
176982
177266
|
setQuickOpenOpen(open2);
|
|
176983
177267
|
if (!open2) setQuickOpenQuery(void 0);
|
|
176984
177268
|
},
|
|
176985
|
-
onOpenFile:
|
|
176986
|
-
|
|
177269
|
+
onOpenFile: (filename) => {
|
|
177270
|
+
if (activeWorkspaceId) handleOpenFile(activeWorkspaceId, filename);
|
|
177271
|
+
},
|
|
177272
|
+
currentFile: activeCurrentFile,
|
|
176987
177273
|
initialQuery: quickOpenQuery,
|
|
176988
177274
|
autoOpen: quickOpenQuery != null,
|
|
176989
177275
|
recentFiles,
|
|
@@ -176994,10 +177280,12 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
176994
177280
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
176995
177281
|
SearchFilesDialog,
|
|
176996
177282
|
{
|
|
176997
|
-
workspaceId,
|
|
177283
|
+
workspaceId: activeWorkspaceId ?? "",
|
|
176998
177284
|
open: searchFilesOpen,
|
|
176999
177285
|
onOpenChange: setSearchFilesOpen,
|
|
177000
|
-
onOpenFile:
|
|
177286
|
+
onOpenFile: (filename) => {
|
|
177287
|
+
if (activeWorkspaceId) handleOpenFile(activeWorkspaceId, filename);
|
|
177288
|
+
}
|
|
177001
177289
|
}
|
|
177002
177290
|
),
|
|
177003
177291
|
/* @__PURE__ */ jsxRuntimeExports.jsx(WorkspacePickerDialog, { open: workspacePickerOpen, onOpenChange: setWorkspacePickerOpen }),
|
|
@@ -177010,90 +177298,6 @@ const DockviewWorkspaceLayout = reactExports.memo(function DockviewWorkspaceLayo
|
|
|
177010
177298
|
}
|
|
177011
177299
|
)
|
|
177012
177300
|
] });
|
|
177013
|
-
});
|
|
177014
|
-
const DEFAULT_MAX_CACHED_WORKSPACES = 3;
|
|
177015
|
-
const MIN_MAX_CACHED_WORKSPACES = 1;
|
|
177016
|
-
function DockviewInstanceManager() {
|
|
177017
|
-
const [cache, setCache] = reactExports.useState(/* @__PURE__ */ new Map());
|
|
177018
|
-
const pathname = useRouterState({ select: (s2) => s2.location.pathname });
|
|
177019
|
-
const { settings } = useSettingsQuery();
|
|
177020
|
-
const maxCachedWorkspaces = Math.max(
|
|
177021
|
-
MIN_MAX_CACHED_WORKSPACES,
|
|
177022
|
-
settings.maxCachedWorkspaces ?? DEFAULT_MAX_CACHED_WORKSPACES
|
|
177023
|
-
);
|
|
177024
|
-
const activeWorkspaceId = parseWorkspaceFromPath(pathname);
|
|
177025
|
-
if (activeWorkspaceId && !cache.has(activeWorkspaceId)) {
|
|
177026
|
-
setCache((prev2) => {
|
|
177027
|
-
if (prev2.has(activeWorkspaceId)) return prev2;
|
|
177028
|
-
const next2 = new Map(prev2);
|
|
177029
|
-
next2.set(activeWorkspaceId, {
|
|
177030
|
-
workspaceId: activeWorkspaceId,
|
|
177031
|
-
lastAccessed: Date.now()
|
|
177032
|
-
});
|
|
177033
|
-
if (next2.size > maxCachedWorkspaces) {
|
|
177034
|
-
let oldestKey = null;
|
|
177035
|
-
let oldestTime = Infinity;
|
|
177036
|
-
for (const [key2, entry] of next2) {
|
|
177037
|
-
if (key2 !== activeWorkspaceId && entry.lastAccessed < oldestTime) {
|
|
177038
|
-
oldestTime = entry.lastAccessed;
|
|
177039
|
-
oldestKey = key2;
|
|
177040
|
-
}
|
|
177041
|
-
}
|
|
177042
|
-
if (oldestKey) next2.delete(oldestKey);
|
|
177043
|
-
}
|
|
177044
|
-
return next2;
|
|
177045
|
-
});
|
|
177046
|
-
}
|
|
177047
|
-
reactExports.useEffect(() => {
|
|
177048
|
-
if (!activeWorkspaceId) return;
|
|
177049
|
-
recordWorkspaceAccess(activeWorkspaceId);
|
|
177050
|
-
setCache((prev2) => {
|
|
177051
|
-
const existing = prev2.get(activeWorkspaceId);
|
|
177052
|
-
if (!existing) return prev2;
|
|
177053
|
-
const next2 = new Map(prev2);
|
|
177054
|
-
next2.set(activeWorkspaceId, { ...existing, lastAccessed: Date.now() });
|
|
177055
|
-
return next2;
|
|
177056
|
-
});
|
|
177057
|
-
}, [activeWorkspaceId]);
|
|
177058
|
-
const activeWorkspaceIdRef = reactExports.useRef(activeWorkspaceId);
|
|
177059
|
-
activeWorkspaceIdRef.current = activeWorkspaceId;
|
|
177060
|
-
const handleLayoutChange = reactExports.useCallback(() => {
|
|
177061
|
-
setCache((prev2) => {
|
|
177062
|
-
const awId = activeWorkspaceIdRef.current;
|
|
177063
|
-
if (!awId) return prev2;
|
|
177064
|
-
const active = prev2.get(awId);
|
|
177065
|
-
if (!active) return prev2;
|
|
177066
|
-
if (prev2.size === 1) return prev2;
|
|
177067
|
-
const next2 = /* @__PURE__ */ new Map();
|
|
177068
|
-
next2.set(awId, active);
|
|
177069
|
-
return next2;
|
|
177070
|
-
});
|
|
177071
|
-
}, []);
|
|
177072
|
-
if (cache.size === 0 || activeWorkspaceId === null) return null;
|
|
177073
|
-
for (const { workspaceId } of cache.values()) {
|
|
177074
|
-
setWsActive(workspaceId, workspaceId === activeWorkspaceId);
|
|
177075
|
-
}
|
|
177076
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "absolute inset-0", children: Array.from(cache.values()).map(({ workspaceId }) => {
|
|
177077
|
-
const isActive = workspaceId === activeWorkspaceId;
|
|
177078
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
177079
|
-
"div",
|
|
177080
|
-
{
|
|
177081
|
-
className: "absolute inset-0 transition-opacity duration-150 ease-out",
|
|
177082
|
-
style: {
|
|
177083
|
-
opacity: isActive ? 1 : 0,
|
|
177084
|
-
pointerEvents: isActive ? void 0 : "none"
|
|
177085
|
-
},
|
|
177086
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
177087
|
-
DockviewWorkspaceLayout,
|
|
177088
|
-
{
|
|
177089
|
-
workspaceId,
|
|
177090
|
-
onLayoutChange: handleLayoutChange
|
|
177091
|
-
}
|
|
177092
|
-
)
|
|
177093
|
-
},
|
|
177094
|
-
workspaceId
|
|
177095
|
-
);
|
|
177096
|
-
}) });
|
|
177097
177301
|
}
|
|
177098
177302
|
const WS_PREFIX = "/workspace/";
|
|
177099
177303
|
function extractWorkspaceId(pathname) {
|
|
@@ -177178,6 +177382,8 @@ const DEFAULT_ZOOM = 1;
|
|
|
177178
177382
|
const MIN_ZOOM = 0.5;
|
|
177179
177383
|
const MAX_ZOOM = 2;
|
|
177180
177384
|
const ZOOM_STEP = 0.1;
|
|
177385
|
+
const ZOOM_CSS_VAR = "--app-zoom";
|
|
177386
|
+
const ZOOM_CHANGE_EVENT = "band:zoom-changed";
|
|
177181
177387
|
function loadZoomLevel() {
|
|
177182
177388
|
try {
|
|
177183
177389
|
const stored = localStorage.getItem(ZOOM_LEVEL_KEY);
|
|
@@ -177199,11 +177405,42 @@ function saveZoomLevel(level) {
|
|
|
177199
177405
|
} catch {
|
|
177200
177406
|
}
|
|
177201
177407
|
}
|
|
177408
|
+
function applyZoomLevelToDom(level) {
|
|
177409
|
+
const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
|
|
177410
|
+
const rounded = Math.round(clamped * 100) / 100;
|
|
177411
|
+
const root2 = document.documentElement;
|
|
177412
|
+
root2.style.zoom = String(rounded);
|
|
177413
|
+
root2.style.setProperty(ZOOM_CSS_VAR, String(rounded));
|
|
177414
|
+
window.dispatchEvent(new CustomEvent(ZOOM_CHANGE_EVENT, { detail: rounded }));
|
|
177415
|
+
return rounded;
|
|
177416
|
+
}
|
|
177202
177417
|
function applyZoomLevel(level) {
|
|
177203
177418
|
const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
|
|
177204
177419
|
const rounded = Math.round(clamped * 100) / 100;
|
|
177205
|
-
document.documentElement.style.zoom = String(rounded);
|
|
177206
177420
|
saveZoomLevel(rounded);
|
|
177421
|
+
applyZoomLevelToDom(rounded);
|
|
177422
|
+
}
|
|
177423
|
+
function getCurrentZoomLevel() {
|
|
177424
|
+
if (typeof document !== "undefined") {
|
|
177425
|
+
const css = document.documentElement.style.getPropertyValue(ZOOM_CSS_VAR);
|
|
177426
|
+
if (css) {
|
|
177427
|
+
const parsed = Number.parseFloat(css);
|
|
177428
|
+
if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
|
|
177429
|
+
return parsed;
|
|
177430
|
+
}
|
|
177431
|
+
}
|
|
177432
|
+
}
|
|
177433
|
+
return loadZoomLevel();
|
|
177434
|
+
}
|
|
177435
|
+
function subscribeToZoomChanges(handler) {
|
|
177436
|
+
if (typeof window === "undefined") return () => {
|
|
177437
|
+
};
|
|
177438
|
+
const listener = (e2) => {
|
|
177439
|
+
const detail = e2.detail;
|
|
177440
|
+
if (typeof detail === "number") handler(detail);
|
|
177441
|
+
};
|
|
177442
|
+
window.addEventListener(ZOOM_CHANGE_EVENT, listener);
|
|
177443
|
+
return () => window.removeEventListener(ZOOM_CHANGE_EVENT, listener);
|
|
177207
177444
|
}
|
|
177208
177445
|
function zoomIn() {
|
|
177209
177446
|
applyZoomLevel(loadZoomLevel() + ZOOM_STEP);
|
|
@@ -177262,7 +177499,7 @@ function NotFound() {
|
|
|
177262
177499
|
] });
|
|
177263
177500
|
}
|
|
177264
177501
|
const THEME_INIT_SCRIPT = `(function(){try{var t=localStorage.getItem("band-theme")||"dark";var d=document.documentElement;if(t==="system"){if(window.matchMedia("(prefers-color-scheme:dark)").matches)d.classList.add("dark");else d.classList.remove("dark")}else if(t==="dark"){d.classList.add("dark")}else{d.classList.remove("dark")}}catch(e){document.documentElement.classList.add("dark")}})()`;
|
|
177265
|
-
const ZOOM_INIT_SCRIPT = `(function(){try{var z=localStorage.getItem("band:zoom-level");if(z){var
|
|
177502
|
+
const ZOOM_INIT_SCRIPT = `(function(){try{var z=localStorage.getItem("band:zoom-level");var n=1;if(z){var p=parseFloat(z);if(!isNaN(p)&&p>=0.5&&p<=2)n=p;}var d=document.documentElement;d.style.zoom=String(n);d.style.setProperty("--app-zoom",String(n));}catch(e){}})()`;
|
|
177266
177503
|
function applyTheme(theme2) {
|
|
177267
177504
|
const root2 = document.documentElement;
|
|
177268
177505
|
if (theme2 === "system") {
|
|
@@ -177362,7 +177599,7 @@ function ZoomSync() {
|
|
|
177362
177599
|
if (e2.key !== "band:zoom-level" || !e2.newValue) return;
|
|
177363
177600
|
const level = Number.parseFloat(e2.newValue);
|
|
177364
177601
|
if (!Number.isNaN(level) && level >= 0.5 && level <= 2) {
|
|
177365
|
-
|
|
177602
|
+
applyZoomLevelToDom(level);
|
|
177366
177603
|
}
|
|
177367
177604
|
};
|
|
177368
177605
|
window.addEventListener("storage", handleStorage);
|
|
@@ -177465,7 +177702,7 @@ function AppShell() {
|
|
|
177465
177702
|
),
|
|
177466
177703
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "h-full min-w-0 overflow-hidden relative", children: [
|
|
177467
177704
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {}),
|
|
177468
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
177705
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SharedDockviewLayout, {}),
|
|
177469
177706
|
/* @__PURE__ */ jsxRuntimeExports.jsx(BrowserHostBridge, {})
|
|
177470
177707
|
] }) })
|
|
177471
177708
|
] }) });
|
|
@@ -177488,11 +177725,11 @@ function RootLayout() {
|
|
|
177488
177725
|
] })
|
|
177489
177726
|
] });
|
|
177490
177727
|
}
|
|
177491
|
-
const $$splitComponentImporter$7 = () => import("./index-
|
|
177728
|
+
const $$splitComponentImporter$7 = () => import("./index-sbo2EHgw.js");
|
|
177492
177729
|
const Route$7 = createFileRoute("/")({
|
|
177493
177730
|
component: lazyRouteComponent($$splitComponentImporter$7, "component")
|
|
177494
177731
|
});
|
|
177495
|
-
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-
|
|
177732
|
+
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-Be45P7LL.js");
|
|
177496
177733
|
const Route$6 = createFileRoute("/workspace/$workspaceId")({
|
|
177497
177734
|
component: lazyRouteComponent($$splitComponentImporter$6, "component")
|
|
177498
177735
|
});
|
|
@@ -177511,11 +177748,11 @@ const FindInFileContext = reactExports.createContext({
|
|
|
177511
177748
|
function useFindInFileContext() {
|
|
177512
177749
|
return reactExports.useContext(FindInFileContext);
|
|
177513
177750
|
}
|
|
177514
|
-
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-
|
|
177751
|
+
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-DmYHy6nH.js");
|
|
177515
177752
|
const Route$5 = createFileRoute("/workspace/$workspaceId/")({
|
|
177516
177753
|
component: lazyRouteComponent($$splitComponentImporter$5, "component")
|
|
177517
177754
|
});
|
|
177518
|
-
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-
|
|
177755
|
+
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-D_KPwmYr.js");
|
|
177519
177756
|
const Route$4 = createFileRoute("/workspace/$workspaceId/terminal")({
|
|
177520
177757
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
177521
177758
|
});
|
|
@@ -177523,15 +177760,15 @@ const $$splitComponentImporter$3 = () => import("./workspace._workspaceId.code-C
|
|
|
177523
177760
|
const Route$3 = createFileRoute("/workspace/$workspaceId/code")({
|
|
177524
177761
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
177525
177762
|
});
|
|
177526
|
-
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-
|
|
177763
|
+
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-EoyIscxQ.js");
|
|
177527
177764
|
const Route$2 = createFileRoute("/workspace/$workspaceId/changes")({
|
|
177528
177765
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
177529
177766
|
});
|
|
177530
|
-
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-
|
|
177767
|
+
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-CFbCDVph.js");
|
|
177531
177768
|
const Route$1 = createFileRoute("/workspace/$workspaceId/code/")({
|
|
177532
177769
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
177533
177770
|
});
|
|
177534
|
-
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-
|
|
177771
|
+
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-CcX7Gt0G.js");
|
|
177535
177772
|
const Route2 = createFileRoute("/workspace/$workspaceId/code/$")({
|
|
177536
177773
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
177537
177774
|
});
|
|
@@ -177764,75 +178001,77 @@ export {
|
|
|
177764
178001
|
defineLanguageFacet as by,
|
|
177765
178002
|
CompletionContext as bz,
|
|
177766
178003
|
agentTypeSupportsSessionListing as c,
|
|
177767
|
-
|
|
177768
|
-
|
|
177769
|
-
|
|
177770
|
-
|
|
177771
|
-
|
|
177772
|
-
|
|
177773
|
-
|
|
177774
|
-
|
|
178004
|
+
Uint8Array$1 as c$,
|
|
178005
|
+
array$2 as c0,
|
|
178006
|
+
getUserDefinedConfig as c1,
|
|
178007
|
+
ArrowRight as c2,
|
|
178008
|
+
ArrowUp as c3,
|
|
178009
|
+
ArrowDown as c4,
|
|
178010
|
+
ClipboardPaste as c5,
|
|
178011
|
+
getCurrentZoomLevel as c6,
|
|
177775
178012
|
openExternalUrl as c7,
|
|
177776
|
-
|
|
177777
|
-
|
|
177778
|
-
|
|
177779
|
-
|
|
177780
|
-
|
|
177781
|
-
|
|
177782
|
-
|
|
177783
|
-
|
|
177784
|
-
|
|
177785
|
-
|
|
177786
|
-
|
|
177787
|
-
|
|
177788
|
-
|
|
177789
|
-
|
|
177790
|
-
|
|
177791
|
-
|
|
177792
|
-
|
|
177793
|
-
|
|
177794
|
-
|
|
177795
|
-
|
|
177796
|
-
|
|
177797
|
-
|
|
177798
|
-
|
|
177799
|
-
|
|
177800
|
-
|
|
177801
|
-
|
|
177802
|
-
|
|
177803
|
-
|
|
177804
|
-
|
|
177805
|
-
|
|
177806
|
-
|
|
177807
|
-
|
|
177808
|
-
|
|
177809
|
-
|
|
177810
|
-
|
|
177811
|
-
|
|
177812
|
-
|
|
177813
|
-
|
|
177814
|
-
|
|
177815
|
-
|
|
177816
|
-
|
|
177817
|
-
|
|
177818
|
-
|
|
177819
|
-
|
|
177820
|
-
|
|
177821
|
-
|
|
177822
|
-
|
|
177823
|
-
|
|
177824
|
-
|
|
177825
|
-
|
|
177826
|
-
|
|
177827
|
-
|
|
177828
|
-
|
|
177829
|
-
|
|
177830
|
-
|
|
178013
|
+
subscribeToZoomChanges as c8,
|
|
178014
|
+
SearchBar as c9,
|
|
178015
|
+
hue as cA,
|
|
178016
|
+
dayjs2 as cB,
|
|
178017
|
+
setToString as cC,
|
|
178018
|
+
overRest as cD,
|
|
178019
|
+
baseFor as cE,
|
|
178020
|
+
baseAssignValue as cF,
|
|
178021
|
+
baseUnary as cG,
|
|
178022
|
+
merge$1 as cH,
|
|
178023
|
+
isObjectLike as cI,
|
|
178024
|
+
baseGetTag as cJ,
|
|
178025
|
+
Symbol$1 as cK,
|
|
178026
|
+
arrayLikeKeys as cL,
|
|
178027
|
+
baseKeys as cM,
|
|
178028
|
+
memoize as cN,
|
|
178029
|
+
isArguments as cO,
|
|
178030
|
+
copyObject as cP,
|
|
178031
|
+
getPrototype as cQ,
|
|
178032
|
+
cloneArrayBuffer as cR,
|
|
178033
|
+
cloneTypedArray as cS,
|
|
178034
|
+
getTag as cT,
|
|
178035
|
+
nodeUtil as cU,
|
|
178036
|
+
copyArray as cV,
|
|
178037
|
+
isBuffer as cW,
|
|
178038
|
+
cloneBuffer as cX,
|
|
178039
|
+
initCloneObject as cY,
|
|
178040
|
+
Stack as cZ,
|
|
178041
|
+
MapCache as c_,
|
|
178042
|
+
ZOOM_CSS_VAR as ca,
|
|
178043
|
+
getIconSVG as cb,
|
|
178044
|
+
registerIconPacks as cc,
|
|
178045
|
+
unknownIcon as cd,
|
|
178046
|
+
isObject$1 as ce,
|
|
178047
|
+
isIterateeCall as cf,
|
|
178048
|
+
keysIn as cg,
|
|
178049
|
+
eq as ch,
|
|
178050
|
+
isArrayLike as ci,
|
|
178051
|
+
isArray as cj,
|
|
178052
|
+
identity as ck,
|
|
178053
|
+
isIndex as cl,
|
|
178054
|
+
assignValue as cm,
|
|
178055
|
+
constant$2 as cn,
|
|
178056
|
+
interpolateNumber as co,
|
|
178057
|
+
color as cp,
|
|
178058
|
+
interpolateRgb as cq,
|
|
178059
|
+
interpolateString as cr,
|
|
178060
|
+
styles2String as cs,
|
|
178061
|
+
isLabelStyle as ct,
|
|
178062
|
+
Rgb as cu,
|
|
178063
|
+
rgbConvert as cv,
|
|
178064
|
+
define as cw,
|
|
178065
|
+
extend$2 as cx,
|
|
178066
|
+
Color as cy,
|
|
178067
|
+
nogamma as cz,
|
|
177831
178068
|
Route$4 as d,
|
|
177832
|
-
|
|
177833
|
-
|
|
177834
|
-
|
|
177835
|
-
|
|
178069
|
+
isTypedArray as d0,
|
|
178070
|
+
isLength as d1,
|
|
178071
|
+
Set$1 as d2,
|
|
178072
|
+
createAssigner as d3,
|
|
178073
|
+
isPrototype as d4,
|
|
178074
|
+
router as d5,
|
|
177836
178075
|
Route$2 as e,
|
|
177837
178076
|
useNavigate as f,
|
|
177838
178077
|
useDiffStatsContext as g,
|