@band-app/server 0.5.5 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/client/assets/DockviewTerminalContainer-Cz9WlWdH.js +2 -0
- package/dist/client/assets/{TerminalPanel-9pW_g2Kd.js → TerminalPanel-CFXq1WFm.js} +1 -1
- package/dist/client/assets/{_basePickBy-Dkr8WVHx.js → _basePickBy-BlSII9jq.js} +1 -1
- package/dist/client/assets/{_baseUniq-B0BP4Sik.js → _baseUniq-LspNqeMx.js} +1 -1
- package/dist/client/assets/{arc-C88WtUPJ.js → arc-BHqnoTLh.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-CyLIdwXX.js → architectureDiagram-VXUJARFQ-DCIibmHk.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-GShygeGY.js → blockDiagram-VD42YOAC-Dyw6cz7i.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-BcpX0Aqn.js → c4Diagram-YG6GDRKO-CBhD8_Hh.js} +1 -1
- package/dist/client/assets/channel-DyVBSQNn.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-IchBHT92.js → chunk-4BX2VUAB-BfoIiC3c.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CiMhFR8e.js → chunk-55IACEB6-MseixGRc.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-D-8aj6uR.js → chunk-B4BG7PRW-kNN7PAII.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-C13AzM7U.js → chunk-DI55MBZ5-CfSoI0vz.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-B4gYDpvB.js → chunk-FMBD7UC4-F6mPv_S0.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-DG8uaz-H.js → chunk-QN33PNHL-BYvpvAhN.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-CUeAC5bF.js → chunk-QZHKN3VN-CAQ7z_Ie.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-Crx06Grw.js → chunk-TZMSLE5B-C-XQ_CRy.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-B-cHSWlO.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-B-cHSWlO.js +1 -0
- package/dist/client/assets/clone-DTHJUKz4.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-BjyHTZfo.js → cose-bilkent-S5V4N54A-ngzXR_kx.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-C9LatsFq.js → dagre-6UL2VRFP-BbAzSMAb.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-Bzxy2DxA.js → diagram-PSM6KHXK-D1y4JtW0.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R--qsdr1em.js → diagram-QEK2KX5R-BG_iQN5l.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-SLCfnLEL.js → diagram-S2PKOQOG-CNtjaaSX.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-Bqfdi51r.js → erDiagram-Q2GNP2WA-Bo66PPvm.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BxNRRaL6.js → flowDiagram-NV44I4VS-Exg4ftcx.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-B3nW9Tee.js → ganttDiagram-JELNMOA3-D6zmdAtV.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-CJ5dA5iM.js → gitGraphDiagram-V2S2FVAM-Cu6NAnrE.js} +1 -1
- package/dist/client/assets/{graph-Ce0puKsP.js → graph-WQ-pCgIF.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-CENKUGzV.js → highlighted-body-B3W2YXNL-DwzNwzXb.js} +1 -1
- package/dist/client/assets/{index-DfwX9IUV.js → index-BBPUst2I.js} +1 -1
- package/dist/client/assets/{index-C_z1eCvW.js → index-BCYiMfLp.js} +1 -1
- package/dist/client/assets/{index-BSd1jAU9.js → index-B_Cl_jLZ.js} +1 -1
- package/dist/client/assets/{index-CosJojrk.js → index-Bk2XF8BE.js} +1 -1
- package/dist/client/assets/{index-Dd8shGvN.js → index-Bp5eP514.js} +1 -1
- package/dist/client/assets/{index-Cdvev7u6.js → index-Bq_xY4Ph.js} +1 -1
- package/dist/client/assets/index-CZ3BA0Cx.js +1 -0
- package/dist/client/assets/{index-C01QsgdU.js → index-CrvLihp0.js} +1 -1
- package/dist/client/assets/{index-B3ozbkAt.js → index-D4GE4Sw0.js} +1 -1
- package/dist/client/assets/{index-D3sAIK6P.js → index-DDT5MV0f.js} +1 -1
- package/dist/client/assets/{index-GxKLyCuq.js → index-DIETCrpj.js} +1 -1
- package/dist/client/assets/{index-BJDmvnal.js → index-DSACz9Bz.js} +1 -1
- package/dist/client/assets/{index-BDCONrW_.js → index-DcZkOXX6.js} +1 -1
- package/dist/client/assets/{index-qwbh_ssl.js → index-DijU73Gl.js} +1 -1
- package/dist/client/assets/{index-DL2wTzK1.js → index-DrmwayhT.js} +1 -1
- package/dist/client/assets/{index-jSH-9g1p.js → index-PbwTEF33.js} +1 -1
- package/dist/client/assets/{index-DGV19pgb.js → index-plFoXjgS.js} +1 -1
- package/dist/client/assets/{index-SWV7MFMV.js → index-tEjp_PJF.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP--q9GXvGW.js → infoDiagram-HS3SLOUP-CgP-ZkOl.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-C8V3w1dG.js → journeyDiagram-XKPGCS4Q-BQA_b_yg.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-BJk0X7tz.js → kanban-definition-3W4ZIXB7-DPOkqRAd.js} +1 -1
- package/dist/client/assets/{layout-ChwcG4Xl.js → layout-DeyOgqC6.js} +1 -1
- package/dist/client/assets/{linear-BDZmJSE8.js → linear-DGKC-_dh.js} +1 -1
- package/dist/client/assets/{main-BJRBUBf7.js → main-BreB9CwG.js} +227 -227
- package/dist/client/assets/main-D081MUyS.css +1 -0
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-ByMpVnYs.js → mindmap-definition-VGOIOE7T-D33s8vQk.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-CD-lmXbd.js → pieDiagram-ADFJNKIX-DkcUUXhA.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-BdOgBPk1.js → quadrantDiagram-AYHSOK5B-Db6ej3fP.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-f7DPR7JO.js → requirementDiagram-UZGBJVZJ-CRoYkr69.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-bi8QNTNx.js → sankeyDiagram-TZEHDZUN-C5kJHH1U.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-DvrFWc3k.js → sequenceDiagram-WL72ISMW-Bjl7tEqi.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-pHRodxiR.js → stateDiagram-FKZM4ZOC-BOHkzYsN.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3--yckNXlZ.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-GvuMpLMJ.js → timeline-definition-IT6M3QCI-BRYv8Zo9.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-1Fkk9zI9.js → treemap-GDKQZRPO-CreIyeFj.js} +1 -1
- package/dist/client/assets/{useSessionListContext-CRcZVcHa.js → useSessionListContext-B45AkDTo.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId-Cy3AEGLV.js → workspace._workspaceId-DDqIo28l.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.changes-Rwu7P9DU.js → workspace._workspaceId.changes-tNj-aYnb.js} +1 -1
- package/dist/client/assets/workspace._workspaceId.code-dlq2gsqz.js +1 -0
- package/dist/client/assets/{workspace._workspaceId.code._-BJQkX_UC.js → workspace._workspaceId.code._-CZQLyXwR.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.code.index-BRqZeE-M.js → workspace._workspaceId.code.index-BZ26pRQu.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.index-D_CsfVyR.js → workspace._workspaceId.index-D_hEywpO.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId.terminal-DfJiaUra.js → workspace._workspaceId.terminal-D_kBTm-z.js} +2 -2
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-CQ-W21MD.js → xychartDiagram-PRI3JC2R-Cn2h5HVO.js} +1 -1
- package/dist/server/assets/{DockviewTerminalContainer-nurSvNMN.js → DockviewTerminalContainer-DSwflA0D.js} +3 -3
- package/dist/server/assets/{TerminalPanel-Cf-9H8Lr.js → TerminalPanel-D2eWHeSY.js} +2 -2
- package/dist/server/assets/{_basePickBy-D3FmqT7A.js → _basePickBy-C6PzK77c.js} +2 -2
- package/dist/server/assets/{_baseUniq-CZLL_KGQ.js → _baseUniq-DiQVR768.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-DcXFd6TS.js → _tanstack-start-manifest_v-CsSFK95L.js} +1 -1
- package/dist/server/assets/{arc-B-ehAOzx.js → arc-gx_AD1U3.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-Bm2CNNZn.js → architecture-7HQA4BMR-BGd5uu6b.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-CxaRzb-g.js → architectureDiagram-VXUJARFQ-C_xYzE4-.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-CsN3W5TR.js → blockDiagram-VD42YOAC-DpPRXIow.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-C2v52EXK.js → c4Diagram-YG6GDRKO-CAy_xf6J.js} +2 -2
- package/dist/server/assets/{channel-C3XN_tlw.js → channel-6B-t4Soa.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-BRZhlA3M.js → chunk-4BX2VUAB-B42FHAWg.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-CvRWSP7_.js → chunk-55IACEB6-MqdTOSaC.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-CtnW_06V.js → chunk-B4BG7PRW-CTB3bXV5.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-BQw22O7H.js → chunk-DI55MBZ5-BQenTOqK.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-GsUqEYsC.js → chunk-FMBD7UC4-BZoha8Qg.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-Cbg19vtg.js → chunk-QN33PNHL-qKkMgf6f.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-BWszKJyV.js → chunk-QZHKN3VN-VrtEAJzx.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-DQrHctmP.js → chunk-TZMSLE5B-DSYbndjw.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-CbsNfDCL.js → classDiagram-2ON5EDUG-i_tSGvo3.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-CbsNfDCL.js → classDiagram-v2-WZHVMYZB-i_tSGvo3.js} +5 -5
- package/dist/server/assets/{clone-x7_sin8C.js → clone-Cxt50u0y.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-BOuoNr7N.js → cose-bilkent-S5V4N54A-CxYiUQkd.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-BEGPY_P8.js → dagre-6UL2VRFP-Df3ty00_.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-DdLXbkDH.js → diagram-PSM6KHXK-Cfylqj1t.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-Ywb8tTSL.js → diagram-QEK2KX5R-BOdeY2WM.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-Bk6j9I_3.js → diagram-S2PKOQOG-DjK_qPmk.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-CS94DyiJ.js → erDiagram-Q2GNP2WA-CDZKFxtV.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-DGePuZ_D.js → flowDiagram-NV44I4VS-BkuGyDjs.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-nyPfcgRT.js → ganttDiagram-JELNMOA3-BivmZcb7.js} +2 -2
- package/dist/server/assets/{gitGraph-G5XIXVHT-CKTPOKTu.js → gitGraph-G5XIXVHT-CC7wmTrx.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-BygjesE-.js → gitGraphDiagram-V2S2FVAM-CQIdCHfs.js} +7 -7
- package/dist/server/assets/{graph-B6TDpsg4.js → graph-C8gb_m5f.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-CULjZ_nJ.js → highlighted-body-B3W2YXNL-DrUth0S5.js} +1 -1
- package/dist/server/assets/{index-BCMFgTLH.js → index-BjGAzo0D.js} +3 -3
- package/dist/server/assets/{index-DYGOZ3mj.js → index-BmO8Ehgw.js} +4 -4
- package/dist/server/assets/{index-Can-bHgo.js → index-Bmsr-fBO.js} +2 -2
- package/dist/server/assets/{index-BlnGJ9is.js → index-BnH9YiLC.js} +2 -2
- package/dist/server/assets/{index-eLPxFa7w.js → index-C4P3mulg.js} +5 -5
- package/dist/server/assets/{index-DCJj-J2w.js → index-C5Oqi8tP.js} +2 -2
- package/dist/server/assets/{index-Bx2Tna2y.js → index-CCjk4zsA.js} +2 -2
- package/dist/server/assets/{index-BRsnuD-O.js → index-CKHwQloa.js} +2 -2
- package/dist/server/assets/{index-Bli_q03X.js → index-CT4xIbKa.js} +2 -2
- package/dist/server/assets/{index-5SwWQ6oe.js → index-CcD8oUXa.js} +2 -2
- package/dist/server/assets/{index-0oeRMDH_.js → index-CitKRHQd.js} +3 -3
- package/dist/server/assets/{index-DuWXmjWc.js → index-CmrSb5ez.js} +1 -1
- package/dist/server/assets/{index-C1-EaJTv.js → index-DKxaFXTI.js} +2 -2
- package/dist/server/assets/{index-D4VsXH_e.js → index-DOYPjTos.js} +2 -2
- package/dist/server/assets/{index-DMcpsIUc.js → index-DhHjumm2.js} +5 -5
- package/dist/server/assets/{index-CnQ4qso3.js → index-Dn5q9HW4.js} +2 -2
- package/dist/server/assets/{index-DJDlsaKi.js → index-F50ZRwue.js} +2 -2
- package/dist/server/assets/{index-CsE88Ld8.js → index-qd9Me3nB.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-B-rB5BtI.js → info-VBDWY6EO-DyGhnNke.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-D83vTisF.js → infoDiagram-HS3SLOUP-Ba9kta0e.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-PbUYIdib.js → journeyDiagram-XKPGCS4Q-DpIqL8B7.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-BQSc_qmP.js → kanban-definition-3W4ZIXB7-DX4-cLBH.js} +2 -2
- package/dist/server/assets/{layout-DXYeijc_.js → layout-C_dXxi6_.js} +4 -4
- package/dist/server/assets/{linear-Dwrm9Gnq.js → linear-BEU5iS3c.js} +1 -1
- package/dist/server/assets/{mermaid-3ZIDBTTL-BnVYO1pJ.js → mermaid-3ZIDBTTL-dDSIn_hx.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-CUfP0S_P.js → mermaid-parser.core-BTu6on9w.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-BdjAKwAK.js → mindmap-definition-VGOIOE7T-EvNNmlYT.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-d7SiXxLo.js → packet-DYOGHKS2-BSKBycIf.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-euknErR4.js → pie-VRWISCQL-BjrUlgyt.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-Bl150d6W.js → pieDiagram-ADFJNKIX-YhPnTxVL.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-ClIy1n9L.js → quadrantDiagram-AYHSOK5B-C_QHaemj.js} +2 -2
- package/dist/server/assets/{radar-ZZBFDIW7-hsbqqEeW.js → radar-ZZBFDIW7-CO0WzTp4.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-B87j_suL.js → requirementDiagram-UZGBJVZJ-BSt0bNXX.js} +3 -3
- package/dist/server/assets/{router-DMoul9bL.js → router-Ccw5_Sy3.js} +900 -753
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Bq18JLF9.js → sankeyDiagram-TZEHDZUN-C7SL1Bn9.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-DziQuu14.js → sequenceDiagram-WL72ISMW-DdfWdBp2.js} +3 -3
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-7wEsr4R_.js → stateDiagram-FKZM4ZOC-BD7Oj-hn.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-D2VjwPAa.js → stateDiagram-v2-4FDKWEC3-e4PXqg0B.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI--uelCCOi.js → timeline-definition-IT6M3QCI-f7G2avSH.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-DVHxmTc8.js → treemap-GDKQZRPO-CndQ71as.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-Bs8UzdnH.js → workspace._workspaceId-CR4TOS5A.js} +2 -2
- package/dist/server/assets/{workspace._workspaceId.changes-BWu2NrZR.js → workspace._workspaceId.changes-B7PK-I72.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code._-DKgsvYy3.js → workspace._workspaceId.code._-CA9dP_-G.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.code.index-D9xieBbz.js → workspace._workspaceId.code.index-CLRAQ6Pf.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.index-CM2nPNp3.js → workspace._workspaceId.index-alkhfxK3.js} +1 -1
- package/dist/server/assets/{workspace._workspaceId.terminal-ByrTEXV_.js → workspace._workspaceId.terminal-BvpiNe_s.js} +2 -2
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-C3ztrSUC.js → xychartDiagram-PRI3JC2R-CAkP7cKw.js} +2 -2
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +501 -225
- package/package.json +5 -7
- package/dist/client/assets/DockviewTerminalContainer-DX8OFKYR.js +0 -2
- package/dist/client/assets/channel-COxuXp7F.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-CtxJr2zo.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-CtxJr2zo.js +0 -1
- package/dist/client/assets/clone-Cud65zOY.js +0 -1
- package/dist/client/assets/core-mPlcS5K-.js +0 -1
- package/dist/client/assets/event-DRyjiKX_.js +0 -1
- package/dist/client/assets/index-BkW3q3LQ.js +0 -1
- package/dist/client/assets/index-BsMHcPzb.js +0 -1
- package/dist/client/assets/main-BnrSCdeV.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BUgsJX1c.js +0 -1
- package/dist/client/assets/window-BFoF6nYm.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code-zGA3uY7G.js +0 -1
- package/dist/server/assets/core-dG4_vufa.js +0 -45
- package/dist/server/assets/event-2oMkw_LQ.js +0 -63
- package/dist/server/assets/index-jMSXp5h7.js +0 -10
- package/dist/server/assets/window-Qr88gZCE.js +0 -2005
|
@@ -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$1k = [
|
|
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$1k);
|
|
1102
|
+
const __iconNode$1j = [
|
|
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$1j);
|
|
1107
|
+
const __iconNode$1i = [
|
|
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$1i);
|
|
1112
|
+
const __iconNode$1h = [
|
|
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$1h);
|
|
1117
|
+
const __iconNode$1g = [
|
|
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$1g);
|
|
1123
|
+
const __iconNode$1f = [
|
|
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$1f);
|
|
1128
|
+
const __iconNode$1e = [
|
|
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$1e);
|
|
1133
|
+
const __iconNode$1d = [
|
|
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$1c = [
|
|
|
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$1d);
|
|
1142
|
+
const __iconNode$1c = [
|
|
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,54 +1152,54 @@ const __iconNode$1b = [
|
|
|
1152
1152
|
}
|
|
1153
1153
|
]
|
|
1154
1154
|
];
|
|
1155
|
-
const Braces = createLucideIcon("braces", __iconNode$
|
|
1156
|
-
const __iconNode$
|
|
1155
|
+
const Braces = createLucideIcon("braces", __iconNode$1c);
|
|
1156
|
+
const __iconNode$1b = [
|
|
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$1b);
|
|
1163
|
+
const __iconNode$1a = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
|
|
1164
|
+
const Check = createLucideIcon("check", __iconNode$1a);
|
|
1165
|
+
const __iconNode$19 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
|
|
1166
|
+
const ChevronDown = createLucideIcon("chevron-down", __iconNode$19);
|
|
1167
|
+
const __iconNode$18 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
|
|
1168
|
+
const ChevronLeft = createLucideIcon("chevron-left", __iconNode$18);
|
|
1169
|
+
const __iconNode$17 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
|
|
1170
|
+
const ChevronRight = createLucideIcon("chevron-right", __iconNode$17);
|
|
1171
|
+
const __iconNode$16 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
|
|
1172
|
+
const ChevronUp = createLucideIcon("chevron-up", __iconNode$16);
|
|
1173
|
+
const __iconNode$15 = [
|
|
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$15);
|
|
1178
|
+
const __iconNode$14 = [
|
|
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$14);
|
|
1183
|
+
const __iconNode$13 = [
|
|
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$13);
|
|
1189
|
+
const __iconNode$12 = [
|
|
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$12);
|
|
1194
|
+
const __iconNode$11 = [
|
|
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$11);
|
|
1200
|
+
const __iconNode$10 = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
|
|
1201
|
+
const Circle = createLucideIcon("circle", __iconNode$10);
|
|
1202
|
+
const __iconNode$$ = [
|
|
1203
1203
|
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
1204
1204
|
[
|
|
1205
1205
|
"path",
|
|
@@ -1209,52 +1209,58 @@ const __iconNode$_ = [
|
|
|
1209
1209
|
}
|
|
1210
1210
|
]
|
|
1211
1211
|
];
|
|
1212
|
-
const Clipboard = createLucideIcon("clipboard", __iconNode
|
|
1213
|
-
const __iconNode$
|
|
1212
|
+
const Clipboard = createLucideIcon("clipboard", __iconNode$$);
|
|
1213
|
+
const __iconNode$_ = [
|
|
1214
1214
|
["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
|
|
1215
1215
|
["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
|
|
1216
1216
|
];
|
|
1217
|
-
const Clock = createLucideIcon("clock", __iconNode$
|
|
1218
|
-
const __iconNode$
|
|
1217
|
+
const Clock = createLucideIcon("clock", __iconNode$_);
|
|
1218
|
+
const __iconNode$Z = [
|
|
1219
1219
|
["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
|
|
1220
1220
|
["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
|
|
1221
1221
|
["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
|
|
1222
1222
|
];
|
|
1223
|
-
const CodeXml = createLucideIcon("code-xml", __iconNode$
|
|
1224
|
-
const __iconNode$
|
|
1223
|
+
const CodeXml = createLucideIcon("code-xml", __iconNode$Z);
|
|
1224
|
+
const __iconNode$Y = [
|
|
1225
1225
|
["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
|
|
1226
1226
|
["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
|
|
1227
1227
|
];
|
|
1228
|
-
const Code = createLucideIcon("code", __iconNode$
|
|
1229
|
-
const __iconNode$
|
|
1228
|
+
const Code = createLucideIcon("code", __iconNode$Y);
|
|
1229
|
+
const __iconNode$X = [
|
|
1230
1230
|
["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
|
|
1231
1231
|
["path", { d: "M12 3v18", key: "108xh3" }]
|
|
1232
1232
|
];
|
|
1233
|
-
const Columns2 = createLucideIcon("columns-2", __iconNode$
|
|
1234
|
-
const __iconNode$
|
|
1233
|
+
const Columns2 = createLucideIcon("columns-2", __iconNode$X);
|
|
1234
|
+
const __iconNode$W = [
|
|
1235
1235
|
[
|
|
1236
1236
|
"path",
|
|
1237
1237
|
{ 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" }
|
|
1238
1238
|
]
|
|
1239
1239
|
];
|
|
1240
|
-
const Command$1 = createLucideIcon("command", __iconNode$
|
|
1241
|
-
const __iconNode$
|
|
1240
|
+
const Command$1 = createLucideIcon("command", __iconNode$W);
|
|
1241
|
+
const __iconNode$V = [
|
|
1242
1242
|
["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
|
|
1243
1243
|
["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" }]
|
|
1244
1244
|
];
|
|
1245
|
-
const Copy = createLucideIcon("copy", __iconNode$
|
|
1246
|
-
const __iconNode$
|
|
1245
|
+
const Copy = createLucideIcon("copy", __iconNode$V);
|
|
1246
|
+
const __iconNode$U = [
|
|
1247
1247
|
["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
|
|
1248
1248
|
["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
|
|
1249
1249
|
["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
|
|
1250
1250
|
];
|
|
1251
|
-
const Database = createLucideIcon("database", __iconNode$
|
|
1252
|
-
const __iconNode$
|
|
1251
|
+
const Database = createLucideIcon("database", __iconNode$U);
|
|
1252
|
+
const __iconNode$T = [
|
|
1253
1253
|
["path", { d: "M12 15V3", key: "m9g1x1" }],
|
|
1254
1254
|
["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
|
|
1255
1255
|
["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
|
|
1256
1256
|
];
|
|
1257
|
-
const Download = createLucideIcon("download", __iconNode$
|
|
1257
|
+
const Download = createLucideIcon("download", __iconNode$T);
|
|
1258
|
+
const __iconNode$S = [
|
|
1259
|
+
["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
|
|
1260
|
+
["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
|
|
1261
|
+
["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
|
|
1262
|
+
];
|
|
1263
|
+
const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$S);
|
|
1258
1264
|
const __iconNode$R = [
|
|
1259
1265
|
["path", { d: "m15 15 6 6", key: "1s409w" }],
|
|
1260
1266
|
["path", { d: "m15 9 6-6", key: "ko1vev" }],
|
|
@@ -7466,7 +7472,7 @@ var CheckboxItem = MenuCheckboxItem;
|
|
|
7466
7472
|
var RadioGroup = MenuRadioGroup;
|
|
7467
7473
|
var RadioItem = MenuRadioItem;
|
|
7468
7474
|
var ItemIndicator$1 = MenuItemIndicator;
|
|
7469
|
-
var Separator = MenuSeparator;
|
|
7475
|
+
var Separator$1 = MenuSeparator;
|
|
7470
7476
|
var Arrow2$1 = MenuArrow;
|
|
7471
7477
|
var Sub = MenuSub;
|
|
7472
7478
|
var SubTrigger = MenuSubTrigger;
|
|
@@ -7672,7 +7678,7 @@ var SEPARATOR_NAME$2 = "ContextMenuSeparator";
|
|
|
7672
7678
|
var ContextMenuSeparator$1 = reactExports.forwardRef((props, forwardedRef) => {
|
|
7673
7679
|
const { __scopeContextMenu, ...separatorProps } = props;
|
|
7674
7680
|
const menuScope = useMenuScope$1(__scopeContextMenu);
|
|
7675
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
|
|
7681
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Separator$1, { ...menuScope, ...separatorProps, ref: forwardedRef });
|
|
7676
7682
|
});
|
|
7677
7683
|
ContextMenuSeparator$1.displayName = SEPARATOR_NAME$2;
|
|
7678
7684
|
var ARROW_NAME$4 = "ContextMenuArrow";
|
|
@@ -7926,7 +7932,7 @@ var SEPARATOR_NAME$1 = "DropdownMenuSeparator";
|
|
|
7926
7932
|
var DropdownMenuSeparator$1 = reactExports.forwardRef((props, forwardedRef) => {
|
|
7927
7933
|
const { __scopeDropdownMenu, ...separatorProps } = props;
|
|
7928
7934
|
const menuScope = useMenuScope(__scopeDropdownMenu);
|
|
7929
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(Separator, { ...menuScope, ...separatorProps, ref: forwardedRef });
|
|
7935
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(Separator$1, { ...menuScope, ...separatorProps, ref: forwardedRef });
|
|
7930
7936
|
});
|
|
7931
7937
|
DropdownMenuSeparator$1.displayName = SEPARATOR_NAME$1;
|
|
7932
7938
|
var ARROW_NAME$3 = "DropdownMenuArrow";
|
|
@@ -10003,13 +10009,13 @@ var SelectScrollButtonImpl = reactExports.forwardRef((props, forwardedRef) => {
|
|
|
10003
10009
|
);
|
|
10004
10010
|
});
|
|
10005
10011
|
var SEPARATOR_NAME = "SelectSeparator";
|
|
10006
|
-
var SelectSeparator = reactExports.forwardRef(
|
|
10012
|
+
var SelectSeparator$1 = reactExports.forwardRef(
|
|
10007
10013
|
(props, forwardedRef) => {
|
|
10008
10014
|
const { __scopeSelect, ...separatorProps } = props;
|
|
10009
10015
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Primitive.div, { "aria-hidden": true, ...separatorProps, ref: forwardedRef });
|
|
10010
10016
|
}
|
|
10011
10017
|
);
|
|
10012
|
-
SelectSeparator.displayName = SEPARATOR_NAME;
|
|
10018
|
+
SelectSeparator$1.displayName = SEPARATOR_NAME;
|
|
10013
10019
|
var ARROW_NAME$1 = "SelectArrow";
|
|
10014
10020
|
var SelectArrow = reactExports.forwardRef(
|
|
10015
10021
|
(props, forwardedRef) => {
|
|
@@ -10107,6 +10113,7 @@ var Viewport$1 = SelectViewport;
|
|
|
10107
10113
|
var Item = SelectItem$1;
|
|
10108
10114
|
var ItemText = SelectItemText;
|
|
10109
10115
|
var ItemIndicator = SelectItemIndicator;
|
|
10116
|
+
var Separator = SelectSeparator$1;
|
|
10110
10117
|
var SWITCH_NAME = "Switch";
|
|
10111
10118
|
var [createSwitchContext] = createContextScope(SWITCH_NAME);
|
|
10112
10119
|
var [SwitchProvider, useSwitchContext] = createSwitchContext(SWITCH_NAME);
|
|
@@ -14053,7 +14060,7 @@ const buttonVariants = cva(
|
|
|
14053
14060
|
variant: {
|
|
14054
14061
|
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
14055
14062
|
destructive: "bg-destructive text-white hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:bg-destructive/60 dark:focus-visible:ring-destructive/40",
|
|
14056
|
-
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/
|
|
14063
|
+
outline: "border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:bg-input/60 dark:hover:bg-input/80",
|
|
14057
14064
|
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
14058
14065
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",
|
|
14059
14066
|
link: "text-primary underline-offset-4 hover:underline"
|
|
@@ -14118,7 +14125,7 @@ function Input({ className, type: type2, ...props }) {
|
|
|
14118
14125
|
spellCheck: false,
|
|
14119
14126
|
"data-slot": "input",
|
|
14120
14127
|
className: cn$2(
|
|
14121
|
-
"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/
|
|
14128
|
+
"h-9 w-full min-w-0 rounded-md border border-input bg-transparent px-3 py-1.5 text-sm shadow-xs transition-[color,box-shadow] outline-none selection:bg-primary selection:text-primary-foreground file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/60",
|
|
14122
14129
|
"focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
14123
14130
|
"aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40",
|
|
14124
14131
|
className
|
|
@@ -15046,7 +15053,7 @@ function SelectTrigger({
|
|
|
15046
15053
|
{
|
|
15047
15054
|
"data-slot": "select-trigger",
|
|
15048
15055
|
className: cn$2(
|
|
15049
|
-
"flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:bg-input/
|
|
15056
|
+
"flex h-9 w-full items-center justify-between gap-2 rounded-md border border-input bg-transparent px-3 py-2 text-sm shadow-xs outline-none transition-[color,box-shadow] placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 dark:bg-input/60 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
15050
15057
|
className
|
|
15051
15058
|
),
|
|
15052
15059
|
...props,
|
|
@@ -15068,7 +15075,10 @@ function SelectContent({
|
|
|
15068
15075
|
{
|
|
15069
15076
|
"data-slot": "select-content",
|
|
15070
15077
|
className: cn$2(
|
|
15071
|
-
|
|
15078
|
+
// Mirror DropdownMenuContent so dropdowns and selects render
|
|
15079
|
+
// identically (popover surface, explicit border-border so the
|
|
15080
|
+
// outline doesn't fall back to currentColor).
|
|
15081
|
+
"relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
|
|
15072
15082
|
position2 === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",
|
|
15073
15083
|
className
|
|
15074
15084
|
),
|
|
@@ -15097,7 +15107,10 @@ function SelectItem({
|
|
|
15097
15107
|
{
|
|
15098
15108
|
"data-slot": "select-item",
|
|
15099
15109
|
className: cn$2(
|
|
15100
|
-
|
|
15110
|
+
// Mirror DropdownMenuItem padding/outline/icon styling so select
|
|
15111
|
+
// items render identically to menu items. Extra right padding leaves
|
|
15112
|
+
// room for the absolutely-positioned check indicator.
|
|
15113
|
+
"relative flex cursor-pointer items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 [&_svg:not([class*='text-'])]:text-muted-foreground *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",
|
|
15101
15114
|
className
|
|
15102
15115
|
),
|
|
15103
15116
|
...props,
|
|
@@ -15108,6 +15121,19 @@ function SelectItem({
|
|
|
15108
15121
|
}
|
|
15109
15122
|
);
|
|
15110
15123
|
}
|
|
15124
|
+
function SelectSeparator({
|
|
15125
|
+
className,
|
|
15126
|
+
...props
|
|
15127
|
+
}) {
|
|
15128
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
15129
|
+
Separator,
|
|
15130
|
+
{
|
|
15131
|
+
"data-slot": "select-separator",
|
|
15132
|
+
className: cn$2("-mx-1 my-1 h-px bg-border", className),
|
|
15133
|
+
...props
|
|
15134
|
+
}
|
|
15135
|
+
);
|
|
15136
|
+
}
|
|
15111
15137
|
function Spinner({ className, ...props }) {
|
|
15112
15138
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
15113
15139
|
"svg",
|
|
@@ -40420,53 +40446,53 @@ async function loadLanguage(lang) {
|
|
|
40420
40446
|
try {
|
|
40421
40447
|
switch (lang) {
|
|
40422
40448
|
case "javascript":
|
|
40423
|
-
return import("./index-
|
|
40449
|
+
return import("./index-qd9Me3nB.js").then((m2) => m2.javascript());
|
|
40424
40450
|
case "jsx":
|
|
40425
|
-
return import("./index-
|
|
40451
|
+
return import("./index-qd9Me3nB.js").then((m2) => m2.javascript({ jsx: true }));
|
|
40426
40452
|
case "typescript":
|
|
40427
|
-
return import("./index-
|
|
40453
|
+
return import("./index-qd9Me3nB.js").then(
|
|
40428
40454
|
(m2) => m2.javascript({ typescript: true })
|
|
40429
40455
|
);
|
|
40430
40456
|
case "tsx":
|
|
40431
|
-
return import("./index-
|
|
40457
|
+
return import("./index-qd9Me3nB.js").then(
|
|
40432
40458
|
(m2) => m2.javascript({ jsx: true, typescript: true })
|
|
40433
40459
|
);
|
|
40434
40460
|
case "python":
|
|
40435
|
-
return import("./index-
|
|
40461
|
+
return import("./index-Bmsr-fBO.js").then((m2) => m2.python());
|
|
40436
40462
|
case "html":
|
|
40437
|
-
return import("./index-
|
|
40463
|
+
return import("./index-BmO8Ehgw.js").then((m2) => m2.html());
|
|
40438
40464
|
case "css":
|
|
40439
|
-
return import("./index-
|
|
40465
|
+
return import("./index-BnH9YiLC.js").then((m2) => m2.css());
|
|
40440
40466
|
case "scss":
|
|
40441
40467
|
case "sass":
|
|
40442
|
-
return import("./index-
|
|
40468
|
+
return import("./index-BjGAzo0D.js").then((m2) => m2.sass());
|
|
40443
40469
|
case "less":
|
|
40444
|
-
return import("./index-
|
|
40470
|
+
return import("./index-CitKRHQd.js").then((m2) => m2.less());
|
|
40445
40471
|
case "json":
|
|
40446
40472
|
case "jsonc":
|
|
40447
|
-
return import("./index-
|
|
40473
|
+
return import("./index-CcD8oUXa.js").then((m2) => m2.json());
|
|
40448
40474
|
case "markdown":
|
|
40449
40475
|
case "mdx":
|
|
40450
|
-
return import("./index-
|
|
40476
|
+
return import("./index-C4P3mulg.js").then((m2) => m2.markdown());
|
|
40451
40477
|
case "xml":
|
|
40452
|
-
return import("./index-
|
|
40478
|
+
return import("./index-C5Oqi8tP.js").then((m2) => m2.xml());
|
|
40453
40479
|
case "yaml":
|
|
40454
|
-
return import("./index-
|
|
40480
|
+
return import("./index-CT4xIbKa.js").then((m2) => m2.yaml());
|
|
40455
40481
|
case "sql":
|
|
40456
|
-
return import("./index-
|
|
40482
|
+
return import("./index-F50ZRwue.js").then((m2) => m2.sql());
|
|
40457
40483
|
case "rust":
|
|
40458
|
-
return import("./index-
|
|
40484
|
+
return import("./index-DOYPjTos.js").then((m2) => m2.rust());
|
|
40459
40485
|
case "go":
|
|
40460
|
-
return import("./index-
|
|
40486
|
+
return import("./index-CKHwQloa.js").then((m2) => m2.go());
|
|
40461
40487
|
case "java":
|
|
40462
|
-
return import("./index-
|
|
40488
|
+
return import("./index-CCjk4zsA.js").then((m2) => m2.java());
|
|
40463
40489
|
case "kotlin":
|
|
40464
|
-
return import("./index-
|
|
40490
|
+
return import("./index-CCjk4zsA.js").then((m2) => m2.java());
|
|
40465
40491
|
case "c":
|
|
40466
40492
|
case "cpp":
|
|
40467
|
-
return import("./index-
|
|
40493
|
+
return import("./index-DKxaFXTI.js").then((m2) => m2.cpp());
|
|
40468
40494
|
case "php":
|
|
40469
|
-
return import("./index-
|
|
40495
|
+
return import("./index-DhHjumm2.js").then((m2) => m2.php());
|
|
40470
40496
|
// Legacy modes via StreamLanguage
|
|
40471
40497
|
case "bash":
|
|
40472
40498
|
case "fish":
|
|
@@ -46283,7 +46309,7 @@ function DroppableLabelHeader({ labelId, label }) {
|
|
|
46283
46309
|
"div",
|
|
46284
46310
|
{
|
|
46285
46311
|
ref: setNodeRef,
|
|
46286
|
-
className: `flex items-center gap-2 px-3
|
|
46312
|
+
className: `flex h-9 items-center gap-2 px-3 mb-0.5 transition-colors ${isOver ? "bg-primary/20" : "bg-accent"}`,
|
|
46287
46313
|
children: [
|
|
46288
46314
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "size-2.5 rounded-full shrink-0", style: { backgroundColor: label.color } }),
|
|
46289
46315
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-semibold text-foreground/80", children: label.name })
|
|
@@ -46297,7 +46323,7 @@ function DroppableUnlabeledHeader() {
|
|
|
46297
46323
|
"div",
|
|
46298
46324
|
{
|
|
46299
46325
|
ref: setNodeRef,
|
|
46300
|
-
className: `flex items-center gap-2 px-3
|
|
46326
|
+
className: `flex h-9 items-center gap-2 px-3 mb-0.5 transition-colors ${isOver ? "bg-primary/20" : "bg-accent"}`,
|
|
46301
46327
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-semibold text-foreground/80", children: "Unlabeled" })
|
|
46302
46328
|
}
|
|
46303
46329
|
);
|
|
@@ -46648,7 +46674,9 @@ function SettingsSection({
|
|
|
46648
46674
|
{
|
|
46649
46675
|
"data-slot": "settings-section-card",
|
|
46650
46676
|
className: cn$2(
|
|
46651
|
-
|
|
46677
|
+
// Group rows share the page background; only the outer border and
|
|
46678
|
+
// 1px row dividers separate them visually.
|
|
46679
|
+
"overflow-hidden rounded-xl border border-border",
|
|
46652
46680
|
// Auto-divider between direct children (rows). Skips border-bottom of last child.
|
|
46653
46681
|
"[&>*+*]:border-t [&>*+*]:border-border"
|
|
46654
46682
|
),
|
|
@@ -47260,33 +47288,17 @@ function SettingsPage({ open: open2, onOpenChange }) {
|
|
|
47260
47288
|
}
|
|
47261
47289
|
) });
|
|
47262
47290
|
}
|
|
47263
|
-
const
|
|
47264
|
-
const
|
|
47265
|
-
const isDesktop$1 = isTauri$2 || isElectron$2;
|
|
47291
|
+
const isElectron$1 = typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
|
|
47292
|
+
const isDesktop$1 = isElectron$1;
|
|
47266
47293
|
function electronBridge$2() {
|
|
47267
|
-
if (!isElectron$
|
|
47294
|
+
if (!isElectron$1) return null;
|
|
47268
47295
|
const bridge = window.__BAND_DESKTOP__;
|
|
47269
47296
|
return bridge ?? null;
|
|
47270
47297
|
}
|
|
47271
47298
|
async function desktopInvoke$1(cmd2, args) {
|
|
47272
47299
|
const bridge = electronBridge$2();
|
|
47273
47300
|
if (bridge) return await bridge.invoke(cmd2, args);
|
|
47274
|
-
|
|
47275
|
-
const { invoke: invoke2 } = await import("./core-dG4_vufa.js");
|
|
47276
|
-
return invoke2(cmd2, args);
|
|
47277
|
-
}
|
|
47278
|
-
throw new Error(`desktopInvoke('${cmd2}') called outside a desktop shell`);
|
|
47279
|
-
}
|
|
47280
|
-
async function desktopStartDragging() {
|
|
47281
|
-
const bridge = electronBridge$2();
|
|
47282
|
-
if (bridge) {
|
|
47283
|
-
await bridge.startDragging();
|
|
47284
|
-
return;
|
|
47285
|
-
}
|
|
47286
|
-
if (isTauri$2) {
|
|
47287
|
-
const { getCurrentWindow } = await import("./window-Qr88gZCE.js");
|
|
47288
|
-
await getCurrentWindow().startDragging();
|
|
47289
|
-
}
|
|
47301
|
+
throw new Error(`desktopInvoke('${cmd2}') called outside the desktop shell`);
|
|
47290
47302
|
}
|
|
47291
47303
|
function DashboardShell({ toolbarMenuItems, hideTitleBar }) {
|
|
47292
47304
|
const { projects, isLoading: loading } = useProjects();
|
|
@@ -47302,23 +47314,11 @@ function DashboardShell({ toolbarMenuItems, hideTitleBar }) {
|
|
|
47302
47314
|
const { state: hooksState, install: installHooks } = useHooksSetup();
|
|
47303
47315
|
const { state: cliState, install: installCli } = useCliSetup();
|
|
47304
47316
|
const [appTitle, setAppTitle] = reactExports.useState("Band");
|
|
47305
|
-
const titleBarRef = reactExports.useRef(null);
|
|
47306
47317
|
reactExports.useEffect(() => {
|
|
47307
47318
|
if (!isDesktop$1) return;
|
|
47308
47319
|
desktopInvoke$1("get_app_title").then(setAppTitle).catch(() => {
|
|
47309
47320
|
});
|
|
47310
47321
|
}, []);
|
|
47311
|
-
reactExports.useEffect(() => {
|
|
47312
|
-
const el = titleBarRef.current;
|
|
47313
|
-
if (!isDesktop$1 || !el) return;
|
|
47314
|
-
const onMouseDown = (e2) => {
|
|
47315
|
-
if (e2.buttons !== 1) return;
|
|
47316
|
-
desktopStartDragging().catch(() => {
|
|
47317
|
-
});
|
|
47318
|
-
};
|
|
47319
|
-
el.addEventListener("mousedown", onMouseDown);
|
|
47320
|
-
return () => el.removeEventListener("mousedown", onMouseDown);
|
|
47321
|
-
}, []);
|
|
47322
47322
|
useStatusWatcher();
|
|
47323
47323
|
useBranchStatusWatcher();
|
|
47324
47324
|
useSetupStatusWatcher();
|
|
@@ -47369,9 +47369,8 @@ function DashboardShell({ toolbarMenuItems, hideTitleBar }) {
|
|
|
47369
47369
|
isDesktop$1 && !hideTitleBar && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
47370
47370
|
"div",
|
|
47371
47371
|
{
|
|
47372
|
-
ref: titleBarRef,
|
|
47373
|
-
"data-tauri-drag-region": true,
|
|
47374
47372
|
className: "h-[38px] shrink-0 flex items-center justify-center border-b border-border",
|
|
47373
|
+
style: { WebkitAppRegion: "drag" },
|
|
47375
47374
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground select-none pointer-events-none", children: appTitle })
|
|
47376
47375
|
}
|
|
47377
47376
|
),
|
|
@@ -49835,6 +49834,25 @@ function storeDiffMode(mode) {
|
|
|
49835
49834
|
} catch {
|
|
49836
49835
|
}
|
|
49837
49836
|
}
|
|
49837
|
+
const COMPARE_BRANCH_KEY_PREFIX = "band:diff-compare-branch:";
|
|
49838
|
+
function getStoredCompareBranch(workspaceId) {
|
|
49839
|
+
try {
|
|
49840
|
+
return localStorage.getItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
|
|
49841
|
+
} catch {
|
|
49842
|
+
return null;
|
|
49843
|
+
}
|
|
49844
|
+
}
|
|
49845
|
+
function storeCompareBranch(workspaceId, branch) {
|
|
49846
|
+
try {
|
|
49847
|
+
if (branch) {
|
|
49848
|
+
localStorage.setItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId, branch);
|
|
49849
|
+
} else {
|
|
49850
|
+
localStorage.removeItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
|
|
49851
|
+
}
|
|
49852
|
+
} catch {
|
|
49853
|
+
}
|
|
49854
|
+
}
|
|
49855
|
+
const UNCOMMITTED_VALUE = "__uncommitted__";
|
|
49838
49856
|
const EXPAND_ALL_KEY = "band:diff-expand-all";
|
|
49839
49857
|
function getStoredExpandAll() {
|
|
49840
49858
|
try {
|
|
@@ -50407,7 +50425,6 @@ function DiffView({
|
|
|
50407
50425
|
const adapter2 = useAdapter();
|
|
50408
50426
|
const [summary, setSummary] = reactExports.useState(null);
|
|
50409
50427
|
const summaryRef = reactExports.useRef(null);
|
|
50410
|
-
const [baseBranch, setBaseBranch] = reactExports.useState(null);
|
|
50411
50428
|
const [error, setError] = reactExports.useState(null);
|
|
50412
50429
|
const [loading, setLoading] = reactExports.useState(true);
|
|
50413
50430
|
const fetchSummaryRef = reactExports.useRef(null);
|
|
@@ -50419,6 +50436,16 @@ function DiffView({
|
|
|
50419
50436
|
const [viewMode, setViewModeState] = reactExports.useState(getStoredViewMode);
|
|
50420
50437
|
const [diffMode, setDiffModeState] = reactExports.useState(getStoredDiffMode);
|
|
50421
50438
|
const [expandAll, setExpandAllState] = reactExports.useState(getStoredExpandAll);
|
|
50439
|
+
const [compareBranch, setCompareBranchState] = reactExports.useState(
|
|
50440
|
+
() => getStoredCompareBranch(workspaceId)
|
|
50441
|
+
);
|
|
50442
|
+
const [availableBranches, setAvailableBranches] = reactExports.useState(() => {
|
|
50443
|
+
const stored = getStoredCompareBranch(workspaceId);
|
|
50444
|
+
return stored ? [stored] : [];
|
|
50445
|
+
});
|
|
50446
|
+
const [availableDefaultBranch, setAvailableDefaultBranch] = reactExports.useState(null);
|
|
50447
|
+
const compareBranchRef = reactExports.useRef(compareBranch);
|
|
50448
|
+
compareBranchRef.current = compareBranch;
|
|
50422
50449
|
const setViewMode = reactExports.useCallback((mode) => {
|
|
50423
50450
|
setViewModeState(mode);
|
|
50424
50451
|
storeViewMode(mode);
|
|
@@ -50427,6 +50454,50 @@ function DiffView({
|
|
|
50427
50454
|
setDiffModeState(mode);
|
|
50428
50455
|
storeDiffMode(mode);
|
|
50429
50456
|
}, []);
|
|
50457
|
+
const setCompareBranch = reactExports.useCallback(
|
|
50458
|
+
(branch) => {
|
|
50459
|
+
setCompareBranchState(branch);
|
|
50460
|
+
storeCompareBranch(workspaceId, branch);
|
|
50461
|
+
},
|
|
50462
|
+
[workspaceId]
|
|
50463
|
+
);
|
|
50464
|
+
reactExports.useEffect(() => {
|
|
50465
|
+
const stored = getStoredCompareBranch(workspaceId);
|
|
50466
|
+
setCompareBranchState(stored);
|
|
50467
|
+
setAvailableBranches(stored ? [stored] : []);
|
|
50468
|
+
setAvailableDefaultBranch(null);
|
|
50469
|
+
}, [workspaceId]);
|
|
50470
|
+
reactExports.useEffect(() => {
|
|
50471
|
+
const listWorkspaceBranches = adapter2.listWorkspaceBranches;
|
|
50472
|
+
if (!listWorkspaceBranches) return;
|
|
50473
|
+
let cancelled = false;
|
|
50474
|
+
const fetchBranches = () => {
|
|
50475
|
+
listWorkspaceBranches.call(adapter2, workspaceId).then((result) => {
|
|
50476
|
+
if (cancelled) return;
|
|
50477
|
+
setAvailableBranches(result.branches);
|
|
50478
|
+
setAvailableDefaultBranch(result.defaultBranch);
|
|
50479
|
+
const current = compareBranchRef.current;
|
|
50480
|
+
if (current && !result.branches.includes(current)) {
|
|
50481
|
+
setCompareBranch(null);
|
|
50482
|
+
}
|
|
50483
|
+
}).catch(() => {
|
|
50484
|
+
});
|
|
50485
|
+
};
|
|
50486
|
+
fetchBranches();
|
|
50487
|
+
let unsubscribe;
|
|
50488
|
+
if (active) {
|
|
50489
|
+
unsubscribe = adapter2.subscribeStatusEvents((event) => {
|
|
50490
|
+
const data = event;
|
|
50491
|
+
if (data.kind === "branch-status" && data.workspaceId === workspaceId) {
|
|
50492
|
+
fetchBranches();
|
|
50493
|
+
}
|
|
50494
|
+
});
|
|
50495
|
+
}
|
|
50496
|
+
return () => {
|
|
50497
|
+
cancelled = true;
|
|
50498
|
+
unsubscribe?.();
|
|
50499
|
+
};
|
|
50500
|
+
}, [adapter2, workspaceId, active, setCompareBranch]);
|
|
50430
50501
|
const setExpandAll = reactExports.useCallback((v2) => {
|
|
50431
50502
|
setExpandAllState(v2);
|
|
50432
50503
|
storeExpandAll(v2);
|
|
@@ -50478,6 +50549,23 @@ function DiffView({
|
|
|
50478
50549
|
setFocusedFile({ path: filePath, seq: focusSeqRef.current });
|
|
50479
50550
|
}, []);
|
|
50480
50551
|
const [activeFile, setActiveFile] = reactExports.useState(null);
|
|
50552
|
+
const [scrollContainerHeight, setScrollContainerHeight] = reactExports.useState(0);
|
|
50553
|
+
const [scrollContainerWidth, setScrollContainerWidth] = reactExports.useState(0);
|
|
50554
|
+
reactExports.useLayoutEffect(() => {
|
|
50555
|
+
const container = scrollContainerRef.current;
|
|
50556
|
+
if (!container) return;
|
|
50557
|
+
const update = () => {
|
|
50558
|
+
setScrollContainerHeight(container.clientHeight);
|
|
50559
|
+
setScrollContainerWidth(container.clientWidth);
|
|
50560
|
+
};
|
|
50561
|
+
update();
|
|
50562
|
+
if (typeof ResizeObserver === "undefined") return;
|
|
50563
|
+
const observer = new ResizeObserver(update);
|
|
50564
|
+
observer.observe(container);
|
|
50565
|
+
return () => observer.disconnect();
|
|
50566
|
+
}, [summary]);
|
|
50567
|
+
const SPLIT_VIEW_MIN_WIDTH = 640;
|
|
50568
|
+
const effectiveViewMode = scrollContainerWidth > 0 && scrollContainerWidth < SPLIT_VIEW_MIN_WIDTH ? "unified" : viewMode;
|
|
50481
50569
|
reactExports.useEffect(() => {
|
|
50482
50570
|
const container = scrollContainerRef.current;
|
|
50483
50571
|
if (!container) return;
|
|
@@ -50490,28 +50578,18 @@ function DiffView({
|
|
|
50490
50578
|
const names = filenamesRef.current;
|
|
50491
50579
|
if (names.length === 0) return;
|
|
50492
50580
|
const rect2 = container.getBoundingClientRect();
|
|
50493
|
-
const
|
|
50494
|
-
if (container.scrollTop <= EDGE_BUFFER) {
|
|
50495
|
-
setActiveFile((prev2) => prev2 === names[0] ? prev2 : names[0]);
|
|
50496
|
-
return;
|
|
50497
|
-
}
|
|
50498
|
-
if (container.scrollHeight - container.scrollTop - container.clientHeight <= EDGE_BUFFER) {
|
|
50499
|
-
const last = names[names.length - 1];
|
|
50500
|
-
setActiveFile((prev2) => prev2 === last ? prev2 : last);
|
|
50501
|
-
return;
|
|
50502
|
-
}
|
|
50503
|
-
const center = rect2.top + rect2.height / 2;
|
|
50581
|
+
const top2 = rect2.top;
|
|
50504
50582
|
let closest = null;
|
|
50505
50583
|
let closestDist = Infinity;
|
|
50506
50584
|
for (const name2 of names) {
|
|
50507
50585
|
const el = document.getElementById(`diff-file-${encodeURIComponent(name2)}`);
|
|
50508
50586
|
if (!el) continue;
|
|
50509
50587
|
const elRect = el.getBoundingClientRect();
|
|
50510
|
-
if (elRect.top <=
|
|
50588
|
+
if (elRect.top <= top2 && elRect.bottom > top2) {
|
|
50511
50589
|
closest = name2;
|
|
50512
50590
|
break;
|
|
50513
50591
|
}
|
|
50514
|
-
const dist2 = Math.
|
|
50592
|
+
const dist2 = Math.abs(elRect.top - top2);
|
|
50515
50593
|
if (dist2 < closestDist) {
|
|
50516
50594
|
closestDist = dist2;
|
|
50517
50595
|
closest = name2;
|
|
@@ -50625,7 +50703,7 @@ function DiffView({
|
|
|
50625
50703
|
(filename) => {
|
|
50626
50704
|
const revertFile = adapter2.revertFile;
|
|
50627
50705
|
if (!revertFile) return;
|
|
50628
|
-
revertFile.call(adapter2, workspaceId, filename, diffMode).then(() => {
|
|
50706
|
+
revertFile.call(adapter2, workspaceId, filename, diffMode, compareBranch ?? void 0).then(() => {
|
|
50629
50707
|
setDiffCache((prev2) => {
|
|
50630
50708
|
const next2 = new Map(prev2);
|
|
50631
50709
|
next2.delete(filename);
|
|
@@ -50637,7 +50715,7 @@ function DiffView({
|
|
|
50637
50715
|
console.error("Failed to revert file:", err);
|
|
50638
50716
|
});
|
|
50639
50717
|
},
|
|
50640
|
-
[adapter2, workspaceId, diffMode]
|
|
50718
|
+
[adapter2, workspaceId, diffMode, compareBranch]
|
|
50641
50719
|
);
|
|
50642
50720
|
reactExports.useEffect(() => {
|
|
50643
50721
|
const getWorkspaceDiffSummary = adapter2.getWorkspaceDiffSummary;
|
|
@@ -50650,7 +50728,7 @@ function DiffView({
|
|
|
50650
50728
|
expandedFilesRef.current = /* @__PURE__ */ new Set();
|
|
50651
50729
|
prevFingerprintRef.current = "";
|
|
50652
50730
|
const fetchSummary = (forceRefresh = false) => {
|
|
50653
|
-
getWorkspaceDiffSummary.call(adapter2, workspaceId, diffMode).then((result) => {
|
|
50731
|
+
getWorkspaceDiffSummary.call(adapter2, workspaceId, diffMode, compareBranch ?? void 0).then((result) => {
|
|
50654
50732
|
if (!cancelled) {
|
|
50655
50733
|
const fingerprint = JSON.stringify({
|
|
50656
50734
|
fileStatuses: result.fileStatuses,
|
|
@@ -50662,7 +50740,6 @@ function DiffView({
|
|
|
50662
50740
|
summaryRef.current = result;
|
|
50663
50741
|
if (dataChanged) {
|
|
50664
50742
|
setSummary(result);
|
|
50665
|
-
setBaseBranch(result.baseBranch);
|
|
50666
50743
|
}
|
|
50667
50744
|
setError(null);
|
|
50668
50745
|
if (forceRefresh || dataChanged) {
|
|
@@ -50709,49 +50786,82 @@ function DiffView({
|
|
|
50709
50786
|
fetchSummaryRef.current = null;
|
|
50710
50787
|
unsubscribe?.();
|
|
50711
50788
|
};
|
|
50712
|
-
}, [adapter2, workspaceId, active, onStatsChange, diffMode, fetchFileDiff]);
|
|
50789
|
+
}, [adapter2, workspaceId, active, onStatsChange, diffMode, compareBranch, fetchFileDiff]);
|
|
50790
|
+
const summaryCompareBranch = summary?.compareBranch ?? null;
|
|
50791
|
+
const defaultBranch = summary?.defaultBranch ?? availableDefaultBranch ?? null;
|
|
50792
|
+
const branchOptions = availableBranches.length > 0 ? availableBranches : summaryCompareBranch ? [summaryCompareBranch] : [];
|
|
50793
|
+
const targetBranch = compareBranch ?? branchOptions[0] ?? summaryCompareBranch;
|
|
50794
|
+
const topSectionBranches = [];
|
|
50795
|
+
if (targetBranch) {
|
|
50796
|
+
topSectionBranches.push(targetBranch);
|
|
50797
|
+
}
|
|
50798
|
+
if (defaultBranch && defaultBranch !== targetBranch && branchOptions.includes(defaultBranch)) {
|
|
50799
|
+
topSectionBranches.push(defaultBranch);
|
|
50800
|
+
}
|
|
50801
|
+
const otherBranches = branchOptions.filter((b2) => !topSectionBranches.includes(b2)).sort((a2, b2) => a2.localeCompare(b2));
|
|
50802
|
+
const diffSelectValue = diffMode === "uncommitted" ? UNCOMMITTED_VALUE : targetBranch ?? UNCOMMITTED_VALUE;
|
|
50803
|
+
const handleDiffSelectChange = (value) => {
|
|
50804
|
+
if (value === UNCOMMITTED_VALUE) {
|
|
50805
|
+
setDiffMode("uncommitted");
|
|
50806
|
+
} else {
|
|
50807
|
+
setDiffMode("branch");
|
|
50808
|
+
setCompareBranch(value);
|
|
50809
|
+
}
|
|
50810
|
+
};
|
|
50811
|
+
const renderDiffSelect = () => /* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: diffSelectValue, onValueChange: handleDiffSelectChange, children: [
|
|
50812
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-6 w-auto max-w-[300px] gap-1 rounded-md border-0 bg-transparent px-1.5 text-xs font-medium text-foreground shadow-none hover:bg-accent [&>[data-slot=select-value]]:truncate [&>[data-slot=select-value]]:block", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {}) }),
|
|
50813
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
50814
|
+
topSectionBranches.map((branch) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: branch, children: branch }, branch)),
|
|
50815
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: UNCOMMITTED_VALUE, children: "Uncommitted" }),
|
|
50816
|
+
otherBranches.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(SelectSeparator, {}),
|
|
50817
|
+
otherBranches.map((branch) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: branch, children: branch }, branch))
|
|
50818
|
+
] })
|
|
50819
|
+
] });
|
|
50713
50820
|
if (loading) {
|
|
50714
50821
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-sm text-muted-foreground", children: "Loading changes..." });
|
|
50715
50822
|
}
|
|
50716
50823
|
if (error) {
|
|
50717
50824
|
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full items-center justify-center text-sm text-destructive", children: error });
|
|
50718
50825
|
}
|
|
50826
|
+
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";
|
|
50827
|
+
const ghostBtnAlwaysClass = "inline-flex size-7 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground";
|
|
50828
|
+
const renderSidebarToggle = () => /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50829
|
+
"button",
|
|
50830
|
+
{
|
|
50831
|
+
type: "button",
|
|
50832
|
+
onClick: () => setSidebarOpen(!sidebarOpen),
|
|
50833
|
+
className: ghostBtnClass,
|
|
50834
|
+
title: sidebarOpen ? "Hide file tree" : "Show file tree",
|
|
50835
|
+
"aria-label": sidebarOpen ? "Hide file tree" : "Show file tree",
|
|
50836
|
+
"aria-pressed": sidebarOpen,
|
|
50837
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
|
|
50838
|
+
}
|
|
50839
|
+
);
|
|
50840
|
+
const renderBranchIndicator = (headBranchLabel) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
|
|
50841
|
+
headBranchLabel && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1.5 @[32rem]/diff:flex", children: [
|
|
50842
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: headBranchLabel }),
|
|
50843
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { className: "size-3", "aria-hidden": true })
|
|
50844
|
+
] }),
|
|
50845
|
+
renderDiffSelect()
|
|
50846
|
+
] });
|
|
50719
50847
|
if (!summary || summary.stats.filesChanged === 0) {
|
|
50720
50848
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col overflow-hidden", children: [
|
|
50721
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex shrink-0 items-center
|
|
50722
|
-
|
|
50723
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
50724
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "uncommitted", children: "Uncommitted" }),
|
|
50725
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "branch", children: baseBranch ?? "base" })
|
|
50726
|
-
] })
|
|
50727
|
-
] }) }),
|
|
50728
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex flex-1 items-center justify-center text-sm text-muted-foreground", children: "No changes" })
|
|
50849
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-9 shrink-0 items-center gap-3 border-b border-border pl-3 pr-3", children: renderBranchIndicator(summary?.headBranch) }),
|
|
50850
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm text-muted-foreground", children: "No changes" }) })
|
|
50729
50851
|
] });
|
|
50730
50852
|
}
|
|
50731
50853
|
const fileStatuses = summary.fileStatuses || {};
|
|
50732
50854
|
const filenames = flattenFileTreeOrder(buildFileTree(fileStatuses));
|
|
50733
50855
|
filenamesRef.current = filenames;
|
|
50734
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full overflow-hidden", children: [
|
|
50856
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "@container/diff flex h-full overflow-hidden", children: [
|
|
50735
50857
|
sidebarOpen && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
50736
50858
|
"div",
|
|
50737
50859
|
{
|
|
50738
50860
|
"data-diff-sidebar": true,
|
|
50739
|
-
className: "hidden shrink-0 flex-col
|
|
50861
|
+
className: "hidden shrink-0 flex-col @[40rem]/diff:flex",
|
|
50740
50862
|
style: { width: sidebarWidth },
|
|
50741
50863
|
children: [
|
|
50742
|
-
/* @__PURE__ */ jsxRuntimeExports.
|
|
50743
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Files" }),
|
|
50744
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50745
|
-
"button",
|
|
50746
|
-
{
|
|
50747
|
-
type: "button",
|
|
50748
|
-
onClick: () => setSidebarOpen(false),
|
|
50749
|
-
className: "rounded p-0.5 text-muted-foreground hover:bg-accent/50 hover:text-foreground",
|
|
50750
|
-
title: "Hide file tree",
|
|
50751
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
|
|
50752
|
-
}
|
|
50753
|
-
)
|
|
50754
|
-
] }),
|
|
50864
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-9 shrink-0 items-center border-b border-border px-3", children: /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Files" }) }),
|
|
50755
50865
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-y-auto py-1", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50756
50866
|
ChangesFileTree,
|
|
50757
50867
|
{
|
|
@@ -50767,52 +50877,24 @@ function DiffView({
|
|
|
50767
50877
|
"div",
|
|
50768
50878
|
{
|
|
50769
50879
|
onMouseDown: handleResizeStart,
|
|
50770
|
-
className: "hidden w-[3px] shrink-0 cursor-col-resize bg-border/50 transition-colors hover:bg-accent-foreground/20 active:bg-accent-foreground/30
|
|
50880
|
+
className: "hidden w-[3px] shrink-0 cursor-col-resize bg-border/50 transition-colors hover:bg-accent-foreground/20 active:bg-accent-foreground/30 @[40rem]/diff:block"
|
|
50771
50881
|
}
|
|
50772
50882
|
),
|
|
50773
50883
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 flex-col overflow-hidden", children: [
|
|
50774
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center justify-between border-b border-border
|
|
50775
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-
|
|
50776
|
-
|
|
50777
|
-
|
|
50778
|
-
{
|
|
50779
|
-
type: "button",
|
|
50780
|
-
onClick: () => setSidebarOpen(true),
|
|
50781
|
-
className: "hidden items-center rounded-md border border-border/50 bg-muted/50 px-2 py-1 text-xs text-muted-foreground transition-colors hover:text-foreground md:inline-flex",
|
|
50782
|
-
title: "Show file tree",
|
|
50783
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
|
|
50784
|
-
}
|
|
50785
|
-
),
|
|
50786
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
|
|
50787
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "text-sm text-muted-foreground", children: [
|
|
50788
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: summary.stats.filesChanged }),
|
|
50789
|
-
" ",
|
|
50790
|
-
summary.stats.filesChanged === 1 ? "file" : "files",
|
|
50791
|
-
" changed",
|
|
50792
|
-
summary.stats.insertions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 text-green-600 dark:text-green-400", children: [
|
|
50793
|
-
"+",
|
|
50794
|
-
summary.stats.insertions
|
|
50795
|
-
] }),
|
|
50796
|
-
summary.stats.deletions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-1 text-red-600 dark:text-red-400", children: [
|
|
50797
|
-
"-",
|
|
50798
|
-
summary.stats.deletions
|
|
50799
|
-
] })
|
|
50800
|
-
] }),
|
|
50801
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-0.5 text-xs text-muted-foreground", children: [
|
|
50802
|
-
summary.baseBranch,
|
|
50803
|
-
" ← ",
|
|
50804
|
-
summary.headBranch
|
|
50805
|
-
] })
|
|
50806
|
-
] })
|
|
50884
|
+
/* @__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: [
|
|
50885
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
50886
|
+
renderSidebarToggle(),
|
|
50887
|
+
renderBranchIndicator(summary.headBranch)
|
|
50807
50888
|
] }),
|
|
50808
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "
|
|
50889
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1 @[32rem]/diff:flex", children: [
|
|
50809
50890
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50810
50891
|
"button",
|
|
50811
50892
|
{
|
|
50812
50893
|
type: "button",
|
|
50813
50894
|
onClick: () => fetchSummaryRef.current?.(true),
|
|
50814
|
-
className:
|
|
50895
|
+
className: ghostBtnAlwaysClass,
|
|
50815
50896
|
title: "Reload changes",
|
|
50897
|
+
"aria-label": "Reload changes",
|
|
50816
50898
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "size-3.5" })
|
|
50817
50899
|
}
|
|
50818
50900
|
),
|
|
@@ -50821,8 +50903,9 @@ function DiffView({
|
|
|
50821
50903
|
{
|
|
50822
50904
|
type: "button",
|
|
50823
50905
|
onClick: search2.handleOpenSearch,
|
|
50824
|
-
className:
|
|
50906
|
+
className: ghostBtnAlwaysClass,
|
|
50825
50907
|
title: "Find in changes (⌘F)",
|
|
50908
|
+
"aria-label": "Find in changes",
|
|
50826
50909
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "size-3.5" })
|
|
50827
50910
|
}
|
|
50828
50911
|
),
|
|
@@ -50831,26 +50914,23 @@ function DiffView({
|
|
|
50831
50914
|
{
|
|
50832
50915
|
type: "button",
|
|
50833
50916
|
onClick: () => setExpandAll(!expandAll),
|
|
50834
|
-
className:
|
|
50917
|
+
className: `${ghostBtnAlwaysClass} ${expandAll ? "bg-accent text-foreground" : ""}`,
|
|
50835
50918
|
title: expandAll ? "Collapse all files" : "Expand all files",
|
|
50919
|
+
"aria-label": expandAll ? "Collapse all files" : "Expand all files",
|
|
50920
|
+
"aria-pressed": expandAll,
|
|
50836
50921
|
children: expandAll ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsDownUp, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsUpDown, { className: "size-3.5" })
|
|
50837
50922
|
}
|
|
50838
50923
|
),
|
|
50839
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
50840
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-7 w-auto gap-1 rounded-md border-border/50 bg-muted/50 px-2.5 text-xs", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {}) }),
|
|
50841
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
|
|
50842
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "uncommitted", children: "Uncommitted" }),
|
|
50843
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: "branch", children: baseBranch ?? "base" })
|
|
50844
|
-
] })
|
|
50845
|
-
] }),
|
|
50846
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center rounded-md border border-border/50 bg-muted/50 md:flex", children: [
|
|
50924
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center @[40rem]/diff:flex", children: [
|
|
50847
50925
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50848
50926
|
"button",
|
|
50849
50927
|
{
|
|
50850
50928
|
type: "button",
|
|
50851
50929
|
onClick: () => setViewMode("unified"),
|
|
50852
|
-
className:
|
|
50930
|
+
className: `${ghostBtnAlwaysClass} ${effectiveViewMode === "unified" ? "bg-accent text-foreground" : ""}`,
|
|
50853
50931
|
title: "Unified view",
|
|
50932
|
+
"aria-label": "Unified view",
|
|
50933
|
+
"aria-pressed": effectiveViewMode === "unified",
|
|
50854
50934
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Rows2, { className: "size-3.5" })
|
|
50855
50935
|
}
|
|
50856
50936
|
),
|
|
@@ -50859,13 +50939,52 @@ function DiffView({
|
|
|
50859
50939
|
{
|
|
50860
50940
|
type: "button",
|
|
50861
50941
|
onClick: () => setViewMode("split"),
|
|
50862
|
-
className:
|
|
50942
|
+
className: `${ghostBtnAlwaysClass} ${effectiveViewMode === "split" ? "bg-accent text-foreground" : ""}`,
|
|
50863
50943
|
title: "Split view",
|
|
50944
|
+
"aria-label": "Split view",
|
|
50945
|
+
"aria-pressed": effectiveViewMode === "split",
|
|
50864
50946
|
children: /* @__PURE__ */ jsxRuntimeExports.jsx(Columns2, { className: "size-3.5" })
|
|
50865
50947
|
}
|
|
50866
50948
|
)
|
|
50867
50949
|
] })
|
|
50868
|
-
] })
|
|
50950
|
+
] }),
|
|
50951
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center @[32rem]/diff:hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
50952
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50953
|
+
"button",
|
|
50954
|
+
{
|
|
50955
|
+
type: "button",
|
|
50956
|
+
className: ghostBtnAlwaysClass,
|
|
50957
|
+
title: "More actions",
|
|
50958
|
+
"aria-label": "More actions",
|
|
50959
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(EllipsisVertical, { className: "size-3.5" })
|
|
50960
|
+
}
|
|
50961
|
+
) }),
|
|
50962
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "end", children: [
|
|
50963
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => fetchSummaryRef.current?.(true), children: [
|
|
50964
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(RefreshCw, { className: "size-4" }),
|
|
50965
|
+
"Reload changes"
|
|
50966
|
+
] }),
|
|
50967
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: search2.handleOpenSearch, children: [
|
|
50968
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "size-4" }),
|
|
50969
|
+
"Find in changes"
|
|
50970
|
+
] }),
|
|
50971
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => setExpandAll(!expandAll), children: [
|
|
50972
|
+
expandAll ? /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsDownUp, { className: "size-4" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronsUpDown, { className: "size-4" }),
|
|
50973
|
+
expandAll ? "Collapse all files" : "Expand all files"
|
|
50974
|
+
] }),
|
|
50975
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuSeparator, {}),
|
|
50976
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => setViewMode("unified"), children: [
|
|
50977
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Rows2, { className: "size-4" }),
|
|
50978
|
+
"Unified view",
|
|
50979
|
+
effectiveViewMode === "unified" && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "ml-auto size-4" })
|
|
50980
|
+
] }),
|
|
50981
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onSelect: () => setViewMode("split"), children: [
|
|
50982
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Columns2, { className: "size-4" }),
|
|
50983
|
+
"Split view",
|
|
50984
|
+
effectiveViewMode === "split" && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "ml-auto size-4" })
|
|
50985
|
+
] })
|
|
50986
|
+
] })
|
|
50987
|
+
] }) })
|
|
50869
50988
|
] }),
|
|
50870
50989
|
search2.searchOpen && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
50871
50990
|
SearchBar,
|
|
@@ -50882,26 +51001,57 @@ function DiffView({
|
|
|
50882
51001
|
onClose: search2.handleCloseSearch
|
|
50883
51002
|
}
|
|
50884
51003
|
),
|
|
50885
|
-
/* @__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) =>
|
|
50886
|
-
|
|
50887
|
-
|
|
50888
|
-
|
|
50889
|
-
|
|
50890
|
-
|
|
50891
|
-
|
|
50892
|
-
|
|
50893
|
-
|
|
50894
|
-
|
|
50895
|
-
|
|
50896
|
-
|
|
50897
|
-
|
|
50898
|
-
|
|
50899
|
-
|
|
50900
|
-
|
|
50901
|
-
|
|
50902
|
-
|
|
50903
|
-
|
|
50904
|
-
|
|
51004
|
+
/* @__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) => {
|
|
51005
|
+
const isLast = index2 === filenames.length - 1;
|
|
51006
|
+
const row2 = /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
51007
|
+
LazyFileRow,
|
|
51008
|
+
{
|
|
51009
|
+
filename,
|
|
51010
|
+
status: fileStatuses[filename],
|
|
51011
|
+
cacheEntry: diffCache.get(filename),
|
|
51012
|
+
viewMode: effectiveViewMode,
|
|
51013
|
+
expandAll,
|
|
51014
|
+
focusedFile,
|
|
51015
|
+
isActive: activeFile === filename,
|
|
51016
|
+
scrollContainerRef,
|
|
51017
|
+
onToggleFile: handleToggleFile,
|
|
51018
|
+
onLoadMoreContext: handleLoadMoreContext,
|
|
51019
|
+
onShowFullFile: handleShowFullFile,
|
|
51020
|
+
onOpenFile,
|
|
51021
|
+
onRevertFile: adapter2.revertFile ? handleRevertFile : void 0,
|
|
51022
|
+
onEditorViews: handleEditorViews
|
|
51023
|
+
},
|
|
51024
|
+
filename
|
|
51025
|
+
);
|
|
51026
|
+
if (!isLast) return row2;
|
|
51027
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
51028
|
+
"div",
|
|
51029
|
+
{
|
|
51030
|
+
className: "flex flex-col",
|
|
51031
|
+
style: scrollContainerHeight > 0 ? { minHeight: scrollContainerHeight } : void 0,
|
|
51032
|
+
children: [
|
|
51033
|
+
row2,
|
|
51034
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { "aria-hidden": true, className: "flex-1" })
|
|
51035
|
+
]
|
|
51036
|
+
},
|
|
51037
|
+
`${filename}-last-wrapper`
|
|
51038
|
+
);
|
|
51039
|
+
}) }) }),
|
|
51040
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center border-t border-border px-3 text-sm text-muted-foreground", children: [
|
|
51041
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: summary.stats.filesChanged }),
|
|
51042
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-1", children: [
|
|
51043
|
+
summary.stats.filesChanged === 1 ? "file" : "files",
|
|
51044
|
+
" changed"
|
|
51045
|
+
] }),
|
|
51046
|
+
summary.stats.insertions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-2 text-green-600 dark:text-green-400", children: [
|
|
51047
|
+
"+",
|
|
51048
|
+
summary.stats.insertions
|
|
51049
|
+
] }),
|
|
51050
|
+
summary.stats.deletions > 0 && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "ml-1 text-red-600 dark:text-red-400", children: [
|
|
51051
|
+
"-",
|
|
51052
|
+
summary.stats.deletions
|
|
51053
|
+
] })
|
|
51054
|
+
] })
|
|
50905
51055
|
] })
|
|
50906
51056
|
] });
|
|
50907
51057
|
}
|
|
@@ -58530,19 +58680,24 @@ class WebDashboardAdapter {
|
|
|
58530
58680
|
async installCli(opts) {
|
|
58531
58681
|
await this.trpc.cli.install.mutate(opts);
|
|
58532
58682
|
}
|
|
58533
|
-
async getWorkspaceDiff(workspaceId, contextLines, diffMode) {
|
|
58683
|
+
async getWorkspaceDiff(workspaceId, contextLines, diffMode, compareBranch) {
|
|
58534
58684
|
return await this.trpc.workspace.getDiff.query({
|
|
58535
58685
|
workspaceId,
|
|
58536
58686
|
contextLines,
|
|
58537
|
-
diffMode
|
|
58687
|
+
diffMode,
|
|
58688
|
+
compareBranch
|
|
58538
58689
|
});
|
|
58539
58690
|
}
|
|
58540
|
-
async getWorkspaceDiffSummary(workspaceId, diffMode) {
|
|
58691
|
+
async getWorkspaceDiffSummary(workspaceId, diffMode, compareBranch) {
|
|
58541
58692
|
return await this.trpc.workspace.getDiffSummary.query({
|
|
58542
58693
|
workspaceId,
|
|
58543
|
-
diffMode
|
|
58694
|
+
diffMode,
|
|
58695
|
+
compareBranch
|
|
58544
58696
|
});
|
|
58545
58697
|
}
|
|
58698
|
+
async listWorkspaceBranches(workspaceId) {
|
|
58699
|
+
return await this.trpc.workspace.listBranches.query({ workspaceId });
|
|
58700
|
+
}
|
|
58546
58701
|
async getFileDiff(workspaceId, filePath, mergeBase, contextLines) {
|
|
58547
58702
|
return await this.trpc.workspace.getFileDiff.query({
|
|
58548
58703
|
workspaceId,
|
|
@@ -58560,8 +58715,13 @@ class WebDashboardAdapter {
|
|
|
58560
58715
|
async saveWorkspaceFile(workspaceId, path2, content2) {
|
|
58561
58716
|
await this.trpc.workspace.saveFile.mutate({ workspaceId, path: path2, content: content2 });
|
|
58562
58717
|
}
|
|
58563
|
-
async revertFile(workspaceId, filePath, diffMode) {
|
|
58564
|
-
await this.trpc.workspace.revertFile.mutate({
|
|
58718
|
+
async revertFile(workspaceId, filePath, diffMode, compareBranch) {
|
|
58719
|
+
await this.trpc.workspace.revertFile.mutate({
|
|
58720
|
+
workspaceId,
|
|
58721
|
+
filePath,
|
|
58722
|
+
diffMode,
|
|
58723
|
+
compareBranch
|
|
58724
|
+
});
|
|
58565
58725
|
}
|
|
58566
58726
|
getWorkspaceFileUrl(workspaceId, path2) {
|
|
58567
58727
|
return `/api/workspace-file/${encodeURIComponent(workspaceId)}/${path2.split("/").map(encodeURIComponent).join("/")}`;
|
|
@@ -58605,17 +58765,14 @@ class WebCapabilities {
|
|
|
58605
58765
|
window.open(url, "_blank");
|
|
58606
58766
|
}
|
|
58607
58767
|
}
|
|
58608
|
-
function
|
|
58609
|
-
return typeof window !== "undefined" && "__TAURI_INTERNALS__" in window;
|
|
58610
|
-
}
|
|
58611
|
-
function isElectron$1() {
|
|
58768
|
+
function isElectron() {
|
|
58612
58769
|
return typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
|
|
58613
58770
|
}
|
|
58614
58771
|
function isDesktopShell() {
|
|
58615
|
-
return
|
|
58772
|
+
return isElectron();
|
|
58616
58773
|
}
|
|
58617
58774
|
function electronBridge$1() {
|
|
58618
|
-
if (!isElectron
|
|
58775
|
+
if (!isElectron()) return null;
|
|
58619
58776
|
const bridge = window.__BAND_DESKTOP__;
|
|
58620
58777
|
return bridge ?? null;
|
|
58621
58778
|
}
|
|
@@ -58624,13 +58781,9 @@ async function desktopInvoke(cmd2, args) {
|
|
|
58624
58781
|
if (bridge) {
|
|
58625
58782
|
return await bridge.invoke(cmd2, args);
|
|
58626
58783
|
}
|
|
58627
|
-
|
|
58628
|
-
const { invoke: invoke2 } = await import("./core-dG4_vufa.js");
|
|
58629
|
-
return invoke2(cmd2, args);
|
|
58630
|
-
}
|
|
58631
|
-
throw new Error(`desktopInvoke('${cmd2}') called outside a desktop shell`);
|
|
58784
|
+
throw new Error(`desktopInvoke('${cmd2}') called outside the desktop shell`);
|
|
58632
58785
|
}
|
|
58633
|
-
class
|
|
58786
|
+
class DesktopDashboardAdapter extends WebDashboardAdapter {
|
|
58634
58787
|
async installCli(opts) {
|
|
58635
58788
|
try {
|
|
58636
58789
|
await super.installCli();
|
|
@@ -58676,12 +58829,7 @@ class NativeShellCapabilities {
|
|
|
58676
58829
|
window.open(url, "_blank");
|
|
58677
58830
|
return;
|
|
58678
58831
|
}
|
|
58679
|
-
|
|
58680
|
-
await desktopInvoke("open_external", { url });
|
|
58681
|
-
return;
|
|
58682
|
-
}
|
|
58683
|
-
const { open: open2 } = await import("./index-jMSXp5h7.js");
|
|
58684
|
-
await open2(url);
|
|
58832
|
+
await desktopInvoke("open_external", { url });
|
|
58685
58833
|
}
|
|
58686
58834
|
}
|
|
58687
58835
|
function gt(e2, t2) {
|
|
@@ -60719,6 +60867,364 @@ function Qt$1({
|
|
|
60719
60867
|
);
|
|
60720
60868
|
}
|
|
60721
60869
|
Qt$1.displayName = "Separator";
|
|
60870
|
+
const isDesktop = typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
|
|
60871
|
+
function electronBridge() {
|
|
60872
|
+
if (!isDesktop) return null;
|
|
60873
|
+
const bridge = window.__BAND_DESKTOP__;
|
|
60874
|
+
return bridge ?? null;
|
|
60875
|
+
}
|
|
60876
|
+
async function invoke(cmd2, args) {
|
|
60877
|
+
const bridge = electronBridge();
|
|
60878
|
+
if (bridge) {
|
|
60879
|
+
return await bridge.invoke(cmd2, args);
|
|
60880
|
+
}
|
|
60881
|
+
throw new Error(`invoke('${cmd2}') called outside the desktop shell`);
|
|
60882
|
+
}
|
|
60883
|
+
async function listen(event, cb) {
|
|
60884
|
+
const bridge = electronBridge();
|
|
60885
|
+
if (bridge) {
|
|
60886
|
+
return bridge.on(event, (payload) => cb({ payload }));
|
|
60887
|
+
}
|
|
60888
|
+
throw new Error(`listen('${event}') called outside the desktop shell`);
|
|
60889
|
+
}
|
|
60890
|
+
const androidStudioIcon = "/assets/android-studio-t3zZ7G0e.svg";
|
|
60891
|
+
const antigravityIcon = "/assets/antigravity-m-mWKI7R.svg";
|
|
60892
|
+
const cursorIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5436_78947)'%3e%3cmask%20id='mask0_5436_78947'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='4'%20y='4'%20width='32'%20height='32'%3e%3cpath%20d='M4%204H36V36H4V4Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5436_78947)'%3e%3cpath%20d='M28.375%204H11.625C7.41383%204%204%207.41383%204%2011.625V28.375C4%2032.5862%207.41383%2036%2011.625%2036H28.375C32.5862%2036%2036%2032.5862%2036%2028.375V11.625C36%207.41383%2032.5862%204%2028.375%204Z'%20fill='black'/%3e%3c/g%3e%3cpath%20d='M29.6214%2014.2072L20.9502%209.12249C20.6718%208.95917%2020.3282%208.95917%2020.0498%209.12249L11.3786%2014.2072C11.1445%2014.3445%2011%2014.5984%2011%2014.8733V25.1267C11%2025.4012%2011.1445%2025.6555%2011.3786%2025.7928L20.0498%2030.8775C20.3282%2031.0408%2020.6718%2031.0408%2020.9502%2030.8775L29.6214%2025.7928C29.8555%2025.6555%2030%2025.4016%2030%2025.1267V14.8733C30%2014.5988%2029.8555%2014.3445%2029.6214%2014.2072ZM29.0767%2015.2843L20.706%2030.0101C20.6494%2030.1093%2020.5%2030.0688%2020.5%2029.9538V20.3115C20.5%2020.1189%2020.3986%2019.9407%2020.2342%2019.8439L12.0124%2015.0226C11.9147%2014.9651%2011.9546%2014.8134%2012.0678%2014.8134H28.8093C29.047%2014.8134%2029.1956%2015.0751%2029.0767%2015.2843Z'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5436_78947'%3e%3crect%20width='32'%20height='32'%20fill='white'%20transform='translate(4%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
60893
|
+
const finderIcon = "data:image/png;base64,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";
|
|
60894
|
+
const ghosttyIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79067)'%3e%3cpath%20d='M27.395%2036C26.1435%2035.9986%2024.9203%2035.6274%2023.879%2034.933C22.8374%2035.6273%2021.6139%2035.9985%2020.362%2036C19.113%2036%2017.882%2035.625%2016.846%2034.933C15.8189%2035.6241%2014.61%2035.9954%2013.372%2036H13.334C12.4944%2036.0006%2011.6633%2035.8321%2010.8902%2035.5047C10.1171%2035.1772%209.41781%2034.6975%208.83405%2034.094C7.65642%2032.8996%206.99679%2031.2893%206.99805%2029.612V17.362C7.00005%209.995%2012.994%204%2020.362%204C27.731%204%2033.725%209.994%2033.725%2017.363V29.616C33.725%2033.009%2031.099%2035.808%2027.747%2035.991C27.63%2035.998%2027.513%2036%2027.395%2036Z'%20fill='%233551F3'/%3e%3cpath%20d='M27.395%2034.5932C26.2752%2034.5924%2025.1889%2034.2104%2024.315%2033.5102C24.1961%2033.4145%2024.0476%2033.3632%2023.895%2033.3652C23.7174%2033.367%2023.5457%2033.4291%2023.408%2033.5412C22.5392%2034.2237%2021.4668%2034.5951%2020.362%2034.5962C19.2576%2034.5949%2018.1855%2034.2234%2017.317%2033.5412C17.1835%2033.4338%2017.0174%2033.3752%2016.846%2033.3752C16.6747%2033.3752%2016.5085%2033.4338%2016.375%2033.5412C15.518%2034.2199%2014.4581%2034.5914%2013.365%2034.5962H13.332C12.6806%2034.5961%2012.0359%2034.4649%2011.4362%2034.2102C10.8366%2033.9556%2010.2945%2033.5829%209.84201%2033.1142C8.92225%2032.1822%208.40639%2030.9256%208.40601%2029.6162V17.3672C8.40601%2010.7702%2013.77%205.40723%2020.363%205.40723C26.955%205.40723%2032.319%2010.7702%2032.319%2017.3632V29.6162C32.319%2032.2612%2030.277%2034.4432%2027.669%2034.5862C27.5777%2034.5909%2027.4864%2034.5932%2027.395%2034.5932Z'%20fill='black'/%3e%3cpath%20d='M30.912%2017.3635V29.6165C30.912%2031.4925%2029.465%2033.0795%2027.592%2033.1825C26.725%2033.2323%2025.8704%2032.9582%2025.194%2032.4135C24.416%2031.7875%2023.321%2031.8155%2022.536%2032.4345C21.9163%2032.9237%2021.1495%2033.1891%2020.36%2033.1875C19.5714%2033.1889%2018.8056%2032.9235%2018.187%2032.4345C17.8057%2032.1306%2017.3326%2031.9651%2016.845%2031.9651C16.3574%2031.9651%2015.8843%2032.1306%2015.503%2032.4345C14.8904%2032.9183%2014.1336%2033.1834%2013.353%2033.1875C11.405%2033.2015%209.81299%2031.5605%209.81299%2029.6125V17.3625C9.81299%2011.5375%2014.537%206.81348%2020.363%206.81348C26.188%206.81348%2030.912%2011.5375%2030.912%2017.3635Z'%20fill='white'/%3e%3cpath%20d='M18.28%2016.4366L14.35%2014.1666C14.104%2014.0248%2013.8117%2013.9865%2013.5374%2014.06C13.2632%2014.1335%2013.0292%2014.3128%2012.887%2014.5586C12.7452%2014.8045%2012.7067%2015.0966%2012.78%2015.3709C12.8533%2015.6452%2013.0324%2015.8792%2013.278%2016.0216L15.604%2017.3646L13.278%2018.7076C13.045%2018.8559%2012.8783%2019.0886%2012.8126%2019.3569C12.7469%2019.6252%2012.7873%2019.9085%2012.9255%2020.1478C13.0636%2020.387%2013.2887%2020.5637%2013.554%2020.641C13.8192%2020.7183%2014.104%2020.6902%2014.349%2020.5626L18.281%2018.2926C18.4436%2018.1985%2018.5786%2018.0633%2018.6724%2017.9006C18.7662%2017.7379%2018.8156%2017.5534%2018.8156%2017.3656C18.8156%2017.1777%2018.7662%2016.9932%2018.6724%2016.8305C18.5786%2016.6678%2018.4436%2016.5326%2018.281%2016.4386V16.4366H18.28ZM27.182%2016.2906H22.018C21.7338%2016.2906%2021.4613%2016.4034%2021.2604%2016.6044C21.0594%2016.8053%2020.9465%2017.0779%2020.9465%2017.3621C20.9465%2017.6462%2021.0594%2017.9188%2021.2604%2018.1197C21.4613%2018.3207%2021.7338%2018.4336%2022.018%2018.4336H27.182C27.4662%2018.4336%2027.7387%2018.3207%2027.9397%2018.1197C28.1406%2017.9188%2028.2535%2017.6462%2028.2535%2017.3621C28.2535%2017.0779%2028.1406%2016.8053%2027.9397%2016.6044C27.7387%2016.4034%2027.4662%2016.2906%2027.182%2016.2906Z'%20fill='black'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79067'%3e%3crect%20width='27'%20height='32'%20fill='white'%20transform='translate(7%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
60895
|
+
const intellijIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0Y5N0ExMiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGQzI5QjgiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPklKPC90ZXh0Pgo8L3N2Zz4K";
|
|
60896
|
+
const iterm2Icon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='4'%20y='4'%20width='32'%20height='32'%20rx='6.4'%20fill='url(%23paint0_linear_5437_79079)'/%3e%3crect%20x='4.80005'%20y='4.7998'%20width='30.4'%20height='30.4'%20rx='5.6'%20fill='black'/%3e%3crect%20x='7.19995'%20y='7.2002'%20width='25.6'%20height='25.6'%20rx='3.2'%20fill='%23202A2F'/%3e%3cpath%20d='M25.2454%208.85742H19.2454V20.8574H25.2454V8.85742Z'%20fill='%230EE827'%20fill-opacity='0.35'/%3e%3cpath%20d='M11.7895%2018.9218C11.4758%2018.8949%2011.1817%2018.85%2010.9072%2018.7872C10.6424%2018.7154%2010.3973%2018.6392%2010.1718%2018.5584C9.95613%2018.4776%209.76496%2018.4014%209.59829%2018.3296C9.44145%2018.2488%209.32378%2018.186%209.24536%2018.1412L9.87771%2016.9567C9.94631%2017.0016%2010.064%2017.0644%2010.2306%2017.1452C10.3973%2017.2259%2010.5836%2017.3111%2010.7895%2017.4009C11.0052%2017.4816%2011.2257%2017.5534%2011.4513%2017.6162C11.6768%2017.679%2011.8875%2017.7105%2012.0836%2017.7105C13.064%2017.7105%2013.5542%2017.3381%2013.5542%2016.5933C13.5542%2016.4138%2013.5199%2016.2658%2013.4512%2016.1492C13.3925%2016.0325%2013.2993%2015.9338%2013.1719%2015.853C13.0542%2015.7633%2012.9071%2015.687%2012.7307%2015.6242C12.564%2015.5525%2012.3729%2015.4806%2012.1571%2015.4089C11.7453%2015.2653%2011.3777%2015.1172%2011.0542%2014.9647C10.7405%2014.8032%2010.4708%2014.6237%2010.2454%2014.4263C10.0199%2014.2289%209.8483%2014.0046%209.73063%2013.7534C9.61303%2013.5021%209.5542%2013.2149%209.5542%2012.8919C9.5542%2012.6407%209.60812%2012.3984%209.71596%2012.1651C9.82379%2011.9318%209.97572%2011.7254%2010.1718%2011.546C10.3679%2011.3576%2010.6032%2011.2005%2010.8777%2011.0749C11.1522%2010.9403%2011.4562%2010.8461%2011.7895%2010.7922V8.85742H12.9954V10.7653C13.2503%2010.7922%2013.4954%2010.8326%2013.7307%2010.8865C13.966%2010.9403%2014.1767%2010.9986%2014.363%2011.0614C14.5493%2011.1242%2014.7062%2011.1871%2014.8336%2011.2499C14.9709%2011.3037%2015.0689%2011.3441%2015.1278%2011.371L14.5395%2012.4747C14.4611%2012.4388%2014.3483%2012.3939%2014.2012%2012.3401C14.064%2012.2773%2013.9072%2012.2144%2013.7307%2012.1517C13.5542%2012.0888%2013.363%2012.035%2013.1571%2011.9901C12.9513%2011.9453%2012.7454%2011.9228%2012.5395%2011.9228C12.2062%2011.9228%2011.9071%2011.9856%2011.6424%2012.1112C11.3875%2012.2279%2011.2601%2012.4298%2011.2601%2012.7169C11.2601%2012.8964%2011.2944%2013.058%2011.363%2013.2015C11.4414%2013.3361%2011.5493%2013.4573%2011.6865%2013.5649C11.8336%2013.6726%2012.0101%2013.7758%2012.2159%2013.8745C12.4316%2013.9642%2012.6768%2014.054%2012.9513%2014.1437C13.314%2014.2782%2013.6376%2014.4173%2013.9218%2014.5609C14.2062%2014.7045%2014.4463%2014.866%2014.6424%2015.0455C14.8385%2015.2249%2014.9856%2015.4313%2015.0836%2015.6646C15.1914%2015.8979%2015.2454%2016.1715%2015.2454%2016.4856C15.2454%2016.7548%2015.1964%2017.015%2015.0983%2017.2662C15.0101%2017.5175%2014.8679%2017.7508%2014.6718%2017.9661C14.4856%2018.1815%2014.2503%2018.3699%2013.966%2018.5315C13.6915%2018.684%2013.3679%2018.7962%2012.9954%2018.8679V20.8574H11.7895V18.9218Z'%20fill='%230EE827'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_5437_79079'%20x1='20'%20y1='4'%20x2='20'%20y2='36'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23D4E6E8'/%3e%3cstop%20offset='1'%20stop-color='%23767573'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";
|
|
60897
|
+
const kiroIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZGOTkwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjY2MDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8dGV4dCB4PSI1NiIgeT0iMTc4IiBmaWxsPSIjZmZmIiBmb250LWZhbWlseT0iQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGZvbnQtd2VpZ2h0PSJib2xkIiBmb250LXNpemU9IjcyIj5LPC90ZXh0Pgo8L3N2Zz4K";
|
|
60898
|
+
const rustroverIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZDODAxRCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCNzRDRjAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPlJSPC90ZXh0Pgo8L3N2Zz4K";
|
|
60899
|
+
const sublimetextIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5436_78897)'%3e%3cpath%20d='M35.911%2020.0773C35.911%2019.7026%2035.552%2019.4866%2035.1114%2019.5939L4.79962%2027.0055C4.35812%2027.1135%204%2027.5052%204%2027.8792V35.4541C4%2035.8288%204.35812%2036.0455%204.79962%2035.9375L35.1114%2028.5266C35.552%2028.4187%2035.911%2028.0269%2035.911%2027.6523V20.0774V20.0773Z'%20fill='url(%23paint0_linear_5436_78897)'/%3e%3cpath%20d='M4%2019.8353C4%2020.21%204.35812%2020.6016%204.79962%2020.7097L35.1159%2028.1219C35.5573%2028.2299%2035.9155%2028.0133%2035.9155%2027.6393V20.0637C35.9155%2019.6897%2035.5573%2019.298%2035.1159%2019.19L4.79962%2011.7778C4.35812%2011.6699%204%2011.8858%204%2012.2603V19.8353V19.8353Z'%20fill='%23FF9800'/%3e%3cpath%20d='M35.911%204.51106C35.911%204.1365%2035.552%203.91973%2035.1114%204.02778L4.79962%2011.4387C4.35812%2011.5466%204%2011.9383%204%2012.313V19.8879C4%2020.2626%204.35812%2020.4786%204.79962%2020.3712L35.1114%2012.9596C35.552%2012.8517%2035.911%2012.46%2035.911%2012.086V4.51106Z'%20fill='%23FF9800'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_5436_78897'%20x1='1762.84'%20y1='981.852'%20x2='1845.15'%20y2='624.882'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FF9700'/%3e%3cstop%20offset='0.53'%20stop-color='%23F48E00'/%3e%3cstop%20offset='1'%20stop-color='%23D06F00'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_5436_78897'%3e%3crect%20width='32'%20height='32'%20fill='white'%20transform='translate(4%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
60900
|
+
const terminalIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAA0RJREFUeAHtmM9PE0EUx18pJCRaugUhQkuqXgi3eqDVpJFK+g9w8Ejkohcg4I8DFynECxdEAlz0gA0nNYF4kkODRDQmNQQ8NRhjbd1FrQHankja3XFm7DbN7rQMyS7l0E+y3dmZt/u+mffednYAatSoLpZKg9s//wawRUhKJj2/90QBLNgcocJt+EyvAQo/UBwv2qkeCm7o2P/ri+3OtOuSewcpEL7quvACTsJ2PC5sJf8sPQw9Rh2dnaigwPCjw9WJJmfm0FYyNUt8Ai+f4+Ls3dEHpgnTHndG76NoXFpiaanXdnz8Gh988+rl2LO5GXrd2NgILS0tUFdXB0aSy+Vgf3+fnp/PPYFztvODn2Lx8PXuyxuldroc/BD79u5WMBD4JYnQ0NAAbrfbcHEqiqKAKIpwdHQE7U4XvI683/B3X7lZaqPzLCV+eIg4Qmtrq2niqHP8bBIdAvEpJr57dDbajj1RLCar1Wot9i8vL0MwGAQzRKpgkXbduLZDlmVg4XQ6YXFxkR6kbQZKXtalnE4gwnnBYmhoCKLRKJ3F9fV1mJ6eNlwozkkExwlU5Dzz5lgsBgMDAzA+Pg6SJEF/fz8VOjw8DMYJ1EePO8Qqq6ur0NfXR2eT4PP5wChknhArZUKs4vV6acGQczabhUgkAkbBil693kguK2xkZISeCSsrK7CwsEDDbRSs/OcWqBYFCe38/HwxxEbCSi+9QIUtkAgis1ZO2O7uLpSjq6sLeGD51gnEicq8mVSv2XDNIFIqV3E5eGepEkjmeM0cV8VmIvMILBfi00DhmkFURYFIHz3GX10VBeZ5ZrCaApUzLhAXCcdqpopVjF9xxy8WZPmMVzGqqkCOKrbZbGm1fRqzWZpS2Pehdlwn0C7YdxwOB20fHByYmpPk2alUirYF7FMQhC9aG/1iQZanfNd8gbW3a/R7NZFIQFtbm+Gfn0Sc+uFOCAQCkM/nwlw3PwqFlnp7e09t6+MG9jUxMfGUpaWe1Wm1WO75/f40zomxzc1NyGQyYAaCYIeeHi9ZpYdxhCZZNhW33/AacBBvmd3OpA896WxW/aBHFry/hkr24TTXWrT7dNSmydaUdjQ37+DmFF6tb0CNGmeUfwIH0sS3Pm7dAAAAAElFTkSuQmCC";
|
|
60901
|
+
const textmateIcon = "data:image/png;base64,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";
|
|
60902
|
+
const vscodeIcon = "/assets/vscode-C5BXgFjm.svg";
|
|
60903
|
+
const warpIcon = "data:image/png;base64,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";
|
|
60904
|
+
const webstormIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzA3QzNGMiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwODdDRkEiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPldTPC90ZXh0Pgo8L3N2Zz4K";
|
|
60905
|
+
const windSurfIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cdefs%3e%3clinearGradient%20id='a'%20x1='0'%20y1='0'%20x2='256'%20y2='256'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%230ACF83'/%3e%3cstop%20offset='1'%20stop-color='%2305A2C2'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20width='256'%20height='256'%20rx='48'%20fill='url(%23a)'/%3e%3cpath%20d='M80%2080%20L176%20128%20L80%20176Z'%20fill='%23fff'/%3e%3c/svg%3e";
|
|
60906
|
+
const xcodeIcon = "data:image/png;base64,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";
|
|
60907
|
+
const zedIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79109)'%3e%3cmask%20id='mask0_5437_79109'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='5'%20width='30'%20height='30'%3e%3cpath%20d='M5.6001%205.59961H34.4001V34.3996H5.6001V5.59961Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5437_79109)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.3001%207.39961C8.0614%207.39961%207.83248%207.49443%207.6637%207.66321C7.49492%207.832%207.4001%208.06091%207.4001%208.29961V28.0996H5.6001V8.29961C5.6001%207.58352%205.88456%206.89677%206.39091%206.39042C6.89726%205.88407%207.58401%205.59961%208.3001%205.59961H32.4138C33.6165%205.59961%2034.2186%207.05371%2033.3684%207.90421L18.5166%2022.7557H22.7001V20.8996H24.5001V23.206C24.5001%2023.5641%2024.3579%2023.9074%2024.1047%2024.1606C23.8515%2024.4138%2023.5081%2024.556%2023.1501%2024.556H16.7166L13.623%2027.6496H27.6501V16.3996H29.4501V27.6496C29.4501%2028.127%2029.2605%2028.5848%2028.9229%2028.9224C28.5853%2029.26%2028.1275%2029.4496%2027.6501%2029.4496H11.823L8.673%2032.5996H31.7001C31.9388%2032.5996%2032.1677%2032.5048%2032.3365%2032.336C32.5053%2032.1672%2032.6001%2031.9383%2032.6001%2031.6996V11.8996H34.4001V31.6996C34.4001%2032.4157%2034.1156%2033.1024%2033.6093%2033.6088C33.1029%2034.1151%2032.4162%2034.3996%2031.7001%2034.3996H7.5864C6.3837%2034.3996%205.7816%2032.9455%206.6318%2032.095L21.4272%2017.2996H17.3001V19.0996H15.5001V16.8496C15.5001%2016.4916%2015.6423%2016.1482%2015.8955%2015.895C16.1487%2015.6418%2016.4921%2015.4996%2016.8501%2015.4996H23.2272L26.3772%2012.3496H12.3501V23.5996H10.5501V12.3496C10.5501%2011.8722%2010.7397%2011.4144%2011.0773%2011.0768C11.4149%2010.7393%2011.8727%2010.5496%2012.3501%2010.5496H28.1772L31.3272%207.39961H8.3001Z'%20fill='black'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79109'%3e%3crect%20width='28.8'%20height='28.8'%20fill='white'%20transform='translate(5.6001%205.59961)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
60908
|
+
const zedDarkIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79100)'%3e%3cmask%20id='mask0_5437_79100'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='5'%20width='30'%20height='30'%3e%3cpath%20d='M5.6001%205.59961H34.4001V34.3996H5.6001V5.59961Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5437_79100)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.3001%207.39961C8.0614%207.39961%207.83248%207.49443%207.6637%207.66321C7.49492%207.832%207.4001%208.06091%207.4001%208.29961V28.0996H5.6001V8.29961C5.6001%207.58352%205.88456%206.89677%206.39091%206.39042C6.89726%205.88407%207.58401%205.59961%208.3001%205.59961H32.4138C33.6165%205.59961%2034.2186%207.05371%2033.3684%207.90421L18.5166%2022.7557H22.7001V20.8996H24.5001V23.206C24.5001%2023.5641%2024.3579%2023.9074%2024.1047%2024.1606C23.8515%2024.4138%2023.5081%2024.556%2023.1501%2024.556H16.7166L13.623%2027.6496H27.6501V16.3996H29.4501V27.6496C29.4501%2028.127%2029.2605%2028.5848%2028.9229%2028.9224C28.5853%2029.26%2028.1275%2029.4496%2027.6501%2029.4496H11.823L8.673%2032.5996H31.7001C31.9388%2032.5996%2032.1677%2032.5048%2032.3365%2032.336C32.5053%2032.1672%2032.6001%2031.9383%2032.6001%2031.6996V11.8996H34.4001V31.6996C34.4001%2032.4157%2034.1156%2033.1024%2033.6093%2033.6088C33.1029%2034.1151%2032.4162%2034.3996%2031.7001%2034.3996H7.5864C6.3837%2034.3996%205.7816%2032.9455%206.6318%2032.095L21.4272%2017.2996H17.3001V19.0996H15.5001V16.8496C15.5001%2016.4916%2015.6423%2016.1482%2015.8955%2015.895C16.1487%2015.6418%2016.4921%2015.4996%2016.8501%2015.4996H23.2272L26.3772%2012.3496H12.3501V23.5996H10.5501V12.3496C10.5501%2011.8722%2010.7397%2011.4144%2011.0773%2011.0768C11.4149%2010.7393%2011.8727%2010.5496%2012.3501%2010.5496H28.1772L31.3272%207.39961H8.3001Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79100'%3e%3crect%20width='28.8'%20height='28.8'%20fill='white'%20transform='translate(5.6001%205.59961)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
60909
|
+
const APP_ICONS = {
|
|
60910
|
+
vscode: vscodeIcon,
|
|
60911
|
+
cursor: cursorIcon,
|
|
60912
|
+
zed: zedIcon,
|
|
60913
|
+
"zed-dark": zedDarkIcon,
|
|
60914
|
+
finder: finderIcon,
|
|
60915
|
+
terminal: terminalIcon,
|
|
60916
|
+
iterm2: iterm2Icon,
|
|
60917
|
+
ghostty: ghosttyIcon,
|
|
60918
|
+
warp: warpIcon,
|
|
60919
|
+
xcode: xcodeIcon,
|
|
60920
|
+
"android-studio": androidStudioIcon,
|
|
60921
|
+
antigravity: antigravityIcon,
|
|
60922
|
+
textmate: textmateIcon,
|
|
60923
|
+
"sublime-text": sublimetextIcon,
|
|
60924
|
+
intellij: intellijIcon,
|
|
60925
|
+
webstorm: webstormIcon,
|
|
60926
|
+
rustrover: rustroverIcon,
|
|
60927
|
+
windsurf: windSurfIcon,
|
|
60928
|
+
kiro: kiroIcon
|
|
60929
|
+
};
|
|
60930
|
+
function isDark$1() {
|
|
60931
|
+
return document.documentElement.classList.contains("dark");
|
|
60932
|
+
}
|
|
60933
|
+
function AppIcon({ id: id28, className }) {
|
|
60934
|
+
const [dark, setDark] = reactExports.useState(isDark$1);
|
|
60935
|
+
reactExports.useEffect(() => {
|
|
60936
|
+
const observer = new MutationObserver(() => setDark(isDark$1()));
|
|
60937
|
+
observer.observe(document.documentElement, {
|
|
60938
|
+
attributes: true,
|
|
60939
|
+
attributeFilter: ["class"]
|
|
60940
|
+
});
|
|
60941
|
+
return () => observer.disconnect();
|
|
60942
|
+
}, []);
|
|
60943
|
+
let src = APP_ICONS[id28];
|
|
60944
|
+
if (id28 === "zed" && dark) {
|
|
60945
|
+
src = APP_ICONS["zed-dark"];
|
|
60946
|
+
}
|
|
60947
|
+
if (!src) return null;
|
|
60948
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src, alt: "", draggable: false, className: className ?? "size-5" });
|
|
60949
|
+
}
|
|
60950
|
+
const MAC_APPS = [
|
|
60951
|
+
{ id: "vscode", label: "VS Code", icon: "vscode", openWith: "Visual Studio Code" },
|
|
60952
|
+
{ id: "cursor", label: "Cursor", icon: "cursor", openWith: "Cursor" },
|
|
60953
|
+
{ id: "zed", label: "Zed", icon: "zed", openWith: "Zed" },
|
|
60954
|
+
{ id: "windsurf", label: "Windsurf", icon: "windsurf", openWith: "Windsurf" },
|
|
60955
|
+
{ id: "kiro", label: "Kiro", icon: "kiro", openWith: "Kiro" },
|
|
60956
|
+
{ id: "xcode", label: "Xcode", icon: "xcode", openWith: "Xcode" },
|
|
60957
|
+
{ id: "antigravity", label: "Antigravity", icon: "antigravity", openWith: "Antigravity" },
|
|
60958
|
+
{ id: "textmate", label: "TextMate", icon: "textmate", openWith: "TextMate" },
|
|
60959
|
+
{ id: "sublime-text", label: "Sublime Text", icon: "sublime-text", openWith: "Sublime Text" },
|
|
60960
|
+
{ id: "intellij", label: "IntelliJ IDEA", icon: "intellij", openWith: "IntelliJ IDEA" },
|
|
60961
|
+
{ id: "webstorm", label: "WebStorm", icon: "webstorm", openWith: "WebStorm" },
|
|
60962
|
+
{ id: "rustrover", label: "RustRover", icon: "rustrover", openWith: "RustRover" },
|
|
60963
|
+
{ id: "iterm2", label: "iTerm2", icon: "iterm2", openWith: "iTerm" },
|
|
60964
|
+
{ id: "terminal", label: "Terminal", icon: "terminal", openWith: "Terminal" },
|
|
60965
|
+
{ id: "ghostty", label: "Ghostty", icon: "ghostty", openWith: "Ghostty" },
|
|
60966
|
+
{ id: "warp", label: "Warp", icon: "warp", openWith: "Warp" },
|
|
60967
|
+
{
|
|
60968
|
+
id: "android-studio",
|
|
60969
|
+
label: "Android Studio",
|
|
60970
|
+
icon: "android-studio",
|
|
60971
|
+
openWith: "Android Studio"
|
|
60972
|
+
}
|
|
60973
|
+
];
|
|
60974
|
+
function EditorPicker({ workspacePath, onCopyPath }) {
|
|
60975
|
+
const { settings } = useSettingsQuery();
|
|
60976
|
+
const updateSettings = useUpdateSettings();
|
|
60977
|
+
const [installed, setInstalled] = reactExports.useState({ finder: true });
|
|
60978
|
+
reactExports.useEffect(() => {
|
|
60979
|
+
if (!isDesktop) return;
|
|
60980
|
+
let cancelled = false;
|
|
60981
|
+
Promise.all(
|
|
60982
|
+
MAC_APPS.map(
|
|
60983
|
+
(app) => invoke("check_app_exists", { appName: app.openWith }).then((ok2) => [app.id, ok2]).catch(() => [app.id, false])
|
|
60984
|
+
)
|
|
60985
|
+
).then((entries2) => {
|
|
60986
|
+
if (cancelled) return;
|
|
60987
|
+
const map2 = { finder: true };
|
|
60988
|
+
for (const [id28, ok2] of entries2) {
|
|
60989
|
+
map2[id28] = ok2;
|
|
60990
|
+
}
|
|
60991
|
+
setInstalled(map2);
|
|
60992
|
+
});
|
|
60993
|
+
return () => {
|
|
60994
|
+
cancelled = true;
|
|
60995
|
+
};
|
|
60996
|
+
}, []);
|
|
60997
|
+
const options = reactExports.useMemo(() => {
|
|
60998
|
+
const finderItem = {
|
|
60999
|
+
id: "finder",
|
|
61000
|
+
label: "Finder",
|
|
61001
|
+
icon: "finder",
|
|
61002
|
+
openWith: "Finder"
|
|
61003
|
+
};
|
|
61004
|
+
const apps = MAC_APPS.filter((app) => installed[app.id]);
|
|
61005
|
+
return [finderItem, ...apps];
|
|
61006
|
+
}, [installed]);
|
|
61007
|
+
const selectedId = settings.defaultOpenApp;
|
|
61008
|
+
const current = reactExports.useMemo(
|
|
61009
|
+
() => options.find((o3) => o3.id === selectedId) ?? options[0],
|
|
61010
|
+
[options, selectedId]
|
|
61011
|
+
);
|
|
61012
|
+
const selectApp = reactExports.useCallback(
|
|
61013
|
+
(appId) => {
|
|
61014
|
+
updateSettings.mutate({
|
|
61015
|
+
...settings,
|
|
61016
|
+
defaultOpenApp: appId
|
|
61017
|
+
});
|
|
61018
|
+
},
|
|
61019
|
+
[settings, updateSettings]
|
|
61020
|
+
);
|
|
61021
|
+
const openWith = reactExports.useCallback(
|
|
61022
|
+
async (app) => {
|
|
61023
|
+
if (!isDesktop) return;
|
|
61024
|
+
if (app.id === "finder") {
|
|
61025
|
+
invoke("reveal_in_finder", { path: workspacePath }).catch(() => {
|
|
61026
|
+
});
|
|
61027
|
+
return;
|
|
61028
|
+
}
|
|
61029
|
+
invoke("open_with_app", {
|
|
61030
|
+
path: workspacePath,
|
|
61031
|
+
appName: app.openWith
|
|
61032
|
+
}).catch(() => {
|
|
61033
|
+
});
|
|
61034
|
+
},
|
|
61035
|
+
[workspacePath]
|
|
61036
|
+
);
|
|
61037
|
+
const handleMainClick = reactExports.useCallback(() => {
|
|
61038
|
+
openWith(current);
|
|
61039
|
+
}, [current, openWith]);
|
|
61040
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center rounded-md overflow-hidden border border-border/40", children: [
|
|
61041
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61042
|
+
"button",
|
|
61043
|
+
{
|
|
61044
|
+
type: "button",
|
|
61045
|
+
onClick: handleMainClick,
|
|
61046
|
+
onMouseDown: (e2) => e2.stopPropagation(),
|
|
61047
|
+
className: "flex items-center justify-center px-1 py-0.5 hover:bg-accent/50 transition-colors",
|
|
61048
|
+
title: `Open in ${current.label}`,
|
|
61049
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(AppIcon, { id: current.icon, className: "size-5" })
|
|
61050
|
+
}
|
|
61051
|
+
),
|
|
61052
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
61053
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61054
|
+
"button",
|
|
61055
|
+
{
|
|
61056
|
+
type: "button",
|
|
61057
|
+
onMouseDown: (e2) => e2.stopPropagation(),
|
|
61058
|
+
className: "flex items-center justify-center px-0.5 py-0.5 hover:bg-accent/50 transition-colors border-l border-border/40",
|
|
61059
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3.5 text-muted-foreground" })
|
|
61060
|
+
}
|
|
61061
|
+
) }),
|
|
61062
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "end", className: "min-w-[180px]", children: [
|
|
61063
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuLabel, { children: "Open in" }),
|
|
61064
|
+
options.map((app) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
61065
|
+
DropdownMenuItem,
|
|
61066
|
+
{
|
|
61067
|
+
onClick: () => {
|
|
61068
|
+
selectApp(app.id);
|
|
61069
|
+
openWith(app);
|
|
61070
|
+
},
|
|
61071
|
+
className: "gap-2",
|
|
61072
|
+
children: [
|
|
61073
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(AppIcon, { id: app.icon, className: "size-5 shrink-0" }),
|
|
61074
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1", children: app.label }),
|
|
61075
|
+
current.id === app.id && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-muted-foreground" })
|
|
61076
|
+
]
|
|
61077
|
+
},
|
|
61078
|
+
app.id
|
|
61079
|
+
)),
|
|
61080
|
+
onCopyPath && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
61081
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuSeparator, {}),
|
|
61082
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onClick: onCopyPath, className: "gap-2", children: [
|
|
61083
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-4 shrink-0 ml-0.5" }),
|
|
61084
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1", children: "Copy path" })
|
|
61085
|
+
] })
|
|
61086
|
+
] })
|
|
61087
|
+
] })
|
|
61088
|
+
] })
|
|
61089
|
+
] });
|
|
61090
|
+
}
|
|
61091
|
+
const DRAG_STYLE = { WebkitAppRegion: "drag" };
|
|
61092
|
+
const NO_DRAG_STYLE = { WebkitAppRegion: "no-drag" };
|
|
61093
|
+
function DesktopTitleBar({
|
|
61094
|
+
title,
|
|
61095
|
+
onToggleSidebar,
|
|
61096
|
+
sidebarCollapsed,
|
|
61097
|
+
workspaceName,
|
|
61098
|
+
workspacePath,
|
|
61099
|
+
onCopyPath,
|
|
61100
|
+
panelItems,
|
|
61101
|
+
hiddenPanels,
|
|
61102
|
+
onTogglePanelVisibility,
|
|
61103
|
+
onGoBack,
|
|
61104
|
+
onGoForward,
|
|
61105
|
+
canGoBack,
|
|
61106
|
+
canGoForward
|
|
61107
|
+
}) {
|
|
61108
|
+
const [appTitle, setAppTitle] = reactExports.useState(title ?? "Band");
|
|
61109
|
+
reactExports.useEffect(() => {
|
|
61110
|
+
if (title) return;
|
|
61111
|
+
if (!isDesktop) return;
|
|
61112
|
+
invoke("get_app_title").then(setAppTitle).catch(() => {
|
|
61113
|
+
});
|
|
61114
|
+
}, [title]);
|
|
61115
|
+
const hasEditorPicker = isDesktop && workspaceName && workspacePath;
|
|
61116
|
+
const hasPanels = workspaceName && panelItems && panelItems.length > 0 && onTogglePanelVisibility;
|
|
61117
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
61118
|
+
"div",
|
|
61119
|
+
{
|
|
61120
|
+
className: "h-[38px] shrink-0 flex items-center justify-center relative border-b border-border",
|
|
61121
|
+
style: DRAG_STYLE,
|
|
61122
|
+
children: [
|
|
61123
|
+
(onToggleSidebar || onGoBack || onGoForward) && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
61124
|
+
"div",
|
|
61125
|
+
{
|
|
61126
|
+
className: `absolute ${isDesktop ? "left-[80px]" : "left-2"} top-1/2 -translate-y-1/2 flex items-center gap-0.5 pointer-events-auto`,
|
|
61127
|
+
style: NO_DRAG_STYLE,
|
|
61128
|
+
children: [
|
|
61129
|
+
onToggleSidebar && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61130
|
+
"button",
|
|
61131
|
+
{
|
|
61132
|
+
type: "button",
|
|
61133
|
+
onClick: onToggleSidebar,
|
|
61134
|
+
className: "flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",
|
|
61135
|
+
title: sidebarCollapsed ? "Show sidebar" : "Hide sidebar",
|
|
61136
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-5" })
|
|
61137
|
+
}
|
|
61138
|
+
),
|
|
61139
|
+
(onGoBack || onGoForward) && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
61140
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
61141
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61142
|
+
"button",
|
|
61143
|
+
{
|
|
61144
|
+
type: "button",
|
|
61145
|
+
onClick: onGoBack,
|
|
61146
|
+
disabled: !canGoBack,
|
|
61147
|
+
className: "flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-muted-foreground",
|
|
61148
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronLeft, { className: "size-5" })
|
|
61149
|
+
}
|
|
61150
|
+
) }),
|
|
61151
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [
|
|
61152
|
+
"Back",
|
|
61153
|
+
" ",
|
|
61154
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("kbd", { className: "ml-1.5 rounded border border-popover-foreground/25 bg-popover-foreground/10 px-1 py-0.5 font-mono text-[14px]", children: "⌘[" })
|
|
61155
|
+
] })
|
|
61156
|
+
] }),
|
|
61157
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
61158
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61159
|
+
"button",
|
|
61160
|
+
{
|
|
61161
|
+
type: "button",
|
|
61162
|
+
onClick: onGoForward,
|
|
61163
|
+
disabled: !canGoForward,
|
|
61164
|
+
className: "flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors disabled:opacity-30 disabled:hover:bg-transparent disabled:hover:text-muted-foreground",
|
|
61165
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronRight, { className: "size-5" })
|
|
61166
|
+
}
|
|
61167
|
+
) }),
|
|
61168
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [
|
|
61169
|
+
"Forward",
|
|
61170
|
+
" ",
|
|
61171
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("kbd", { className: "ml-1.5 rounded border border-popover-foreground/25 bg-popover-foreground/10 px-1 py-0.5 font-mono text-[14px]", children: "⌘]" })
|
|
61172
|
+
] })
|
|
61173
|
+
] })
|
|
61174
|
+
] })
|
|
61175
|
+
]
|
|
61176
|
+
}
|
|
61177
|
+
),
|
|
61178
|
+
workspaceName ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-semibold text-foreground select-none pointer-events-none truncate max-w-[50%]", children: workspaceName }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground select-none pointer-events-none", children: appTitle }),
|
|
61179
|
+
(hasEditorPicker || hasPanels) && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
61180
|
+
"div",
|
|
61181
|
+
{
|
|
61182
|
+
className: "absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1 pointer-events-auto",
|
|
61183
|
+
style: NO_DRAG_STYLE,
|
|
61184
|
+
children: [
|
|
61185
|
+
hasEditorPicker && /* @__PURE__ */ jsxRuntimeExports.jsx(EditorPicker, { workspacePath, onCopyPath }),
|
|
61186
|
+
hasPanels && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
61187
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
61188
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
61189
|
+
"button",
|
|
61190
|
+
{
|
|
61191
|
+
type: "button",
|
|
61192
|
+
className: "flex items-center justify-center rounded-md p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",
|
|
61193
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelTop, { className: "size-5" })
|
|
61194
|
+
}
|
|
61195
|
+
) }) }),
|
|
61196
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "Switch Panel" })
|
|
61197
|
+
] }),
|
|
61198
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuContent, { align: "end", children: panelItems?.map((item) => {
|
|
61199
|
+
const Icon2 = item.icon;
|
|
61200
|
+
const isVisible = !hiddenPanels?.includes(item.id);
|
|
61201
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
61202
|
+
DropdownMenuCheckboxItem,
|
|
61203
|
+
{
|
|
61204
|
+
checked: isVisible,
|
|
61205
|
+
onCheckedChange: () => {
|
|
61206
|
+
onTogglePanelVisibility?.(item.id);
|
|
61207
|
+
},
|
|
61208
|
+
children: [
|
|
61209
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4" }),
|
|
61210
|
+
item.label,
|
|
61211
|
+
item.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuShortcut, { children: item.shortcut })
|
|
61212
|
+
]
|
|
61213
|
+
},
|
|
61214
|
+
item.id
|
|
61215
|
+
);
|
|
61216
|
+
}) })
|
|
61217
|
+
] })
|
|
61218
|
+
]
|
|
61219
|
+
}
|
|
61220
|
+
)
|
|
61221
|
+
]
|
|
61222
|
+
}
|
|
61223
|
+
);
|
|
61224
|
+
}
|
|
61225
|
+
function DesktopDragRegion() {
|
|
61226
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "h-[38px] shrink-0", style: DRAG_STYLE });
|
|
61227
|
+
}
|
|
60722
61228
|
function parseWorkspaceFromPath(pathname) {
|
|
60723
61229
|
const match = pathname.match(/^\/workspace\/([^/]+)/);
|
|
60724
61230
|
return match ? decodeURIComponent(match[1]) : null;
|
|
@@ -72153,47 +72659,6 @@ function useRecentFiles(workspaceId) {
|
|
|
72153
72659
|
);
|
|
72154
72660
|
return { recentFiles, trackFile };
|
|
72155
72661
|
}
|
|
72156
|
-
const isTauri = typeof window !== "undefined" && "__TAURI_INTERNALS__" in window;
|
|
72157
|
-
const isElectron = typeof window !== "undefined" && "__BAND_DESKTOP__" in window;
|
|
72158
|
-
const isDesktop = isTauri || isElectron;
|
|
72159
|
-
function electronBridge() {
|
|
72160
|
-
if (!isElectron) return null;
|
|
72161
|
-
const bridge = window.__BAND_DESKTOP__;
|
|
72162
|
-
return bridge ?? null;
|
|
72163
|
-
}
|
|
72164
|
-
async function invoke(cmd2, args) {
|
|
72165
|
-
const bridge = electronBridge();
|
|
72166
|
-
if (bridge) {
|
|
72167
|
-
return await bridge.invoke(cmd2, args);
|
|
72168
|
-
}
|
|
72169
|
-
if (isTauri) {
|
|
72170
|
-
const { invoke: tauriInvoke } = await import("./core-dG4_vufa.js");
|
|
72171
|
-
return tauriInvoke(cmd2, args);
|
|
72172
|
-
}
|
|
72173
|
-
throw new Error(`invoke('${cmd2}') called outside a desktop shell`);
|
|
72174
|
-
}
|
|
72175
|
-
async function listen(event, cb) {
|
|
72176
|
-
const bridge = electronBridge();
|
|
72177
|
-
if (bridge) {
|
|
72178
|
-
return bridge.on(event, (payload) => cb({ payload }));
|
|
72179
|
-
}
|
|
72180
|
-
if (isTauri) {
|
|
72181
|
-
const { listen: tauriListen } = await import("./event-2oMkw_LQ.js");
|
|
72182
|
-
return tauriListen(event, cb);
|
|
72183
|
-
}
|
|
72184
|
-
throw new Error(`listen('${event}') called outside a desktop shell`);
|
|
72185
|
-
}
|
|
72186
|
-
async function startDragging() {
|
|
72187
|
-
const bridge = electronBridge();
|
|
72188
|
-
if (bridge) {
|
|
72189
|
-
await bridge.startDragging();
|
|
72190
|
-
return;
|
|
72191
|
-
}
|
|
72192
|
-
if (isTauri) {
|
|
72193
|
-
const { getCurrentWindow } = await import("./window-Qr88gZCE.js");
|
|
72194
|
-
await getCurrentWindow().startDragging();
|
|
72195
|
-
}
|
|
72196
|
-
}
|
|
72197
72662
|
const wsClient = createWSClient({
|
|
72198
72663
|
url: () => {
|
|
72199
72664
|
const proto2 = location.protocol === "https:" ? "wss:" : "ws:";
|
|
@@ -111773,7 +112238,7 @@ const luminance = (color2) => {
|
|
|
111773
112238
|
const isLight = (color2) => {
|
|
111774
112239
|
return luminance(color2) >= 0.5;
|
|
111775
112240
|
};
|
|
111776
|
-
const isDark
|
|
112241
|
+
const isDark = (color2) => {
|
|
111777
112242
|
return !isLight(color2);
|
|
111778
112243
|
};
|
|
111779
112244
|
const adjustChannel = (color2, channel, amount) => {
|
|
@@ -113095,7 +113560,7 @@ var Theme2 = (_b2 = class {
|
|
|
113095
113560
|
this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });
|
|
113096
113561
|
this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });
|
|
113097
113562
|
this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });
|
|
113098
|
-
this.quadrantPointFill = this.quadrantPointFill || isDark
|
|
113563
|
+
this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);
|
|
113099
113564
|
this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
|
|
113100
113565
|
this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
|
|
113101
113566
|
this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
|
|
@@ -113395,7 +113860,7 @@ var Theme22 = (_c = class {
|
|
|
113395
113860
|
this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });
|
|
113396
113861
|
this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });
|
|
113397
113862
|
this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });
|
|
113398
|
-
this.quadrantPointFill = this.quadrantPointFill || isDark
|
|
113863
|
+
this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);
|
|
113399
113864
|
this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
|
|
113400
113865
|
this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
|
|
113401
113866
|
this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
|
|
@@ -113713,7 +114178,7 @@ var Theme3 = (_d = class {
|
|
|
113713
114178
|
this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });
|
|
113714
114179
|
this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });
|
|
113715
114180
|
this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });
|
|
113716
|
-
this.quadrantPointFill = this.quadrantPointFill || isDark
|
|
114181
|
+
this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);
|
|
113717
114182
|
this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
|
|
113718
114183
|
this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
|
|
113719
114184
|
this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
|
|
@@ -114014,7 +114479,7 @@ var Theme4 = (_e2 = class {
|
|
|
114014
114479
|
this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });
|
|
114015
114480
|
this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });
|
|
114016
114481
|
this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });
|
|
114017
|
-
this.quadrantPointFill = this.quadrantPointFill || isDark
|
|
114482
|
+
this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);
|
|
114018
114483
|
this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
|
|
114019
114484
|
this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
|
|
114020
114485
|
this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
|
|
@@ -114335,7 +114800,7 @@ var Theme5 = (_f = class {
|
|
|
114335
114800
|
this.quadrant2TextFill = this.quadrant2TextFill || adjust(this.primaryTextColor, { r: -5, g: -5, b: -5 });
|
|
114336
114801
|
this.quadrant3TextFill = this.quadrant3TextFill || adjust(this.primaryTextColor, { r: -10, g: -10, b: -10 });
|
|
114337
114802
|
this.quadrant4TextFill = this.quadrant4TextFill || adjust(this.primaryTextColor, { r: -15, g: -15, b: -15 });
|
|
114338
|
-
this.quadrantPointFill = this.quadrantPointFill || isDark
|
|
114803
|
+
this.quadrantPointFill = this.quadrantPointFill || isDark(this.quadrant1Fill) ? lighten(this.quadrant1Fill) : darken(this.quadrant1Fill);
|
|
114339
114804
|
this.quadrantPointTextFill = this.quadrantPointTextFill || this.primaryTextColor;
|
|
114340
114805
|
this.quadrantXAxisTextFill = this.quadrantXAxisTextFill || this.primaryTextColor;
|
|
114341
114806
|
this.quadrantYAxisTextFill = this.quadrantYAxisTextFill || this.primaryTextColor;
|
|
@@ -131995,12 +132460,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
|
|
|
131995
132460
|
registerLayoutLoaders([
|
|
131996
132461
|
{
|
|
131997
132462
|
name: "dagre",
|
|
131998
|
-
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-
|
|
132463
|
+
loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-Df3ty00_.js"), "loader")
|
|
131999
132464
|
},
|
|
132000
132465
|
...[
|
|
132001
132466
|
{
|
|
132002
132467
|
name: "cose-bilkent",
|
|
132003
|
-
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-
|
|
132468
|
+
loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-CxYiUQkd.js"), "loader")
|
|
132004
132469
|
}
|
|
132005
132470
|
]
|
|
132006
132471
|
]);
|
|
@@ -132439,7 +132904,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
|
|
|
132439
132904
|
return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
|
|
132440
132905
|
}, "detector");
|
|
132441
132906
|
var loader = /* @__PURE__ */ __name(async () => {
|
|
132442
|
-
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-
|
|
132907
|
+
const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-CAy_xf6J.js");
|
|
132443
132908
|
return { id, diagram: diagram2 };
|
|
132444
132909
|
}, "loader");
|
|
132445
132910
|
var plugin = {
|
|
@@ -132456,7 +132921,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132456
132921
|
return /^\s*graph/.test(txt);
|
|
132457
132922
|
}, "detector");
|
|
132458
132923
|
var loader2 = /* @__PURE__ */ __name(async () => {
|
|
132459
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
132924
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BkuGyDjs.js");
|
|
132460
132925
|
return { id: id2, diagram: diagram2 };
|
|
132461
132926
|
}, "loader");
|
|
132462
132927
|
var plugin2 = {
|
|
@@ -132479,7 +132944,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132479
132944
|
return /^\s*flowchart/.test(txt);
|
|
132480
132945
|
}, "detector");
|
|
132481
132946
|
var loader3 = /* @__PURE__ */ __name(async () => {
|
|
132482
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
132947
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BkuGyDjs.js");
|
|
132483
132948
|
return { id: id3, diagram: diagram2 };
|
|
132484
132949
|
}, "loader");
|
|
132485
132950
|
var plugin3 = {
|
|
@@ -132493,7 +132958,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
|
|
|
132493
132958
|
return /^\s*erDiagram/.test(txt);
|
|
132494
132959
|
}, "detector");
|
|
132495
132960
|
var loader4 = /* @__PURE__ */ __name(async () => {
|
|
132496
|
-
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-
|
|
132961
|
+
const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-CDZKFxtV.js");
|
|
132497
132962
|
return { id: id4, diagram: diagram2 };
|
|
132498
132963
|
}, "loader");
|
|
132499
132964
|
var plugin4 = {
|
|
@@ -132507,7 +132972,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
|
|
|
132507
132972
|
return /^\s*gitGraph/.test(txt);
|
|
132508
132973
|
}, "detector");
|
|
132509
132974
|
var loader5 = /* @__PURE__ */ __name(async () => {
|
|
132510
|
-
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-
|
|
132975
|
+
const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CQIdCHfs.js");
|
|
132511
132976
|
return { id: id5, diagram: diagram2 };
|
|
132512
132977
|
}, "loader");
|
|
132513
132978
|
var plugin5 = {
|
|
@@ -132521,7 +132986,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
|
|
|
132521
132986
|
return /^\s*gantt/.test(txt);
|
|
132522
132987
|
}, "detector");
|
|
132523
132988
|
var loader6 = /* @__PURE__ */ __name(async () => {
|
|
132524
|
-
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-
|
|
132989
|
+
const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-BivmZcb7.js");
|
|
132525
132990
|
return { id: id6, diagram: diagram2 };
|
|
132526
132991
|
}, "loader");
|
|
132527
132992
|
var plugin6 = {
|
|
@@ -132535,7 +133000,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
|
|
|
132535
133000
|
return /^\s*info/.test(txt);
|
|
132536
133001
|
}, "detector");
|
|
132537
133002
|
var loader7 = /* @__PURE__ */ __name(async () => {
|
|
132538
|
-
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-
|
|
133003
|
+
const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-Ba9kta0e.js");
|
|
132539
133004
|
return { id: id7, diagram: diagram2 };
|
|
132540
133005
|
}, "loader");
|
|
132541
133006
|
var info = {
|
|
@@ -132548,7 +133013,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
|
|
|
132548
133013
|
return /^\s*pie/.test(txt);
|
|
132549
133014
|
}, "detector");
|
|
132550
133015
|
var loader8 = /* @__PURE__ */ __name(async () => {
|
|
132551
|
-
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-
|
|
133016
|
+
const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-YhPnTxVL.js");
|
|
132552
133017
|
return { id: id8, diagram: diagram2 };
|
|
132553
133018
|
}, "loader");
|
|
132554
133019
|
var pie = {
|
|
@@ -132561,7 +133026,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
|
|
|
132561
133026
|
return /^\s*quadrantChart/.test(txt);
|
|
132562
133027
|
}, "detector");
|
|
132563
133028
|
var loader9 = /* @__PURE__ */ __name(async () => {
|
|
132564
|
-
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-
|
|
133029
|
+
const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-C_QHaemj.js");
|
|
132565
133030
|
return { id: id9, diagram: diagram2 };
|
|
132566
133031
|
}, "loader");
|
|
132567
133032
|
var plugin7 = {
|
|
@@ -132575,7 +133040,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
|
|
|
132575
133040
|
return /^\s*xychart(-beta)?/.test(txt);
|
|
132576
133041
|
}, "detector");
|
|
132577
133042
|
var loader10 = /* @__PURE__ */ __name(async () => {
|
|
132578
|
-
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-
|
|
133043
|
+
const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-CAkP7cKw.js");
|
|
132579
133044
|
return { id: id10, diagram: diagram2 };
|
|
132580
133045
|
}, "loader");
|
|
132581
133046
|
var plugin8 = {
|
|
@@ -132589,7 +133054,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
|
|
|
132589
133054
|
return /^\s*requirement(Diagram)?/.test(txt);
|
|
132590
133055
|
}, "detector");
|
|
132591
133056
|
var loader11 = /* @__PURE__ */ __name(async () => {
|
|
132592
|
-
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-
|
|
133057
|
+
const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-BSt0bNXX.js");
|
|
132593
133058
|
return { id: id11, diagram: diagram2 };
|
|
132594
133059
|
}, "loader");
|
|
132595
133060
|
var plugin9 = {
|
|
@@ -132603,7 +133068,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
|
|
|
132603
133068
|
return /^\s*sequenceDiagram/.test(txt);
|
|
132604
133069
|
}, "detector");
|
|
132605
133070
|
var loader12 = /* @__PURE__ */ __name(async () => {
|
|
132606
|
-
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-
|
|
133071
|
+
const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-DdfWdBp2.js");
|
|
132607
133072
|
return { id: id12, diagram: diagram2 };
|
|
132608
133073
|
}, "loader");
|
|
132609
133074
|
var plugin10 = {
|
|
@@ -132620,7 +133085,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132620
133085
|
return /^\s*classDiagram/.test(txt);
|
|
132621
133086
|
}, "detector");
|
|
132622
133087
|
var loader13 = /* @__PURE__ */ __name(async () => {
|
|
132623
|
-
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-
|
|
133088
|
+
const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-i_tSGvo3.js");
|
|
132624
133089
|
return { id: id13, diagram: diagram2 };
|
|
132625
133090
|
}, "loader");
|
|
132626
133091
|
var plugin11 = {
|
|
@@ -132637,7 +133102,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132637
133102
|
return /^\s*classDiagram-v2/.test(txt);
|
|
132638
133103
|
}, "detector");
|
|
132639
133104
|
var loader14 = /* @__PURE__ */ __name(async () => {
|
|
132640
|
-
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-
|
|
133105
|
+
const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-i_tSGvo3.js");
|
|
132641
133106
|
return { id: id14, diagram: diagram2 };
|
|
132642
133107
|
}, "loader");
|
|
132643
133108
|
var plugin12 = {
|
|
@@ -132654,7 +133119,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132654
133119
|
return /^\s*stateDiagram/.test(txt);
|
|
132655
133120
|
}, "detector");
|
|
132656
133121
|
var loader15 = /* @__PURE__ */ __name(async () => {
|
|
132657
|
-
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-
|
|
133122
|
+
const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-BD7Oj-hn.js");
|
|
132658
133123
|
return { id: id15, diagram: diagram2 };
|
|
132659
133124
|
}, "loader");
|
|
132660
133125
|
var plugin13 = {
|
|
@@ -132674,7 +133139,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
|
|
|
132674
133139
|
return false;
|
|
132675
133140
|
}, "detector");
|
|
132676
133141
|
var loader16 = /* @__PURE__ */ __name(async () => {
|
|
132677
|
-
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-
|
|
133142
|
+
const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-e4PXqg0B.js");
|
|
132678
133143
|
return { id: id16, diagram: diagram2 };
|
|
132679
133144
|
}, "loader");
|
|
132680
133145
|
var plugin14 = {
|
|
@@ -132688,7 +133153,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
|
|
|
132688
133153
|
return /^\s*journey/.test(txt);
|
|
132689
133154
|
}, "detector");
|
|
132690
133155
|
var loader17 = /* @__PURE__ */ __name(async () => {
|
|
132691
|
-
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-
|
|
133156
|
+
const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-DpIqL8B7.js");
|
|
132692
133157
|
return { id: id17, diagram: diagram2 };
|
|
132693
133158
|
}, "loader");
|
|
132694
133159
|
var plugin15 = {
|
|
@@ -132755,7 +133220,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
|
|
|
132755
133220
|
return false;
|
|
132756
133221
|
}, "detector");
|
|
132757
133222
|
var loader18 = /* @__PURE__ */ __name(async () => {
|
|
132758
|
-
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-
|
|
133223
|
+
const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-BkuGyDjs.js");
|
|
132759
133224
|
return { id: id18, diagram: diagram2 };
|
|
132760
133225
|
}, "loader");
|
|
132761
133226
|
var plugin16 = {
|
|
@@ -132769,7 +133234,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
|
|
|
132769
133234
|
return /^\s*timeline/.test(txt);
|
|
132770
133235
|
}, "detector");
|
|
132771
133236
|
var loader19 = /* @__PURE__ */ __name(async () => {
|
|
132772
|
-
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI
|
|
133237
|
+
const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-f7G2avSH.js");
|
|
132773
133238
|
return { id: id19, diagram: diagram2 };
|
|
132774
133239
|
}, "loader");
|
|
132775
133240
|
var plugin17 = {
|
|
@@ -132783,7 +133248,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
|
|
|
132783
133248
|
return /^\s*mindmap/.test(txt);
|
|
132784
133249
|
}, "detector");
|
|
132785
133250
|
var loader20 = /* @__PURE__ */ __name(async () => {
|
|
132786
|
-
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-
|
|
133251
|
+
const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-EvNNmlYT.js");
|
|
132787
133252
|
return { id: id20, diagram: diagram2 };
|
|
132788
133253
|
}, "loader");
|
|
132789
133254
|
var plugin18 = {
|
|
@@ -132797,7 +133262,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
|
|
|
132797
133262
|
return /^\s*kanban/.test(txt);
|
|
132798
133263
|
}, "detector");
|
|
132799
133264
|
var loader21 = /* @__PURE__ */ __name(async () => {
|
|
132800
|
-
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-
|
|
133265
|
+
const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-DX4-cLBH.js");
|
|
132801
133266
|
return { id: id21, diagram: diagram2 };
|
|
132802
133267
|
}, "loader");
|
|
132803
133268
|
var plugin19 = {
|
|
@@ -132811,7 +133276,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
|
|
|
132811
133276
|
return /^\s*sankey(-beta)?/.test(txt);
|
|
132812
133277
|
}, "detector");
|
|
132813
133278
|
var loader22 = /* @__PURE__ */ __name(async () => {
|
|
132814
|
-
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-
|
|
133279
|
+
const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-C7SL1Bn9.js");
|
|
132815
133280
|
return { id: id22, diagram: diagram2 };
|
|
132816
133281
|
}, "loader");
|
|
132817
133282
|
var plugin20 = {
|
|
@@ -132825,7 +133290,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
|
|
|
132825
133290
|
return /^\s*packet(-beta)?/.test(txt);
|
|
132826
133291
|
}, "detector");
|
|
132827
133292
|
var loader23 = /* @__PURE__ */ __name(async () => {
|
|
132828
|
-
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-
|
|
133293
|
+
const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-DjK_qPmk.js");
|
|
132829
133294
|
return { id: id23, diagram: diagram2 };
|
|
132830
133295
|
}, "loader");
|
|
132831
133296
|
var packet = {
|
|
@@ -132838,7 +133303,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
|
|
|
132838
133303
|
return /^\s*radar-beta/.test(txt);
|
|
132839
133304
|
}, "detector");
|
|
132840
133305
|
var loader24 = /* @__PURE__ */ __name(async () => {
|
|
132841
|
-
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-
|
|
133306
|
+
const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-BOdeY2WM.js");
|
|
132842
133307
|
return { id: id24, diagram: diagram2 };
|
|
132843
133308
|
}, "loader");
|
|
132844
133309
|
var radar = {
|
|
@@ -132851,7 +133316,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
|
|
|
132851
133316
|
return /^\s*block(-beta)?/.test(txt);
|
|
132852
133317
|
}, "detector");
|
|
132853
133318
|
var loader25 = /* @__PURE__ */ __name(async () => {
|
|
132854
|
-
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-
|
|
133319
|
+
const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-DpPRXIow.js");
|
|
132855
133320
|
return { id: id25, diagram: diagram2 };
|
|
132856
133321
|
}, "loader");
|
|
132857
133322
|
var plugin21 = {
|
|
@@ -132865,7 +133330,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
|
|
|
132865
133330
|
return /^\s*architecture/.test(txt);
|
|
132866
133331
|
}, "detector");
|
|
132867
133332
|
var loader26 = /* @__PURE__ */ __name(async () => {
|
|
132868
|
-
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-
|
|
133333
|
+
const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-C_xYzE4-.js");
|
|
132869
133334
|
return { id: id26, diagram: diagram2 };
|
|
132870
133335
|
}, "loader");
|
|
132871
133336
|
var architecture = {
|
|
@@ -132879,7 +133344,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
|
|
|
132879
133344
|
return /^\s*treemap/.test(txt);
|
|
132880
133345
|
}, "detector");
|
|
132881
133346
|
var loader27 = /* @__PURE__ */ __name(async () => {
|
|
132882
|
-
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-
|
|
133347
|
+
const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-Cfylqj1t.js");
|
|
132883
133348
|
return { id: id27, diagram: diagram2 };
|
|
132884
133349
|
}, "loader");
|
|
132885
133350
|
var treemap = {
|
|
@@ -148557,7 +149022,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
|
|
|
148557
149022
|
var et2 = ({ className: e2, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("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 });
|
|
148558
149023
|
var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
|
|
148559
149024
|
var ot2 = ({ 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 }) });
|
|
148560
|
-
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-
|
|
149025
|
+
var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DrUth0S5.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
|
|
148561
149026
|
let i2 = reactExports.useMemo(() => e2.replace(cn, ""), [e2]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
|
|
148562
149027
|
`).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
|
|
148563
149028
|
return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e2 }, children: jsxRuntimeExports.jsxs(et2, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot2, { 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, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
|
|
@@ -148879,7 +149344,7 @@ var Dt = ({ children: e2, className: t2, onDownload: o3, onError: n2 }) => {
|
|
|
148879
149344
|
}, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f("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, { 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] });
|
|
148880
149345
|
};
|
|
148881
149346
|
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("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e2 }) })] });
|
|
148882
|
-
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-
|
|
149347
|
+
var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-dDSIn_hx.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
|
|
148883
149348
|
function ke(e2, t2) {
|
|
148884
149349
|
if (!(e2 != null && e2.position || t2 != null && t2.position)) return true;
|
|
148885
149350
|
if (!(e2 != null && e2.position && (t2 != null && t2.position))) return false;
|
|
@@ -149521,7 +149986,9 @@ function FileTabBar({
|
|
|
149521
149986
|
canGoBack,
|
|
149522
149987
|
canGoForward,
|
|
149523
149988
|
isDirty: isDirtyFn,
|
|
149524
|
-
actions
|
|
149989
|
+
actions,
|
|
149990
|
+
treeCollapsed,
|
|
149991
|
+
onToggleTree
|
|
149525
149992
|
}) {
|
|
149526
149993
|
const activeRef = reactExports.useRef(null);
|
|
149527
149994
|
const containerRef = reactExports.useRef(null);
|
|
@@ -149579,7 +150046,22 @@ function FileTabBar({
|
|
|
149579
150046
|
}, []);
|
|
149580
150047
|
if (tabs.length === 0) return null;
|
|
149581
150048
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
149582
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-
|
|
150049
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "@container flex h-9 shrink-0 items-center border-b border-border/50 bg-background", children: [
|
|
150050
|
+
onToggleTree && /* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
150051
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150052
|
+
"button",
|
|
150053
|
+
{
|
|
150054
|
+
type: "button",
|
|
150055
|
+
onClick: onToggleTree,
|
|
150056
|
+
className: "ml-1 hidden size-7 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground transition-colors @[16rem]:inline-flex",
|
|
150057
|
+
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
|
|
150058
|
+
}
|
|
150059
|
+
) }),
|
|
150060
|
+
/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [
|
|
150061
|
+
treeCollapsed ? "Show" : "Hide",
|
|
150062
|
+
" File Explorer"
|
|
150063
|
+
] })
|
|
150064
|
+
] }),
|
|
149583
150065
|
(onGoBack || onGoForward) && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex shrink-0 items-center gap-0.5 px-1", children: [
|
|
149584
150066
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
149585
150067
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -149716,10 +150198,6 @@ function FileTabBar({
|
|
|
149716
150198
|
}
|
|
149717
150199
|
function openExternalUrl(url) {
|
|
149718
150200
|
if (isDesktop) {
|
|
149719
|
-
if (isTauri) {
|
|
149720
|
-
import("./index-jMSXp5h7.js").then(({ open: open2 }) => open2(url)).catch(() => window.open(url));
|
|
149721
|
-
return;
|
|
149722
|
-
}
|
|
149723
150201
|
invoke("open_external", { url }).catch(() => {
|
|
149724
150202
|
window.open(url, "_blank", "noopener");
|
|
149725
150203
|
});
|
|
@@ -149792,28 +150270,9 @@ function renderMarkdown(content2) {
|
|
|
149792
150270
|
}
|
|
149793
150271
|
);
|
|
149794
150272
|
}
|
|
149795
|
-
function FileTreeToolbar({
|
|
149796
|
-
|
|
149797
|
-
|
|
149798
|
-
treeCollapsed,
|
|
149799
|
-
onToggleTree
|
|
149800
|
-
}) {
|
|
149801
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-8 shrink-0 items-center gap-0.5 border-b border-border/50 px-1.5", children: [
|
|
149802
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
149803
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
149804
|
-
"button",
|
|
149805
|
-
{
|
|
149806
|
-
type: "button",
|
|
149807
|
-
onClick: onToggleTree,
|
|
149808
|
-
className: "inline-flex size-6 items-center justify-center rounded-md text-muted-foreground hover:bg-accent hover:text-foreground transition-colors",
|
|
149809
|
-
children: treeCollapsed ? /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
|
|
149810
|
-
}
|
|
149811
|
-
) }),
|
|
149812
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(TooltipContent, { side: "bottom", className: "text-xs", children: [
|
|
149813
|
-
treeCollapsed ? "Show" : "Hide",
|
|
149814
|
-
" File Explorer"
|
|
149815
|
-
] })
|
|
149816
|
-
] }),
|
|
150273
|
+
function FileTreeToolbar({ onQuickOpen, onSearchFiles }) {
|
|
150274
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center gap-0.5 border-b border-border/50 pl-3 pr-1.5", children: [
|
|
150275
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground", children: "Files" }),
|
|
149817
150276
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1" }),
|
|
149818
150277
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
149819
150278
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -150375,15 +150834,7 @@ function CodeBrowserView({
|
|
|
150375
150834
|
saveFileTreeCollapsed(workspaceId, collapsed);
|
|
150376
150835
|
},
|
|
150377
150836
|
children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col overflow-hidden border-r border-border", children: [
|
|
150378
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150379
|
-
FileTreeToolbar,
|
|
150380
|
-
{
|
|
150381
|
-
onQuickOpen,
|
|
150382
|
-
onSearchFiles,
|
|
150383
|
-
treeCollapsed,
|
|
150384
|
-
onToggleTree: toggleTree
|
|
150385
|
-
}
|
|
150386
|
-
),
|
|
150837
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(FileTreeToolbar, { onQuickOpen, onSearchFiles }),
|
|
150387
150838
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150388
150839
|
FileBrowser,
|
|
150389
150840
|
{
|
|
@@ -150406,19 +150857,7 @@ function CodeBrowserView({
|
|
|
150406
150857
|
}
|
|
150407
150858
|
) }),
|
|
150408
150859
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Yt$1, { id: "file-viewer", minSize: "20%", children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "relative flex h-full flex-col overflow-hidden", children: [
|
|
150409
|
-
|
|
150410
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150411
|
-
"button",
|
|
150412
|
-
{
|
|
150413
|
-
type: "button",
|
|
150414
|
-
onClick: toggleTree,
|
|
150415
|
-
className: "absolute left-1 top-0 z-10 inline-flex h-9 w-7 items-center justify-center text-muted-foreground hover:text-foreground transition-colors",
|
|
150416
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-4" })
|
|
150417
|
-
}
|
|
150418
|
-
) }),
|
|
150419
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", className: "text-xs", children: "Show File Explorer" })
|
|
150420
|
-
] }),
|
|
150421
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: treeCollapsed ? "[&>div]:pl-7" : "", children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150860
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150422
150861
|
FileTabBar,
|
|
150423
150862
|
{
|
|
150424
150863
|
workspacePath,
|
|
@@ -150431,6 +150870,8 @@ function CodeBrowserView({
|
|
|
150431
150870
|
canGoBack: editorHistory.canGoBack,
|
|
150432
150871
|
canGoForward: editorHistory.canGoForward,
|
|
150433
150872
|
isDirty: tabState.isDirty,
|
|
150873
|
+
treeCollapsed,
|
|
150874
|
+
onToggleTree: toggleTree,
|
|
150434
150875
|
actions: isMarkdown ? /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-0.5", children: [
|
|
150435
150876
|
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
150436
150877
|
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
@@ -150458,7 +150899,7 @@ function CodeBrowserView({
|
|
|
150458
150899
|
] })
|
|
150459
150900
|
] }) : void 0
|
|
150460
150901
|
}
|
|
150461
|
-
)
|
|
150902
|
+
),
|
|
150462
150903
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "min-h-0 flex-1", children: viewFilePath ? /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
150463
150904
|
FileViewer,
|
|
150464
150905
|
{
|
|
@@ -151003,7 +151444,7 @@ const closeTabRef$1 = {
|
|
|
151003
151444
|
};
|
|
151004
151445
|
const RightHeaderActions$1 = React$1.memo(function RightHeaderActions2(props) {
|
|
151005
151446
|
const groupId = props.group.id;
|
|
151006
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
151447
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full items-center", children: [
|
|
151007
151448
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
151008
151449
|
"button",
|
|
151009
151450
|
{
|
|
@@ -163589,7 +164030,7 @@ const closeTabRef = {
|
|
|
163589
164030
|
const RightHeaderActions = React$1.memo(function RightHeaderActions22(props) {
|
|
163590
164031
|
const { onAdd: onAdd2, onSplit } = addTabRef.current;
|
|
163591
164032
|
const groupId = props.group.id;
|
|
163592
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center", children: [
|
|
164033
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full items-center", children: [
|
|
163593
164034
|
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
163594
164035
|
"button",
|
|
163595
164036
|
{
|
|
@@ -163923,7 +164364,7 @@ const PANEL_SHORTCUTS = {
|
|
|
163923
164364
|
browser: "⌘B"
|
|
163924
164365
|
};
|
|
163925
164366
|
const DockviewTerminalContainer = reactExports.lazy(
|
|
163926
|
-
() => import("./DockviewTerminalContainer-
|
|
164367
|
+
() => import("./DockviewTerminalContainer-DSwflA0D.js").then((m2) => ({
|
|
163927
164368
|
default: m2.DockviewTerminalContainer
|
|
163928
164369
|
}))
|
|
163929
164370
|
);
|
|
@@ -164039,17 +164480,7 @@ function BadgeTab(props) {
|
|
|
164039
164480
|
children: [
|
|
164040
164481
|
Icon2 ? /* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4 shrink-0" }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-block size-4 shrink-0", "aria-hidden": true }),
|
|
164041
164482
|
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate", children: title }),
|
|
164042
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164043
|
-
"span",
|
|
164044
|
-
{
|
|
164045
|
-
"aria-hidden": !hasBadge,
|
|
164046
|
-
className: cn$2(
|
|
164047
|
-
"inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-blue-500/20 px-1.5 text-xs font-medium text-blue-600 dark:text-blue-400 transition-opacity",
|
|
164048
|
-
hasBadge ? "opacity-100" : "opacity-0"
|
|
164049
|
-
),
|
|
164050
|
-
children: hasBadge ? badge : 0
|
|
164051
|
-
}
|
|
164052
|
-
)
|
|
164483
|
+
hasBadge && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "inline-flex h-5 min-w-5 items-center justify-center rounded-full bg-blue-500/20 px-1.5 text-xs font-medium text-blue-600 dark:text-blue-400", children: badge })
|
|
164053
164484
|
]
|
|
164054
164485
|
}
|
|
164055
164486
|
) });
|
|
@@ -164802,316 +165233,6 @@ function DockviewInstanceManager() {
|
|
|
164802
165233
|
);
|
|
164803
165234
|
}) });
|
|
164804
165235
|
}
|
|
164805
|
-
const androidStudioIcon = "/assets/android-studio-t3zZ7G0e.svg";
|
|
164806
|
-
const antigravityIcon = "/assets/antigravity-m-mWKI7R.svg";
|
|
164807
|
-
const cursorIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5436_78947)'%3e%3cmask%20id='mask0_5436_78947'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='4'%20y='4'%20width='32'%20height='32'%3e%3cpath%20d='M4%204H36V36H4V4Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5436_78947)'%3e%3cpath%20d='M28.375%204H11.625C7.41383%204%204%207.41383%204%2011.625V28.375C4%2032.5862%207.41383%2036%2011.625%2036H28.375C32.5862%2036%2036%2032.5862%2036%2028.375V11.625C36%207.41383%2032.5862%204%2028.375%204Z'%20fill='black'/%3e%3c/g%3e%3cpath%20d='M29.6214%2014.2072L20.9502%209.12249C20.6718%208.95917%2020.3282%208.95917%2020.0498%209.12249L11.3786%2014.2072C11.1445%2014.3445%2011%2014.5984%2011%2014.8733V25.1267C11%2025.4012%2011.1445%2025.6555%2011.3786%2025.7928L20.0498%2030.8775C20.3282%2031.0408%2020.6718%2031.0408%2020.9502%2030.8775L29.6214%2025.7928C29.8555%2025.6555%2030%2025.4016%2030%2025.1267V14.8733C30%2014.5988%2029.8555%2014.3445%2029.6214%2014.2072ZM29.0767%2015.2843L20.706%2030.0101C20.6494%2030.1093%2020.5%2030.0688%2020.5%2029.9538V20.3115C20.5%2020.1189%2020.3986%2019.9407%2020.2342%2019.8439L12.0124%2015.0226C11.9147%2014.9651%2011.9546%2014.8134%2012.0678%2014.8134H28.8093C29.047%2014.8134%2029.1956%2015.0751%2029.0767%2015.2843Z'%20fill='white'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5436_78947'%3e%3crect%20width='32'%20height='32'%20fill='white'%20transform='translate(4%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
164808
|
-
const finderIcon = "data:image/png;base64,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";
|
|
164809
|
-
const ghosttyIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79067)'%3e%3cpath%20d='M27.395%2036C26.1435%2035.9986%2024.9203%2035.6274%2023.879%2034.933C22.8374%2035.6273%2021.6139%2035.9985%2020.362%2036C19.113%2036%2017.882%2035.625%2016.846%2034.933C15.8189%2035.6241%2014.61%2035.9954%2013.372%2036H13.334C12.4944%2036.0006%2011.6633%2035.8321%2010.8902%2035.5047C10.1171%2035.1772%209.41781%2034.6975%208.83405%2034.094C7.65642%2032.8996%206.99679%2031.2893%206.99805%2029.612V17.362C7.00005%209.995%2012.994%204%2020.362%204C27.731%204%2033.725%209.994%2033.725%2017.363V29.616C33.725%2033.009%2031.099%2035.808%2027.747%2035.991C27.63%2035.998%2027.513%2036%2027.395%2036Z'%20fill='%233551F3'/%3e%3cpath%20d='M27.395%2034.5932C26.2752%2034.5924%2025.1889%2034.2104%2024.315%2033.5102C24.1961%2033.4145%2024.0476%2033.3632%2023.895%2033.3652C23.7174%2033.367%2023.5457%2033.4291%2023.408%2033.5412C22.5392%2034.2237%2021.4668%2034.5951%2020.362%2034.5962C19.2576%2034.5949%2018.1855%2034.2234%2017.317%2033.5412C17.1835%2033.4338%2017.0174%2033.3752%2016.846%2033.3752C16.6747%2033.3752%2016.5085%2033.4338%2016.375%2033.5412C15.518%2034.2199%2014.4581%2034.5914%2013.365%2034.5962H13.332C12.6806%2034.5961%2012.0359%2034.4649%2011.4362%2034.2102C10.8366%2033.9556%2010.2945%2033.5829%209.84201%2033.1142C8.92225%2032.1822%208.40639%2030.9256%208.40601%2029.6162V17.3672C8.40601%2010.7702%2013.77%205.40723%2020.363%205.40723C26.955%205.40723%2032.319%2010.7702%2032.319%2017.3632V29.6162C32.319%2032.2612%2030.277%2034.4432%2027.669%2034.5862C27.5777%2034.5909%2027.4864%2034.5932%2027.395%2034.5932Z'%20fill='black'/%3e%3cpath%20d='M30.912%2017.3635V29.6165C30.912%2031.4925%2029.465%2033.0795%2027.592%2033.1825C26.725%2033.2323%2025.8704%2032.9582%2025.194%2032.4135C24.416%2031.7875%2023.321%2031.8155%2022.536%2032.4345C21.9163%2032.9237%2021.1495%2033.1891%2020.36%2033.1875C19.5714%2033.1889%2018.8056%2032.9235%2018.187%2032.4345C17.8057%2032.1306%2017.3326%2031.9651%2016.845%2031.9651C16.3574%2031.9651%2015.8843%2032.1306%2015.503%2032.4345C14.8904%2032.9183%2014.1336%2033.1834%2013.353%2033.1875C11.405%2033.2015%209.81299%2031.5605%209.81299%2029.6125V17.3625C9.81299%2011.5375%2014.537%206.81348%2020.363%206.81348C26.188%206.81348%2030.912%2011.5375%2030.912%2017.3635Z'%20fill='white'/%3e%3cpath%20d='M18.28%2016.4366L14.35%2014.1666C14.104%2014.0248%2013.8117%2013.9865%2013.5374%2014.06C13.2632%2014.1335%2013.0292%2014.3128%2012.887%2014.5586C12.7452%2014.8045%2012.7067%2015.0966%2012.78%2015.3709C12.8533%2015.6452%2013.0324%2015.8792%2013.278%2016.0216L15.604%2017.3646L13.278%2018.7076C13.045%2018.8559%2012.8783%2019.0886%2012.8126%2019.3569C12.7469%2019.6252%2012.7873%2019.9085%2012.9255%2020.1478C13.0636%2020.387%2013.2887%2020.5637%2013.554%2020.641C13.8192%2020.7183%2014.104%2020.6902%2014.349%2020.5626L18.281%2018.2926C18.4436%2018.1985%2018.5786%2018.0633%2018.6724%2017.9006C18.7662%2017.7379%2018.8156%2017.5534%2018.8156%2017.3656C18.8156%2017.1777%2018.7662%2016.9932%2018.6724%2016.8305C18.5786%2016.6678%2018.4436%2016.5326%2018.281%2016.4386V16.4366H18.28ZM27.182%2016.2906H22.018C21.7338%2016.2906%2021.4613%2016.4034%2021.2604%2016.6044C21.0594%2016.8053%2020.9465%2017.0779%2020.9465%2017.3621C20.9465%2017.6462%2021.0594%2017.9188%2021.2604%2018.1197C21.4613%2018.3207%2021.7338%2018.4336%2022.018%2018.4336H27.182C27.4662%2018.4336%2027.7387%2018.3207%2027.9397%2018.1197C28.1406%2017.9188%2028.2535%2017.6462%2028.2535%2017.3621C28.2535%2017.0779%2028.1406%2016.8053%2027.9397%2016.6044C27.7387%2016.4034%2027.4662%2016.2906%2027.182%2016.2906Z'%20fill='black'/%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79067'%3e%3crect%20width='27'%20height='32'%20fill='white'%20transform='translate(7%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
164810
|
-
const intellijIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0Y5N0ExMiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGQzI5QjgiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPklKPC90ZXh0Pgo8L3N2Zz4K";
|
|
164811
|
-
const iterm2Icon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3crect%20x='4'%20y='4'%20width='32'%20height='32'%20rx='6.4'%20fill='url(%23paint0_linear_5437_79079)'/%3e%3crect%20x='4.80005'%20y='4.7998'%20width='30.4'%20height='30.4'%20rx='5.6'%20fill='black'/%3e%3crect%20x='7.19995'%20y='7.2002'%20width='25.6'%20height='25.6'%20rx='3.2'%20fill='%23202A2F'/%3e%3cpath%20d='M25.2454%208.85742H19.2454V20.8574H25.2454V8.85742Z'%20fill='%230EE827'%20fill-opacity='0.35'/%3e%3cpath%20d='M11.7895%2018.9218C11.4758%2018.8949%2011.1817%2018.85%2010.9072%2018.7872C10.6424%2018.7154%2010.3973%2018.6392%2010.1718%2018.5584C9.95613%2018.4776%209.76496%2018.4014%209.59829%2018.3296C9.44145%2018.2488%209.32378%2018.186%209.24536%2018.1412L9.87771%2016.9567C9.94631%2017.0016%2010.064%2017.0644%2010.2306%2017.1452C10.3973%2017.2259%2010.5836%2017.3111%2010.7895%2017.4009C11.0052%2017.4816%2011.2257%2017.5534%2011.4513%2017.6162C11.6768%2017.679%2011.8875%2017.7105%2012.0836%2017.7105C13.064%2017.7105%2013.5542%2017.3381%2013.5542%2016.5933C13.5542%2016.4138%2013.5199%2016.2658%2013.4512%2016.1492C13.3925%2016.0325%2013.2993%2015.9338%2013.1719%2015.853C13.0542%2015.7633%2012.9071%2015.687%2012.7307%2015.6242C12.564%2015.5525%2012.3729%2015.4806%2012.1571%2015.4089C11.7453%2015.2653%2011.3777%2015.1172%2011.0542%2014.9647C10.7405%2014.8032%2010.4708%2014.6237%2010.2454%2014.4263C10.0199%2014.2289%209.8483%2014.0046%209.73063%2013.7534C9.61303%2013.5021%209.5542%2013.2149%209.5542%2012.8919C9.5542%2012.6407%209.60812%2012.3984%209.71596%2012.1651C9.82379%2011.9318%209.97572%2011.7254%2010.1718%2011.546C10.3679%2011.3576%2010.6032%2011.2005%2010.8777%2011.0749C11.1522%2010.9403%2011.4562%2010.8461%2011.7895%2010.7922V8.85742H12.9954V10.7653C13.2503%2010.7922%2013.4954%2010.8326%2013.7307%2010.8865C13.966%2010.9403%2014.1767%2010.9986%2014.363%2011.0614C14.5493%2011.1242%2014.7062%2011.1871%2014.8336%2011.2499C14.9709%2011.3037%2015.0689%2011.3441%2015.1278%2011.371L14.5395%2012.4747C14.4611%2012.4388%2014.3483%2012.3939%2014.2012%2012.3401C14.064%2012.2773%2013.9072%2012.2144%2013.7307%2012.1517C13.5542%2012.0888%2013.363%2012.035%2013.1571%2011.9901C12.9513%2011.9453%2012.7454%2011.9228%2012.5395%2011.9228C12.2062%2011.9228%2011.9071%2011.9856%2011.6424%2012.1112C11.3875%2012.2279%2011.2601%2012.4298%2011.2601%2012.7169C11.2601%2012.8964%2011.2944%2013.058%2011.363%2013.2015C11.4414%2013.3361%2011.5493%2013.4573%2011.6865%2013.5649C11.8336%2013.6726%2012.0101%2013.7758%2012.2159%2013.8745C12.4316%2013.9642%2012.6768%2014.054%2012.9513%2014.1437C13.314%2014.2782%2013.6376%2014.4173%2013.9218%2014.5609C14.2062%2014.7045%2014.4463%2014.866%2014.6424%2015.0455C14.8385%2015.2249%2014.9856%2015.4313%2015.0836%2015.6646C15.1914%2015.8979%2015.2454%2016.1715%2015.2454%2016.4856C15.2454%2016.7548%2015.1964%2017.015%2015.0983%2017.2662C15.0101%2017.5175%2014.8679%2017.7508%2014.6718%2017.9661C14.4856%2018.1815%2014.2503%2018.3699%2013.966%2018.5315C13.6915%2018.684%2013.3679%2018.7962%2012.9954%2018.8679V20.8574H11.7895V18.9218Z'%20fill='%230EE827'/%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_5437_79079'%20x1='20'%20y1='4'%20x2='20'%20y2='36'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23D4E6E8'/%3e%3cstop%20offset='1'%20stop-color='%23767573'/%3e%3c/linearGradient%3e%3c/defs%3e%3c/svg%3e";
|
|
164812
|
-
const kiroIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZGOTkwMCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNGRjY2MDAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8dGV4dCB4PSI1NiIgeT0iMTc4IiBmaWxsPSIjZmZmIiBmb250LWZhbWlseT0iQXJpYWwsSGVsdmV0aWNhLHNhbnMtc2VyaWYiIGZvbnQtd2VpZ2h0PSJib2xkIiBmb250LXNpemU9IjcyIj5LPC90ZXh0Pgo8L3N2Zz4K";
|
|
164813
|
-
const rustroverIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI0ZDODAxRCIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNCNzRDRjAiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPlJSPC90ZXh0Pgo8L3N2Zz4K";
|
|
164814
|
-
const sublimetextIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5436_78897)'%3e%3cpath%20d='M35.911%2020.0773C35.911%2019.7026%2035.552%2019.4866%2035.1114%2019.5939L4.79962%2027.0055C4.35812%2027.1135%204%2027.5052%204%2027.8792V35.4541C4%2035.8288%204.35812%2036.0455%204.79962%2035.9375L35.1114%2028.5266C35.552%2028.4187%2035.911%2028.0269%2035.911%2027.6523V20.0774V20.0773Z'%20fill='url(%23paint0_linear_5436_78897)'/%3e%3cpath%20d='M4%2019.8353C4%2020.21%204.35812%2020.6016%204.79962%2020.7097L35.1159%2028.1219C35.5573%2028.2299%2035.9155%2028.0133%2035.9155%2027.6393V20.0637C35.9155%2019.6897%2035.5573%2019.298%2035.1159%2019.19L4.79962%2011.7778C4.35812%2011.6699%204%2011.8858%204%2012.2603V19.8353V19.8353Z'%20fill='%23FF9800'/%3e%3cpath%20d='M35.911%204.51106C35.911%204.1365%2035.552%203.91973%2035.1114%204.02778L4.79962%2011.4387C4.35812%2011.5466%204%2011.9383%204%2012.313V19.8879C4%2020.2626%204.35812%2020.4786%204.79962%2020.3712L35.1114%2012.9596C35.552%2012.8517%2035.911%2012.46%2035.911%2012.086V4.51106Z'%20fill='%23FF9800'/%3e%3c/g%3e%3cdefs%3e%3clinearGradient%20id='paint0_linear_5436_78897'%20x1='1762.84'%20y1='981.852'%20x2='1845.15'%20y2='624.882'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20stop-color='%23FF9700'/%3e%3cstop%20offset='0.53'%20stop-color='%23F48E00'/%3e%3cstop%20offset='1'%20stop-color='%23D06F00'/%3e%3c/linearGradient%3e%3cclipPath%20id='clip0_5436_78897'%3e%3crect%20width='32'%20height='32'%20fill='white'%20transform='translate(4%204)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
164815
|
-
const terminalIcon = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAOdEVYdFNvZnR3YXJlAEZpZ21hnrGWYwAAA0RJREFUeAHtmM9PE0EUx18pJCRaugUhQkuqXgi3eqDVpJFK+g9w8Ejkohcg4I8DFynECxdEAlz0gA0nNYF4kkODRDQmNQQ8NRhjbd1FrQHankja3XFm7DbN7rQMyS7l0E+y3dmZt/u+mffednYAatSoLpZKg9s//wawRUhKJj2/90QBLNgcocJt+EyvAQo/UBwv2qkeCm7o2P/ri+3OtOuSewcpEL7quvACTsJ2PC5sJf8sPQw9Rh2dnaigwPCjw9WJJmfm0FYyNUt8Ai+f4+Ls3dEHpgnTHndG76NoXFpiaanXdnz8Gh988+rl2LO5GXrd2NgILS0tUFdXB0aSy+Vgf3+fnp/PPYFztvODn2Lx8PXuyxuldroc/BD79u5WMBD4JYnQ0NAAbrfbcHEqiqKAKIpwdHQE7U4XvI683/B3X7lZaqPzLCV+eIg4Qmtrq2niqHP8bBIdAvEpJr57dDbajj1RLCar1Wot9i8vL0MwGAQzRKpgkXbduLZDlmVg4XQ6YXFxkR6kbQZKXtalnE4gwnnBYmhoCKLRKJ3F9fV1mJ6eNlwozkkExwlU5Dzz5lgsBgMDAzA+Pg6SJEF/fz8VOjw8DMYJ1EePO8Qqq6ur0NfXR2eT4PP5wChknhArZUKs4vV6acGQczabhUgkAkbBil693kguK2xkZISeCSsrK7CwsEDDbRSs/OcWqBYFCe38/HwxxEbCSi+9QIUtkAgis1ZO2O7uLpSjq6sLeGD51gnEicq8mVSv2XDNIFIqV3E5eGepEkjmeM0cV8VmIvMILBfi00DhmkFURYFIHz3GX10VBeZ5ZrCaApUzLhAXCcdqpopVjF9xxy8WZPmMVzGqqkCOKrbZbGm1fRqzWZpS2Pehdlwn0C7YdxwOB20fHByYmpPk2alUirYF7FMQhC9aG/1iQZanfNd8gbW3a/R7NZFIQFtbm+Gfn0Sc+uFOCAQCkM/nwlw3PwqFlnp7e09t6+MG9jUxMfGUpaWe1Wm1WO75/f40zomxzc1NyGQyYAaCYIeeHi9ZpYdxhCZZNhW33/AacBBvmd3OpA896WxW/aBHFry/hkr24TTXWrT7dNSmydaUdjQ37+DmFF6tb0CNGmeUfwIH0sS3Pm7dAAAAAElFTkSuQmCC";
|
|
164816
|
-
const textmateIcon = "data:image/png;base64,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";
|
|
164817
|
-
const vscodeIcon = "/assets/vscode-C5BXgFjm.svg";
|
|
164818
|
-
const warpIcon = "data:image/png;base64,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";
|
|
164819
|
-
const webstormIcon = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTYgMjU2Ij4KICA8ZGVmcz4KICAgIDxsaW5lYXJHcmFkaWVudCBpZD0iYSIgeDE9IjAiIHkxPSIwIiB4Mj0iMjU2IiB5Mj0iMjU2IiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+CiAgICAgIDxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzA3QzNGMiIvPgogICAgICA8c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMwODdDRkEiLz4KICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgPC9kZWZzPgogIDxyZWN0IHdpZHRoPSIyNTYiIGhlaWdodD0iMjU2IiByeD0iNDgiIGZpbGw9InVybCgjYSkiLz4KICA8cmVjdCB4PSI0OCIgeT0iNDgiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTYwIiByeD0iNCIgZmlsbD0iIzAwMCIvPgogIDx0ZXh0IHg9IjYwIiB5PSIxNzgiIGZpbGw9IiNmZmYiIGZvbnQtZmFtaWx5PSJBcmlhbCxIZWx2ZXRpY2Esc2Fucy1zZXJpZiIgZm9udC13ZWlnaHQ9ImJvbGQiIGZvbnQtc2l6ZT0iNTYiPldTPC90ZXh0Pgo8L3N2Zz4K";
|
|
164820
|
-
const windSurfIcon = "data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%20256%20256'%3e%3cdefs%3e%3clinearGradient%20id='a'%20x1='0'%20y1='0'%20x2='256'%20y2='256'%20gradientUnits='userSpaceOnUse'%3e%3cstop%20offset='0'%20stop-color='%230ACF83'/%3e%3cstop%20offset='1'%20stop-color='%2305A2C2'/%3e%3c/linearGradient%3e%3c/defs%3e%3crect%20width='256'%20height='256'%20rx='48'%20fill='url(%23a)'/%3e%3cpath%20d='M80%2080%20L176%20128%20L80%20176Z'%20fill='%23fff'/%3e%3c/svg%3e";
|
|
164821
|
-
const xcodeIcon = "data:image/png;base64,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";
|
|
164822
|
-
const zedIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79109)'%3e%3cmask%20id='mask0_5437_79109'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='5'%20width='30'%20height='30'%3e%3cpath%20d='M5.6001%205.59961H34.4001V34.3996H5.6001V5.59961Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5437_79109)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.3001%207.39961C8.0614%207.39961%207.83248%207.49443%207.6637%207.66321C7.49492%207.832%207.4001%208.06091%207.4001%208.29961V28.0996H5.6001V8.29961C5.6001%207.58352%205.88456%206.89677%206.39091%206.39042C6.89726%205.88407%207.58401%205.59961%208.3001%205.59961H32.4138C33.6165%205.59961%2034.2186%207.05371%2033.3684%207.90421L18.5166%2022.7557H22.7001V20.8996H24.5001V23.206C24.5001%2023.5641%2024.3579%2023.9074%2024.1047%2024.1606C23.8515%2024.4138%2023.5081%2024.556%2023.1501%2024.556H16.7166L13.623%2027.6496H27.6501V16.3996H29.4501V27.6496C29.4501%2028.127%2029.2605%2028.5848%2028.9229%2028.9224C28.5853%2029.26%2028.1275%2029.4496%2027.6501%2029.4496H11.823L8.673%2032.5996H31.7001C31.9388%2032.5996%2032.1677%2032.5048%2032.3365%2032.336C32.5053%2032.1672%2032.6001%2031.9383%2032.6001%2031.6996V11.8996H34.4001V31.6996C34.4001%2032.4157%2034.1156%2033.1024%2033.6093%2033.6088C33.1029%2034.1151%2032.4162%2034.3996%2031.7001%2034.3996H7.5864C6.3837%2034.3996%205.7816%2032.9455%206.6318%2032.095L21.4272%2017.2996H17.3001V19.0996H15.5001V16.8496C15.5001%2016.4916%2015.6423%2016.1482%2015.8955%2015.895C16.1487%2015.6418%2016.4921%2015.4996%2016.8501%2015.4996H23.2272L26.3772%2012.3496H12.3501V23.5996H10.5501V12.3496C10.5501%2011.8722%2010.7397%2011.4144%2011.0773%2011.0768C11.4149%2010.7393%2011.8727%2010.5496%2012.3501%2010.5496H28.1772L31.3272%207.39961H8.3001Z'%20fill='black'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79109'%3e%3crect%20width='28.8'%20height='28.8'%20fill='white'%20transform='translate(5.6001%205.59961)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
164823
|
-
const zedDarkIcon = "data:image/svg+xml,%3csvg%20width='40'%20height='40'%20viewBox='0%200%2040%2040'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cg%20clip-path='url(%23clip0_5437_79100)'%3e%3cmask%20id='mask0_5437_79100'%20style='mask-type:luminance'%20maskUnits='userSpaceOnUse'%20x='5'%20y='5'%20width='30'%20height='30'%3e%3cpath%20d='M5.6001%205.59961H34.4001V34.3996H5.6001V5.59961Z'%20fill='white'/%3e%3c/mask%3e%3cg%20mask='url(%23mask0_5437_79100)'%3e%3cpath%20fill-rule='evenodd'%20clip-rule='evenodd'%20d='M8.3001%207.39961C8.0614%207.39961%207.83248%207.49443%207.6637%207.66321C7.49492%207.832%207.4001%208.06091%207.4001%208.29961V28.0996H5.6001V8.29961C5.6001%207.58352%205.88456%206.89677%206.39091%206.39042C6.89726%205.88407%207.58401%205.59961%208.3001%205.59961H32.4138C33.6165%205.59961%2034.2186%207.05371%2033.3684%207.90421L18.5166%2022.7557H22.7001V20.8996H24.5001V23.206C24.5001%2023.5641%2024.3579%2023.9074%2024.1047%2024.1606C23.8515%2024.4138%2023.5081%2024.556%2023.1501%2024.556H16.7166L13.623%2027.6496H27.6501V16.3996H29.4501V27.6496C29.4501%2028.127%2029.2605%2028.5848%2028.9229%2028.9224C28.5853%2029.26%2028.1275%2029.4496%2027.6501%2029.4496H11.823L8.673%2032.5996H31.7001C31.9388%2032.5996%2032.1677%2032.5048%2032.3365%2032.336C32.5053%2032.1672%2032.6001%2031.9383%2032.6001%2031.6996V11.8996H34.4001V31.6996C34.4001%2032.4157%2034.1156%2033.1024%2033.6093%2033.6088C33.1029%2034.1151%2032.4162%2034.3996%2031.7001%2034.3996H7.5864C6.3837%2034.3996%205.7816%2032.9455%206.6318%2032.095L21.4272%2017.2996H17.3001V19.0996H15.5001V16.8496C15.5001%2016.4916%2015.6423%2016.1482%2015.8955%2015.895C16.1487%2015.6418%2016.4921%2015.4996%2016.8501%2015.4996H23.2272L26.3772%2012.3496H12.3501V23.5996H10.5501V12.3496C10.5501%2011.8722%2010.7397%2011.4144%2011.0773%2011.0768C11.4149%2010.7393%2011.8727%2010.5496%2012.3501%2010.5496H28.1772L31.3272%207.39961H8.3001Z'%20fill='white'/%3e%3c/g%3e%3c/g%3e%3cdefs%3e%3cclipPath%20id='clip0_5437_79100'%3e%3crect%20width='28.8'%20height='28.8'%20fill='white'%20transform='translate(5.6001%205.59961)'/%3e%3c/clipPath%3e%3c/defs%3e%3c/svg%3e";
|
|
164824
|
-
const APP_ICONS = {
|
|
164825
|
-
vscode: vscodeIcon,
|
|
164826
|
-
cursor: cursorIcon,
|
|
164827
|
-
zed: zedIcon,
|
|
164828
|
-
"zed-dark": zedDarkIcon,
|
|
164829
|
-
finder: finderIcon,
|
|
164830
|
-
terminal: terminalIcon,
|
|
164831
|
-
iterm2: iterm2Icon,
|
|
164832
|
-
ghostty: ghosttyIcon,
|
|
164833
|
-
warp: warpIcon,
|
|
164834
|
-
xcode: xcodeIcon,
|
|
164835
|
-
"android-studio": androidStudioIcon,
|
|
164836
|
-
antigravity: antigravityIcon,
|
|
164837
|
-
textmate: textmateIcon,
|
|
164838
|
-
"sublime-text": sublimetextIcon,
|
|
164839
|
-
intellij: intellijIcon,
|
|
164840
|
-
webstorm: webstormIcon,
|
|
164841
|
-
rustrover: rustroverIcon,
|
|
164842
|
-
windsurf: windSurfIcon,
|
|
164843
|
-
kiro: kiroIcon
|
|
164844
|
-
};
|
|
164845
|
-
function isDark() {
|
|
164846
|
-
return document.documentElement.classList.contains("dark");
|
|
164847
|
-
}
|
|
164848
|
-
function AppIcon({ id: id28, className }) {
|
|
164849
|
-
const [dark, setDark] = reactExports.useState(isDark);
|
|
164850
|
-
reactExports.useEffect(() => {
|
|
164851
|
-
const observer = new MutationObserver(() => setDark(isDark()));
|
|
164852
|
-
observer.observe(document.documentElement, {
|
|
164853
|
-
attributes: true,
|
|
164854
|
-
attributeFilter: ["class"]
|
|
164855
|
-
});
|
|
164856
|
-
return () => observer.disconnect();
|
|
164857
|
-
}, []);
|
|
164858
|
-
let src = APP_ICONS[id28];
|
|
164859
|
-
if (id28 === "zed" && dark) {
|
|
164860
|
-
src = APP_ICONS["zed-dark"];
|
|
164861
|
-
}
|
|
164862
|
-
if (!src) return null;
|
|
164863
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("img", { src, alt: "", draggable: false, className: className ?? "size-5" });
|
|
164864
|
-
}
|
|
164865
|
-
const MAC_APPS = [
|
|
164866
|
-
{ id: "vscode", label: "VS Code", icon: "vscode", openWith: "Visual Studio Code" },
|
|
164867
|
-
{ id: "cursor", label: "Cursor", icon: "cursor", openWith: "Cursor" },
|
|
164868
|
-
{ id: "zed", label: "Zed", icon: "zed", openWith: "Zed" },
|
|
164869
|
-
{ id: "windsurf", label: "Windsurf", icon: "windsurf", openWith: "Windsurf" },
|
|
164870
|
-
{ id: "kiro", label: "Kiro", icon: "kiro", openWith: "Kiro" },
|
|
164871
|
-
{ id: "xcode", label: "Xcode", icon: "xcode", openWith: "Xcode" },
|
|
164872
|
-
{ id: "antigravity", label: "Antigravity", icon: "antigravity", openWith: "Antigravity" },
|
|
164873
|
-
{ id: "textmate", label: "TextMate", icon: "textmate", openWith: "TextMate" },
|
|
164874
|
-
{ id: "sublime-text", label: "Sublime Text", icon: "sublime-text", openWith: "Sublime Text" },
|
|
164875
|
-
{ id: "intellij", label: "IntelliJ IDEA", icon: "intellij", openWith: "IntelliJ IDEA" },
|
|
164876
|
-
{ id: "webstorm", label: "WebStorm", icon: "webstorm", openWith: "WebStorm" },
|
|
164877
|
-
{ id: "rustrover", label: "RustRover", icon: "rustrover", openWith: "RustRover" },
|
|
164878
|
-
{ id: "iterm2", label: "iTerm2", icon: "iterm2", openWith: "iTerm" },
|
|
164879
|
-
{ id: "terminal", label: "Terminal", icon: "terminal", openWith: "Terminal" },
|
|
164880
|
-
{ id: "ghostty", label: "Ghostty", icon: "ghostty", openWith: "Ghostty" },
|
|
164881
|
-
{ id: "warp", label: "Warp", icon: "warp", openWith: "Warp" },
|
|
164882
|
-
{
|
|
164883
|
-
id: "android-studio",
|
|
164884
|
-
label: "Android Studio",
|
|
164885
|
-
icon: "android-studio",
|
|
164886
|
-
openWith: "Android Studio"
|
|
164887
|
-
}
|
|
164888
|
-
];
|
|
164889
|
-
function EditorPicker({ workspacePath, onCopyPath }) {
|
|
164890
|
-
const { settings } = useSettingsQuery();
|
|
164891
|
-
const updateSettings = useUpdateSettings();
|
|
164892
|
-
const [installed, setInstalled] = reactExports.useState({ finder: true });
|
|
164893
|
-
reactExports.useEffect(() => {
|
|
164894
|
-
if (!isDesktop) return;
|
|
164895
|
-
let cancelled = false;
|
|
164896
|
-
Promise.all(
|
|
164897
|
-
MAC_APPS.map(
|
|
164898
|
-
(app) => invoke("check_app_exists", { appName: app.openWith }).then((ok2) => [app.id, ok2]).catch(() => [app.id, false])
|
|
164899
|
-
)
|
|
164900
|
-
).then((entries2) => {
|
|
164901
|
-
if (cancelled) return;
|
|
164902
|
-
const map2 = { finder: true };
|
|
164903
|
-
for (const [id28, ok2] of entries2) {
|
|
164904
|
-
map2[id28] = ok2;
|
|
164905
|
-
}
|
|
164906
|
-
setInstalled(map2);
|
|
164907
|
-
});
|
|
164908
|
-
return () => {
|
|
164909
|
-
cancelled = true;
|
|
164910
|
-
};
|
|
164911
|
-
}, []);
|
|
164912
|
-
const options = reactExports.useMemo(() => {
|
|
164913
|
-
const finderItem = {
|
|
164914
|
-
id: "finder",
|
|
164915
|
-
label: "Finder",
|
|
164916
|
-
icon: "finder",
|
|
164917
|
-
openWith: "Finder"
|
|
164918
|
-
};
|
|
164919
|
-
const apps = MAC_APPS.filter((app) => installed[app.id]);
|
|
164920
|
-
return [finderItem, ...apps];
|
|
164921
|
-
}, [installed]);
|
|
164922
|
-
const selectedId = settings.defaultOpenApp;
|
|
164923
|
-
const current = reactExports.useMemo(
|
|
164924
|
-
() => options.find((o3) => o3.id === selectedId) ?? options[0],
|
|
164925
|
-
[options, selectedId]
|
|
164926
|
-
);
|
|
164927
|
-
const selectApp = reactExports.useCallback(
|
|
164928
|
-
(appId) => {
|
|
164929
|
-
updateSettings.mutate({
|
|
164930
|
-
...settings,
|
|
164931
|
-
defaultOpenApp: appId
|
|
164932
|
-
});
|
|
164933
|
-
},
|
|
164934
|
-
[settings, updateSettings]
|
|
164935
|
-
);
|
|
164936
|
-
const openWith = reactExports.useCallback(
|
|
164937
|
-
async (app) => {
|
|
164938
|
-
if (!isDesktop) return;
|
|
164939
|
-
if (app.id === "finder") {
|
|
164940
|
-
invoke("reveal_in_finder", { path: workspacePath }).catch(() => {
|
|
164941
|
-
});
|
|
164942
|
-
return;
|
|
164943
|
-
}
|
|
164944
|
-
invoke("open_with_app", {
|
|
164945
|
-
path: workspacePath,
|
|
164946
|
-
appName: app.openWith
|
|
164947
|
-
}).catch(() => {
|
|
164948
|
-
});
|
|
164949
|
-
},
|
|
164950
|
-
[workspacePath]
|
|
164951
|
-
);
|
|
164952
|
-
const handleMainClick = reactExports.useCallback(() => {
|
|
164953
|
-
openWith(current);
|
|
164954
|
-
}, [current, openWith]);
|
|
164955
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center rounded-md overflow-hidden border border-border/40", children: [
|
|
164956
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164957
|
-
"button",
|
|
164958
|
-
{
|
|
164959
|
-
type: "button",
|
|
164960
|
-
onClick: handleMainClick,
|
|
164961
|
-
onMouseDown: (e2) => e2.stopPropagation(),
|
|
164962
|
-
className: "flex items-center justify-center px-1 py-0.5 hover:bg-accent/50 transition-colors",
|
|
164963
|
-
title: `Open in ${current.label}`,
|
|
164964
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(AppIcon, { id: current.icon, className: "size-5" })
|
|
164965
|
-
}
|
|
164966
|
-
),
|
|
164967
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
164968
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
164969
|
-
"button",
|
|
164970
|
-
{
|
|
164971
|
-
type: "button",
|
|
164972
|
-
onMouseDown: (e2) => e2.stopPropagation(),
|
|
164973
|
-
className: "flex items-center justify-center px-0.5 py-0.5 hover:bg-accent/50 transition-colors border-l border-border/40",
|
|
164974
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3.5 text-muted-foreground" })
|
|
164975
|
-
}
|
|
164976
|
-
) }),
|
|
164977
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "end", className: "min-w-[180px]", children: [
|
|
164978
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuLabel, { children: "Open in" }),
|
|
164979
|
-
options.map((app) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
164980
|
-
DropdownMenuItem,
|
|
164981
|
-
{
|
|
164982
|
-
onClick: () => {
|
|
164983
|
-
selectApp(app.id);
|
|
164984
|
-
openWith(app);
|
|
164985
|
-
},
|
|
164986
|
-
className: "gap-2",
|
|
164987
|
-
children: [
|
|
164988
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(AppIcon, { id: app.icon, className: "size-5 shrink-0" }),
|
|
164989
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1", children: app.label }),
|
|
164990
|
-
current.id === app.id && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-muted-foreground" })
|
|
164991
|
-
]
|
|
164992
|
-
},
|
|
164993
|
-
app.id
|
|
164994
|
-
)),
|
|
164995
|
-
onCopyPath && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
|
|
164996
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuSeparator, {}),
|
|
164997
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuItem, { onClick: onCopyPath, className: "gap-2", children: [
|
|
164998
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { className: "size-4 shrink-0 ml-0.5" }),
|
|
164999
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1", children: "Copy path" })
|
|
165000
|
-
] })
|
|
165001
|
-
] })
|
|
165002
|
-
] })
|
|
165003
|
-
] })
|
|
165004
|
-
] });
|
|
165005
|
-
}
|
|
165006
|
-
function useDesktopDrag(ref) {
|
|
165007
|
-
reactExports.useEffect(() => {
|
|
165008
|
-
const el = ref.current;
|
|
165009
|
-
if (!el) return;
|
|
165010
|
-
if (!isDesktop) return;
|
|
165011
|
-
const onMouseDown = (e2) => {
|
|
165012
|
-
if (e2.buttons !== 1) return;
|
|
165013
|
-
startDragging().catch(() => {
|
|
165014
|
-
});
|
|
165015
|
-
};
|
|
165016
|
-
el.addEventListener("mousedown", onMouseDown);
|
|
165017
|
-
return () => el.removeEventListener("mousedown", onMouseDown);
|
|
165018
|
-
}, [ref]);
|
|
165019
|
-
}
|
|
165020
|
-
function TauriTitleBar({
|
|
165021
|
-
title,
|
|
165022
|
-
onToggleSidebar,
|
|
165023
|
-
sidebarCollapsed,
|
|
165024
|
-
workspaceName,
|
|
165025
|
-
workspacePath,
|
|
165026
|
-
onCopyPath,
|
|
165027
|
-
panelItems,
|
|
165028
|
-
hiddenPanels,
|
|
165029
|
-
onTogglePanelVisibility
|
|
165030
|
-
}) {
|
|
165031
|
-
const [appTitle, setAppTitle] = reactExports.useState(title ?? "Band");
|
|
165032
|
-
const ref = reactExports.useRef(null);
|
|
165033
|
-
reactExports.useEffect(() => {
|
|
165034
|
-
if (title) return;
|
|
165035
|
-
if (!isDesktop) return;
|
|
165036
|
-
invoke("get_app_title").then(setAppTitle).catch(() => {
|
|
165037
|
-
});
|
|
165038
|
-
}, [title]);
|
|
165039
|
-
useDesktopDrag(ref);
|
|
165040
|
-
const hasEditorPicker = workspaceName && workspacePath;
|
|
165041
|
-
const hasPanels = workspaceName && panelItems && panelItems.length > 0 && onTogglePanelVisibility;
|
|
165042
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
165043
|
-
"div",
|
|
165044
|
-
{
|
|
165045
|
-
ref,
|
|
165046
|
-
"data-tauri-drag-region": true,
|
|
165047
|
-
className: "h-[38px] shrink-0 flex items-center justify-center relative border-b border-border",
|
|
165048
|
-
children: [
|
|
165049
|
-
onToggleSidebar && /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
165050
|
-
"button",
|
|
165051
|
-
{
|
|
165052
|
-
type: "button",
|
|
165053
|
-
onClick: onToggleSidebar,
|
|
165054
|
-
onMouseDown: (e2) => e2.stopPropagation(),
|
|
165055
|
-
className: "absolute left-[80px] top-1/2 -translate-y-1/2 flex items-center justify-center rounded p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors pointer-events-auto",
|
|
165056
|
-
title: sidebarCollapsed ? "Show sidebar" : "Hide sidebar",
|
|
165057
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-5" })
|
|
165058
|
-
}
|
|
165059
|
-
),
|
|
165060
|
-
workspaceName ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm font-semibold text-foreground select-none pointer-events-none truncate max-w-[50%]", children: workspaceName }) : /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-xs font-medium text-muted-foreground select-none pointer-events-none", children: appTitle }),
|
|
165061
|
-
(hasEditorPicker || hasPanels) && /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
165062
|
-
"div",
|
|
165063
|
-
{
|
|
165064
|
-
className: "absolute right-2 top-1/2 -translate-y-1/2 flex items-center gap-1 pointer-events-auto",
|
|
165065
|
-
onMouseDown: (e2) => e2.stopPropagation(),
|
|
165066
|
-
children: [
|
|
165067
|
-
hasEditorPicker && /* @__PURE__ */ jsxRuntimeExports.jsx(EditorPicker, { workspacePath, onCopyPath }),
|
|
165068
|
-
hasPanels && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
|
|
165069
|
-
/* @__PURE__ */ jsxRuntimeExports.jsxs(Tooltip, { children: [
|
|
165070
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
165071
|
-
"button",
|
|
165072
|
-
{
|
|
165073
|
-
type: "button",
|
|
165074
|
-
className: "flex items-center justify-center rounded-md p-1 text-muted-foreground hover:text-foreground hover:bg-accent/50 transition-colors",
|
|
165075
|
-
children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelTop, { className: "size-5" })
|
|
165076
|
-
}
|
|
165077
|
-
) }) }),
|
|
165078
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(TooltipContent, { side: "bottom", children: "Switch Panel" })
|
|
165079
|
-
] }),
|
|
165080
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuContent, { align: "end", children: panelItems?.map((item) => {
|
|
165081
|
-
const Icon2 = item.icon;
|
|
165082
|
-
const isChat = item.id === "chat";
|
|
165083
|
-
const isVisible = isChat || !hiddenPanels?.includes(item.id);
|
|
165084
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
165085
|
-
DropdownMenuCheckboxItem,
|
|
165086
|
-
{
|
|
165087
|
-
checked: isVisible,
|
|
165088
|
-
disabled: isChat,
|
|
165089
|
-
onCheckedChange: () => {
|
|
165090
|
-
if (isChat) return;
|
|
165091
|
-
onTogglePanelVisibility?.(item.id);
|
|
165092
|
-
},
|
|
165093
|
-
children: [
|
|
165094
|
-
/* @__PURE__ */ jsxRuntimeExports.jsx(Icon2, { className: "size-4" }),
|
|
165095
|
-
item.label,
|
|
165096
|
-
item.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuShortcut, { children: item.shortcut })
|
|
165097
|
-
]
|
|
165098
|
-
},
|
|
165099
|
-
item.id
|
|
165100
|
-
);
|
|
165101
|
-
}) })
|
|
165102
|
-
] })
|
|
165103
|
-
]
|
|
165104
|
-
}
|
|
165105
|
-
)
|
|
165106
|
-
]
|
|
165107
|
-
}
|
|
165108
|
-
);
|
|
165109
|
-
}
|
|
165110
|
-
function TauriDragRegion() {
|
|
165111
|
-
const ref = reactExports.useRef(null);
|
|
165112
|
-
useDesktopDrag(ref);
|
|
165113
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref, "data-tauri-drag-region": true, className: "h-[38px] shrink-0" });
|
|
165114
|
-
}
|
|
165115
165236
|
const HEALTH_POLL_INTERVAL = 3e4;
|
|
165116
165237
|
function useTunnel() {
|
|
165117
165238
|
const adapter2 = useAdapter();
|
|
@@ -165399,7 +165520,7 @@ function CronjobCard({
|
|
|
165399
165520
|
return /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
165400
165521
|
"div",
|
|
165401
165522
|
{
|
|
165402
|
-
className: `flex flex-col gap-2 rounded-lg border border-border/50
|
|
165523
|
+
className: `flex flex-col gap-2 rounded-lg border-2 border-border/50 p-4 transition-colors hover:border-border ${!job.enabled ? "opacity-60" : ""}`,
|
|
165403
165524
|
children: [
|
|
165404
165525
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
165405
165526
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "min-w-0 flex-1", children: [
|
|
@@ -165945,7 +166066,7 @@ function TaskCard({
|
|
|
165945
166066
|
setActing(false);
|
|
165946
166067
|
}
|
|
165947
166068
|
}, [task.id, onAction]);
|
|
165948
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 rounded-lg border border-border/50
|
|
166069
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col gap-2 rounded-lg border-2 border-border/50 p-4 transition-colors hover:border-border", children: [
|
|
165949
166070
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-start justify-between gap-3", children: [
|
|
165950
166071
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "line-clamp-2 min-w-0 flex-1 text-sm font-medium text-foreground", children: task.prompt }),
|
|
165951
166072
|
/* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -167491,10 +167612,10 @@ function extractWorkspaceId(pathname) {
|
|
|
167491
167612
|
if (!encoded) return null;
|
|
167492
167613
|
return decodeURIComponent(encoded);
|
|
167493
167614
|
}
|
|
167615
|
+
const INITIAL_HISTORY = { stack: [], cursor: -1 };
|
|
167494
167616
|
function useNavigationHistory(routerNavigate, capabilities2) {
|
|
167495
167617
|
const pathname = useRouterState({ select: (s2) => s2.location.pathname });
|
|
167496
|
-
const
|
|
167497
|
-
const cursorRef = reactExports.useRef(-1);
|
|
167618
|
+
const [history2, setHistory] = reactExports.useState(INITIAL_HISTORY);
|
|
167498
167619
|
const navigatingRef = reactExports.useRef(false);
|
|
167499
167620
|
reactExports.useEffect(() => {
|
|
167500
167621
|
const wsId = extractWorkspaceId(pathname);
|
|
@@ -167503,27 +167624,43 @@ function useNavigationHistory(routerNavigate, capabilities2) {
|
|
|
167503
167624
|
navigatingRef.current = false;
|
|
167504
167625
|
return;
|
|
167505
167626
|
}
|
|
167506
|
-
|
|
167507
|
-
|
|
167508
|
-
|
|
167509
|
-
|
|
167510
|
-
|
|
167627
|
+
setHistory((prev2) => {
|
|
167628
|
+
if (prev2.cursor >= 0 && prev2.stack[prev2.cursor] === wsId) return prev2;
|
|
167629
|
+
const stack = [...prev2.stack.slice(0, prev2.cursor + 1), wsId];
|
|
167630
|
+
return { stack, cursor: stack.length - 1 };
|
|
167631
|
+
});
|
|
167511
167632
|
}, [pathname]);
|
|
167512
167633
|
const goBack = reactExports.useCallback(() => {
|
|
167513
|
-
|
|
167514
|
-
|
|
167515
|
-
|
|
167516
|
-
|
|
167517
|
-
|
|
167518
|
-
|
|
167634
|
+
let didMove = false;
|
|
167635
|
+
let targetWsId;
|
|
167636
|
+
setHistory((prev2) => {
|
|
167637
|
+
if (prev2.cursor <= 0) return prev2;
|
|
167638
|
+
didMove = true;
|
|
167639
|
+
const cursor = prev2.cursor - 1;
|
|
167640
|
+
targetWsId = prev2.stack[cursor];
|
|
167641
|
+
return { stack: prev2.stack, cursor };
|
|
167642
|
+
});
|
|
167643
|
+
if (didMove && targetWsId) {
|
|
167644
|
+
navigatingRef.current = true;
|
|
167645
|
+
const href = capabilities2.getWorkspaceHref?.(targetWsId);
|
|
167646
|
+
if (href) routerNavigate(href);
|
|
167647
|
+
}
|
|
167519
167648
|
}, [routerNavigate, capabilities2]);
|
|
167520
167649
|
const goForward = reactExports.useCallback(() => {
|
|
167521
|
-
|
|
167522
|
-
|
|
167523
|
-
|
|
167524
|
-
|
|
167525
|
-
|
|
167526
|
-
|
|
167650
|
+
let didMove = false;
|
|
167651
|
+
let targetWsId;
|
|
167652
|
+
setHistory((prev2) => {
|
|
167653
|
+
if (prev2.cursor >= prev2.stack.length - 1) return prev2;
|
|
167654
|
+
didMove = true;
|
|
167655
|
+
const cursor = prev2.cursor + 1;
|
|
167656
|
+
targetWsId = prev2.stack[cursor];
|
|
167657
|
+
return { stack: prev2.stack, cursor };
|
|
167658
|
+
});
|
|
167659
|
+
if (didMove && targetWsId) {
|
|
167660
|
+
navigatingRef.current = true;
|
|
167661
|
+
const href = capabilities2.getWorkspaceHref?.(targetWsId);
|
|
167662
|
+
if (href) routerNavigate(href);
|
|
167663
|
+
}
|
|
167527
167664
|
}, [routerNavigate, capabilities2]);
|
|
167528
167665
|
reactExports.useEffect(() => {
|
|
167529
167666
|
const handler = (e2) => {
|
|
@@ -167537,6 +167674,12 @@ function useNavigationHistory(routerNavigate, capabilities2) {
|
|
|
167537
167674
|
window.addEventListener("keydown", handler, true);
|
|
167538
167675
|
return () => window.removeEventListener("keydown", handler, true);
|
|
167539
167676
|
}, [goBack, goForward]);
|
|
167677
|
+
return {
|
|
167678
|
+
goBack,
|
|
167679
|
+
goForward,
|
|
167680
|
+
canGoBack: history2.cursor > 0,
|
|
167681
|
+
canGoForward: history2.cursor >= 0 && history2.cursor < history2.stack.length - 1
|
|
167682
|
+
};
|
|
167540
167683
|
}
|
|
167541
167684
|
const ZOOM_LEVEL_KEY = "band:zoom-level";
|
|
167542
167685
|
const DEFAULT_ZOOM = 1;
|
|
@@ -167628,7 +167771,7 @@ function saveSidebarWidth(width) {
|
|
|
167628
167771
|
}
|
|
167629
167772
|
const SIDEBAR_MIN_SIZE = "15rem";
|
|
167630
167773
|
const SIDEBAR_MAX_SIZE = "60%";
|
|
167631
|
-
const adapter = isDesktop ? new
|
|
167774
|
+
const adapter = isDesktop ? new DesktopDashboardAdapter() : new WebDashboardAdapter();
|
|
167632
167775
|
const capabilities = isDesktop ? new NativeShellCapabilities() : new WebCapabilities();
|
|
167633
167776
|
const Route$8 = createRootRoute({
|
|
167634
167777
|
head: () => ({
|
|
@@ -167641,14 +167784,14 @@ const Route$8 = createRootRoute({
|
|
|
167641
167784
|
{ title: "Band" },
|
|
167642
167785
|
{ name: "apple-mobile-web-app-capable", content: "yes" },
|
|
167643
167786
|
{ name: "apple-mobile-web-app-status-bar-style", content: "black-translucent" },
|
|
167644
|
-
{ name: "theme-color", content: "#
|
|
167787
|
+
{ name: "theme-color", content: "#1e1e1e" }
|
|
167645
167788
|
]
|
|
167646
167789
|
}),
|
|
167647
167790
|
component: RootLayout,
|
|
167648
167791
|
notFoundComponent: NotFound
|
|
167649
167792
|
});
|
|
167650
167793
|
function NotFound() {
|
|
167651
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-
|
|
167794
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-4 p-8 text-center", children: [
|
|
167652
167795
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-4xl font-bold", children: "404" }),
|
|
167653
167796
|
/* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-sm text-muted-foreground", children: "Page not found" }),
|
|
167654
167797
|
/* @__PURE__ */ jsxRuntimeExports.jsx(Link, { to: "/", className: "text-sm text-primary underline", children: "Back to dashboard" })
|
|
@@ -167739,7 +167882,7 @@ function AppShell() {
|
|
|
167739
167882
|
};
|
|
167740
167883
|
}, [router2]);
|
|
167741
167884
|
const routerNavigate = reactExports.useCallback((href) => router2.navigate({ to: href }), [router2]);
|
|
167742
|
-
useNavigationHistory(routerNavigate, capabilities);
|
|
167885
|
+
const navigationHistory = useNavigationHistory(routerNavigate, capabilities);
|
|
167743
167886
|
useZoom();
|
|
167744
167887
|
const savedWidth = loadSidebarWidth();
|
|
167745
167888
|
const defaultLayout = savedWidth ? { sidebar: savedWidth, main: 100 - savedWidth } : void 0;
|
|
@@ -167805,9 +167948,9 @@ function AppShell() {
|
|
|
167805
167948
|
if (!useDesktopLayout) {
|
|
167806
167949
|
return /* @__PURE__ */ jsxRuntimeExports.jsx(Outlet, {});
|
|
167807
167950
|
}
|
|
167808
|
-
return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-
|
|
167809
|
-
|
|
167810
|
-
|
|
167951
|
+
return /* @__PURE__ */ jsxRuntimeExports.jsx(ToolbarOverflowProvider, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex flex-col h-full w-full overflow-hidden bg-background text-foreground", children: [
|
|
167952
|
+
/* @__PURE__ */ jsxRuntimeExports.jsx(
|
|
167953
|
+
DesktopTitleBar,
|
|
167811
167954
|
{
|
|
167812
167955
|
onToggleSidebar: toggleSidebar,
|
|
167813
167956
|
sidebarCollapsed,
|
|
@@ -167816,7 +167959,11 @@ function AppShell() {
|
|
|
167816
167959
|
onCopyPath: activeWorkspaceId ? handleCopyPath : void 0,
|
|
167817
167960
|
panelItems: activeWorkspaceId ? panelItems : void 0,
|
|
167818
167961
|
hiddenPanels: activeWorkspaceId ? hiddenPanels : void 0,
|
|
167819
|
-
onTogglePanelVisibility: activeWorkspaceId ? handleTogglePanelVisibility : void 0
|
|
167962
|
+
onTogglePanelVisibility: activeWorkspaceId ? handleTogglePanelVisibility : void 0,
|
|
167963
|
+
onGoBack: navigationHistory.goBack,
|
|
167964
|
+
onGoForward: navigationHistory.goForward,
|
|
167965
|
+
canGoBack: navigationHistory.canGoBack,
|
|
167966
|
+
canGoForward: navigationHistory.canGoForward
|
|
167820
167967
|
}
|
|
167821
167968
|
),
|
|
167822
167969
|
/* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex-1 min-h-0 overflow-hidden", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
|
|
@@ -167876,11 +168023,11 @@ function RootLayout() {
|
|
|
167876
168023
|
] })
|
|
167877
168024
|
] });
|
|
167878
168025
|
}
|
|
167879
|
-
const $$splitComponentImporter$7 = () => import("./index-
|
|
168026
|
+
const $$splitComponentImporter$7 = () => import("./index-Dn5q9HW4.js");
|
|
167880
168027
|
const Route$7 = createFileRoute("/")({
|
|
167881
168028
|
component: lazyRouteComponent($$splitComponentImporter$7, "component")
|
|
167882
168029
|
});
|
|
167883
|
-
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-
|
|
168030
|
+
const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-CR4TOS5A.js");
|
|
167884
168031
|
const Route$6 = createFileRoute("/workspace/$workspaceId")({
|
|
167885
168032
|
component: lazyRouteComponent($$splitComponentImporter$6, "component")
|
|
167886
168033
|
});
|
|
@@ -167899,11 +168046,11 @@ const FindInFileContext = reactExports.createContext({
|
|
|
167899
168046
|
function useFindInFileContext() {
|
|
167900
168047
|
return reactExports.useContext(FindInFileContext);
|
|
167901
168048
|
}
|
|
167902
|
-
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-
|
|
168049
|
+
const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-alkhfxK3.js");
|
|
167903
168050
|
const Route$5 = createFileRoute("/workspace/$workspaceId/")({
|
|
167904
168051
|
component: lazyRouteComponent($$splitComponentImporter$5, "component")
|
|
167905
168052
|
});
|
|
167906
|
-
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-
|
|
168053
|
+
const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-BvpiNe_s.js");
|
|
167907
168054
|
const Route$4 = createFileRoute("/workspace/$workspaceId/terminal")({
|
|
167908
168055
|
component: lazyRouteComponent($$splitComponentImporter$4, "component")
|
|
167909
168056
|
});
|
|
@@ -167911,15 +168058,15 @@ const $$splitComponentImporter$3 = () => import("./workspace._workspaceId.code-C
|
|
|
167911
168058
|
const Route$3 = createFileRoute("/workspace/$workspaceId/code")({
|
|
167912
168059
|
component: lazyRouteComponent($$splitComponentImporter$3, "component")
|
|
167913
168060
|
});
|
|
167914
|
-
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-
|
|
168061
|
+
const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-B7PK-I72.js");
|
|
167915
168062
|
const Route$2 = createFileRoute("/workspace/$workspaceId/changes")({
|
|
167916
168063
|
component: lazyRouteComponent($$splitComponentImporter$2, "component")
|
|
167917
168064
|
});
|
|
167918
|
-
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-
|
|
168065
|
+
const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-CLRAQ6Pf.js");
|
|
167919
168066
|
const Route$1 = createFileRoute("/workspace/$workspaceId/code/")({
|
|
167920
168067
|
component: lazyRouteComponent($$splitComponentImporter$1, "component")
|
|
167921
168068
|
});
|
|
167922
|
-
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-
|
|
168069
|
+
const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-CA9dP_-G.js");
|
|
167923
168070
|
const Route2 = createFileRoute("/workspace/$workspaceId/code/$")({
|
|
167924
168071
|
component: lazyRouteComponent($$splitComponentImporter, "component")
|
|
167925
168072
|
});
|
|
@@ -168049,7 +168196,7 @@ export {
|
|
|
168049
168196
|
curveBasis as aN,
|
|
168050
168197
|
generateId$1 as aO,
|
|
168051
168198
|
setupGraphViewbox as aP,
|
|
168052
|
-
isDark
|
|
168199
|
+
isDark as aQ,
|
|
168053
168200
|
lighten as aR,
|
|
168054
168201
|
darken as aS,
|
|
168055
168202
|
commonDb_exports as aT,
|
|
@@ -168096,7 +168243,7 @@ export {
|
|
|
168096
168243
|
FolderOpen as b5,
|
|
168097
168244
|
Route$6 as b6,
|
|
168098
168245
|
useDashboardStore as b7,
|
|
168099
|
-
|
|
168246
|
+
DesktopDragRegion as b8,
|
|
168100
168247
|
ArrowLeft as b9,
|
|
168101
168248
|
useQuery as bA,
|
|
168102
168249
|
DockviewReact as bB,
|