@band-app/server 0.16.9 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/assets/DockviewBrowserContainer-B_oEene2.js +5 -0
- package/dist/client/assets/DockviewTerminalContainer-CfQMvR_k.js +2 -0
- package/dist/client/assets/TerminalPanel-DxZK0ClB.js +5 -0
- package/dist/client/assets/{_basePickBy-uVqvgsJc.js → _basePickBy-Ct-e0Qqq.js} +1 -1
- package/dist/client/assets/{_baseUniq-7i7L1uNE.js → _baseUniq-CxKOXF1k.js} +1 -1
- package/dist/client/assets/arc-CKSDLbJ_.js +1 -0
- package/dist/client/assets/architectureDiagram-VXUJARFQ-DX7YfptV.js +36 -0
- package/dist/client/assets/{blockDiagram-VD42YOAC-CXQSSz3O.js → blockDiagram-VD42YOAC-CsuIx-c9.js} +5 -5
- package/dist/client/assets/{c4Diagram-YG6GDRKO-DplRXCR2.js → c4Diagram-YG6GDRKO-DychwT1W.js} +3 -3
- package/dist/client/assets/channel-B-u6m7I1.js +1 -0
- package/dist/client/assets/chunk-4BX2VUAB-loz8MPPD.js +1 -0
- package/dist/client/assets/chunk-55IACEB6-D29ChrqC.js +1 -0
- package/dist/client/assets/{chunk-B4BG7PRW-DlN9tUxh.js → chunk-B4BG7PRW-DKCONMEK.js} +6 -6
- package/dist/client/assets/{chunk-DI55MBZ5-a11zyhq4.js → chunk-DI55MBZ5-D5zzjeE8.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-aGGVV1yn.js → chunk-FMBD7UC4-D1xESdhD.js} +1 -1
- package/dist/client/assets/chunk-QN33PNHL-DXisPMUT.js +1 -0
- package/dist/client/assets/chunk-QZHKN3VN-Ch8ZVx4Y.js +1 -0
- package/dist/client/assets/chunk-TZMSLE5B-GuM5n4Rs.js +1 -0
- package/dist/client/assets/classDiagram-2ON5EDUG-ZLOOfEOW.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-ZLOOfEOW.js +1 -0
- package/dist/client/assets/clone-CDLv4lRU.js +1 -0
- package/dist/client/assets/cose-bilkent-S5V4N54A-Cf0f3nH9.js +1 -0
- package/dist/client/assets/dagre-6UL2VRFP-BEjucV14.js +4 -0
- package/dist/client/assets/diagram-PSM6KHXK-4UTMLb3J.js +24 -0
- package/dist/client/assets/diagram-QEK2KX5R-B9rhi9zE.js +43 -0
- package/dist/client/assets/diagram-S2PKOQOG-CS7F4WJO.js +24 -0
- package/dist/client/assets/{erDiagram-Q2GNP2WA-kUd-gmjz.js → erDiagram-Q2GNP2WA-D-EqIR9o.js} +4 -4
- package/dist/client/assets/{flowDiagram-NV44I4VS-CHbLqCKB.js → flowDiagram-NV44I4VS-_GH1A_sS.js} +5 -5
- package/dist/client/assets/ganttDiagram-JELNMOA3-Dtb6N1ze.js +267 -0
- package/dist/client/assets/gitGraphDiagram-V2S2FVAM-B_QsP5ak.js +65 -0
- package/dist/client/assets/{graph-CSi_akmB.js → graph-H6OCDpse.js} +1 -1
- package/dist/client/assets/highlighted-body-B3W2YXNL-Pz2rshlt.js +1 -0
- package/dist/client/assets/index-B-KsZlI_.js +1 -0
- package/dist/client/assets/{index-udv0M-ix.js → index-BCbe81ki.js} +2 -2
- package/dist/client/assets/index-BOdifnXB.js +1 -0
- package/dist/client/assets/{index-BPf6S9f1.js → index-BQW7Zpk7.js} +1 -1
- package/dist/client/assets/index-BX_7-t5E.js +1 -0
- package/dist/client/assets/{index-B0ZcEU4c.js → index-BktK8Iwc.js} +1 -1
- package/dist/client/assets/{index-C-6dsPog.js → index-BtEs1oEp.js} +1 -1
- package/dist/client/assets/{index-T_1b5WRg.js → index-BtajlvkF.js} +1 -1
- package/dist/client/assets/{index-CNQHGhCu.js → index-Bx3rRbZG.js} +1 -1
- package/dist/client/assets/{index-DfHcm4JM.js → index-C6MgAn1q.js} +1 -1
- package/dist/client/assets/{index-C4ee_PQ0.js → index-CzCjpAqZ.js} +5 -5
- package/dist/client/assets/{index-oolizINO.js → index-DQAckahj.js} +1 -1
- package/dist/client/assets/index-DaRnNd02.js +7 -0
- package/dist/client/assets/{index-BJP1qdPz.js → index-Im7rGMYn.js} +1 -1
- package/dist/client/assets/{index-CA1NuCd_.js → index-WmGuuT8Z.js} +1 -1
- package/dist/client/assets/{index-C-3PAt1d.js → index-aTt3zXBv.js} +1 -1
- package/dist/client/assets/{index-5X7JRvnK.js → index-nPplcWzt.js} +1 -1
- package/dist/client/assets/{index-spwNnd85.js → index-vaGaAlmP.js} +1 -1
- package/dist/client/assets/infoDiagram-HS3SLOUP-Dp2iuUeA.js +2 -0
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DIY8FE8Z.js → journeyDiagram-XKPGCS4Q-BaVzrE3V.js} +3 -3
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-Cd_JJ8FN.js → kanban-definition-3W4ZIXB7-DdbWsnm7.js} +8 -8
- package/dist/client/assets/{layout-Bhb5FQCr.js → layout-vxWf40Ht.js} +1 -1
- package/dist/client/assets/{linear-Cmk2RyH_.js → linear-BstrgKy8.js} +1 -1
- package/dist/client/assets/{main-BlRcPsmZ.js → main-DRq9Axai.js} +227 -226
- package/dist/client/assets/main-evBJruhw.css +1 -0
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-B-WhBVeY.js → mindmap-definition-VGOIOE7T-CAEEMYhK.js} +3 -3
- package/dist/client/assets/pieDiagram-ADFJNKIX-DCNv4UlO.js +30 -0
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DHBoMUCQ.js → quadrantDiagram-AYHSOK5B-BeP4t0hp.js} +2 -2
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-DjS5RONh.js → requirementDiagram-UZGBJVZJ-CAdiLb_M.js} +2 -2
- package/dist/client/assets/sankeyDiagram-TZEHDZUN-DW9xKT5Y.js +10 -0
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-CzqbRfb_.js → sequenceDiagram-WL72ISMW-D9y8fK_R.js} +1 -1
- package/dist/client/assets/{square-terminal-CNHJa6OY.js → square-terminal-VjG9-RoZ.js} +1 -1
- package/dist/client/assets/stateDiagram-FKZM4ZOC-QYuyBeVm.js +1 -0
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-VVONI0Hb.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-CNKMKDwq.js → timeline-definition-IT6M3QCI-Ci_SXZdO.js} +4 -4
- package/dist/client/assets/{treemap-GDKQZRPO-DCEPrZh7.js → treemap-GDKQZRPO-fDacl-jS.js} +1 -1
- package/dist/client/assets/workspace._workspaceId-C9BVWo6-.js +2 -0
- package/dist/client/assets/workspace._workspaceId-CMlw9wn8.js +1 -0
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-Cr18I3A3.js → xychartDiagram-PRI3JC2R-rRpBADcB.js} +4 -4
- package/dist/migrations/20260525163504_add_projects_has_origin/migration.sql +1 -0
- package/dist/migrations/20260525163504_add_projects_has_origin/snapshot.json +866 -0
- package/dist/openapi.json +414 -4
- package/dist/server/assets/{DockviewBrowserContainer-Bm7ARaqd.js → DockviewBrowserContainer-BAe7TLKD.js} +42 -22
- package/dist/server/assets/{DockviewTerminalContainer-BbMZgBJ8.js → DockviewTerminalContainer-CC7i0yMZ.js} +44 -24
- package/dist/server/assets/{TerminalPanel-BmhYCf33.js → TerminalPanel-gBh8VBn0.js} +1 -1
- package/dist/server/assets/{_basePickBy-C7CNOUDi.js → _basePickBy-CTks6QXq.js} +2 -2
- package/dist/server/assets/{_baseUniq-DeF47vVO.js → _baseUniq-BJI4qneQ.js} +1 -1
- package/dist/server/assets/_tanstack-start-manifest_v-CfuSyuIp.js +4 -0
- package/dist/server/assets/{arc-P5FY7IYH.js → arc-Fdc_l0PB.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-LvprLHYS.js → architecture-7HQA4BMR-CfPXboDr.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-Br4iiUzH.js → architectureDiagram-VXUJARFQ-D6UEkzy_.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-BahODDhX.js → blockDiagram-VD42YOAC-BvasIENt.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-CQcZX6cr.js → c4Diagram-YG6GDRKO-MW5H9zoJ.js} +2 -2
- package/dist/server/assets/{channel-BmAB_ZKU.js → channel-XhTiPor2.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-YUvszr4w.js → chunk-4BX2VUAB-C6POw9HJ.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-BUgBPiJd.js → chunk-55IACEB6-BZ0x-UQb.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-BxuWeZlV.js → chunk-B4BG7PRW-BAYqNQHL.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-DuGkdvte.js → chunk-DI55MBZ5-DbsR50vR.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-qY-BVG34.js → chunk-FMBD7UC4-D_KXTL87.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-BM_oi8-e.js → chunk-QN33PNHL-RXXHu7T0.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-BL6_-at8.js → chunk-QZHKN3VN-5QE6weTd.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-38NhX5at.js → chunk-TZMSLE5B-HlRXkCDZ.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-CwIsZ53p.js → classDiagram-2ON5EDUG-B90fR_EV.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-CwIsZ53p.js → classDiagram-v2-WZHVMYZB-B90fR_EV.js} +5 -5
- package/dist/server/assets/{clone-BXHuGM8i.js → clone-Bjcb6OQr.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-D1CdgGvI.js → cose-bilkent-S5V4N54A-BgnWrjAl.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-UMvdMLG3.js → dagre-6UL2VRFP-LfRXD26Q.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-DtOD93m7.js → diagram-PSM6KHXK-DLrJ9Eja.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-DViyYq-y.js → diagram-QEK2KX5R-atbHIh96.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-C42mRVEn.js → diagram-S2PKOQOG-BnxctnIJ.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-D14z9IvB.js → erDiagram-Q2GNP2WA-Ct1zXovC.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-BYBNOZwM.js → flowDiagram-NV44I4VS-DtWHb6Ay.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-CaG3uoK-.js → ganttDiagram-JELNMOA3-CySyldy4.js} +2 -2
- package/dist/server/assets/{gitGraph-G5XIXVHT-Dsx3dV0R.js → gitGraph-G5XIXVHT-DFo7FJzL.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CrSfx7b3.js → gitGraphDiagram-V2S2FVAM-DvT5EUG7.js} +7 -7
- package/dist/server/assets/{graph-gBFInK6H.js → graph-B5XlkLf_.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-DjTWk17l.js → highlighted-body-B3W2YXNL-CLJWhRU_.js} +1 -1
- package/dist/server/assets/{index-C3N_Nx6h.js → index--4MijjkY.js} +2 -2
- package/dist/server/assets/{index-C245EJn1.js → index-4SOjxyuO.js} +2 -2
- package/dist/server/assets/{index-3wtbr7va.js → index-BQ5LDgRA.js} +3 -3
- package/dist/server/assets/{index-CD97pPmc.js → index-BanzNq86.js} +1 -1
- package/dist/server/assets/{index-2gWBdIrR.js → index-BvJzvUfR.js} +2 -2
- package/dist/server/assets/{index-B84Urg23.js → index-C2GzB22l.js} +2 -2
- package/dist/server/assets/{index-QxgXX0fb.js → index-CAJcSCqE.js} +2 -2
- package/dist/server/assets/{index-Bs6a6-xI.js → index-CLUle2oh.js} +5 -5
- package/dist/server/assets/{index-5N2Gh0ba.js → index-CMO4FLK_.js} +2 -2
- package/dist/server/assets/{index-6Zof9vm8.js → index-CXMNOcuN.js} +1 -1
- package/dist/server/assets/{index-Dv-16VYI.js → index-CXmMBSCL.js} +2 -2
- package/dist/server/assets/{index-DXgP0Lsu.js → index-CdgmRfZg.js} +2 -2
- package/dist/server/assets/{index-CwQ5qWPC.js → index-DJ8A5E65.js} +5 -5
- package/dist/server/assets/{index-DZZ6NiTf.js → index-DjySh3G7.js} +3 -3
- package/dist/server/assets/{index-Bd5jTryJ.js → index-DuXjusjn.js} +2 -2
- package/dist/server/assets/{index-DsGPaWHg.js → index-QiPzMfSX.js} +2 -2
- package/dist/server/assets/{index-Bw42FDwO.js → index-SuLB6TaE.js} +2 -2
- package/dist/server/assets/{index-egmIrLx2.js → index-bmq-aMYV.js} +4 -4
- package/dist/server/assets/{info-VBDWY6EO-CueOsYFZ.js → info-VBDWY6EO-CW57QiJi.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-CeyMzohL.js → infoDiagram-HS3SLOUP-D_Zdx-MM.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-ANqeM_TM.js → journeyDiagram-XKPGCS4Q-BcO9qzr2.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-B0RkH45q.js → kanban-definition-3W4ZIXB7-BatZ7RKG.js} +2 -2
- package/dist/server/assets/{layout-JjP5jdu6.js → layout-Cwuj9CwZ.js} +4 -4
- package/dist/server/assets/{linear-BJgoq5J4.js → linear-CP3xC85V.js} +1 -1
- package/dist/server/assets/{mermaid-3ZIDBTTL-CFPuUseQ.js → mermaid-3ZIDBTTL-BZm8jQDo.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-CKKZ1VFr.js → mermaid-parser.core-Cx17C8XR.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-DlEXF5z8.js → mindmap-definition-VGOIOE7T-CpzqFomk.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-CvyxHTRM.js → packet-DYOGHKS2-x3ihoqUO.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-DfpVZlpC.js → pie-VRWISCQL-DsMBDe8r.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-CWkrHsNk.js → pieDiagram-ADFJNKIX-DI4Hh6KE.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-C25p2xz7.js → quadrantDiagram-AYHSOK5B-Cqc_vrUG.js} +2 -2
- package/dist/server/assets/{radar-ZZBFDIW7-DWqPsDMi.js → radar-ZZBFDIW7-CqwCJm3D.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-ACRVXQGO.js → requirementDiagram-UZGBJVZJ-96ab-40P.js} +3 -3
- package/dist/server/assets/{router-GhGSLKfP.js → router-CYNdQEN4.js} +1116 -579
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-uzNSHudY.js → sankeyDiagram-TZEHDZUN-Bux2-BQd.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-C_wFtq8b.js → sequenceDiagram-WL72ISMW-CFKyfvmC.js} +3 -3
- package/dist/server/assets/{square-terminal-cghvb5Il.js → square-terminal-gVSeBp7-.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-B9MGwsuS.js → stateDiagram-FKZM4ZOC-DGZQd18J.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-CLHd8oUa.js → stateDiagram-v2-4FDKWEC3-DJXeLDOB.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-CqKot5RT.js → timeline-definition-IT6M3QCI-DzTJZPN5.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-mMRojqRQ.js → treemap-GDKQZRPO-CD9jkQrA.js} +6 -6
- package/dist/server/assets/workspace._workspaceId-ClAAZ5aq.js +23 -0
- package/dist/server/assets/{workspace._workspaceId-DwsRTXCg.js → workspace._workspaceId-DT6Kz8RH.js} +125 -97
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-j8PckQEj.js → xychartDiagram-PRI3JC2R-ByA0_p8p.js} +2 -2
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +489 -242
- package/package.json +4 -4
- package/dist/client/assets/DockviewBrowserContainer-CCBAkU1p.js +0 -5
- package/dist/client/assets/DockviewTerminalContainer-B9hdDoMz.js +0 -2
- package/dist/client/assets/TerminalPanel-BKfWmj6W.js +0 -5
- package/dist/client/assets/arc-DiYEQGs3.js +0 -1
- package/dist/client/assets/architectureDiagram-VXUJARFQ-C5z8L1iK.js +0 -36
- package/dist/client/assets/channel-BnMJuhcI.js +0 -1
- package/dist/client/assets/chunk-4BX2VUAB-B4Mk_d7A.js +0 -1
- package/dist/client/assets/chunk-55IACEB6-B0hf8Eje.js +0 -1
- package/dist/client/assets/chunk-QN33PNHL-Dit4S-yJ.js +0 -1
- package/dist/client/assets/chunk-QZHKN3VN-L-h1VSi0.js +0 -1
- package/dist/client/assets/chunk-TZMSLE5B-DpK-hWaC.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-D89oCSXI.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-D89oCSXI.js +0 -1
- package/dist/client/assets/clone-X7FA7kE2.js +0 -1
- package/dist/client/assets/cose-bilkent-S5V4N54A-CzoIK-3W.js +0 -1
- package/dist/client/assets/dagre-6UL2VRFP-BhfXeb7k.js +0 -4
- package/dist/client/assets/diagram-PSM6KHXK-BwFVwR1b.js +0 -24
- package/dist/client/assets/diagram-QEK2KX5R-BO-CEopy.js +0 -43
- package/dist/client/assets/diagram-S2PKOQOG-BxiH83lN.js +0 -24
- package/dist/client/assets/ganttDiagram-JELNMOA3-B7gBcAFl.js +0 -267
- package/dist/client/assets/gitGraphDiagram-V2S2FVAM-gca_jqKQ.js +0 -65
- package/dist/client/assets/highlighted-body-B3W2YXNL-C2a-lsk8.js +0 -1
- package/dist/client/assets/index-2F-slvqo.js +0 -1
- package/dist/client/assets/index-C4PISrIW.js +0 -1
- package/dist/client/assets/index-CiKTedrx.js +0 -1
- package/dist/client/assets/index-DNrK0iIn.js +0 -7
- package/dist/client/assets/infoDiagram-HS3SLOUP-BK3MmhkJ.js +0 -2
- package/dist/client/assets/main-BLOY6Nam.css +0 -1
- package/dist/client/assets/pieDiagram-ADFJNKIX-CYoHsaM9.js +0 -30
- package/dist/client/assets/sankeyDiagram-TZEHDZUN-DmhEbBY-.js +0 -10
- package/dist/client/assets/stateDiagram-FKZM4ZOC-CafvdTb3.js +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BkKHK-CQ.js +0 -1
- package/dist/client/assets/useSessionListContext-xer-Wcmf.js +0 -1
- package/dist/client/assets/workspace._workspaceId-CgG1n_1x.js +0 -1
- package/dist/client/assets/workspace._workspaceId.changes-BKX7lUhX.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code-BcnxRdZi.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code._-BbOt6tOD.js +0 -1
- package/dist/client/assets/workspace._workspaceId.code.index-DC2535x-.js +0 -1
- package/dist/client/assets/workspace._workspaceId.index-CNjq1nDf.js +0 -1
- package/dist/client/assets/workspace._workspaceId.terminal-DhYn8I5t.js +0 -2
- package/dist/server/assets/_tanstack-start-manifest_v-BNCQ-izx.js +0 -4
- package/dist/server/assets/useSessionListContext-D_vX6E2e.js +0 -23
- package/dist/server/assets/workspace._workspaceId.changes-C6vwSbUh.js +0 -38
- package/dist/server/assets/workspace._workspaceId.code-Cuj0zH98.js +0 -12
- package/dist/server/assets/workspace._workspaceId.code._-BJdg1-Gs.js +0 -44
- package/dist/server/assets/workspace._workspaceId.code.index-CE_CMD_I.js +0 -36
- package/dist/server/assets/workspace._workspaceId.index-BPhXMwl8.js +0 -112
- package/dist/server/assets/workspace._workspaceId.terminal-BdVDaWNH.js +0 -24
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@band-app/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"band-server": "./bin/band-server.mjs"
|
|
@@ -114,9 +114,9 @@
|
|
|
114
114
|
"ws": "^8.18.0",
|
|
115
115
|
"zod": "^3.25.67",
|
|
116
116
|
"zustand": "^5.0.0",
|
|
117
|
-
"@band-app/
|
|
118
|
-
"@band-app/
|
|
119
|
-
"@band-app/
|
|
117
|
+
"@band-app/logger": "^0.17.0",
|
|
118
|
+
"@band-app/coding-agent": "^0.17.0",
|
|
119
|
+
"@band-app/ui": "^0.17.0"
|
|
120
120
|
},
|
|
121
121
|
"scripts": {
|
|
122
122
|
"dev": "NODE_ENV=development tsx watch start-server.ts",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{F as fe,r as t,i as I,cn as q,co as L,cp as Re,t as F,cq as Pe,cr as Te,j as s,cs as se,ch as Ae,ct as Ee,cu as Ie,cv as Be,cw as Fe,cx as Ue,cy as qe,cz as Le,cA as Me,cB as ze,cC as H,cD as Oe,bp as Ke,ca as $e,X as pe,cE as He,G as Ge,H as Ve,J as Qe,K as We,M as Je,W as oe,Y as ae,Q as Ye,S as Xe,U as Ze,V as et}from"./main-BlRcPsmZ.js";const tt=[["path",{d:"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8",key:"1357e3"}],["path",{d:"M3 3v5h5",key:"1xhq8a"}],["path",{d:"M12 7v5l4 2",key:"1fdv2h"}]],rt=fe("history",tt);const nt=[["path",{d:"M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z",key:"1ngwbx"}]],st=fe("wrench",nt);function ot(e,n){if(!n||n.size===0||typeof e!="object"||e===null)return e;const r=e.panels;if(typeof r!="object"||r===null)return e;let d=!1;const f={};for(const[u,y]of Object.entries(r)){const v=n.get(u);if(v&&typeof y=="object"&&y!==null&&typeof y.params=="object"&&y.params!==null){const b=y.params;if(!b.initialUrl){f[u]={...y,params:{...b,initialUrl:v}},d=!0;continue}}f[u]=y}return d?{...e,panels:f}:e}const at={caseSensitive:!1,wholeWord:!1,regex:!1};function ct({key:e,keyName:n}){const[r,d]=t.useState(!1),[f,u]=t.useState(""),[y,v]=t.useState(at),[b,N]=t.useState(null),D=t.useRef(null),S=t.useRef(e);S.current=e;const P=t.useRef(null),g=t.useCallback(a=>n==="browserId"?a.browser_id:a.workspace_id,[n]),T=t.useCallback((a={})=>({[n]:S.current,...a}),[n]),A=t.useCallback(()=>{requestAnimationFrame(()=>{D.current?.focus(),D.current?.select()})},[]),C=t.useCallback(async(a,o={})=>{if(I){if(!a){N(null),P.current=null;try{await q("browser_stop_find_in_page",T({action:"clearSelection"}))}catch{}return}(o.findNext??!1)||(N(null),P.current=null);try{const l=await q("browser_find_in_page",T({text:a,options:{matchCase:y.caseSensitive,findNext:o.findNext??!1,forward:o.forward??!0}}));typeof l=="number"&&(P.current=l)}catch(l){console.error("browser_find_in_page failed:",l)}}},[T,y.caseSensitive]),E=t.useCallback(()=>{d(!1),u(""),N(null),P.current=null,I&&q("browser_stop_find_in_page",T({action:"clearSelection"})).catch(()=>{})},[T]),j=t.useCallback(()=>{d(!0),A()},[A]);t.useEffect(()=>{r&&C(f)},[f,r,C]),t.useEffect(()=>{if(!I)return;let a;return(async()=>a=await L("browser-found-in-page",o=>{g(o.payload)===S.current&&(P.current!==null&&o.payload.request_id!==P.current||N({total:o.payload.matches,current:o.payload.active_match_ordinal}))}))(),()=>a?.()},[g]),t.useEffect(()=>{if(!I)return;let a;return(async()=>a=await L("browser-find-shortcut",o=>{g(o.payload)===S.current&&(d(!0),A())}))(),()=>a?.()},[A,g]),t.useEffect(()=>{if(!I)return;let a;return(async()=>a=await L("browser-url-changed",o=>{g(o.payload)===S.current&&o.payload.loading&&E()}))(),()=>a?.()},[E,g]);const k=t.useCallback(()=>{f&&C(f,{findNext:!0,forward:!0})},[f,C]),i=t.useCallback(()=>{f&&C(f,{findNext:!0,forward:!1})},[f,C]);return{isOpen:r,open:j,close:E,query:f,setQuery:u,options:y,setOptions:v,matchInfo:b,findNext:k,findPrevious:i,searchBarRef:D}}const it=50,lt=100;function ut(e){const{key:n,keyName:r,workspaceId:d,currentUrlRef:f,setInputUrl:u,inputUrl:y,onNavigate:v}=e,b=ct({key:n,keyName:r}),N=t.useRef(!1),[D,S]=t.useState([]),[P,g]=t.useState(!1),[T,A]=t.useState(0);Re(P);const C=t.useCallback(()=>{g(!1),S([]),A(0)},[]);t.useEffect(()=>{if(!N.current)return;const o=y.trim();if(o===""){C();return}if(o===f.current.trim()){C();return}let l=!1;const c=setTimeout(()=>{F.history.search.query({workspaceId:d,query:o,limit:8}).then(p=>{if(!l){if(p.entries.length===0){C();return}S(p.entries),g(!0),A(0)}}).catch(()=>{l||C()})},it);return()=>{l=!0,clearTimeout(c)}},[y,d,C,f]);const E=t.useCallback(o=>{N.current=!0,o.target.select()},[]),j=t.useCallback(()=>{N.current=!1,u(f.current),setTimeout(()=>{N.current||C()},lt)},[f,u,C]),k=t.useCallback(o=>{if(P){if(o.key==="ArrowDown"){o.preventDefault(),A(l=>Math.min(l+1,D.length-1));return}if(o.key==="ArrowUp"){o.preventDefault(),A(l=>Math.max(l-1,0));return}if(o.key==="Enter"){const l=D[T];if(l){o.preventDefault(),C(),v(l.url);return}}if(o.key==="Escape"){o.preventDefault(),C();return}}if(o.key==="Enter"){o.preventDefault(),C(),v(y);return}if(o.key==="Escape"){o.preventDefault(),u(f.current);const l=o.currentTarget;requestAnimationFrame(()=>{l.isConnected&&l.select()})}},[y,v,u,f,P,D,T,C]),i=t.useCallback(o=>{o.key.toLowerCase()!=="f"||o.shiftKey||o.altKey||!(/mac/i.test(navigator.userAgent)?o.metaKey&&!o.ctrlKey:o.ctrlKey&&!o.metaKey)||(o.preventDefault(),o.stopPropagation(),b.open())},[b]),a=t.useCallback(async()=>{if(I)try{await q("browser_toggle_dev_tools",{[r]:n})}catch(o){console.error("browser_toggle_dev_tools failed:",o)}},[n,r]);return{find:b,addressInputFocusedRef:N,handleAddressFocus:E,handleAddressBlur:j,handleAddressKeyDown:k,handlePaneKeyDown:i,handleToggleDevTools:a,autocomplete:{isOpen:P,items:D,selectedIndex:T,close:C,setSelectedIndex:A},paneDataAttrs:{"data-band-browser-pane":"","data-band-browser-pane-key":n,"data-band-browser-pane-keyname":r}}}function ce(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}function dt(e){const{created:n,visible:r,ipcKeyRef:d}=e,f=Pe(),[u,y]=t.useState(null),v=t.useRef(!1);return t.useEffect(()=>{if(!I||!n)return;let b=!1;if(f){if(!r)return;const N=d.current;(async()=>{try{const D=await q("browser_capture_page",N);!b&&D&&(Te.flushSync(()=>y(D)),await ce())}catch{}b||(v.current=!0,q("browser_pause_media",N).catch(()=>{}),q("browser_hide",N).catch(()=>{}))})()}else if(v.current){v.current=!1;const N=d.current;q("browser_show",N).catch(()=>{}),q("browser_resume_media",N).catch(()=>{}),(async()=>(await ce(),b||y(null)))()}else y(null);return()=>{b=!0}},[f,n,r,d]),{snapshot:u}}let K=new Set;const X=new Set;let W=!1;function ft(e){const n=e(K);if(n!==K){K=n;for(const r of X)r()}}function ie(e){const n=e.toLowerCase();!n||K.has(n)||ft(r=>{const d=new Set(r);return d.add(n),d})}function pt(){W||I&&(W=!0,L("browser-host-overridden",e=>{e.payload.host&&ie(e.payload.host)}).catch(e=>{console.error("browser-host-overridden listen failed:",e),W=!1}),q("browser_get_overridden_hosts").then(e=>{if(Array.isArray(e))for(const n of e)ie(n)}).catch(e=>{console.error("browser_get_overridden_hosts failed:",e)}))}function ht(e){return pt(),X.add(e),()=>{X.delete(e)}}function le(){return K}function bt(){const e=t.useSyncExternalStore(ht,le,le);return{isOverriddenHost:t.useCallback(r=>{if(!r)return!1;let d;try{d=new URL(r).hostname.toLowerCase()}catch{return!1}return e.has(d)},[e])}}function mt({state:e,onSelect:n}){return!e.isOpen||e.items.length===0?null:s.jsx("div",{className:"absolute top-full left-0 right-0 z-20 mx-2 mt-1 overflow-hidden rounded-md border border-border bg-popover shadow-md",onMouseDown:r=>{r.preventDefault()},children:s.jsx("ul",{className:"max-h-80 overflow-y-auto py-1",children:e.items.map((r,d)=>{const f=d===e.selectedIndex;return s.jsx("li",{children:s.jsxs("button",{type:"button",onMouseDown:u=>{u.preventDefault(),n(r.url),e.close()},onMouseEnter:()=>e.setSelectedIndex(d),className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors ${f?"bg-accent text-foreground":"text-foreground hover:bg-accent/60"}`,children:[r.faviconUrl?s.jsx("img",{src:r.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:u=>{u.currentTarget.style.display="none"}}):s.jsx(se,{className:"size-4 shrink-0 text-muted-foreground"}),s.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[r.title?s.jsx("span",{className:"truncate font-medium leading-tight",children:r.title}):null,s.jsx("span",{className:`truncate text-xs leading-tight ${r.title?"text-muted-foreground":"text-foreground"}`,children:r.url})]})]})},r.id)})})})}function wt({find:e}){return e.isOpen?s.jsx(Ae,{ref:e.searchBarRef,query:e.query,onQueryChange:e.setQuery,options:e.options,onOptionsChange:e.setOptions,placeholder:"Find in page",matchInfo:e.matchInfo??void 0,onNext:e.findNext,onPrevious:e.findPrevious,onClose:e.close,visibleOptions:["caseSensitive"]}):null}const yt=150,gt=200;function xt(e){const n=new Map,r=[];for(const d of e){const f=Z(d.lastVisitedAt);let u=n.get(f);u||(u={label:vt(f),entries:[]},n.set(f,u),r.push(f)),u.entries.push(d)}return r.map(d=>n.get(d))}function Z(e){const n=new Date(e),r=n.getFullYear(),d=String(n.getMonth()+1).padStart(2,"0"),f=String(n.getDate()).padStart(2,"0");return`${r}-${d}-${f}`}function vt(e){const n=new Date,r=Z(n.getTime()),d=new Date(n.getFullYear(),n.getMonth(),n.getDate()-1),f=Z(d.getTime());if(e===r)return"Today";if(e===f)return"Yesterday";const[u,y,v]=e.split("-").map(Number),b=new Date(u,y-1,v);return Math.floor((Date.now()-b.getTime())/(1440*60*1e3))<=7?b.toLocaleDateString(void 0,{weekday:"long",month:"short",day:"numeric"}):b.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function Ct(e){return new Date(e).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function jt({workspaceId:e,onNavigate:n}){const r=t.useId(),[d,f]=t.useState(!1),[u,y]=t.useState(""),[v,b]=t.useState([]),[N,D]=t.useState(!1),[S,P]=t.useState(0),g=t.useCallback(()=>{P(j=>j+1)},[]);t.useEffect(()=>{if(!d)return;let j=!1;D(!0);const k=u.trim(),o=setTimeout(()=>{(k?F.history.search.query({workspaceId:e,query:k,limit:50}):F.history.list.query({workspaceId:e,limit:gt})).then(c=>{j||b(c.entries)}).catch(()=>{j||b([])}).finally(()=>{j||D(!1)})},k?yt:0);return()=>{j=!0,clearTimeout(o)}},[d,u,e,S]);const T=t.useMemo(()=>xt(v),[v]),A=t.useCallback(j=>{n(j),f(!1)},[n]),C=t.useCallback(async j=>{await F.history.delete.mutate({id:j,workspaceId:e}).catch(()=>{}),g()},[g,e]),E=t.useCallback(async j=>{await F.history.clear.mutate({workspaceId:e,range:j}).catch(()=>{}),g()},[g,e]);return s.jsxs(Ee,{open:d,onOpenChange:f,children:[s.jsx(Ie,{asChild:!0,children:s.jsx("button",{type:"button",className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"History","aria-label":"Browser history",children:s.jsx(rt,{className:"size-4"})})}),s.jsxs(Be,{align:"end",sideOffset:6,className:"w-[440px] p-0",onOpenAutoFocus:j=>{j.preventDefault();const k=document.getElementById(r);k&&k.focus()},children:[s.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[s.jsx(Fe,{className:"size-4 shrink-0 text-muted-foreground"}),s.jsx("input",{id:r,type:"text",value:u,onChange:j=>y(j.target.value),placeholder:"Search history",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"})]}),s.jsx("div",{className:"max-h-[420px] overflow-y-auto",children:N&&v.length===0?s.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Loading…"}):T.length===0?s.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:u?"No matching history":"No history yet"}):T.map(j=>s.jsxs("div",{children:[s.jsx("div",{className:"sticky top-0 z-10 border-b border-border bg-popover px-3 py-1 text-xs font-medium text-muted-foreground",children:j.label}),s.jsx("ul",{children:j.entries.map(k=>s.jsxs("li",{className:"group relative flex min-w-0 items-center gap-2 py-1.5 pl-3 pr-2 hover:bg-accent/60",children:[k.faviconUrl?s.jsx("img",{src:k.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:i=>{i.currentTarget.style.display="none"}}):s.jsx(se,{className:"size-4 shrink-0 text-muted-foreground"}),s.jsxs("button",{type:"button",onClick:()=>A(k.url),className:"flex min-w-0 flex-1 flex-col items-stretch gap-0.5 overflow-hidden pr-6 text-left",children:[s.jsx("span",{className:"block truncate text-sm font-medium leading-tight text-foreground",children:k.title||k.url}),s.jsxs("span",{className:"flex min-w-0 items-baseline gap-2 leading-tight",children:[s.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:k.url}),s.jsx("span",{className:"shrink-0 text-[11px] text-muted-foreground tabular-nums",children:Ct(k.lastVisitedAt)})]})]}),s.jsx("button",{type:"button",onClick:()=>C(k.id),className:"absolute right-2 top-1/2 -translate-y-1/2 rounded p-0.5 text-muted-foreground opacity-0 transition-opacity hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100",title:"Delete entry","aria-label":"Delete entry",children:s.jsx(Ue,{className:"size-3.5"})})]},k.id))})]},j.label))}),s.jsx("div",{className:"flex items-center justify-end border-t border-border px-3 py-2",children:s.jsxs(qe,{children:[s.jsx(Le,{asChild:!0,children:s.jsxs("button",{type:"button",className:"flex items-center gap-1 rounded px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",children:["Clear ",s.jsx(Me,{className:"size-3"})]})}),s.jsxs(ze,{align:"end",children:[s.jsx(H,{onSelect:()=>E("hour"),children:"Last hour"}),s.jsx(H,{onSelect:()=>E("day"),children:"Last 24 hours"}),s.jsx(H,{onSelect:()=>E("week"),children:"Last week"}),s.jsx(H,{onSelect:()=>E("all"),children:"All time"})]})]})})]})]})}function Nt(){return s.jsxs("span",{className:"inline-flex shrink-0 items-center gap-1 rounded bg-destructive/10 px-1.5 py-0.5 text-[10px] font-medium uppercase tracking-wide text-destructive",title:"The certificate for this site was overridden for the current session. Use with caution.","data-testid":"cert-not-secure-badge",children:[s.jsx(Oe,{className:"size-3","aria-hidden":!0}),"Not secure"]})}const ue="",O="about:blank",ee=new Map,te=new Set;function _t(e,n){if(ee.get(e)!==n){ee.set(e,n);for(const r of te)r()}}function St(e){return te.add(e),()=>{te.delete(e)}}function kt(e){return t.useSyncExternalStore(St,()=>ee.get(e))}function Dt({params:e,api:n}){const{browserId:r,initialUrl:d,workspaceId:f}=e,[u,y]=t.useState(()=>d??ue),[v,b]=t.useState(()=>d??ue),[N,D]=t.useState(!1),[S,P]=t.useState(!1),g=t.useRef(!1),T=t.useRef(null),A=t.useRef(!1),C=t.useRef(null),E=t.useRef(r);E.current=r;const j=t.useRef(u);j.current=u;const[k,i]=t.useState(f??""),a=t.useRef(k);a.current=k;const o=t.useRef({browserId:r});o.current={browserId:r};const{snapshot:l}=dt({created:S,visible:n.isVisible&&e.wsActive!==!1,ipcKeyRef:o}),{isOverriddenHost:c}=bt(),p=t.useCallback(()=>{const x=T.current;if(!x)return null;const m=x.getBoundingClientRect();return{x:m.left+1,y:m.top,width:Math.max(0,m.width-2),height:m.height}},[]),h=t.useCallback(async(x,m)=>{if(I)return q(x,m)},[]);t.useEffect(()=>{if(!r||d)return;let x=!1;return F.browsers.get.query({browserId:r}).then(m=>{if(x)return;const w=m.browser?.workspaceId;w&&!a.current&&i(w);const R=m.browser?.url;!R||R===""||R===O||(y(R),b(R),g.current?h("browser_navigate",{browserId:r,url:R}).catch(()=>{}):C.current=R)}).catch(()=>{}),()=>{x=!0}},[r,d,h]),t.useEffect(()=>{if(!I||S||A.current)return;const x=T.current;if(!x)return;let m=!1;const w=async()=>{if(m||g.current||A.current)return;const z=p();if(!(!z||z.width===0||z.height===0)){R.disconnect(),A.current=!0;try{await h("browser_create",{browserId:r,...z,url:j.current||O}),g.current=!0,P(!0);const $=C.current;$&&(C.current=null,await h("browser_navigate",{browserId:E.current,url:$}))}catch($){console.error("Failed to create browser webview:",$)}finally{A.current=!1}}},R=new ResizeObserver(()=>{w()});R.observe(x);const U=setTimeout(w,50);return()=>{m=!0,clearTimeout(U),R.disconnect()}},[S,p,h,r]);const _=t.useRef(null);t.useEffect(()=>{if(!I)return;let x,m;return(async()=>(x=await L("browser-url-changed",w=>{if(w.payload.browser_id!==E.current)return;const R=w.payload.url;if(D(w.payload.loading),R===O)return;y(R),ve.current||b(R),_.current&&clearTimeout(_.current),_.current=setTimeout(()=>{F.browsers.navigate.mutate({browserId:E.current,url:R}).catch(()=>{})},500);let U;try{U=`${new URL(R).origin}/favicon.ico`,_t(E.current,U)}catch{}!w.payload.loading&&a.current&&F.history.record.mutate({workspaceId:a.current,url:R,faviconUrl:U}).catch(()=>{})}),m=await L("browser-title-changed",w=>{if(w.payload.browser_id===E.current&&w.payload.title){n.setTitle(w.payload.title);const R=j.current;R&&R!==O&&a.current&&F.history.updateMeta.mutate({workspaceId:a.current,url:R,title:w.payload.title}).catch(()=>{})}})))(),()=>{if(x?.(),m?.(),_.current){clearTimeout(_.current),_.current=null;const w=j.current;w&&w!==O&&F.browsers.navigate.mutate({browserId:E.current,url:w}).catch(()=>{})}}},[n]),t.useEffect(()=>{if(!I||!S)return;const x=U=>z=>console.error(`[BrowserPane] ${U} failed`,z),m=()=>{const U=p();U&&U.width>0&&U.height>0&&h("browser_set_bounds",{browserId:r,...U}).catch(x("browser_set_bounds")),h("browser_show",{browserId:r}).catch(x("browser_show"))},w=()=>{h("browser_hide",{browserId:r}).catch(x("browser_hide"))},R=n.onDidVisibilityChange(U=>{U.isVisible?m():w()});return()=>{R.dispose()}},[n,S,p,h,r]),t.useEffect(()=>{if(!I||!S)return;const x=e.wsActive!==!1,m=w=>R=>console.error(`[BrowserPane] ${w} failed`,R);if(!x)h("browser_hide",{browserId:r}).catch(m("browser_hide"));else if(n.isVisible){const w=p();w&&w.width>0&&w.height>0&&h("browser_set_bounds",{browserId:r,...w}).catch(m("browser_set_bounds")),h("browser_show",{browserId:r}).catch(m("browser_show"))}},[e.wsActive,n,S,p,h,r]),t.useEffect(()=>{if(!I||!S)return;const x=T.current;if(!x)return;const m=new ResizeObserver(()=>{const w=p();!w||w.width===0||w.height===0||h("browser_set_bounds",{browserId:r,...w}).catch(()=>{})});return m.observe(x),()=>m.disconnect()},[S,p,h,r]),t.useEffect(()=>()=>{if(I){const x=E.current;q("browser_destroy",{browserId:x}).catch(()=>{})}},[]);const B=t.useCallback(async x=>{let m=x.trim();if(!m){if(y(""),b(""),D(!1),g.current)try{await h("browser_navigate",{browserId:r,url:O})}catch(w){console.error("browser_navigate failed:",w)}else C.current=O;return}if(!m.startsWith("http://")&&!m.startsWith("https://")&&(m.includes(".")&&!m.includes(" ")?m=`https://${m}`:m=`https://www.google.com/search?q=${encodeURIComponent(m)}`),y(m),b(m),D(!0),g.current)try{await h("browser_navigate",{browserId:r,url:m})}catch(w){console.error("browser_navigate failed:",w)}else C.current=m},[h,r]),M=t.useCallback(async()=>{try{await h("browser_go_back",{browserId:r})}catch(x){console.error("browser_go_back failed:",x)}},[h,r]),Q=t.useCallback(async()=>{try{await h("browser_go_forward",{browserId:r})}catch(x){console.error("browser_go_forward failed:",x)}},[h,r]),ye=t.useCallback(async()=>{try{D(!0),await h("browser_reload",{browserId:r})}catch(x){console.error("browser_reload failed:",x)}},[h,r]),ge=t.useCallback(async()=>{try{await h("browser_eval",{browserId:r,js:"window.stop()"}),D(!1)}catch{D(!1)}},[h,r]),{find:xe,addressInputFocusedRef:ve,handleAddressFocus:Ce,handleAddressBlur:je,handleAddressKeyDown:Ne,handlePaneKeyDown:_e,handleToggleDevTools:Se,autocomplete:ke,paneDataAttrs:De}=ut({key:r,keyName:"browserId",workspaceId:k,currentUrlRef:j,setInputUrl:b,inputUrl:v,onNavigate:B});return r?I?s.jsxs("div",{className:"flex h-full w-full flex-col",onKeyDown:_e,...De,children:[s.jsx("style",{children:`@keyframes browser-bar-slide {
|
|
2
|
-
0% { transform: translateX(-100%); }
|
|
3
|
-
50% { transform: translateX(200%); }
|
|
4
|
-
100% { transform: translateX(-100%); }
|
|
5
|
-
}`}),s.jsxs("div",{className:"relative flex h-10 shrink-0 items-center gap-1 border-b border-border bg-background px-2",children:[s.jsx("button",{type:"button",onClick:M,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Back",children:s.jsx(Ke,{className:"size-4"})}),s.jsx("button",{type:"button",onClick:Q,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Forward",children:s.jsx($e,{className:"size-4"})}),N?s.jsx("button",{type:"button",onClick:ge,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Stop",children:s.jsx(pe,{className:"size-4"})}):s.jsx("button",{type:"button",onClick:ye,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Reload",children:s.jsx(He,{className:"size-4"})}),c(u)?s.jsx(Nt,{}):null,s.jsx("input",{type:"text",value:v,onChange:x=>b(x.target.value),onKeyDown:Ne,onFocus:Ce,onBlur:je,className:"min-w-0 flex-1 rounded border border-transparent bg-muted/50 px-3 py-1.5 text-sm text-foreground outline-none transition-colors focus:border-border",placeholder:"Enter URL or search...","data-band-address-input":""}),k?s.jsx(jt,{workspaceId:k,onNavigate:B}):null,s.jsx("button",{type:"button",onClick:Se,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Toggle DevTools",children:s.jsx(st,{className:"size-4"})}),N&&s.jsx("div",{className:"absolute inset-x-0 bottom-0 h-0.5 overflow-hidden bg-blue-500/10",children:s.jsx("div",{className:"h-full w-2/5 rounded-full bg-blue-500",style:{animation:"browser-bar-slide 1.4s ease-in-out infinite"}})}),s.jsx(mt,{state:ke,onSelect:B})]}),s.jsx(wt,{find:xe}),s.jsx("div",{ref:T,className:"relative min-h-0 flex-1",children:l?s.jsx("img",{src:l,alt:"",className:"pointer-events-none absolute inset-0 size-full object-contain object-top",draggable:!1}):null})]}):s.jsx("div",{className:"flex h-full items-center justify-center text-muted-foreground",children:"Browser panel is only available in the desktop app"}):null}const he=new Set;function de(e){he.add(e)}function qt(e){return he.delete(e)}function Rt(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const n=Array.from(e,r=>r.toString(16).padStart(2,"0")).join("");return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`}function re(){return`browser_${Rt()}`}function ne(e){return["browserLayout",e]}const J=new Map;function Pt(e){if(typeof e=="object"&&e!==null){const n=e.panels;if(typeof n=="object"&&n!==null)return new Set(Object.keys(n))}return new Set}function Y(e,n,r){if(r?.queryClient){const f=r.queryClient.getQueryData(ne(e));r.queryClient.setQueryData(ne(e),{layout:n,browserIds:Pt(n),urls:f?.urls??new Map})}const d=J.get(e);d&&clearTimeout(d),J.set(e,setTimeout(()=>{J.delete(e),F.browserLayout.save.mutate({workspaceId:e,tree:n}).catch(f=>{console.error("[DockviewBrowserContainer] failed to persist layout:",f)})},500))}function Tt(e){if(typeof e!="object"||e===null)return!1;const n=e;return typeof n.grid=="object"&&typeof n.panels=="object"}const At={name:"band",className:"dockview-theme-band dockview-browser-tabs"},be=t.createContext({visible:!0,wsActive:!0});function Et({params:e,api:n}){const{visible:r}=t.useContext(be);if(!e.workspaceId||!e.browserId)return null;const d={workspaceId:e.workspaceId,browserId:e.browserId,wsActive:r,initialUrl:e.initialUrl};return s.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden",children:s.jsx(Dt,{params:d,api:n})})}function me(e){const[n,r]=t.useState(e.api.title??"New Tab"),[d,f]=t.useState(e.containerApi.panels.length),[u,y]=t.useState(!1),v=e.params.browserId,b=kt(v),N=t.useRef(b);b!==N.current&&(N.current=b,u&&y(!1)),t.useEffect(()=>{const g=e.api.onDidTitleChange(()=>r(e.api.title??"New Tab"));return()=>g.dispose()},[e.api]),t.useEffect(()=>{const g=e.containerApi,T=()=>f(g.panels.length),A=g.onDidAddPanel(T),C=g.onDidRemovePanel(T);return()=>{A.dispose(),C.dispose()}},[e.containerApi]);const D=t.useCallback(g=>{g.stopPropagation(),we.current?.(v)},[v]),S=d>1,P=b&&!u;return s.jsxs("div",{className:"dv-default-tab",children:[s.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[P?s.jsx("img",{src:b,alt:"",className:"size-3.5 shrink-0",onError:()=>y(!0)}):s.jsx(se,{className:"size-3.5 shrink-0 text-muted-foreground"}),s.jsx("span",{className:"truncate",children:n})]}),S&&s.jsx("button",{type:"button",className:"ml-1 inline-flex size-4 items-center justify-center rounded-sm opacity-60 hover:opacity-100 hover:bg-accent transition-colors",onClick:D,title:"Close tab",children:s.jsx(pe,{className:"size-3"})})]})}const V={current:{onAdd:()=>{},onSplit:()=>{}}},we={current:null},It=Ye.memo(function(n){const r=n.group.id;return s.jsxs("div",{className:"flex h-full items-center",children:[s.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>V.current.onSplit(r,"right"),title:"Split right",children:s.jsx(Xe,{className:"size-3.5"})}),s.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>V.current.onSplit(r,"below"),title:"Split down",children:s.jsx(Ze,{className:"size-3.5"})}),s.jsx("button",{type:"button",className:"inline-flex size-8 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>V.current.onAdd(r),title:"New browser tab",children:s.jsx(et,{className:"size-4"})})]})}),Bt={browserTab:Et},Ft={browserTab:me};function Lt({workspaceId:e,visible:n,wsActive:r}){const d=Ge(),f=Ve(),u=t.useRef(null),y=t.useRef(!1),v=t.useRef(null),{data:b}=Qe({queryKey:ne(e),queryFn:async()=>{const[{tree:i},{browsers:a}]=await Promise.all([F.browserLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),F.browsers.list.query({workspaceId:e}).catch(()=>({browsers:[]}))]),o=new Map;for(const l of a)l.url&&l.url!=="about:blank"&&o.set(l.id,l.url);return{layout:i,browserIds:new Set(a.map(l=>l.id)),urls:o}},staleTime:Number.POSITIVE_INFINITY}),N=t.useRef(f);N.current=f;const D=t.useCallback(()=>{if(y.current)return;const i=u.current;i&&Y(e,i.toJSON(),{queryClient:N.current})},[e]),S=t.useCallback(async(i,a)=>{const o=u.current;if(!o)return;const l=re();de(l);const c=a?.initialUrl,p={id:l,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:l,...c?{initialUrl:c}:{}}};i&&(p.position={referenceGroup:i}),o.addPanel(p);try{await F.browsers.create.mutate({workspaceId:e,id:l,...c?{url:c}:{}})}catch(h){console.error("[DockviewBrowserContainer] error pre-creating browser:",h)}},[e]),P=t.useCallback(async(i,a)=>{const o=u.current;if(!o)return;const l=re();de(l);try{o.addPanel({id:l,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:l},position:{referenceGroup:i,direction:a}})}catch(c){console.error("[DockviewBrowserContainer] split addPanel threw:",c);return}try{await F.browsers.create.mutate({workspaceId:e,id:l})}catch(c){console.error("[DockviewBrowserContainer] error creating split browser:",c)}},[e]),g=t.useCallback(i=>{const a=u.current;if(!a||a.panels.length<=1)return;We(a,i);const o=a.getPanel(i);o&&a.removePanel(o),requestAnimationFrame(()=>{const l=a.activePanel;l&&l.view.content.element.querySelector("[data-band-address-input]")?.focus()}),F.browsers.remove.mutate({browserId:i}).catch(l=>{console.error("[DockviewBrowserContainer] failed to remove browser:",l)})},[]);t.useEffect(()=>{if(!n)return;const i=()=>{const c=u.current?.activePanel;c&&c.view.content.element.querySelector("[data-band-address-input]")?.focus()},a=c=>{oe(u.current,c,()=>{requestAnimationFrame(i)})},o=c=>{ae(u.current,c,()=>{requestAnimationFrame(i)})},l=c=>{if(!v.current?.contains(document.activeElement))return;const p=c.key.toLowerCase();if(c.ctrlKey&&!c.metaKey&&p==="tab"){c.preventDefault(),c.stopPropagation(),a(c.shiftKey?-1:1);return}if(c.metaKey||c.ctrlKey){if(c.shiftKey&&(p==="["||p==="]")){c.preventDefault(),c.stopPropagation(),a(p==="]"?1:-1);return}if(!c.shiftKey&&(p==="["||p==="]")){c.preventDefault(),c.stopPropagation(),o(p==="]"?1:-1);return}if(p==="t"&&!c.shiftKey)c.preventDefault(),c.stopPropagation(),S().then(()=>{requestAnimationFrame(()=>{const _=u.current?.activePanel;_&&_.view.content.element.querySelector("[data-band-address-input]")?.focus()})});else if(p==="w"&&!c.shiftKey){const _=u.current;if(!_||_.panels.length<=1)return;c.preventDefault(),c.stopPropagation();const B=_.activePanel;B&&g(B.id)}else if(p==="d"){c.preventDefault(),c.stopPropagation();const _=u.current;if(!_)return;const B=_.activeGroup;if(!B)return;const M=c.shiftKey?"below":"right";P(B.id,M)}else if(p==="r"&&!c.shiftKey&&I){const _=u.current;if(!_)return;const M=_.activePanel?.params?.browserId;if(!M)return;c.preventDefault(),c.stopPropagation(),q("browser_reload",{browserId:M}).catch(Q=>{console.error("[DockviewBrowserContainer] browser_reload failed:",Q)})}}};return window.addEventListener("keydown",l,!0),()=>window.removeEventListener("keydown",l,!0)},[n,g,P,S]),t.useLayoutEffect(()=>{if(!n)return;const i=u.current,a=v.current;if(!i||!a)return;const o=a.getBoundingClientRect();if(o.width>0&&o.height>0){i.layout(Math.round(o.width),Math.round(o.height),!0);return}const l=new ResizeObserver(c=>{const p=c[0];if(!p)return;const{width:h,height:_}=p.contentRect;h<=0||_<=0||(l.disconnect(),i.layout(Math.round(h),Math.round(_),!0))});return l.observe(a),()=>l.disconnect()},[n]),t.useEffect(()=>{if(!n)return;const i=requestAnimationFrame(()=>{const a=u.current?.activePanel;a&&a.view.content.element.querySelector("[data-band-address-input]")?.focus()});return()=>cancelAnimationFrame(i)},[n]),t.useEffect(()=>{if(!I)return;let i;return(async()=>i=await L("browser-new-tab-shortcut",a=>{const o=u.current;if(!o)return;const l=a.payload.browser_id;!l||!o.getPanel(l)||S().then(()=>{requestAnimationFrame(()=>{u.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})})}))(),()=>i?.()},[S]),t.useEffect(()=>{if(!I)return;let i,a=!1;return(async()=>{const o=await L("browser-open-window",l=>{const c=u.current;if(!c)return;const p=l.payload.browser_id,h=p?c.getPanel(p):void 0;if(!h)return;const _=h.group?.id,B=l.payload.url;B&&S(_,{initialUrl:B}).then(()=>{requestAnimationFrame(()=>{u.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})}).catch(M=>{console.error("[DockviewBrowserContainer] browser-open-window add-tab failed:",M)})});a?o():i=o})(),()=>{a=!0,i?.()}},[S]),t.useEffect(()=>{if(!I)return;const i=[];let a=!1;const o=()=>{u.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()};return(async()=>{const l=await Promise.all([L("browser-split-shortcut",c=>{const p=u.current;if(!p)return;const h=p.getPanel(c.payload.browser_id);h?.group&&P(h.group.id,c.payload.direction)}),L("browser-close-shortcut",c=>{const p=u.current;if(!p)return;const h=c.payload.browser_id;p.getPanel(h)&&g(h)}),L("browser-cycle-shortcut",c=>{const p=u.current;if(!p)return;const h=p.getPanel(c.payload.browser_id);if(!h)return;h.api.setActive();const _=()=>requestAnimationFrame(o);c.payload.target==="tabs"?oe(u.current,c.payload.direction,_):ae(u.current,c.payload.direction,_)})]);if(a)for(const c of l)c();else i.push(...l)})(),()=>{a=!0;for(const l of i)l()}},[P,g]),t.useEffect(()=>{const i=()=>{const a=v.current;if(!a||a.offsetParent===null)return;const o=a.querySelectorAll("[data-band-address-input]");for(const l of o)if(l.offsetParent!==null){l.focus({preventScroll:!0});return}};return window.addEventListener("band:focus-browser",i),()=>window.removeEventListener("band:focus-browser",i)},[]),t.useEffect(()=>d.subscribeStatusEvents(i=>{if(i.workspaceId!==e)return;const a=u.current;if(a){if(i.kind==="browser-created"&&typeof i.browserId=="string"){if(a.getPanel(i.browserId))return;a.addPanel({id:i.browserId,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:i.browserId}})}else if(i.kind==="browser-removed"&&typeof i.browserId=="string"){const o=a.getPanel(i.browserId);o&&(a.removePanel(o),a.panels.length===0&&G(a,e))}}}),[d,e]),V.current={onAdd:S,onSplit:P},we.current=g;const T=t.useRef(null);T.current=b?.layout??null;const A=t.useRef(null);A.current=b?.browserIds??null;const C=t.useRef(null);C.current=b?.urls??null;const E=t.useRef(n);E.current=n;const j=t.useCallback(i=>{u.current=i.api;const a=T.current,o=A.current,l=C.current;if(a&&Tt(a)){y.current=!0;const p=ot(a,l);try{i.api.fromJSON(p)}catch(_){console.error("[DockviewBrowserContainer] fromJSON failed, creating default:",_),G(i.api,e)}let h=0;if(o){const _=i.api.panels.filter(B=>!o.has(B.id));for(const B of _)i.api.removePanel(B),h++;i.api.panels.length===0&&(G(i.api,e),h++)}setTimeout(()=>{y.current=!1},0),h>0&&Y(e,i.api.toJSON(),{queryClient:N.current})}else G(i.api,e),Y(e,i.api.toJSON(),{queryClient:N.current});const c=()=>D();if(i.api.onDidLayoutChange(c),i.api.onDidAddPanel(c),i.api.onDidRemovePanel(c),i.api.onDidActivePanelChange(c),i.api.onDidAddGroup(c),i.api.onDidRemoveGroup(c),E.current&&v.current){const p=v.current.getBoundingClientRect();p.width>0&&p.height>0&&i.api.layout(Math.round(p.width),Math.round(p.height),!0)}},[e,D]),k=t.useMemo(()=>({visible:n&&r!==!1,wsActive:r!==!1}),[n,r]);return b?s.jsx("div",{ref:v,className:"flex h-full w-full flex-col overflow-hidden",children:s.jsx(be.Provider,{value:k,children:s.jsx(Je,{theme:At,className:"h-full",components:Bt,tabComponents:Ft,defaultTabComponent:me,onReady:j,rightHeaderActionsComponent:It})})}):s.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function G(e,n){const r=re();F.browsers.create.mutate({workspaceId:n,id:r}).catch(d=>{console.error("[DockviewBrowserContainer] error creating default browser:",d)}),e.addPanel({id:r,component:"browserTab",tabComponent:"browserTab",title:"Browser",params:{workspaceId:n,browserId:r}})}export{Lt as DockviewBrowserContainer,qt as consumeBrowserFresh,de as markBrowserFresh,re as newBrowserId};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalPanel-BKfWmj6W.js","assets/main-BlRcPsmZ.js","assets/main-BLOY6Nam.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{G as I,H as J,r as l,J as U,t as h,K as V,j as m,M as $,Q as H,S as Q,U as B,V as Y,X as W,W as X,Y as Z,_ as ee}from"./main-BlRcPsmZ.js";import{S as te}from"./square-terminal-CNHJa6OY.js";const ne=l.lazy(()=>ee(()=>import("./TerminalPanel-BKfWmj6W.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.TerminalPanel})));function re(){if(typeof crypto<"u"&&typeof crypto.randomUUID=="function")return crypto.randomUUID();const e=crypto.getRandomValues(new Uint8Array(16));e[6]=e[6]&15|64,e[8]=e[8]&63|128;const r=Array.from(e,a=>a.toString(16).padStart(2,"0")).join("");return`${r.slice(0,8)}-${r.slice(8,12)}-${r.slice(12,16)}-${r.slice(16,20)}-${r.slice(20)}`}function j(){return re()}function k(e){return["terminalLayout",e]}const S=new Map;function ie(e){if(typeof e=="object"&&e!==null){const r=e.panels;if(typeof r=="object"&&r!==null)return new Set(Object.keys(r))}return new Set}function N(e,r,a){a?.queryClient&&a.queryClient.setQueryData(k(e),{layout:r,terminalIds:ie(r)});const o=S.get(e);o&&clearTimeout(o),S.set(e,setTimeout(()=>{S.delete(e),h.terminalLayout.save.mutate({workspaceId:e,tree:r}).catch(d=>{console.error("[DockviewTerminalContainer] failed to persist layout:",d)})},500))}function ae(e){if(typeof e!="object"||e===null)return!1;const r=e;return typeof r.grid=="object"&&typeof r.panels=="object"}const oe={name:"band",className:"dockview-theme-band dockview-terminal-tabs"},F=l.createContext({visible:!0,wsActive:!0});function le({params:e,api:r}){const{visible:a}=l.useContext(F),o=l.useCallback(c=>{r.setTitle(c)},[r]);if(!e.workspaceId||!e.terminalId)return null;const d=e.command||e.cwd||e.env?{command:e.command,cwd:e.cwd,env:e.env}:void 0;return m.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden",children:m.jsx(l.Suspense,{fallback:null,children:m.jsx(ne,{workspaceId:e.workspaceId,terminalId:e.terminalId,visible:a,paneMetadata:d,autoFocus:e.autoFocus,onTitleChange:o})})})}function z(e){const[r,a]=l.useState(e.api.title??"Terminal"),[o,d]=l.useState(e.containerApi.panels.length);l.useEffect(()=>{const p=e.api.onDidTitleChange(()=>{a(e.api.title??"Terminal")});return()=>p.dispose()},[e.api]),l.useEffect(()=>{const p=e.containerApi,b=()=>d(p.panels.length),T=p.onDidAddPanel(b),x=p.onDidRemovePanel(b);return()=>{T.dispose(),x.dispose()}},[e.containerApi]);const c=l.useCallback(p=>{p.stopPropagation(),G.current?.(e.params.terminalId)},[e.params.terminalId]),y=o>1;return m.jsxs("div",{className:"dv-default-tab",children:[m.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[m.jsx(te,{className:"size-3.5 shrink-0 text-muted-foreground"}),m.jsx("span",{className:"truncate",children:r})]}),y&&m.jsx("button",{type:"button",className:"ml-1 inline-flex size-4 items-center justify-center rounded-sm opacity-60 hover:opacity-100 hover:bg-accent transition-colors",onClick:c,title:"Close terminal",children:m.jsx(W,{className:"size-3"})})]})}const P={current:{onAdd:()=>{},onSplit:()=>{}}},G={current:null},ce=H.memo(function(r){const a=r.group.id;return m.jsxs("div",{className:"flex h-full items-center",children:[m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>P.current.onSplit(a,"right"),title:"Split right",children:m.jsx(Q,{className:"size-3.5"})}),m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>P.current.onSplit(a,"below"),title:"Split down",children:m.jsx(B,{className:"size-3.5"})}),m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>P.current.onAdd(a),title:"New terminal",children:m.jsx(Y,{className:"size-4"})})]})}),se={terminalTab:le},ue={terminalTab:z};function pe({workspaceId:e,visible:r,wsActive:a}){const o=I(),d=J(),c=l.useRef(null),y=l.useRef(!1),p=l.useRef(null),{data:b}=U({queryKey:k(e),queryFn:async()=>{const[{tree:n},{terminals:i}]=await Promise.all([h.terminalLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),h.terminal.list.query({workspaceId:e}).catch(()=>({terminals:[]}))]);return{layout:n,terminalIds:new Set(i.map(u=>u.terminalId))}},staleTime:Number.POSITIVE_INFINITY}),T=l.useRef(d);T.current=d;const x=l.useCallback(()=>{if(y.current)return;const n=c.current;n&&N(e,n.toJSON(),{queryClient:T.current})},[e]),D=l.useCallback(async n=>{const i=c.current;if(!i)return;const u=j(),s={id:u,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:u,autoFocus:!0}};n&&(s.position={referenceGroup:n}),i.addPanel(s);try{await h.terminal.create.mutate({workspaceId:e,id:u})}catch(t){console.error("[DockviewTerminalContainer] error creating terminal:",t)}},[e]),R=l.useCallback(async(n,i)=>{const u=c.current;if(!u)return;const s=j();u.addPanel({id:s,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:s,autoFocus:!0},position:{referenceGroup:n,direction:i}});try{await h.terminal.create.mutate({workspaceId:e,id:s})}catch(t){console.error("[DockviewTerminalContainer] error creating split terminal:",t)}},[e]),A=l.useCallback(n=>{const i=c.current;if(!i||i.panels.length<=1)return;V(i,n);const u=i.getPanel(n);u&&i.removePanel(u),requestAnimationFrame(()=>{const s=i.activePanel;s&&s.view.content.element.querySelector(".xterm-helper-textarea")?.focus()}),h.terminal.kill.mutate({terminalId:n}).catch(s=>{console.error("[DockviewTerminalContainer] failed to kill terminal:",s)})},[]);l.useEffect(()=>{if(!r)return;const n=()=>{const t=c.current?.activePanel;t&&t.view.content.element.querySelector(".xterm-helper-textarea")?.focus()},i=t=>{X(c.current,t,()=>{requestAnimationFrame(n)})},u=t=>{Z(c.current,t,()=>{requestAnimationFrame(n)})},s=t=>{if(!p.current?.contains(document.activeElement))return;const f=t.key.toLowerCase();if(t.ctrlKey&&!t.metaKey&&f==="tab"){t.preventDefault(),t.stopPropagation(),i(t.shiftKey?-1:1);return}if(!(t.metaKey||t.ctrlKey))return;if(t.shiftKey&&(f==="["||f==="]")){t.preventDefault(),t.stopPropagation(),i(f==="]"?1:-1);return}if(!t.shiftKey&&(f==="["||f==="]")){t.preventDefault(),t.stopPropagation(),u(f==="]"?1:-1);return}const C=()=>{const v=c.current;if(!v||v.panels.length<=1)return!1;const L=v.activePanel;return L?(A(L.id),!0):!1};if(f==="t"&&!t.shiftKey)t.preventDefault(),t.stopPropagation(),D();else if(f==="w"&&!t.shiftKey)C()&&(t.preventDefault(),t.stopPropagation());else if(f==="d")if(t.metaKey&&!t.ctrlKey){t.preventDefault(),t.stopPropagation();const v=c.current?.activeGroup;if(!v)return;R(v.id,t.shiftKey?"below":"right")}else t.ctrlKey&&!t.metaKey&&!t.shiftKey?C()&&(t.preventDefault(),t.stopPropagation()):(t.preventDefault(),t.stopPropagation())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[r,A,R,D]),l.useLayoutEffect(()=>{if(!r)return;const n=c.current,i=p.current;if(!n||!i)return;const u=i.getBoundingClientRect();if(u.width>0&&u.height>0){n.layout(Math.round(u.width),Math.round(u.height),!0);return}const s=new ResizeObserver(t=>{const f=t[0];if(!f)return;const{width:g,height:C}=f.contentRect;g<=0||C<=0||(s.disconnect(),n.layout(Math.round(g),Math.round(C),!0))});return s.observe(i),()=>s.disconnect()},[r]),l.useEffect(()=>{if(!r)return;const n=requestAnimationFrame(()=>{const i=c.current?.activePanel;i&&i.view.content.element.querySelector(".xterm-helper-textarea")?.focus()});return()=>cancelAnimationFrame(n)},[r]),l.useEffect(()=>o.subscribeStatusEvents(n=>{if(n.workspaceId!==e)return;const i=c.current;if(i){if(n.kind==="terminal-created"&&typeof n.terminalId=="string"){if(i.getPanel(n.terminalId))return;i.addPanel({id:n.terminalId,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:n.terminalId}})}else if(n.kind==="terminal-killed"&&typeof n.terminalId=="string"){const u=i.getPanel(n.terminalId);u&&(i.removePanel(u),i.panels.length===0&&w(i,e))}}}),[o,e]),P.current={onAdd:D,onSplit:R},G.current=A;const q=l.useRef(null);q.current=b?.layout??null;const K=l.useRef(null);K.current=b?.terminalIds??null;const E=l.useRef(r);E.current=r;const O=l.useCallback(n=>{c.current=n.api;const i=q.current,u=K.current;if(i&&ae(i)){y.current=!0;try{n.api.fromJSON(i)}catch(f){console.error("[DockviewTerminalContainer] fromJSON failed, creating default:",f),w(n.api,e)}let t=0;if(u){const f=n.api.panels.filter(g=>!u.has(g.id));for(const g of f)n.api.removePanel(g),t++;n.api.panels.length===0&&(w(n.api,e),t++)}setTimeout(()=>{y.current=!1},0),t>0&&N(e,n.api.toJSON(),{queryClient:T.current})}else me(n.api,e,T.current);const s=()=>x();if(n.api.onDidLayoutChange(s),n.api.onDidAddPanel(s),n.api.onDidRemovePanel(s),n.api.onDidActivePanelChange(s),n.api.onDidAddGroup(s),n.api.onDidRemoveGroup(s),E.current&&p.current){const t=p.current.getBoundingClientRect();t.width>0&&t.height>0&&n.api.layout(Math.round(t.width),Math.round(t.height),!0)}},[e,x]),_=l.useMemo(()=>({visible:r&&a!==!1,wsActive:a!==!1}),[r,a]);return b?m.jsx("div",{ref:p,className:"flex h-full w-full flex-col overflow-hidden",children:m.jsx(F.Provider,{value:_,children:m.jsx($,{theme:oe,className:"h-full",components:se,tabComponents:ue,defaultTabComponent:z,onReady:O,rightHeaderActionsComponent:ce})})}):m.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function w(e,r){const a=j();e.addPanel({id:a,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:r,terminalId:a}}),h.terminal.create.mutate({workspaceId:r,id:a}).catch(o=>{console.error("[DockviewTerminalContainer] error creating default terminal:",o)})}async function me(e,r,a){try{const{config:o}=await h.workspace.getTerminalConfig.query({workspaceId:r});if(o?.layout){const d=M(o.layout);if(d.length>0){for(const c of d)try{const y=j();e.addPanel({id:y,component:"terminalTab",tabComponent:"terminalTab",title:c.name??"Terminal",params:{workspaceId:r,terminalId:y,command:c.command,cwd:c.cwd,env:c.env}}),await h.terminal.create.mutate({workspaceId:r,id:y,command:c.command,cwd:c.cwd,env:c.env})}catch(y){console.error("[DockviewTerminalContainer] error creating terminal from config:",y)}N(r,e.toJSON(),{queryClient:a});return}}}catch{}w(e,r)}function M(e,r=0){if(r>10||typeof e!="object"||e===null)return[];const a=e;if("pane"in a&&typeof a.pane=="object"&&a.pane!==null){const o=a.pane;return[{name:typeof o.name=="string"?o.name:void 0,command:typeof o.command=="string"?o.command:void 0,cwd:typeof o.cwd=="string"?o.cwd:void 0,env:typeof o.env=="object"&&o.env!==null?o.env:void 0}]}if("children"in a&&Array.isArray(a.children)){const o=[];for(const d of a.children)o.push(...M(d,r+1));return o}return[]}export{pe as DockviewTerminalContainer,j as newTerminalId};
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-AZ511Krh.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{F as ze,r as o,bp as ke,ca as Oe,cb as Pe,cc as Ne,j as i,X as ft,cd as ht,a as mt,_ as B,ce as pt,cf as wt,cg as vt,ch as bt,ci as xt}from"./main-BlRcPsmZ.js";const yt=[["rect",{width:"8",height:"4",x:"8",y:"2",rx:"1",ry:"1",key:"tgr4d6"}],["path",{d:"M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2",key:"4jdomd"}],["path",{d:"M16 4h2a2 2 0 0 1 2 2v4",key:"3hqy98"}],["path",{d:"M21 14H11",key:"1bme5i"}],["path",{d:"m15 10-4 4 4 4",key:"5dvupr"}]],gt=ze("clipboard-copy",yt);const Et=[["path",{d:"M12 20h-1a2 2 0 0 1-2-2 2 2 0 0 1-2 2H6",key:"1528k5"}],["path",{d:"M13 8h7a2 2 0 0 1 2 2v4a2 2 0 0 1-2 2h-7",key:"13ksps"}],["path",{d:"M5 16H4a2 2 0 0 1-2-2v-4a2 2 0 0 1 2-2h1",key:"1n9rhb"}],["path",{d:"M6 4h1a2 2 0 0 1 2 2 2 2 0 0 1 2-2h1",key:"1mj8rg"}],["path",{d:"M9 6v12",key:"velyjx"}]],St=ze("text-cursor-input",Et),Lt=49,Me="(hover: none) and (pointer: coarse)";function Be(){const[t,n]=o.useState(()=>typeof window>"u"?!1:window.matchMedia(Me).matches),[s,c]=o.useState(0);return o.useEffect(()=>{if(typeof window>"u")return;const a=window.matchMedia(Me),m=f=>n(f.matches);return n(a.matches),a.addEventListener("change",m),()=>a.removeEventListener("change",m)},[]),o.useEffect(()=>{if(typeof window>"u")return;if(!t){c(0);return}const a=window.visualViewport;if(!a)return;const m=()=>{const f=Math.max(0,window.innerHeight-(a.offsetTop+a.height));c(f)};return m(),a.addEventListener("resize",m),a.addEventListener("scroll",m),window.addEventListener("resize",m),()=>{a.removeEventListener("resize",m),a.removeEventListener("scroll",m),window.removeEventListener("resize",m)}},[t]),{enabled:t,bottomOffset:s,contentBottomInset:t?Lt:0}}const ae=/[A-Za-z0-9_./:\-+@~]/;function Rt(t,n,s,c){const a=c.getBoundingClientRect();if(a.width<=0||a.height<=0||s.cols<=0||s.rows<=0)return{col:0,row:s.buffer.active.viewportY};const m=a.width/s.cols,f=a.height/s.rows,w=le(Math.floor((t-a.left)/m),0,s.cols-1),E=le(Math.floor((n-a.top)/f),0,s.rows-1);return{col:w,row:s.buffer.active.viewportY+E}}function Ct(t,n){if(n<0||n>=t.length||!ae.test(t[n])){const a=le(n,0,Math.max(0,t.length));return{start:a,end:a+1}}let s=n;for(;s>0&&ae.test(t[s-1]);)s--;let c=n+1;for(;c<t.length&&ae.test(t[c]);)c++;return{start:s,end:c}}function At(t,n){return t.buffer.active.getLine(n)?.translateToString(!1)??""}function Tt(t,n,s){const c=s.cols,a=Math.max(0,s.buffer.active.length-1);switch(n){case"left":return t.col>0?{col:t.col-1,row:t.row}:t.row>0?{col:c-1,row:t.row-1}:t;case"right":return t.col<c-1?{col:t.col+1,row:t.row}:t.row<a?{col:0,row:t.row+1}:t;case"up":return t.row>0?{col:t.col,row:t.row-1}:t;case"down":return t.row<a?{col:t.col,row:t.row+1}:t}}function J(t,n,s){const c=t.cols;if(c<=0)return;const a=n.row*c+n.col,m=s.row*c+s.col,f=Math.min(a,m),E=Math.max(a,m)-f+1,g=Math.floor(f/c),S=f-g*c;t.select(S,g,E)}function _t(t,n){const{start:s,end:c}=Ct(n,t.col);return{anchor:{col:s,row:t.row},head:{col:Math.max(s,c-1),row:t.row}}}function le(t,n,s){return t<n?n:t>s?s:t}async function kt(t){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(t),!0}catch{}return Ot(t)}function Ot(t){if(typeof document>"u")return!1;const n=document.createElement("textarea");n.value=t,n.setAttribute("readonly",""),n.style.position="fixed",n.style.top="0",n.style.left="0",n.style.width="1px",n.style.height="1px",n.style.padding="0",n.style.border="0",n.style.opacity="0",n.style.pointerEvents="none",document.body.appendChild(n);const s=document.activeElement;try{return n.focus(),n.select(),n.setSelectionRange(0,t.length),document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(n),s?.focus?.()}}async function Pt(){if(typeof navigator>"u"||!navigator.clipboard?.readText)return"";try{return await navigator.clipboard.readText()}catch{return""}}const Nt="\x1B",Mt=" ",Dt="\x1B[A",jt="\x1B[B",It="\x1B[C",zt="\x1B[D",A=t=>n=>{n.preventDefault(),t()};function Bt({terminal:t,sendInput:n,pendingCtrl:s,onToggleCtrl:c,selectionMode:a,onExtendSelection:m,onExitSelection:f,onSelectAll:w}){const{enabled:E,bottomOffset:g}=Be(),S=o.useCallback(async()=>{if(!t.hasSelection())return;const v=t.getSelection();if(!v)return;await kt(v)||console.warn("[TerminalToolbar] clipboard write failed")},[t]),N=o.useCallback(async()=>{await S(),f()},[S,f]),W=o.useCallback(async()=>{const v=await Pt();v&&n(v)},[n]),ee=o.useMemo(()=>[{label:"Esc",seq:Nt,ariaLabel:"Send Escape"},{label:"Tab",seq:Mt,ariaLabel:"Send Tab"}],[]),G=o.useMemo(()=>[{Icon:ke,seq:zt,ariaLabel:"Arrow Left"},{Icon:Oe,seq:It,ariaLabel:"Arrow Right"},{Icon:Pe,seq:Dt,ariaLabel:"Arrow Up"},{Icon:Ne,seq:jt,ariaLabel:"Arrow Down"}],[]),Q=o.useMemo(()=>[{Icon:ke,dir:"left",ariaLabel:"Extend selection left"},{Icon:Oe,dir:"right",ariaLabel:"Extend selection right"},{Icon:Pe,dir:"up",ariaLabel:"Extend selection up"},{Icon:Ne,dir:"down",ariaLabel:"Extend selection down"}],[]);return E?i.jsx("div",{"data-testid":"terminal-toolbar","data-mode":a?"selection":"idle",role:"toolbar","aria-label":a?"Terminal selection controls":"Terminal accessory keys",style:{bottom:g},className:"fixed inset-x-0 z-50 flex justify-center border-t border-border bg-background/95 shadow-lg backdrop-blur-md",children:i.jsx("div",{className:"flex w-full max-w-3xl items-center gap-1 overflow-x-auto px-2 py-1.5",children:a?i.jsxs(i.Fragment,{children:[i.jsxs(T,{ariaLabel:"Copy selection and exit",title:"Copy",onPointerDown:A(N),variant:"primary",children:[i.jsx(gt,{className:"size-4"}),i.jsx("span",{className:"text-xs",children:"Copy"})]}),i.jsxs(T,{ariaLabel:"Exit selection mode",title:"Done",onPointerDown:A(f),children:[i.jsx(ft,{className:"size-4"}),i.jsx("span",{className:"text-xs",children:"Done"})]}),i.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),i.jsx("span",{className:"mr-1 shrink-0 select-none text-xs font-medium uppercase tracking-wide text-muted-foreground","aria-hidden":"true",children:"Extend"}),Q.map(({Icon:v,dir:L,ariaLabel:p})=>i.jsx(T,{ariaLabel:p,title:p,onPointerDown:A(()=>m(L)),children:i.jsx(v,{className:"size-4"})},L))]}):i.jsxs(i.Fragment,{children:[i.jsxs(T,{ariaLabel:"Paste from clipboard",title:"Paste",onPointerDown:A(W),children:[i.jsx(ht,{className:"size-4"}),i.jsx("span",{className:"text-xs",children:"Paste"})]}),i.jsxs(T,{ariaLabel:"Select all",title:"Select all",onPointerDown:A(w),children:[i.jsx(St,{className:"size-4"}),i.jsx("span",{className:"text-xs",children:"All"})]}),i.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),ee.map(({label:v,seq:L,ariaLabel:p})=>i.jsx(T,{ariaLabel:p,title:v,onPointerDown:A(()=>n(L)),children:i.jsx("span",{className:"text-xs font-medium",children:v})},v)),i.jsx(T,{ariaLabel:s?"Cancel pending Ctrl":"Arm Ctrl modifier",title:"Ctrl (sticky — taps the next key as Ctrl+key)",onPointerDown:A(c),active:s,children:i.jsx("span",{className:"text-xs font-medium",children:"Ctrl"})}),i.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),G.map(({Icon:v,seq:L,ariaLabel:p})=>i.jsx(T,{ariaLabel:p,title:p,onPointerDown:A(()=>n(L)),children:i.jsx(v,{className:"size-4"})},p))]})})}):null}function T({ariaLabel:t,title:n,onPointerDown:s,active:c,variant:a="default",disabled:m,children:f}){const w=c?"bg-primary text-primary-foreground":a==="primary"?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted/60 hover:bg-muted active:bg-muted";return i.jsx("button",{type:"button","aria-label":t,"aria-pressed":c,title:n,onPointerDown:s,disabled:m,className:["inline-flex h-9 min-w-9 shrink-0 items-center justify-center gap-1 rounded-md px-2","text-foreground transition-colors",w,"disabled:opacity-40"].join(" "),children:f})}const De=13,Wt=500,je=10,Ht={matchBackground:"#515c6a",activeMatchBackground:"#a9913680",matchOverviewRuler:"#a9913680",activeMatchColorOverviewRuler:"#a99136"},Ft={caseSensitive:!1,wholeWord:!1,regex:!1};function ie(t){return{caseSensitive:t.caseSensitive,wholeWord:t.wholeWord,regex:t.regex,decorations:Ht}}const Kt={background:"#1e1e1e",foreground:"#e8e8e8",cursor:"#e8e8e8",selectionBackground:"rgba(255, 255, 255, 0.2)"},qt={background:"#ffffff",foreground:"#1e1e1e",cursor:"#1e1e1e",cursorAccent:"#ffffff",selectionBackground:"rgba(0, 0, 0, 0.15)",black:"#000000",red:"#cd3131",green:"#0a8043",yellow:"#946800",blue:"#0451a5",magenta:"#bc05bc",cyan:"#0598bc",white:"#555555",brightBlack:"#666666",brightRed:"#cd3131",brightGreen:"#0a8043",brightYellow:"#946800",brightBlue:"#0451a5",brightMagenta:"#bc05bc",brightCyan:"#0598bc",brightWhite:"#1e1e1e"};function Xt(){return document.documentElement.classList.contains("dark")}function Ie(){return Xt()?Kt:qt}function Qt({workspaceId:t,terminalId:n,visible:s,paneMetadata:c,autoFocus:a,onTitleChange:m}){const f=o.useRef(null),w=o.useRef(null),E=o.useRef(null),g=o.useRef(null),S=o.useRef(null),N=o.useRef(null),W=o.useRef(m);W.current=m;const{settings:ee}=mt(),G=ee.useWebGLTerminalRenderer??!0,Q=o.useRef(G);Q.current=G;const[v,L]=o.useState(!1),[p,ue]=o.useState(""),[_,We]=o.useState(Ft),[He,te]=o.useState({total:0,current:0}),ne=o.useRef(null),de=o.useRef(()=>{}),[Fe,fe]=o.useState(!1),M=o.useRef(!1),[Ke,U]=o.useState(!1),qe=o.useCallback(()=>{const u=!M.current;M.current=u,U(u)},[]),R=o.useRef(null),C=o.useRef(null),[Xe,H]=o.useState(!1),Ye=o.useCallback(()=>{R.current=null,C.current=null,H(!1),w.current?.clearSelection()},[]),Ge=o.useCallback(u=>{const b=w.current,D=R.current,k=C.current;if(!b||!D||!k)return;const V=Tt(k,u,b);C.current=V,J(b,D,V)},[]),Qe=o.useCallback(()=>{const u=w.current;if(!u)return;const b={col:0,row:0},D=Math.max(0,u.buffer.active.length-1),k={col:Math.max(0,u.cols-1),row:D};J(u,b,k),R.current=b,C.current=k,H(!0),u.blur()},[]);o.useEffect(()=>{if(!f.current)return;let u=!1,b;return Promise.all([B(()=>import("./xterm-iwIWEtGc.js"),[]),B(()=>import("./addon-fit-DX4qG4td.js"),[]),B(()=>import("./addon-web-links-DIbG5aQx.js"),[]),B(()=>import("./addon-search-DCE88ROn.js"),[]),B(()=>import("./addon-webgl-CeRvQWkA.js"),[])]).then(([D,k,V,et,tt])=>{const{Terminal:nt}=D,{FitAddon:rt}=k,{WebLinksAddon:ot}=V,{SearchAddon:st}=et,{WebglAddon:ct}=tt;if(u||!f.current)return;const he=Q.current;B(()=>Promise.resolve({}),__vite__mapDeps([0]));const r=new nt({allowProposedApi:!0,cursorBlink:!0,fontSize:De*pt(),fontFamily:"'SF Mono', Menlo, Monaco, 'Courier New', monospace",lineHeight:he?1.2:1,macOptionIsMeta:!0,scrollback:1e4,theme:Ie()}),me=new MutationObserver(()=>{r.options.theme=Ie()});me.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]});const F=new rt;r.loadAddon(F),r.loadAddon(new ot((e,l)=>wt(l))),r.open(f.current);let re;const oe=()=>{try{const e=new ct({customGlyphs:!0});r.loadAddon(e);const h=f.current?.querySelector(".xterm-screen")?.querySelector(":scope > canvas:last-of-type");return h&&(h.style.pointerEvents="none",h.style.touchAction="none"),S.current=e,re?.dispose(),re=e.onContextLoss(()=>{console.warn("[TerminalPanel] WebGL context lost, reattaching addon"),e.dispose(),S.current=null,oe()}),!0}catch(e){return console.warn("[TerminalPanel] WebGL renderer unavailable, falling back to DOM",e),!1}};he&&oe();const se=new st;r.loadAddon(se);const at=se.onDidChangeResults(e=>{te({total:e.resultCount,current:e.resultIndex>=0?e.resultIndex+1:0})});r.attachCustomKeyEventHandler(e=>{if(e.type==="keydown"){if(M.current&&e.key.length===1&&!e.metaKey&&!e.altKey&&!e.ctrlKey){const h=e.key.toLowerCase().charCodeAt(0);if(h>=97&&h<=122)return r.input(String.fromCharCode(h-96)),M.current=!1,U(!1),e.preventDefault(),!1;M.current=!1,U(!1)}if((e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey&&e.key.toLowerCase()==="f")return e.preventDefault(),de.current(),!1;if(e.key==="Enter"&&e.shiftKey&&!e.altKey&&!e.metaKey&&!e.ctrlKey)return e.preventDefault(),r.input(`
|
|
3
|
-
`),!1;if(e.altKey&&!e.metaKey&&!e.ctrlKey){if(e.key==="ArrowLeft")return r.input("\x1Bb"),!1;if(e.key==="ArrowRight")return r.input("\x1Bf"),!1}}return!0}),w.current=r,E.current=F,g.current=se,fe(!0);const d=f.current;let K=null;const pe=e=>{K=e.touches.length===1?e.touches[0].clientY:null},we=e=>{if(e.touches.length!==1||K===null)return;const l=e.touches[0].clientY,h=K-l,x=d.querySelector(".xterm-viewport"),P=x&&r.rows>0?x.clientHeight/r.rows:17,Y=Math.trunc(h/P);Y!==0&&(r.scrollLines(Y),K=l+(h-Y*P),e.preventDefault())},Z=()=>{K=null};d.addEventListener("touchstart",pe,{passive:!0}),d.addEventListener("touchmove",we,{passive:!1}),d.addEventListener("touchend",Z,{passive:!0}),d.addEventListener("touchcancel",Z,{passive:!0});let q=null,j=null;const O=()=>{q!==null&&(window.clearTimeout(q),q=null),j=null},ve=e=>{if(O(),e.touches.length!==1)return;const l=e.touches[0];j={x:l.clientX,y:l.clientY},q=window.setTimeout(()=>{q=null;const h=j;if(!h)return;const x=d.querySelector(".xterm-screen");if(!x)return;const P=Rt(h.x,h.y,r,x),Y=At(r,P.row),{anchor:Te,head:_e}=_t(P,Y);if(J(r,Te,_e),R.current=Te,C.current=_e,H(!0),I=null,z=null,r.blur(),typeof navigator.vibrate=="function")try{navigator.vibrate(15)}catch{}},Wt)},be=e=>{if(!j||e.touches.length!==1)return;const l=e.touches[0],h=Math.abs(l.clientX-j.x),x=Math.abs(l.clientY-j.y);(h>je||x>je)&&O()};d.addEventListener("touchstart",ve,{passive:!0}),d.addEventListener("touchmove",be,{passive:!0}),d.addEventListener("touchend",O,{passive:!0}),d.addEventListener("touchcancel",O,{passive:!0});let I=null,z=null;const xe=e=>{e.touches.length===1?(I=e.touches[0].clientX,z=e.touches[0].clientY):(I=null,z=null)},ye=e=>{const l=I,h=z;if(I=null,z=null,l===null||h===null||e.changedTouches.length!==1)return;const x=Math.abs(e.changedTouches[0].clientX-l),P=Math.abs(e.changedTouches[0].clientY-h);x<10&&P<10&&(R.current!==null&&(R.current=null,C.current=null,H(!1),r.clearSelection()),r.focus())},ge=()=>{I=null,z=null};d.addEventListener("touchstart",xe,{passive:!0}),d.addEventListener("touchend",ye,{passive:!0}),d.addEventListener("touchcancel",ge,{passive:!0});const it=location.protocol==="https:"?"wss:":"ws:",y=new WebSocket(`${it}//${location.host}/terminal?workspaceId=${encodeURIComponent(t)}&terminalId=${encodeURIComponent(n)}`);N.current=y,y.binaryType="arraybuffer",y.onopen=()=>{if(c&&(c.command||c.cwd||c.env)){const e={type:"init"};c.command&&(e.command=c.command),c.cwd&&(e.cwd=c.cwd),c.env&&(e.env=c.env),y.send(JSON.stringify(e))}F.fit(),y.send(JSON.stringify({type:"resize",cols:r.cols,rows:r.rows})),a&&r.focus()},y.onmessage=e=>{if(e.data instanceof ArrayBuffer)r.write(new Uint8Array(e.data));else try{const l=JSON.parse(e.data);l.type==="title"&&typeof l.title=="string"&&W.current?.(l.title)}catch{r.write(e.data)}},y.onclose=()=>{r.write(`\r
|
|
4
|
-
\x1B[90m[Terminal disconnected]\x1B[0m\r
|
|
5
|
-
`)},r.onData(e=>{y.readyState===WebSocket.OPEN&&y.send(e)}),r.onTitleChange(e=>{W.current?.(e)});let X=null;const lt=()=>{X===null&&(!R.current||!C.current||(X=requestAnimationFrame(()=>{X=null;const e=R.current,l=C.current;e&&l&&J(r,e,l)})))},ut=r.onResize(lt);let Ee=window.devicePixelRatio;const Se=()=>{y.readyState===WebSocket.OPEN&&(r.cols<=0||r.rows<=0||y.send(JSON.stringify({type:"resize",cols:r.cols,rows:r.rows})))},Le=(e={})=>{const{newFontSize:l}=e;if(l!==void 0)r.options.fontSize!==l&&(r.options.fontSize=l);else{const x=r.options.fontSize;typeof x=="number"&&(r.options.fontSize=x+1,r.options.fontSize=x)}const h=S.current;h&&(h.dispose(),S.current=null,oe()),F.fit()},Re=()=>{const e=window.devicePixelRatio;return e===Ee?!1:(Ee=e,Le(),!0)},Ce=new ResizeObserver(e=>{const l=e[0];if(!l||l.contentRect.width===0||l.contentRect.height===0)return;Re()||F.fit(),Se()});Ce.observe(f.current);const dt=vt(e=>{const l=Math.round(De*e*100)/100;r.options.fontSize!==l&&(Le({newFontSize:l}),Se())});let $;const Ae=()=>{$=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),$.addEventListener("change",ce)},ce=()=>{Re(),$?.removeEventListener("change",ce),Ae()};Ae(),b=()=>{me.disconnect(),Ce.disconnect(),at.dispose(),ut.dispose(),X!==null&&cancelAnimationFrame(X),re?.dispose(),$?.removeEventListener("change",ce),dt(),O(),d.removeEventListener("touchstart",pe),d.removeEventListener("touchmove",we),d.removeEventListener("touchend",Z),d.removeEventListener("touchcancel",Z),d.removeEventListener("touchstart",ve),d.removeEventListener("touchmove",be),d.removeEventListener("touchend",O),d.removeEventListener("touchcancel",O),d.removeEventListener("touchstart",xe),d.removeEventListener("touchend",ye),d.removeEventListener("touchcancel",ge),y.close(),r.dispose(),w.current=null,E.current=null,g.current=null,S.current=null,N.current=null,R.current=null,C.current=null,M.current=!1,H(!1),U(!1),fe(!1)}}),()=>{u=!0,b?.()}},[n,t,c,a]),o.useEffect(()=>{s&&E.current&&requestAnimationFrame(()=>{E.current?.fit();const u=w.current,b=N.current;u&&b?.readyState===WebSocket.OPEN&&u.cols>0&&u.rows>0&&b.send(JSON.stringify({type:"resize",cols:u.cols,rows:u.rows}))})},[s]),o.useEffect(()=>{const u=()=>{s&&w.current?.focus()};return window.addEventListener("band:focus-terminal",u),()=>window.removeEventListener("band:focus-terminal",u)},[s]);const Ue=o.useCallback(()=>{L(!0),requestAnimationFrame(()=>{ne.current?.focus(),ne.current?.select()})},[]);de.current=Ue;const Ve=o.useCallback(()=>{g.current?.clearDecorations(),L(!1),ue(""),te({total:0,current:0}),w.current?.focus()},[]),Ze=o.useCallback(()=>{p&&g.current?.findNext(p,ie(_))},[p,_]),$e=o.useCallback(()=>{p&&g.current?.findPrevious(p,ie(_))},[p,_]);o.useEffect(()=>{const u=g.current;if(u){if(!p){u.clearDecorations(),te({total:0,current:0});return}u.findNext(p,ie(_))}},[p,_]);const{contentBottomInset:Je}=Be();return i.jsxs("div",{className:"relative flex h-full w-full flex-col",children:[v&&i.jsx(bt,{ref:ne,query:p,onQueryChange:ue,options:_,onOptionsChange:We,placeholder:"Find in terminal...",matchInfo:He,onNext:Ze,onPrevious:$e,onClose:Ve}),i.jsx("div",{className:"relative min-h-0 flex-1",children:i.jsx("div",{ref:f,className:"absolute inset-x-2 top-2 overflow-hidden",style:{bottom:8+Je,zoom:`calc(1 / var(${xt}, 1))`}})}),Fe&&w.current&&i.jsx(Bt,{terminal:w.current,sendInput:u=>{const b=N.current;b?.readyState===WebSocket.OPEN&&b.send(u)},pendingCtrl:Ke,onToggleCtrl:qe,selectionMode:Xe,onExtendSelection:Ge,onExitSelection:Ye,onSelectAll:Qe})]})}export{Qt as TerminalPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aF as ln,aG as an,aH as y,aI as tn,aJ as M,aK as I,aL as _,aM as un,aN as rn,aO as j,aP as o,aQ as H,aR as sn,aS as on,aT as fn}from"./main-BlRcPsmZ.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,q,O,v,R,J,a){var D=q-l,i=O-h,n=J-v,d=a-R,u=d*D-n*i;if(!(u*u<y))return u=(n*(h-R)-d*(l-v))/u,[l+u*D,h+u*i]}function W(l,h,q,O,v,R,J){var a=l-q,D=h-O,i=(J?R:-R)/j(a*a+D*D),n=i*D,d=-i*a,u=l+n,s=h+d,f=q+n,c=O+d,K=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,A=m*m+g*g,T=v-R,P=u*c-f*s,E=(g<0?-1:1)*j(fn(0,T*T*A-P*P)),F=(P*g-m*E)/A,G=(-P*m-g*E)/A,w=(P*g+m*E)/A,p=(-P*m+g*E)/A,x=F-K,e=G-t,r=w-K,L=p-t;return x*x+e*e>r*r+L*L&&(F=w,G=p),{cx:F,cy:G,x01:-n,y01:-d,x11:F*(v/T-1),y11:G*(v/T-1)}}function hn(){var l=cn,h=yn,q=H(0),O=null,v=gn,R=dn,J=mn,a=null,D=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=R.apply(this,arguments)-an,K=un(c-f),t=c>f;if(a||(a=n=D()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(K>tn-y)a.moveTo(s*M(f),s*I(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*M(c),u*I(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,A=f,T=c,P=K,E=K,F=J.apply(this,arguments)/2,G=F>y&&(O?+O.apply(this,arguments):j(u*u+s*s)),w=_(un(s-u)/2,+q.apply(this,arguments)),p=w,x=w,e,r;if(G>y){var L=sn(G/u*I(F)),z=sn(G/s*I(F));(P-=L*2)>y?(L*=t?1:-1,A+=L,T-=L):(P=0,A=T=(f+c)/2),(E-=z*2)>y?(z*=t?1:-1,m+=z,g-=z):(E=0,m=g=(f+c)/2)}var N=s*M(m),Q=s*I(m),B=u*M(T),C=u*I(T);if(w>y){var U=s*M(g),V=s*I(g),X=u*M(A),Y=u*I(A),S;if(K<rn)if(S=pn(N,Q,X,Y,U,V,B,C)){var Z=N-S[0],$=Q-S[1],k=U-S[0],b=V-S[1],nn=1/I(on((Z*k+$*b)/(j(Z*Z+$*$)*j(k*k+b*b)))/2),en=j(S[0]*S[0]+S[1]*S[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}E>y?x>y?(e=W(X,Y,N,Q,s,x,t),r=W(U,V,B,C,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(N,Q),a.arc(0,0,s,m,g,!t)):a.moveTo(N,Q),!(u>y)||!(P>y)?a.lineTo(B,C):p>y?(e=W(B,C,U,V,u,-p,t),r=W(N,Q,X,Y,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,A,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-rn/2;return[M(d)*n,I(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:H(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:H(+n),i):h},i.cornerRadius=function(n){return arguments.length?(q=typeof n=="function"?n:H(+n),i):q},i.padRadius=function(n){return arguments.length?(O=n==null?null:typeof n=="function"?n:H(+n),i):O},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:H(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:H(+n),i):R},i.padAngle=function(n){return arguments.length?(J=typeof n=="function"?n:H(+n),i):J},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|