@band-app/server 0.20.0 → 0.20.1
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-DqC_h-bo.js +5 -0
- package/dist/client/assets/{DockviewTerminalContainer-CqH5m62N.js → DockviewTerminalContainer-DyBQtb3U.js} +2 -2
- package/dist/client/assets/TerminalPanel-CFDxHN4Q.js +5 -0
- package/dist/client/assets/{_basePickBy-CosPBGEe.js → _basePickBy-Dcf1Y8Iq.js} +1 -1
- package/dist/client/assets/{_baseUniq-CNCpSB0P.js → _baseUniq-Cy98IGsx.js} +1 -1
- package/dist/client/assets/{arc-UDGCZidA.js → arc-rOBphWj1.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-CeS1u1s5.js → architectureDiagram-VXUJARFQ-C54lj_mp.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-DNtrsJ3_.js → blockDiagram-VD42YOAC-IXpkKl99.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-L-AKg5Ca.js → c4Diagram-YG6GDRKO-eHkAJFz1.js} +1 -1
- package/dist/client/assets/channel-DDj6wNE3.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-6WG78h6_.js → chunk-4BX2VUAB-BVtvPQLw.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CivChWg7.js → chunk-55IACEB6-DWUF7TBt.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-BKLAk8Ng.js → chunk-B4BG7PRW-BT2NV-OP.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-B_cDZCba.js → chunk-DI55MBZ5-Cg5CF9C8.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-CZgE72J_.js → chunk-FMBD7UC4-B0SYeHBH.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-1qh6IGru.js → chunk-QN33PNHL-C5tEKH2s.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-Cl_2nn9E.js → chunk-QZHKN3VN-B3eOtTKT.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-DpxKjqWA.js → chunk-TZMSLE5B-C2LU8iG2.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-DEMr_v7L.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-DEMr_v7L.js +1 -0
- package/dist/client/assets/clone-BsghsKY1.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DCzND3wc.js → cose-bilkent-S5V4N54A-DMEstRG3.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-phsFBB-e.js → dagre-6UL2VRFP-Dnk33exg.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-C3SOO9R0.js → diagram-PSM6KHXK-mrXKTY_T.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-CAFBJ4hH.js → diagram-QEK2KX5R-BzHK-hsq.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-Bpydud7g.js → diagram-S2PKOQOG-CQCxQKV-.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-Co4WhzwN.js → erDiagram-Q2GNP2WA-BPDJfava.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-BZA58aUI.js → flowDiagram-NV44I4VS-C6Mmdoua.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3--4j85sTO.js → ganttDiagram-JELNMOA3-DLbgXlJh.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-6AH31Cb1.js → gitGraphDiagram-V2S2FVAM-DVLRTDa6.js} +1 -1
- package/dist/client/assets/{graph-7CJlwe2i.js → graph-Cwyvupsz.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-D5Kact6h.js → highlighted-body-B3W2YXNL-C0bhSLak.js} +1 -1
- package/dist/client/assets/{index-D_D2pxKM.js → index-8fmEfQXt.js} +1 -1
- package/dist/client/assets/{index-C4gIKOr_.js → index-8qew1yXR.js} +1 -1
- package/dist/client/assets/{index-DnzvlwNY.js → index-BEfdqN9O.js} +1 -1
- package/dist/client/assets/{index-Djl4xLSO.js → index-BjRdyIjf.js} +1 -1
- package/dist/client/assets/{index-B2DcQ-ug.js → index-BwEcNyXc.js} +1 -1
- package/dist/client/assets/{index-DgEnNhJH.js → index-Bx_OaRaP.js} +1 -1
- package/dist/client/assets/{index-B5R7cbs8.js → index-BzF5H3v-.js} +1 -1
- package/dist/client/assets/{index-DMMKTe60.js → index-CA4qMsBj.js} +1 -1
- package/dist/client/assets/{index-Cp85A8y4.js → index-CCvDsqEy.js} +1 -1
- package/dist/client/assets/{index-CralkALm.js → index-CXNMB7pL.js} +1 -1
- package/dist/client/assets/{index-pr8WXb_L.js → index-CbBtBBYr.js} +1 -1
- package/dist/client/assets/{index-Cv7YFrOV.js → index-CqhJvfhF.js} +1 -1
- package/dist/client/assets/{index-DCu6TAMf.js → index-DWLuzOpi.js} +1 -1
- package/dist/client/assets/{index-CoRbY65h.js → index-DsTs1gei.js} +1 -1
- package/dist/client/assets/{index-BwJYeeov.js → index-ERt8cxUV.js} +1 -1
- package/dist/client/assets/{index-Dn_GfMwq.js → index-FSq9CQql.js} +1 -1
- package/dist/client/assets/{index--MhpXyw4.js → index-UCQ1zVBi.js} +1 -1
- package/dist/client/assets/{index-B4wpLa0T.js → index-fifqJXyx.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-CeA337Zm.js → infoDiagram-HS3SLOUP-7Hhl73vO.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-ujbs0LMd.js → journeyDiagram-XKPGCS4Q-CJcXgH51.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-ffQDH_Ro.js → kanban-definition-3W4ZIXB7-CBsuk1vp.js} +1 -1
- package/dist/client/assets/{layout-Bp2mKXuW.js → layout-ZjLAsNj-.js} +1 -1
- package/dist/client/assets/{main-axhmccT5.js → main-QmYiKgqv.js} +219 -219
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-ADZcbwuf.js → mindmap-definition-VGOIOE7T-doqFtLjy.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-BdG4-xDd.js → pieDiagram-ADFJNKIX-Bzaqqvl9.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DUtM9sRB.js → quadrantDiagram-AYHSOK5B-DxzHu9fl.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Bb0HlfNx.js → requirementDiagram-UZGBJVZJ-Cp3foAel.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-DVCE_8pf.js → sankeyDiagram-TZEHDZUN-BQx6TKI3.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-CKQaWU-Q.js → sequenceDiagram-WL72ISMW-Cd_242bL.js} +1 -1
- package/dist/client/assets/{square-terminal-BiJr_LVr.js → square-terminal-bliRzpRN.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-D0QXwVbV.js → stateDiagram-FKZM4ZOC-GZM9iqTD.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-yLFyTsJU.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-CUDKk5ha.js → timeline-definition-IT6M3QCI-D5mcm-Qu.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-yUFqXQpQ.js → treemap-GDKQZRPO-CkKCE0F7.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId-Bz0CuqC_.js → workspace._workspaceId-CQVHqxcU.js} +1 -1
- package/dist/client/assets/{workspace._workspaceId-DorcrnsD.js → workspace._workspaceId-DFvkHRHC.js} +2 -2
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-Dju2LIYt.js → xychartDiagram-PRI3JC2R-Djg2lfgU.js} +1 -1
- package/dist/openapi.json +76 -0
- package/dist/server/assets/{DockviewBrowserContainer-DaEHL7rU.js → DockviewBrowserContainer-Btjtd2O1.js} +29 -34
- package/dist/server/assets/{DockviewTerminalContainer-QeRuw498.js → DockviewTerminalContainer-bMEUzx6R.js} +3 -3
- package/dist/server/assets/{TerminalPanel-CIQVz_Z4.js → TerminalPanel-DDazs1HR.js} +1 -49
- package/dist/server/assets/{_basePickBy-Bgz-DXU9.js → _basePickBy-BR2ebl6H.js} +2 -2
- package/dist/server/assets/{_baseUniq-CevNURdU.js → _baseUniq-C7-_tYXk.js} +1 -1
- package/dist/server/assets/{_tanstack-start-manifest_v-9Dn7fTyV.js → _tanstack-start-manifest_v-TcfwNbuH.js} +1 -1
- package/dist/server/assets/{arc-jD7cuYE0.js → arc-CWFSWY_u.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-CH32HJV2.js → architecture-7HQA4BMR-DDMO671Z.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-DisnJPPo.js → architectureDiagram-VXUJARFQ-vPxmruSN.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-Djjy-jiv.js → blockDiagram-VD42YOAC-DGV6m5iW.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-B12Oi-HH.js → c4Diagram-YG6GDRKO-9PjJESuA.js} +2 -2
- package/dist/server/assets/{channel-DFaIo-PG.js → channel-DzyKDZfe.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-DHfsBptR.js → chunk-4BX2VUAB-MyrUiBmB.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-jIjVbMix.js → chunk-55IACEB6-CJ4fKFif.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-CZ4z-SYy.js → chunk-B4BG7PRW-CKzqfTU-.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-BAZeiYrT.js → chunk-DI55MBZ5-DrXLxcKs.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-CPlukapU.js → chunk-FMBD7UC4-yeB6m7NE.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-BBEzEMyZ.js → chunk-QN33PNHL-qCq8pCkn.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-BbJAuOLh.js → chunk-QZHKN3VN-CHvK5Ic5.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-DXQ0720e.js → chunk-TZMSLE5B-wF9ZPcJp.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-Dd_NiCJt.js → classDiagram-2ON5EDUG-D1OcdIXp.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-Dd_NiCJt.js → classDiagram-v2-WZHVMYZB-D1OcdIXp.js} +5 -5
- package/dist/server/assets/{clone-D2G5HtzD.js → clone-BH4YtRmr.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-D9MbA73U.js → cose-bilkent-S5V4N54A-BiP6P-09.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-3X8TKKNF.js → dagre-6UL2VRFP-BKfzYlJQ.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-BifH8r_E.js → diagram-PSM6KHXK-BF6r9xQS.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-CpM2yo3A.js → diagram-QEK2KX5R-CxL6qeVX.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-Dem9oHxL.js → diagram-S2PKOQOG-CUKugrbt.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-Cv2t_qcc.js → erDiagram-Q2GNP2WA-CRPjeaHB.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-DO9viNx6.js → flowDiagram-NV44I4VS-CXnLZPl0.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-BQLkwHvs.js → ganttDiagram-JELNMOA3-CP5EwGxj.js} +1 -1
- package/dist/server/assets/{gitGraph-G5XIXVHT-Rf89GAs0.js → gitGraph-G5XIXVHT-UYMoyufq.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-Cn1yq3PZ.js → gitGraphDiagram-V2S2FVAM-CZNtwgUE.js} +7 -7
- package/dist/server/assets/{graph-DdtTxequ.js → graph-BB1_2Q0x.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-DGIqRI0V.js → highlighted-body-B3W2YXNL-C6BqMnvu.js} +1 -1
- package/dist/server/assets/{index-eS7k7NKN.js → index-B5V3PU-n.js} +2 -2
- package/dist/server/assets/{index-B7HiLzkZ.js → index-BHQ8bMg_.js} +3 -3
- package/dist/server/assets/{index-iwREUWd1.js → index-BUm0x4GN.js} +2 -2
- package/dist/server/assets/{index-_XlsLUmp.js → index-Bay77lf3.js} +2 -2
- package/dist/server/assets/{index-DKFYHMSW.js → index-BbUtF3L1.js} +2 -2
- package/dist/server/assets/{index-rDKMQzl_.js → index-Bme4JhwA.js} +1 -1
- package/dist/server/assets/{index-CVQ-l3zd.js → index-CMxtCPk9.js} +2 -2
- package/dist/server/assets/{index-CZSZYqEH.js → index-Ct5-lZTn.js} +2 -2
- package/dist/server/assets/{index-DF0W4io9.js → index-D49PP401.js} +3 -3
- package/dist/server/assets/{index-COXowzgf.js → index-D5hMY11m.js} +4 -4
- package/dist/server/assets/{index-Bd47fsM9.js → index-DC1gaho7.js} +5 -5
- package/dist/server/assets/{index-CEu724dC.js → index-DH3a6-do.js} +2 -2
- package/dist/server/assets/{index-CN-GsVYc.js → index-DLEtsdeb.js} +2 -2
- package/dist/server/assets/{index-D0gkB7DS.js → index-DLV7EX0H.js} +1 -1
- package/dist/server/assets/{index-IABw8d2w.js → index-Dqk2jQZ7.js} +2 -2
- package/dist/server/assets/{index-CSvLh_Yz.js → index-DrWaYPW7.js} +2 -2
- package/dist/server/assets/{index-dA-FNez1.js → index-DsrV0B5O.js} +5 -5
- package/dist/server/assets/{index-C7aw98b-.js → index-lmhecPWc.js} +2 -2
- package/dist/server/assets/{info-VBDWY6EO-DVBWXH0S.js → info-VBDWY6EO-X8DJfp6J.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-Dn-PUlKq.js → infoDiagram-HS3SLOUP-BqzWimk3.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-C1eLAzL9.js → journeyDiagram-XKPGCS4Q-TTA7OGV5.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-DFHxxNcb.js → kanban-definition-3W4ZIXB7-DxNhleha.js} +2 -2
- package/dist/server/assets/{layout-BEatsupl.js → layout-CdOkK52n.js} +4 -4
- package/dist/server/assets/{mermaid-3ZIDBTTL-8mt5O2g5.js → mermaid-3ZIDBTTL-Cof8t4J_.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-BLOfHo-D.js → mermaid-parser.core-Cqz_DwKC.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-B5_qScJU.js → mindmap-definition-VGOIOE7T-DeGYTIld.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-DYeTXPnX.js → packet-DYOGHKS2-TuIP3-Qx.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-BlyZBKB0.js → pie-VRWISCQL-DH44dC73.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-CwWqz5Xf.js → pieDiagram-ADFJNKIX-BPUa7SIP.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BZ8A8mON.js → quadrantDiagram-AYHSOK5B-CkonmhO6.js} +1 -1
- package/dist/server/assets/{radar-ZZBFDIW7-B60czbOE.js → radar-ZZBFDIW7-oedT_dlV.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-Cctcn3D4.js → requirementDiagram-UZGBJVZJ-B39ng8tF.js} +3 -3
- package/dist/server/assets/{router-V4X9DgJt.js → router-Dz7oMBKX.js} +363 -196
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Bvyi-a8d.js → sankeyDiagram-TZEHDZUN-61A7I6h9.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-C83rLE-r.js → sequenceDiagram-WL72ISMW-CXIpjJu4.js} +3 -3
- package/dist/server/assets/{square-terminal-Dcy5Z6a4.js → square-terminal-D86hckth.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-lfXNq0DS.js → stateDiagram-FKZM4ZOC-DSp5PEkn.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BkZqIjkI.js → stateDiagram-v2-4FDKWEC3-B5TiwK_8.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-CejT7_79.js → timeline-definition-IT6M3QCI-DvosEzgh.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-Dvu1YI6l.js → treemap-GDKQZRPO-BOdkONyj.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-BpnCyMIU.js → workspace._workspaceId-CvbciLVC.js} +3 -3
- package/dist/server/assets/{workspace._workspaceId-D20Q15rI.js → workspace._workspaceId-Dcw9dnbJ.js} +1 -1
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-DmHHkA_A.js → xychartDiagram-PRI3JC2R-C22gtuGl.js} +1 -1
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +333 -59
- package/package.json +4 -4
- package/dist/client/assets/DockviewBrowserContainer-CE6D36cE.js +0 -5
- package/dist/client/assets/TerminalPanel-BCLbEfyo.js +0 -5
- package/dist/client/assets/channel-vYE3Ojmg.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-xnvZA_6X.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-xnvZA_6X.js +0 -1
- package/dist/client/assets/clone-DsvuocD4.js +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-C3iyPGuZ.js +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@band-app/server",
|
|
3
|
-
"version": "0.20.
|
|
3
|
+
"version": "0.20.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"band-server": "./bin/band-server.mjs"
|
|
@@ -117,9 +117,9 @@
|
|
|
117
117
|
"ws": "^8.18.0",
|
|
118
118
|
"zod": "^3.25.67",
|
|
119
119
|
"zustand": "^5.0.0",
|
|
120
|
-
"@band-app/coding-agent": "^0.20.
|
|
121
|
-
"@band-app/ui": "^0.20.
|
|
122
|
-
"@band-app/logger": "^0.20.
|
|
120
|
+
"@band-app/coding-agent": "^0.20.1",
|
|
121
|
+
"@band-app/ui": "^0.20.1",
|
|
122
|
+
"@band-app/logger": "^0.20.1"
|
|
123
123
|
},
|
|
124
124
|
"scripts": {
|
|
125
125
|
"dev": "NODE_ENV=development tsx watch start-server.ts",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{m as he,r,bU as F,cp as L,cq as M,cr as Re,p as B,cs as Pe,ct as Te,j as a,cu as ae,cn as Ae,cv as Ee,cw as Ie,cx as Fe,cy as Be,cz as qe,cA as Ue,cB as Le,cC as Me,cD as ze,cE as V,cF as Oe,b_ as Ke,ci as $e,X as be,cG as Ge,u as He,n as Ve,o as Qe,q as We,v as me,w as Je,x as Xe,y as Ye,z as Ze,A as et,H as ie,J as ce,B as tt,C as rt,E as nt,F as st,G as ot}from"./main-axhmccT5.js";const at=[["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"}]],it=he("history",at);const ct=[["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"}]],lt=he("wrench",ct);function ut(e,o){if(!o||o.size===0||typeof e!="object"||e===null)return e;const n=e.panels;if(typeof n!="object"||n===null)return e;let u=!1;const d={};for(const[c,w]of Object.entries(n)){const g=o.get(c);if(g&&typeof w=="object"&&w!==null&&typeof w.params=="object"&&w.params!==null){const h=w.params;if(!h.initialUrl){d[c]={...w,params:{...h,initialUrl:g}},u=!0;continue}}d[c]=w}return u?{...e,panels:d}:e}const dt={caseSensitive:!1,wholeWord:!1,regex:!1};function ft({key:e,keyName:o}){const[n,u]=r.useState(!1),[d,c]=r.useState(""),[w,g]=r.useState(dt),[h,C]=r.useState(null),_=r.useRef(null),k=r.useRef(e);k.current=e;const I=r.useRef(null),y=r.useCallback(S=>o==="browserId"?S.browser_id:S.workspace_id,[o]),D=r.useCallback((S={})=>({[o]:k.current,...S}),[o]),T=r.useCallback(()=>{requestAnimationFrame(()=>{_.current?.focus(),_.current?.select()})},[]),j=r.useCallback(async(S,t={})=>{if(F){if(!S){C(null),I.current=null;try{await L("browser_stop_find_in_page",D({action:"clearSelection"}))}catch{}return}(t.findNext??!1)||(C(null),I.current=null);try{const i=await L("browser_find_in_page",D({text:S,options:{matchCase:w.caseSensitive,findNext:t.findNext??!1,forward:t.forward??!0}}));typeof i=="number"&&(I.current=i)}catch(i){console.error("browser_find_in_page failed:",i)}}},[D,w.caseSensitive]),E=r.useCallback(()=>{u(!1),c(""),C(null),I.current=null,F&&L("browser_stop_find_in_page",D({action:"clearSelection"})).catch(()=>{})},[D]),v=r.useCallback(()=>{u(!0),T()},[T]);r.useEffect(()=>{n&&j(d)},[d,n,j]),r.useEffect(()=>{if(!F)return;let S;return(async()=>S=await M("browser-found-in-page",t=>{y(t.payload)===k.current&&(I.current!==null&&t.payload.request_id!==I.current||C({total:t.payload.matches,current:t.payload.active_match_ordinal}))}))(),()=>S?.()},[y]),r.useEffect(()=>{if(!F)return;let S;return(async()=>S=await M("browser-find-shortcut",t=>{y(t.payload)===k.current&&(u(!0),T())}))(),()=>S?.()},[T,y]),r.useEffect(()=>{if(!F)return;let S;return(async()=>S=await M("browser-url-changed",t=>{y(t.payload)===k.current&&t.payload.loading&&E()}))(),()=>S?.()},[E,y]);const N=r.useCallback(()=>{d&&j(d,{findNext:!0,forward:!0})},[d,j]),z=r.useCallback(()=>{d&&j(d,{findNext:!0,forward:!1})},[d,j]);return{isOpen:n,open:v,close:E,query:d,setQuery:c,options:w,setOptions:g,matchInfo:h,findNext:N,findPrevious:z,searchBarRef:_}}const pt=50,ht=100;function bt(e){const{key:o,keyName:n,workspaceId:u,currentUrlRef:d,setInputUrl:c,inputUrl:w,onNavigate:g}=e,h=ft({key:o,keyName:n}),C=r.useRef(!1),[_,k]=r.useState([]),[I,y]=r.useState(!1),[D,T]=r.useState(0);Re(I);const j=r.useCallback(()=>{y(!1),k([]),T(0)},[]);r.useEffect(()=>{if(!C.current)return;const t=w.trim();if(t===""){j();return}if(t===d.current.trim()){j();return}let i=!1;const p=setTimeout(()=>{B.history.search.query({workspaceId:u,query:t,limit:8}).then(l=>{if(!i){if(l.entries.length===0){j();return}k(l.entries),y(!0),T(0)}}).catch(()=>{i||j()})},pt);return()=>{i=!0,clearTimeout(p)}},[w,u,j,d]);const E=r.useCallback(t=>{C.current=!0,t.target.select()},[]),v=r.useCallback(()=>{C.current=!1,c(d.current),setTimeout(()=>{C.current||j()},ht)},[d,c,j]),N=r.useCallback(t=>{if(I){if(t.key==="ArrowDown"){t.preventDefault(),T(i=>Math.min(i+1,_.length-1));return}if(t.key==="ArrowUp"){t.preventDefault(),T(i=>Math.max(i-1,0));return}if(t.key==="Enter"){const i=_[D];if(i){t.preventDefault(),j(),g(i.url);return}}if(t.key==="Escape"){t.preventDefault(),j();return}}if(t.key==="Enter"){t.preventDefault(),j(),g(w);return}if(t.key==="Escape"){t.preventDefault(),c(d.current);const i=t.currentTarget;requestAnimationFrame(()=>{i.isConnected&&i.select()})}},[w,g,c,d,I,_,D,j]),z=r.useCallback(t=>{t.key.toLowerCase()!=="f"||t.shiftKey||t.altKey||!(/mac/i.test(navigator.userAgent)?t.metaKey&&!t.ctrlKey:t.ctrlKey&&!t.metaKey)||(t.preventDefault(),t.stopPropagation(),h.open())},[h]),S=r.useCallback(async()=>{if(F)try{await L("browser_toggle_dev_tools",{[n]:o})}catch(t){console.error("browser_toggle_dev_tools failed:",t)}},[o,n]);return{find:h,addressInputFocusedRef:C,handleAddressFocus:E,handleAddressBlur:v,handleAddressKeyDown:N,handlePaneKeyDown:z,handleToggleDevTools:S,autocomplete:{isOpen:I,items:_,selectedIndex:D,close:j,setSelectedIndex:T},paneDataAttrs:{"data-band-browser-pane":"","data-band-browser-pane-key":o,"data-band-browser-pane-keyname":n}}}function le(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}function mt(e){const{created:o,visible:n,ipcKeyRef:u}=e,d=Pe(),[c,w]=r.useState(null),g=r.useRef(!1);return r.useEffect(()=>{if(!F||!o)return;let h=!1;if(d){if(!n)return;const C=u.current;(async()=>{try{const _=await L("browser_capture_page",C);!h&&_&&(Te.flushSync(()=>w(_)),await le())}catch{}h||(g.current=!0,L("browser_pause_media",C).catch(()=>{}),L("browser_hide",C).catch(()=>{}))})()}else if(g.current){g.current=!1;const C=u.current;L("browser_show",C).catch(()=>{}),L("browser_resume_media",C).catch(()=>{}),(async()=>(await le(),h||w(null)))()}else w(null);return()=>{h=!0}},[d,o,n,u]),{snapshot:c}}let G=new Set;const ee=new Set;let X=!1;function wt(e){const o=e(G);if(o!==G){G=o;for(const n of ee)n()}}function ue(e){const o=e.toLowerCase();!o||G.has(o)||wt(n=>{const u=new Set(n);return u.add(o),u})}function yt(){X||F&&(X=!0,M("browser-host-overridden",e=>{e.payload.host&&ue(e.payload.host)}).catch(e=>{console.error("browser-host-overridden listen failed:",e),X=!1}),L("browser_get_overridden_hosts").then(e=>{if(Array.isArray(e))for(const o of e)ue(o)}).catch(e=>{console.error("browser_get_overridden_hosts failed:",e)}))}function gt(e){return yt(),ee.add(e),()=>{ee.delete(e)}}function de(){return G}function xt(){const e=r.useSyncExternalStore(gt,de,de);return{isOverriddenHost:r.useCallback(n=>{if(!n)return!1;let u;try{u=new URL(n).hostname.toLowerCase()}catch{return!1}return e.has(u)},[e])}}function vt({state:e,onSelect:o}){return!e.isOpen||e.items.length===0?null:a.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:n=>{n.preventDefault()},children:a.jsx("ul",{className:"max-h-80 overflow-y-auto py-1",children:e.items.map((n,u)=>{const d=u===e.selectedIndex;return a.jsx("li",{children:a.jsxs("button",{type:"button",onMouseDown:c=>{c.preventDefault(),o(n.url),e.close()},onMouseEnter:()=>e.setSelectedIndex(u),className:`flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors ${d?"bg-accent text-foreground":"text-foreground hover:bg-accent/60"}`,children:[n.faviconUrl?a.jsx("img",{src:n.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:c=>{c.currentTarget.style.display="none"}}):a.jsx(ae,{className:"size-4 shrink-0 text-muted-foreground"}),a.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[n.title?a.jsx("span",{className:"truncate font-medium leading-tight",children:n.title}):null,a.jsx("span",{className:`truncate text-xs leading-tight ${n.title?"text-muted-foreground":"text-foreground"}`,children:n.url})]})]})},n.id)})})})}function jt({find:e}){return e.isOpen?a.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 Ct=150,Nt=200;function _t(e){const o=new Map,n=[];for(const u of e){const d=te(u.lastVisitedAt);let c=o.get(d);c||(c={label:St(d),entries:[]},o.set(d,c),n.push(d)),c.entries.push(u)}return n.map(u=>o.get(u))}function te(e){const o=new Date(e),n=o.getFullYear(),u=String(o.getMonth()+1).padStart(2,"0"),d=String(o.getDate()).padStart(2,"0");return`${n}-${u}-${d}`}function St(e){const o=new Date,n=te(o.getTime()),u=new Date(o.getFullYear(),o.getMonth(),o.getDate()-1),d=te(u.getTime());if(e===n)return"Today";if(e===d)return"Yesterday";const[c,w,g]=e.split("-").map(Number),h=new Date(c,w-1,g);return Math.floor((Date.now()-h.getTime())/(1440*60*1e3))<=7?h.toLocaleDateString(void 0,{weekday:"long",month:"short",day:"numeric"}):h.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function kt(e){return new Date(e).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function Dt({workspaceId:e,onNavigate:o}){const n=r.useId(),[u,d]=r.useState(!1),[c,w]=r.useState(""),[g,h]=r.useState([]),[C,_]=r.useState(!1),[k,I]=r.useState(0),y=r.useCallback(()=>{I(v=>v+1)},[]);r.useEffect(()=>{if(!u)return;let v=!1;_(!0);const N=c.trim(),t=setTimeout(()=>{(N?B.history.search.query({workspaceId:e,query:N,limit:50}):B.history.list.query({workspaceId:e,limit:Nt})).then(p=>{v||h(p.entries)}).catch(()=>{v||h([])}).finally(()=>{v||_(!1)})},N?Ct:0);return()=>{v=!0,clearTimeout(t)}},[u,c,e,k]);const D=r.useMemo(()=>_t(g),[g]),T=r.useCallback(v=>{o(v),d(!1)},[o]),j=r.useCallback(async v=>{await B.history.delete.mutate({id:v,workspaceId:e}).catch(()=>{}),y()},[y,e]),E=r.useCallback(async v=>{await B.history.clear.mutate({workspaceId:e,range:v}).catch(()=>{}),y()},[y,e]);return a.jsxs(Ee,{open:u,onOpenChange:d,children:[a.jsx(Ie,{asChild:!0,children:a.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:a.jsx(it,{className:"size-4"})})}),a.jsxs(Fe,{align:"end",sideOffset:6,className:"w-[440px] p-0",onOpenAutoFocus:v=>{v.preventDefault();const N=document.getElementById(n);N&&N.focus()},children:[a.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[a.jsx(Be,{className:"size-4 shrink-0 text-muted-foreground"}),a.jsx("input",{id:n,type:"text",value:c,onChange:v=>w(v.target.value),placeholder:"Search history",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"})]}),a.jsx("div",{className:"max-h-[420px] overflow-y-auto",children:C&&g.length===0?a.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Loading…"}):D.length===0?a.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:c?"No matching history":"No history yet"}):D.map(v=>a.jsxs("div",{children:[a.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:v.label}),a.jsx("ul",{children:v.entries.map(N=>a.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:[N.faviconUrl?a.jsx("img",{src:N.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:z=>{z.currentTarget.style.display="none"}}):a.jsx(ae,{className:"size-4 shrink-0 text-muted-foreground"}),a.jsxs("button",{type:"button",onClick:()=>T(N.url),className:"flex min-w-0 flex-1 flex-col items-stretch gap-0.5 overflow-hidden pr-6 text-left",children:[a.jsx("span",{className:"block truncate text-sm font-medium leading-tight text-foreground",children:N.title||N.url}),a.jsxs("span",{className:"flex min-w-0 items-baseline gap-2 leading-tight",children:[a.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:N.url}),a.jsx("span",{className:"shrink-0 text-[11px] text-muted-foreground tabular-nums",children:kt(N.lastVisitedAt)})]})]}),a.jsx("button",{type:"button",onClick:()=>j(N.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:a.jsx(qe,{className:"size-3.5"})})]},N.id))})]},v.label))}),a.jsx("div",{className:"flex items-center justify-end border-t border-border px-3 py-2",children:a.jsxs(Ue,{children:[a.jsx(Le,{asChild:!0,children:a.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 ",a.jsx(Me,{className:"size-3"})]})}),a.jsxs(ze,{align:"end",children:[a.jsx(V,{onSelect:()=>E("hour"),children:"Last hour"}),a.jsx(V,{onSelect:()=>E("day"),children:"Last 24 hours"}),a.jsx(V,{onSelect:()=>E("week"),children:"Last week"}),a.jsx(V,{onSelect:()=>E("all"),children:"All time"})]})]})})]})]})}function Rt(){return a.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:[a.jsx(Oe,{className:"size-3","aria-hidden":!0}),"Not secure"]})}const fe="",$="about:blank",re=new Map,ne=new Set;function Pt(e,o){if(re.get(e)!==o){re.set(e,o);for(const n of ne)n()}}function Tt(e){return ne.add(e),()=>{ne.delete(e)}}function At(e){return r.useSyncExternalStore(Tt,()=>re.get(e))}function Et({params:e,api:o}){const{browserId:n,initialUrl:u,workspaceId:d}=e,[c,w]=r.useState(()=>u??fe),[g,h]=r.useState(()=>u??fe),[C,_]=r.useState(!1),[k,I]=r.useState(!1),y=r.useRef(!1),D=r.useRef(null),T=r.useRef(!1),j=r.useRef(null),E=r.useRef(n);E.current=n;const v=r.useRef(c);v.current=c;const[N,z]=r.useState(d??""),S=r.useRef(N);S.current=N;const t=r.useRef({browserId:n});t.current={browserId:n};const{snapshot:i}=mt({created:k,visible:o.isVisible&&e.wsActive!==!1,ipcKeyRef:t}),{isOverriddenHost:p}=xt(),l=r.useCallback(()=>{const x=D.current;if(!x)return null;const b=x.getBoundingClientRect();return{x:b.left+1,y:b.top,width:Math.max(0,b.width-2),height:b.height}},[]),s=r.useCallback(async(x,b)=>{if(F)return L(x,b)},[]);r.useEffect(()=>{if(!n||u)return;let x=!1;return B.browsers.get.query({browserId:n}).then(b=>{if(x)return;const m=b.browser?.workspaceId;m&&!S.current&&z(m);const P=b.browser?.url;!P||P===""||P===$||(w(P),h(P),y.current?s("browser_navigate",{browserId:n,url:P}).catch(()=>{}):j.current=P)}).catch(()=>{}),()=>{x=!0}},[n,u,s]),r.useEffect(()=>{if(!F||k||T.current)return;const x=D.current;if(!x)return;let b=!1;const m=async()=>{if(b||y.current||T.current)return;const K=l();if(!(!K||K.width===0||K.height===0)){P.disconnect(),T.current=!0;try{await s("browser_create",{browserId:n,...K,url:v.current||$}),y.current=!0,I(!0);const H=j.current;H&&(j.current=null,await s("browser_navigate",{browserId:E.current,url:H}))}catch(H){console.error("Failed to create browser webview:",H)}finally{T.current=!1}}},P=new ResizeObserver(()=>{m()});P.observe(x);const U=setTimeout(m,50);return()=>{b=!0,clearTimeout(U),P.disconnect()}},[k,l,s,n]);const f=r.useRef(null);r.useEffect(()=>{if(!F)return;let x,b;return(async()=>(x=await M("browser-url-changed",m=>{if(m.payload.browser_id!==E.current)return;const P=m.payload.url;if(_(m.payload.loading),P===$)return;w(P),ve.current||h(P),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{B.browsers.navigate.mutate({browserId:E.current,url:P}).catch(()=>{})},500);let U;try{U=`${new URL(P).origin}/favicon.ico`,Pt(E.current,U)}catch{}!m.payload.loading&&S.current&&B.history.record.mutate({workspaceId:S.current,url:P,faviconUrl:U}).catch(()=>{})}),b=await M("browser-title-changed",m=>{if(m.payload.browser_id===E.current&&m.payload.title){o.setTitle(m.payload.title);const P=v.current;P&&P!==$&&S.current&&B.history.updateMeta.mutate({workspaceId:S.current,url:P,title:m.payload.title}).catch(()=>{})}})))(),()=>{if(x?.(),b?.(),f.current){clearTimeout(f.current),f.current=null;const m=v.current;m&&m!==$&&B.browsers.navigate.mutate({browserId:E.current,url:m}).catch(()=>{})}}},[o]),r.useEffect(()=>{if(!F||!k)return;const x=U=>K=>console.error(`[BrowserPane] ${U} failed`,K),b=()=>{const U=l();U&&U.width>0&&U.height>0&&s("browser_set_bounds",{browserId:n,...U}).catch(x("browser_set_bounds")),s("browser_show",{browserId:n}).catch(x("browser_show"))},m=()=>{s("browser_hide",{browserId:n}).catch(x("browser_hide"))},P=o.onDidVisibilityChange(U=>{U.isVisible?b():m()});return()=>{P.dispose()}},[o,k,l,s,n]),r.useEffect(()=>{if(!F||!k)return;const x=e.wsActive!==!1,b=m=>P=>console.error(`[BrowserPane] ${m} failed`,P);if(!x)s("browser_hide",{browserId:n}).catch(b("browser_hide"));else if(o.isVisible){const m=l();m&&m.width>0&&m.height>0&&s("browser_set_bounds",{browserId:n,...m}).catch(b("browser_set_bounds")),s("browser_show",{browserId:n}).catch(b("browser_show"))}},[e.wsActive,o,k,l,s,n]),r.useEffect(()=>{if(!F||!k)return;const x=D.current;if(!x)return;const b=new ResizeObserver(()=>{const m=l();!m||m.width===0||m.height===0||s("browser_set_bounds",{browserId:n,...m}).catch(()=>{})});return b.observe(x),()=>b.disconnect()},[k,l,s,n]),r.useEffect(()=>()=>{if(F){const x=E.current;L("browser_destroy",{browserId:x}).catch(()=>{})}},[]);const A=r.useCallback(async x=>{let b=x.trim();if(!b){if(w(""),h(""),_(!1),y.current)try{await s("browser_navigate",{browserId:n,url:$})}catch(m){console.error("browser_navigate failed:",m)}else j.current=$;return}if(!b.startsWith("http://")&&!b.startsWith("https://")&&(b.includes(".")&&!b.includes(" ")?b=`https://${b}`:b=`https://www.google.com/search?q=${encodeURIComponent(b)}`),w(b),h(b),_(!0),y.current)try{await s("browser_navigate",{browserId:n,url:b})}catch(m){console.error("browser_navigate failed:",m)}else j.current=b},[s,n]),R=r.useCallback(async()=>{try{await s("browser_go_back",{browserId:n})}catch(x){console.error("browser_go_back failed:",x)}},[s,n]),q=r.useCallback(async()=>{try{await s("browser_go_forward",{browserId:n})}catch(x){console.error("browser_go_forward failed:",x)}},[s,n]),O=r.useCallback(async()=>{try{_(!0),await s("browser_reload",{browserId:n})}catch(x){console.error("browser_reload failed:",x)}},[s,n]),J=r.useCallback(async()=>{try{await s("browser_eval",{browserId:n,js:"window.stop()"}),_(!1)}catch{_(!1)}},[s,n]),{find:xe,addressInputFocusedRef:ve,handleAddressFocus:je,handleAddressBlur:Ce,handleAddressKeyDown:Ne,handlePaneKeyDown:_e,handleToggleDevTools:Se,autocomplete:ke,paneDataAttrs:De}=bt({key:n,keyName:"browserId",workspaceId:N,currentUrlRef:v,setInputUrl:h,inputUrl:g,onNavigate:A});return n?F?a.jsxs("div",{className:"flex h-full w-full flex-col",onKeyDown:_e,...De,children:[a.jsx("style",{children:`@keyframes browser-bar-slide {
|
|
2
|
-
0% { transform: translateX(-100%); }
|
|
3
|
-
50% { transform: translateX(200%); }
|
|
4
|
-
100% { transform: translateX(-100%); }
|
|
5
|
-
}`}),a.jsxs("div",{className:"relative flex h-10 shrink-0 items-center gap-1 border-b border-border bg-background px-2",children:[a.jsx("button",{type:"button",onClick:R,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Back",children:a.jsx(Ke,{className:"size-4"})}),a.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:a.jsx($e,{className:"size-4"})}),C?a.jsx("button",{type:"button",onClick:J,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Stop",children:a.jsx(be,{className:"size-4"})}):a.jsx("button",{type:"button",onClick:O,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Reload",children:a.jsx(Ge,{className:"size-4"})}),p(c)?a.jsx(Rt,{}):null,a.jsx("input",{type:"text",value:g,onChange:x=>h(x.target.value),onKeyDown:Ne,onFocus:je,onBlur:Ce,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":""}),N?a.jsx(Dt,{workspaceId:N,onNavigate:A}):null,a.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:a.jsx(lt,{className:"size-4"})}),C&&a.jsx("div",{className:"absolute inset-x-0 bottom-0 h-0.5 overflow-hidden bg-blue-500/10",children:a.jsx("div",{className:"h-full w-2/5 rounded-full bg-blue-500",style:{animation:"browser-bar-slide 1.4s ease-in-out infinite"}})}),a.jsx(vt,{state:ke,onSelect:A})]}),a.jsx(jt,{find:xe}),a.jsx("div",{ref:D,className:"relative min-h-0 flex-1",children:i?a.jsx("img",{src:i,alt:"",className:"pointer-events-none absolute inset-0 size-full object-contain object-top",draggable:!1}):null})]}):a.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 we=new Set;function pe(e){we.add(e)}function Kt(e){return we.delete(e)}function It(){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 o=Array.from(e,n=>n.toString(16).padStart(2,"0")).join("");return`${o.slice(0,8)}-${o.slice(8,12)}-${o.slice(12,16)}-${o.slice(16,20)}-${o.slice(20)}`}function se(){return`browser_${It()}`}function oe(e){return["browserLayout",e]}const Y=new Map;function Ft(e){if(typeof e=="object"&&e!==null){const o=e.panels;if(typeof o=="object"&&o!==null)return new Set(Object.keys(o))}return new Set}function Z(e,o,n){if(n?.queryClient){const d=n.queryClient.getQueryData(oe(e));n.queryClient.setQueryData(oe(e),{layout:o,browserIds:Ft(o),urls:d?.urls??new Map})}const u=Y.get(e);u&&clearTimeout(u),Y.set(e,setTimeout(()=>{Y.delete(e),B.browserLayout.save.mutate({workspaceId:e,tree:o}).catch(d=>{console.error("[DockviewBrowserContainer] failed to persist layout:",d)})},500))}function Bt(e){if(typeof e!="object"||e===null)return!1;const o=e;return typeof o.grid=="object"&&typeof o.panels=="object"}const qt={name:"band",className:"dockview-theme-band dockview-browser-tabs"};function Ut({params:e,api:o}){const{visible:n}=ot();if(!e.workspaceId||!e.browserId)return null;const u={workspaceId:e.workspaceId,browserId:e.browserId,wsActive:n,initialUrl:e.initialUrl};return a.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden","data-testid":`dockview-browser-tab__visible-${n?"true":"false"}`,children:a.jsx(Et,{params:u,api:o})})}function ye(e){const[o,n]=r.useState(e.api.title??"New Tab"),[u,d]=r.useState(e.containerApi.panels.length),[c,w]=r.useState(!1),g=e.params.browserId,h=At(g),C=r.useRef(h);h!==C.current&&(C.current=h,c&&w(!1)),r.useEffect(()=>{const y=e.api.onDidTitleChange(()=>n(e.api.title??"New Tab"));return()=>y.dispose()},[e.api]),r.useEffect(()=>{const y=e.containerApi,D=()=>d(y.panels.length),T=y.onDidAddPanel(D),j=y.onDidRemovePanel(D);return()=>{T.dispose(),j.dispose()}},[e.containerApi]);const _=r.useCallback(y=>{y.stopPropagation(),ge.current?.(g)},[g]),k=u>1,I=h&&!c;return a.jsxs("div",{className:"dv-default-tab",children:[a.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[I?a.jsx("img",{src:h,alt:"",className:"size-3.5 shrink-0",onError:()=>w(!0)}):a.jsx(ae,{className:"size-3.5 shrink-0 text-muted-foreground"}),a.jsx("span",{className:"truncate",children:o})]}),k&&a.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:_,title:"Close tab",children:a.jsx(be,{className:"size-3"})})]})}const W={current:{onAdd:()=>{},onSplit:()=>{}}},ge={current:null},Lt=tt.memo(function(o){const n=(o.location?.type??"grid")==="grid",u=o.group.id;return a.jsxs("div",{className:"flex h-full w-full items-center justify-center",children:[n&&a.jsxs(a.Fragment,{children:[a.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:()=>W.current.onSplit(u,"right"),title:"Split right",children:a.jsx(rt,{className:"size-3.5"})}),a.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:()=>W.current.onSplit(u,"below"),title:"Split down",children:a.jsx(nt,{className:"size-3.5"})})]}),a.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:()=>W.current.onAdd(u),title:"New browser tab",children:a.jsx(st,{className:"size-4"})})]})}),Mt={browserTab:Ut},zt={browserTab:ye};function $t({workspaceId:e,visible:o,wsActive:n}){const u=He(),d=Ve(),c=r.useRef(null),w=r.useRef(!1),g=r.useRef(null),h=r.useRef(null),C=r.useRef(null),{data:_}=Qe({queryKey:oe(e),queryFn:async()=>{const[{tree:t},{browsers:i}]=await Promise.all([B.browserLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),B.browsers.list.query({workspaceId:e}).catch(()=>({browsers:[]}))]),p=new Map;for(const l of i)l.url&&l.url!=="about:blank"&&p.set(l.id,l.url);return{layout:t,browserIds:new Set(i.map(l=>l.id)),urls:p}},staleTime:Number.POSITIVE_INFINITY}),k=r.useRef(d);k.current=d;const I=r.useCallback(()=>{if(w.current)return;const t=c.current;t&&Z(e,t.toJSON(),{queryClient:k.current})},[e]),y=r.useCallback(async(t,i)=>{const p=c.current;if(!p)return;const l=se();pe(l);const s=i?.initialUrl,f={id:l,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:l,...s?{initialUrl:s}:{}}};t&&(f.position={referenceGroup:t}),p.addPanel(f);try{await B.browsers.create.mutate({workspaceId:e,id:l,...s?{url:s}:{}})}catch(A){console.error("[DockviewBrowserContainer] error pre-creating browser:",A)}},[e]),D=r.useCallback(async(t,i)=>{const p=c.current;if(!p)return;const l=se();pe(l);try{p.addPanel({id:l,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:l},position:{referenceGroup:t,direction:i}})}catch(s){console.error("[DockviewBrowserContainer] split addPanel threw:",s);return}try{await B.browsers.create.mutate({workspaceId:e,id:l})}catch(s){console.error("[DockviewBrowserContainer] error creating split browser:",s)}},[e]),T=r.useCallback(t=>{const i=c.current;if(!i||i.panels.length<=1)return;We(i,t);const p=i.getPanel(t);p&&i.removePanel(p),requestAnimationFrame(()=>{const l=i.activePanel;l&&l.view.content.element.querySelector("[data-band-address-input]")?.focus()}),B.browsers.remove.mutate({browserId:t}).catch(l=>{console.error("[DockviewBrowserContainer] failed to remove browser:",l)})},[]);r.useEffect(()=>{if(!o)return;const t=()=>{const s=c.current?.activePanel;s&&s.view.content.element.querySelector("[data-band-address-input]")?.focus()},i=s=>{ie(c.current,s,()=>{requestAnimationFrame(t)})},p=s=>{ce(c.current,s,()=>{requestAnimationFrame(t)})},l=s=>{if(!g.current?.contains(document.activeElement))return;const f=s.key.toLowerCase();if(s.ctrlKey&&!s.metaKey&&f==="tab"){s.preventDefault(),s.stopPropagation(),i(s.shiftKey?-1:1);return}if(s.metaKey||s.ctrlKey){if(s.shiftKey&&(f==="["||f==="]")){s.preventDefault(),s.stopPropagation(),i(f==="]"?1:-1);return}if(!s.shiftKey&&(f==="["||f==="]")){s.preventDefault(),s.stopPropagation(),p(f==="]"?1:-1);return}if(f==="t"&&!s.shiftKey)s.preventDefault(),s.stopPropagation(),y().then(()=>{requestAnimationFrame(()=>{const R=c.current?.activePanel;R&&R.view.content.element.querySelector("[data-band-address-input]")?.focus()})});else if(f==="w"&&!s.shiftKey){const R=c.current;if(!R||R.panels.length<=1)return;s.preventDefault(),s.stopPropagation();const q=R.activePanel;q&&T(q.id)}else if(f==="d"){s.preventDefault(),s.stopPropagation();const R=c.current;if(!R)return;const q=R.activeGroup;if(!q)return;const O=s.shiftKey?"below":"right";D(q.id,O)}else if(f==="r"&&!s.shiftKey&&F){const R=c.current;if(!R)return;const O=R.activePanel?.params?.browserId;if(!O)return;s.preventDefault(),s.stopPropagation(),L("browser_reload",{browserId:O}).catch(J=>{console.error("[DockviewBrowserContainer] browser_reload failed:",J)})}}};return window.addEventListener("keydown",l,!0),()=>window.removeEventListener("keydown",l,!0)},[o,T,D,y]),r.useLayoutEffect(()=>{if(!o)return;const t=c.current,i=g.current;if(!t||!i)return;const p=i.getBoundingClientRect();if(p.width>0&&p.height>0){t.layout(Math.round(p.width),Math.round(p.height),!0);return}const l=new ResizeObserver(s=>{const f=s[0];if(!f)return;const{width:A,height:R}=f.contentRect;A<=0||R<=0||(l.disconnect(),t.layout(Math.round(A),Math.round(R),!0))});return l.observe(i),()=>l.disconnect()},[o]),r.useEffect(()=>{if(!o)return;const t=requestAnimationFrame(()=>{const i=c.current?.activePanel;i&&i.view.content.element.querySelector("[data-band-address-input]")?.focus()});return()=>cancelAnimationFrame(t)},[o]),r.useEffect(()=>{if(!F)return;let t;return(async()=>t=await M("browser-new-tab-shortcut",i=>{const p=c.current;if(!p)return;const l=i.payload.browser_id;!l||!p.getPanel(l)||y().then(()=>{requestAnimationFrame(()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})})}))(),()=>t?.()},[y]),r.useEffect(()=>{if(!F)return;let t,i=!1;return(async()=>{const p=await M("browser-open-window",l=>{const s=c.current;if(!s)return;const f=l.payload.browser_id,A=f?s.getPanel(f):void 0;if(!A)return;const R=A.group?.id,q=l.payload.url;q&&y(R,{initialUrl:q}).then(()=>{requestAnimationFrame(()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})}).catch(O=>{console.error("[DockviewBrowserContainer] browser-open-window add-tab failed:",O)})});i?p():t=p})(),()=>{i=!0,t?.()}},[y]),r.useEffect(()=>{if(!F)return;const t=[];let i=!1;const p=()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()};return(async()=>{const l=await Promise.all([M("browser-split-shortcut",s=>{const f=c.current;if(!f)return;const A=f.getPanel(s.payload.browser_id);A?.group&&D(A.group.id,s.payload.direction)}),M("browser-close-shortcut",s=>{const f=c.current;if(!f)return;const A=s.payload.browser_id;f.getPanel(A)&&T(A)}),M("browser-cycle-shortcut",s=>{const f=c.current;if(!f)return;const A=f.getPanel(s.payload.browser_id);if(!A)return;A.api.setActive();const R=()=>requestAnimationFrame(p);s.payload.target==="tabs"?ie(c.current,s.payload.direction,R):ce(c.current,s.payload.direction,R)})]);if(i)for(const s of l)s();else t.push(...l)})(),()=>{i=!0;for(const l of t)l()}},[D,T]),r.useEffect(()=>{const t=()=>{const i=g.current;if(!i||i.offsetParent===null)return;const p=i.querySelectorAll("[data-band-address-input]");for(const l of p)if(l.offsetParent!==null){l.focus({preventScroll:!0});return}};return window.addEventListener("band:focus-browser",t),()=>window.removeEventListener("band:focus-browser",t)},[]),r.useEffect(()=>u.subscribeStatusEvents(t=>{if(t.workspaceId!==e)return;const i=c.current;if(i){if(t.kind==="browser-created"&&typeof t.browserId=="string"){if(i.getPanel(t.browserId))return;i.addPanel({id:t.browserId,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:t.browserId},position:me(i)})}else if(t.kind==="browser-removed"&&typeof t.browserId=="string"){const p=i.getPanel(t.browserId);p&&(i.removePanel(p),i.panels.length===0&&Q(i,e))}}}),[u,e]),W.current={onAdd:y,onSplit:D},ge.current=T,r.useEffect(()=>()=>{h.current?.(),h.current=null,C.current?.(),C.current=null},[]);const j=r.useRef(null);j.current=_?.layout??null;const E=r.useRef(null);E.current=_?.browserIds??null;const v=r.useRef(null);v.current=_?.urls??null;const N=r.useRef(o);N.current=o;const z=r.useCallback(t=>{c.current=t.api;const i=j.current,p=E.current,l=v.current;if(i&&Bt(i)){w.current=!0;const f=ut(i,l);try{t.api.fromJSON(f)}catch(R){console.error("[DockviewBrowserContainer] fromJSON failed, creating default:",R),Q(t.api,e)}let A=0;if(p){const R=t.api.panels.filter(q=>!p.has(q.id));for(const q of R)t.api.removePanel(q),A++;t.api.panels.length===0&&(Q(t.api,e),A++)}setTimeout(()=>{w.current=!1},0),A>0&&Z(e,t.api.toJSON(),{queryClient:k.current})}else Q(t.api,e),Z(e,t.api.toJSON(),{queryClient:k.current});Je(t.api),h.current?.(),h.current=Xe(t.api),C.current?.(),g.current&&(C.current=Ye(g.current,t.api));const s=()=>I();if(t.api.onDidLayoutChange(s),t.api.onDidAddPanel(s),t.api.onDidRemovePanel(s),t.api.onDidActivePanelChange(s),t.api.onDidAddGroup(s),t.api.onDidRemoveGroup(s),N.current&&g.current){const f=g.current.getBoundingClientRect();f.width>0&&f.height>0&&t.api.layout(Math.round(f.width),Math.round(f.height),!0)}},[e,I]),S=r.useMemo(()=>({visible:o&&n!==!1,wsActive:n!==!1}),[o,n]);return _?a.jsx("div",{ref:g,className:"flex h-full w-full flex-col overflow-hidden",children:a.jsx(Ze.Provider,{value:S,children:a.jsx(et,{theme:qt,className:"h-full",components:Mt,tabComponents:zt,defaultTabComponent:ye,onReady:z,rightHeaderActionsComponent:Lt})})}):a.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function Q(e,o){const n=se();B.browsers.create.mutate({workspaceId:o,id:n}).catch(u=>{console.error("[DockviewBrowserContainer] error creating default browser:",u)}),e.addPanel({id:n,component:"browserTab",tabComponent:"browserTab",title:"Browser",params:{workspaceId:o,browserId:n},position:me(e)})}export{$t as DockviewBrowserContainer,Kt as consumeBrowserFresh,pe as markBrowserFresh,se as newBrowserId};
|
|
@@ -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{m as re,r as c,b_ as Fe,cg as Ke,ch as Xe,ci as Ge,j as s,X as _t,cj as At,c6 as kt,_ as z,ck as Nt,cl as Ot,cm as Mt,cn as Pt,co as Dt}from"./main-axhmccT5.js";const jt=[["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"}]],It=re("clipboard-copy",jt);const Bt=[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]],zt=re("corner-down-left",Bt);const Wt=[["path",{d:"M22 2 2 22",key:"y4kqgn"}]],Ht=re("slash",Wt);const qt=[["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"}]],Ft=re("text-cursor-input",qt),Kt=49,Ye="(hover: none) and (pointer: coarse)";function $e(){const[t,n]=c.useState(()=>typeof window>"u"?!1:window.matchMedia(Ye).matches),[a,i]=c.useState(0);return c.useEffect(()=>{if(typeof window>"u")return;const l=window.matchMedia(Ye),m=h=>n(h.matches);return n(l.matches),l.addEventListener("change",m),()=>l.removeEventListener("change",m)},[]),c.useEffect(()=>{if(typeof window>"u")return;if(!t){i(0);return}const l=window.visualViewport;if(!l)return;const m=()=>{const h=Math.max(0,window.innerHeight-(l.offsetTop+l.height));i(h)};return m(),l.addEventListener("resize",m),l.addEventListener("scroll",m),window.addEventListener("resize",m),()=>{l.removeEventListener("resize",m),l.removeEventListener("scroll",m),window.removeEventListener("resize",m)}},[t]),{enabled:t,bottomOffset:a,contentBottomInset:t?Kt:0}}const ve=/[A-Za-z0-9_./:\-+@~]/;function Xt(t,n,a,i){const l=i.getBoundingClientRect();if(l.width<=0||l.height<=0||a.cols<=0||a.rows<=0)return{col:0,row:a.buffer.active.viewportY};const m=l.width/a.cols,h=l.height/a.rows,v=ye(Math.floor((t-l.left)/m),0,a.cols-1),E=ye(Math.floor((n-l.top)/h),0,a.rows-1);return{col:v,row:a.buffer.active.viewportY+E}}function Gt(t,n){if(n<0||n>=t.length||!ve.test(t[n])){const l=ye(n,0,Math.max(0,t.length));return{start:l,end:l+1}}let a=n;for(;a>0&&ve.test(t[a-1]);)a--;let i=n+1;for(;i<t.length&&ve.test(t[i]);)i++;return{start:a,end:i}}function Yt(t,n){return t.buffer.active.getLine(n)?.translateToString(!1)??""}function Qt(t,n,a){const i=a.cols,l=Math.max(0,a.buffer.active.length-1);switch(n){case"left":return t.col>0?{col:t.col-1,row:t.row}:t.row>0?{col:i-1,row:t.row-1}:t;case"right":return t.col<i-1?{col:t.col+1,row:t.row}:t.row<l?{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<l?{col:t.col,row:t.row+1}:t}}function ne(t,n,a){const i=t.cols;if(i<=0)return;const l=n.row*i+n.col,m=a.row*i+a.col,h=Math.min(l,m),E=Math.max(l,m)-h+1,g=Math.floor(h/i),S=h-g*i;t.select(S,g,E)}function Ut(t,n){const{start:a,end:i}=Gt(n,t.col);return{anchor:{col:a,row:t.row},head:{col:Math.max(a,i-1),row:t.row}}}function ye(t,n,a){return t<n?n:t>a?a:t}async function Vt(t){if(typeof navigator<"u"&&navigator.clipboard?.writeText)try{return await navigator.clipboard.writeText(t),!0}catch{}return $t(t)}function $t(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 a=document.activeElement;try{return n.focus(),n.select(),n.setSelectionRange(0,t.length),document.execCommand("copy")}catch{return!1}finally{document.body.removeChild(n),a?.focus?.()}}async function Zt(){if(typeof navigator>"u"||!navigator.clipboard?.readText)return"";try{return await navigator.clipboard.readText()}catch{return""}}const Jt="\x1B",en=" ",tn="\r",nn="/",rn="\x1B[A",on="\x1B[B",sn="\x1B[C",cn="\x1B[D",R=t=>n=>{n.preventDefault(),t()};function an({terminal:t,sendInput:n,pendingCtrl:a,onToggleCtrl:i,selectionMode:l,onExtendSelection:m,onExitSelection:h,onSelectAll:v}){const{enabled:E,bottomOffset:g}=$e(),S=c.useCallback(async()=>{if(!t.hasSelection())return;const b=t.getSelection();if(!b)return;await Vt(b)||console.warn("[TerminalToolbar] clipboard write failed")},[t]),x=c.useCallback(async()=>{await S(),h()},[S,h]),W=c.useCallback(async()=>{const b=await Zt();b&&n(b)},[n]),oe=c.useMemo(()=>[{label:"Esc",seq:Jt,ariaLabel:"Send Escape"},{label:"Tab",seq:en,ariaLabel:"Send Tab"}],[]),Q=c.useMemo(()=>[{Icon:Fe,seq:cn,ariaLabel:"Arrow Left"},{Icon:Ke,seq:rn,ariaLabel:"Arrow Up"},{Icon:Xe,seq:on,ariaLabel:"Arrow Down"},{Icon:Ge,seq:sn,ariaLabel:"Arrow Right"}],[]),U=c.useMemo(()=>[{Icon:Fe,dir:"left",ariaLabel:"Extend selection left"},{Icon:Ke,dir:"up",ariaLabel:"Extend selection up"},{Icon:Xe,dir:"down",ariaLabel:"Extend selection down"},{Icon:Ge,dir:"right",ariaLabel:"Extend selection right"}],[]);return E?s.jsx("div",{"data-testid":"terminal-toolbar","data-mode":l?"selection":"idle",role:"toolbar","aria-label":l?"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:s.jsxs("div",{className:"flex w-full max-w-3xl items-center gap-1 px-2 py-1.5",children:[s.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",children:l?s.jsxs(s.Fragment,{children:[s.jsxs(C,{ariaLabel:"Copy selection and exit",title:"Copy",onPointerDown:R(x),variant:"primary",children:[s.jsx(It,{className:"size-4"}),s.jsx("span",{className:"text-xs",children:"Copy"})]}),s.jsxs(C,{ariaLabel:"Exit selection mode",title:"Done",onPointerDown:R(h),children:[s.jsx(_t,{className:"size-4"}),s.jsx("span",{className:"text-xs",children:"Done"})]}),s.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),s.jsx("span",{className:"mr-1 shrink-0 select-none text-xs font-medium uppercase tracking-wide text-muted-foreground","aria-hidden":"true",children:"Extend"}),U.map(({Icon:b,dir:L,ariaLabel:p})=>s.jsx(C,{ariaLabel:p,title:p,onPointerDown:R(()=>m(L)),children:s.jsx(b,{className:"size-4"})},L))]}):s.jsxs(s.Fragment,{children:[s.jsxs(C,{ariaLabel:"Paste from clipboard",title:"Paste",onPointerDown:R(W),children:[s.jsx(At,{className:"size-4"}),s.jsx("span",{className:"text-xs",children:"Paste"})]}),s.jsxs(C,{ariaLabel:"Select all",title:"Select all",onPointerDown:R(v),children:[s.jsx(Ft,{className:"size-4"}),s.jsx("span",{className:"text-xs",children:"All"})]}),s.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),oe.map(({label:b,seq:L,ariaLabel:p})=>s.jsx(C,{ariaLabel:p,title:b,onPointerDown:R(()=>n(L)),children:s.jsx("span",{className:"text-xs font-medium",children:b})},b)),s.jsx(C,{ariaLabel:"Send slash",title:"Slash command",onPointerDown:R(()=>n(nn)),children:s.jsx(Ht,{className:"size-4"})}),s.jsx(C,{ariaLabel:a?"Cancel pending Ctrl":"Arm Ctrl modifier",title:"Ctrl (sticky — taps the next key as Ctrl+key)",onPointerDown:R(i),active:a,children:s.jsx("span",{className:"text-xs font-medium",children:"Ctrl"})}),s.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),Q.map(({Icon:b,seq:L,ariaLabel:p})=>s.jsx(C,{ariaLabel:p,title:p,onPointerDown:R(()=>n(L)),children:s.jsx(b,{className:"size-4"})},p))]})}),s.jsx("div",{className:"h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),s.jsx(C,{ariaLabel:"Send Enter",title:"Enter",onPointerDown:R(()=>n(tn)),variant:"primary",children:s.jsx(zt,{className:"size-4"})})]})}):null}function C({ariaLabel:t,title:n,onPointerDown:a,active:i,variant:l="default",disabled:m,children:h}){const v=i?"bg-primary text-primary-foreground":l==="primary"?"bg-primary text-primary-foreground hover:bg-primary/90":"bg-muted/60 hover:bg-muted active:bg-muted";return s.jsx("button",{type:"button","aria-label":t,"aria-pressed":i,title:n,onPointerDown:a,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",v,"disabled:opacity-40"].join(" "),children:h})}const Qe=13,ln=500,Ue=10,un={matchBackground:"#515c6a",activeMatchBackground:"#a9913680",matchOverviewRuler:"#a9913680",activeMatchColorOverviewRuler:"#a99136"},dn={caseSensitive:!1,wholeWord:!1,regex:!1};function be(t){return{caseSensitive:t.caseSensitive,wholeWord:t.wholeWord,regex:t.regex,decorations:un}}const fn={background:"#1e1e1e",foreground:"#e8e8e8",cursor:"#e8e8e8",selectionBackground:"rgba(255, 255, 255, 0.2)"},hn={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 mn(){return document.documentElement.classList.contains("dark")}function Ve(){return mn()?fn:hn}function bn({workspaceId:t,terminalId:n,visible:a,paneMetadata:i,autoFocus:l,onTitleChange:m}){const h=c.useRef(null),v=c.useRef(null),E=c.useRef(null),g=c.useRef(null),S=c.useRef(null),x=c.useRef(null),W=c.useRef(m);W.current=m;const{settings:oe}=kt(),Q=oe.useWebGLTerminalRenderer??!0,U=c.useRef(Q);U.current=Q;const[b,L]=c.useState(!1),[p,xe]=c.useState(""),[A,Ze]=c.useState(dn),[Je,se]=c.useState({total:0,current:0}),ce=c.useRef(null),ge=c.useRef(()=>{}),[et,Ee]=c.useState(!1),M=c.useRef(!1),[tt,V]=c.useState(!1),nt=c.useCallback(()=>{const d=!M.current;M.current=d,V(d)},[]),T=c.useRef(null),_=c.useRef(null),[rt,H]=c.useState(!1),ot=c.useCallback(()=>{T.current=null,_.current=null,H(!1),v.current?.clearSelection()},[]),st=c.useCallback(d=>{const y=v.current,P=T.current,k=_.current;if(!y||!P||!k)return;const $=Qt(k,d,y);_.current=$,ne(y,P,$)},[]),ct=c.useCallback(()=>{const d=v.current;if(!d)return;const y={col:0,row:0},P=Math.max(0,d.buffer.active.length-1),k={col:Math.max(0,d.cols-1),row:P};ne(d,y,k),T.current=y,_.current=k,H(!0),d.blur()},[]);c.useEffect(()=>{if(!h.current)return;let d=!1,y;return Promise.all([z(()=>import("./xterm-iwIWEtGc.js"),[]),z(()=>import("./addon-fit-DX4qG4td.js"),[]),z(()=>import("./addon-web-links-DIbG5aQx.js"),[]),z(()=>import("./addon-search-DCE88ROn.js"),[]),z(()=>import("./addon-webgl-CeRvQWkA.js"),[])]).then(([P,k,$,ft,ht])=>{const{Terminal:mt}=P,{FitAddon:pt}=k,{WebLinksAddon:wt}=$,{SearchAddon:vt}=ft,{WebglAddon:bt}=ht;if(d||!h.current)return;const Se=U.current;z(()=>Promise.resolve({}),__vite__mapDeps([0]));const r=new mt({allowProposedApi:!0,cursorBlink:!0,fontSize:Qe*Nt(),fontFamily:"'SF Mono', Menlo, Monaco, 'Courier New', monospace",lineHeight:Se?1.2:1,macOptionIsMeta:!0,scrollback:1e4,theme:Ve()}),Le=new MutationObserver(()=>{r.options.theme=Ve()});Le.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]});const q=new pt;r.loadAddon(q),r.loadAddon(new wt((e,o)=>Ot(o))),r.open(h.current);let ae;const ie=()=>{try{const e=new bt({customGlyphs:!0});r.loadAddon(e);const u=h.current?.querySelector(".xterm-screen")?.querySelector(":scope > canvas:last-of-type");return u&&(u.style.pointerEvents="none",u.style.touchAction="none"),S.current=e,ae?.dispose(),ae=e.onContextLoss(()=>{console.warn("[TerminalPanel] WebGL context lost, reattaching addon"),e.dispose(),S.current=null,ie()}),!0}catch(e){return console.warn("[TerminalPanel] WebGL renderer unavailable, falling back to DOM",e),!1}};Se&&ie();const le=new vt;r.loadAddon(le);const yt=le.onDidChangeResults(e=>{se({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 u=e.key.toLowerCase().charCodeAt(0);if(u>=97&&u<=122)return r.input(String.fromCharCode(u-96)),M.current=!1,V(!1),e.preventDefault(),!1;M.current=!1,V(!1)}if((e.metaKey||e.ctrlKey)&&!e.shiftKey&&!e.altKey&&e.key.toLowerCase()==="f")return e.preventDefault(),ge.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}),v.current=r,E.current=q,g.current=le,Ee(!0);const f=h.current;let F=null;const Re=e=>{F=e.touches.length===1?e.touches[0].clientY:null},Ce=e=>{if(e.touches.length!==1||F===null)return;const o=e.touches[0].clientY,u=F-o,w=f.querySelector(".xterm-viewport"),O=w&&r.rows>0?w.clientHeight/r.rows:17,Y=Math.trunc(u/O);Y!==0&&(r.scrollLines(Y),F=o+(u-Y*O),e.preventDefault())},Z=()=>{F=null};f.addEventListener("touchstart",Re,{passive:!0}),f.addEventListener("touchmove",Ce,{passive:!1}),f.addEventListener("touchend",Z,{passive:!0}),f.addEventListener("touchcancel",Z,{passive:!0});let K=null,D=null;const N=()=>{K!==null&&(window.clearTimeout(K),K=null),D=null},Te=e=>{if(N(),e.touches.length!==1)return;const o=e.touches[0];D={x:o.clientX,y:o.clientY},K=window.setTimeout(()=>{K=null;const u=D;if(!u)return;const w=f.querySelector(".xterm-screen");if(!w)return;const O=Xt(u.x,u.y,r,w),Y=Yt(r,O.row),{anchor:He,head:qe}=Ut(O,Y);if(ne(r,He,qe),T.current=He,_.current=qe,H(!0),j=null,I=null,r.blur(),typeof navigator.vibrate=="function")try{navigator.vibrate(15)}catch{}},ln)},_e=e=>{if(!D||e.touches.length!==1)return;const o=e.touches[0],u=Math.abs(o.clientX-D.x),w=Math.abs(o.clientY-D.y);(u>Ue||w>Ue)&&N()};f.addEventListener("touchstart",Te,{passive:!0}),f.addEventListener("touchmove",_e,{passive:!0}),f.addEventListener("touchend",N,{passive:!0}),f.addEventListener("touchcancel",N,{passive:!0});let j=null,I=null;const Ae=e=>{e.touches.length===1?(j=e.touches[0].clientX,I=e.touches[0].clientY):(j=null,I=null)},ke=e=>{const o=j,u=I;if(j=null,I=null,o===null||u===null||e.changedTouches.length!==1)return;const w=Math.abs(e.changedTouches[0].clientX-o),O=Math.abs(e.changedTouches[0].clientY-u);w<10&&O<10&&(T.current!==null&&(T.current=null,_.current=null,H(!1),r.clearSelection()),r.focus())},Ne=()=>{j=null,I=null};f.addEventListener("touchstart",Ae,{passive:!0}),f.addEventListener("touchend",ke,{passive:!0}),f.addEventListener("touchcancel",Ne,{passive:!0});const xt=`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/terminal?workspaceId=${encodeURIComponent(t)}&terminalId=${encodeURIComponent(n)}`,gt=1e4,Et=2e4,St=500,Oe=1e4;let X=!1,ue=!1,J=0,B=null,ee=null,de=0;const fe=()=>{B!==null&&(clearTimeout(B),B=null)},he=()=>{ee!==null&&(clearInterval(ee),ee=null)},Me=()=>{const e=x.current;if(!(!e||e.readyState!==WebSocket.OPEN)){if(Date.now()-de>Et){e.close();return}try{e.send(JSON.stringify({type:"ping"}))}catch{e.close()}}},Lt=()=>{if(X||B!==null)return;const e=Math.min(St*2**J,Oe);e<Oe&&(J+=1),B=setTimeout(()=>{B=null,me()},e)};function me(){if(X)return;fe();const e=ue,o=new WebSocket(xt);x.current=o,o.binaryType="arraybuffer",o.onopen=()=>{if(J=0,de=Date.now(),e&&r.reset(),!ue&&i&&(i.command||i.cwd||i.env)){const u={type:"init"};i.command&&(u.command=i.command),i.cwd&&(u.cwd=i.cwd),i.env&&(u.env=i.env),o.send(JSON.stringify(u))}ue=!0,q.fit(),o.send(JSON.stringify({type:"resize",cols:r.cols,rows:r.rows})),l&&!e&&r.focus(),he(),ee=setInterval(Me,gt)},o.onmessage=u=>{if(u.data instanceof ArrayBuffer)r.write(new Uint8Array(u.data));else try{const w=JSON.parse(u.data);w.type==="pong"?de=Date.now():w.type==="title"&&typeof w.title=="string"&&W.current?.(w.title)}catch{r.write(u.data)}},o.onclose=()=>{x.current===o&&(he(),!X&&(r.write(`\r
|
|
4
|
-
\x1B[90m[Reconnecting…]\x1B[0m\r
|
|
5
|
-
`),Lt()))}}const pe=()=>{if(X)return;const e=x.current;!e||e.readyState===WebSocket.CLOSED||e.readyState===WebSocket.CLOSING?(J=0,fe(),me()):e.readyState===WebSocket.OPEN&&Me()},Pe=()=>{document.hidden||pe()};window.addEventListener("online",pe),document.addEventListener("visibilitychange",Pe),me(),r.onData(e=>{const o=x.current;o&&o.readyState===WebSocket.OPEN&&o.send(e)}),r.onTitleChange(e=>{W.current?.(e)});let G=null;const Rt=()=>{G===null&&(!T.current||!_.current||(G=requestAnimationFrame(()=>{G=null;const e=T.current,o=_.current;e&&o&&ne(r,e,o)})))},Ct=r.onResize(Rt);let De=window.devicePixelRatio;const je=()=>{const e=x.current;!e||e.readyState!==WebSocket.OPEN||r.cols<=0||r.rows<=0||e.send(JSON.stringify({type:"resize",cols:r.cols,rows:r.rows}))},Ie=(e={})=>{const{newFontSize:o}=e;if(o!==void 0)r.options.fontSize!==o&&(r.options.fontSize=o);else{const w=r.options.fontSize;typeof w=="number"&&(r.options.fontSize=w+1,r.options.fontSize=w)}const u=S.current;u&&(u.dispose(),S.current=null,ie()),q.fit()},Be=()=>{const e=window.devicePixelRatio;return e===De?!1:(De=e,Ie(),!0)},ze=new ResizeObserver(e=>{const o=e[0];if(!o||o.contentRect.width===0||o.contentRect.height===0)return;Be()||q.fit(),je()});ze.observe(h.current);const Tt=Mt(e=>{const o=Math.round(Qe*e*100)/100;r.options.fontSize!==o&&(Ie({newFontSize:o}),je())});let te;const We=()=>{te=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),te.addEventListener("change",we)},we=()=>{Be(),te?.removeEventListener("change",we),We()};We(),y=()=>{X=!0,fe(),he(),window.removeEventListener("online",pe),document.removeEventListener("visibilitychange",Pe),Le.disconnect(),ze.disconnect(),yt.dispose(),Ct.dispose(),G!==null&&cancelAnimationFrame(G),ae?.dispose(),te?.removeEventListener("change",we),Tt(),N(),f.removeEventListener("touchstart",Re),f.removeEventListener("touchmove",Ce),f.removeEventListener("touchend",Z),f.removeEventListener("touchcancel",Z),f.removeEventListener("touchstart",Te),f.removeEventListener("touchmove",_e),f.removeEventListener("touchend",N),f.removeEventListener("touchcancel",N),f.removeEventListener("touchstart",Ae),f.removeEventListener("touchend",ke),f.removeEventListener("touchcancel",Ne),x.current?.close(),r.dispose(),v.current=null,E.current=null,g.current=null,S.current=null,x.current=null,T.current=null,_.current=null,M.current=!1,H(!1),V(!1),Ee(!1)}}),()=>{d=!0,y?.()}},[n,t,i,l]),c.useEffect(()=>{a&&E.current&&requestAnimationFrame(()=>{E.current?.fit();const d=v.current,y=x.current;d&&y?.readyState===WebSocket.OPEN&&d.cols>0&&d.rows>0&&y.send(JSON.stringify({type:"resize",cols:d.cols,rows:d.rows}))})},[a]),c.useEffect(()=>{const d=()=>{a&&v.current?.focus()};return window.addEventListener("band:focus-terminal",d),()=>window.removeEventListener("band:focus-terminal",d)},[a]);const at=c.useCallback(()=>{L(!0),requestAnimationFrame(()=>{ce.current?.focus(),ce.current?.select()})},[]);ge.current=at;const it=c.useCallback(()=>{g.current?.clearDecorations(),L(!1),xe(""),se({total:0,current:0}),v.current?.focus()},[]),lt=c.useCallback(()=>{p&&g.current?.findNext(p,be(A))},[p,A]),ut=c.useCallback(()=>{p&&g.current?.findPrevious(p,be(A))},[p,A]);c.useEffect(()=>{const d=g.current;if(d){if(!p){d.clearDecorations(),se({total:0,current:0});return}d.findNext(p,be(A))}},[p,A]);const{contentBottomInset:dt}=$e();return s.jsxs("div",{className:"relative flex h-full w-full flex-col",children:[b&&s.jsx(Pt,{ref:ce,query:p,onQueryChange:xe,options:A,onOptionsChange:Ze,placeholder:"Find in terminal...",matchInfo:Je,onNext:lt,onPrevious:ut,onClose:it}),s.jsx("div",{className:"relative min-h-0 flex-1",children:s.jsx("div",{ref:h,className:"absolute inset-x-2 top-2 overflow-hidden",style:{bottom:8+dt,zoom:`calc(1 / var(${Dt}, 1))`}})}),et&&v.current&&s.jsx(an,{terminal:v.current,sendInput:d=>{const y=x.current;y?.readyState===WebSocket.OPEN&&y.send(d)},pendingCtrl:tt,onToggleCtrl:nt,selectionMode:rt,onExtendSelection:st,onExitSelection:ot,onSelectAll:ct})]})}export{bn as TerminalPanel};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{am as n,an as o}from"./main-axhmccT5.js";const t=(a,r)=>n.lang.round(o.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BKLAk8Ng.js";import{W as i}from"./main-axhmccT5.js";import"./chunk-FMBD7UC4-CZgE72J_.js";import"./chunk-55IACEB6-CivChWg7.js";import"./chunk-QN33PNHL-1qh6IGru.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-B4BG7PRW-BKLAk8Ng.js";import{W as i}from"./main-axhmccT5.js";import"./chunk-FMBD7UC4-CZgE72J_.js";import"./chunk-55IACEB6-CivChWg7.js";import"./chunk-QN33PNHL-1qh6IGru.js";var u={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{u as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{b as r}from"./_baseUniq-CNCpSB0P.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as t,b as r,a,S as s}from"./chunk-DI55MBZ5-B_cDZCba.js";import{W as i}from"./main-axhmccT5.js";import"./chunk-55IACEB6-CivChWg7.js";import"./chunk-QN33PNHL-1qh6IGru.js";var u={parser:a,get db(){return new s(2)},renderer:r,styles:t,init:i(e=>{e.state||(e.state={}),e.state.arrowMarkerAbsolute=e.arrowMarkerAbsolute},"init")};export{u as diagram};
|