@band-app/server 0.22.0 → 0.24.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-Bh7ygcym.js +5 -0
- package/dist/client/assets/DockviewTerminalContainer-BA10dl2w.js +2 -0
- package/dist/client/assets/{TerminalPanel-C4ZPrnFP.js → TerminalPanel-C40mohhY.js} +3 -3
- package/dist/client/assets/{_basePickBy-iyhrrxG-.js → _basePickBy-BoN5C7c3.js} +1 -1
- package/dist/client/assets/{_baseUniq-B1WwbMDv.js → _baseUniq-hs8Z8eGG.js} +1 -1
- package/dist/client/assets/{arc-DjqQ6qnK.js → arc-DStHWz7g.js} +1 -1
- package/dist/client/assets/{architectureDiagram-VXUJARFQ-C03XQiLa.js → architectureDiagram-VXUJARFQ-BmuwLrzR.js} +1 -1
- package/dist/client/assets/{blockDiagram-VD42YOAC-Zzrf5xcb.js → blockDiagram-VD42YOAC-CpfEplz4.js} +1 -1
- package/dist/client/assets/{c4Diagram-YG6GDRKO-BYA4DXcg.js → c4Diagram-YG6GDRKO-DFNXKd12.js} +1 -1
- package/dist/client/assets/channel-cGiKwLh2.js +1 -0
- package/dist/client/assets/{chunk-4BX2VUAB-CPD6ENUL.js → chunk-4BX2VUAB-BhKLwyZj.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-CrLS-6CW.js → chunk-55IACEB6--1nGJwoJ.js} +1 -1
- package/dist/client/assets/{chunk-B4BG7PRW-CgpQP0mz.js → chunk-B4BG7PRW-DfW_4HED.js} +1 -1
- package/dist/client/assets/{chunk-DI55MBZ5-IOlh3km5.js → chunk-DI55MBZ5-BBLPj3y_.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-DFsVS8Jr.js → chunk-FMBD7UC4-22_QzB6-.js} +1 -1
- package/dist/client/assets/{chunk-QN33PNHL-CmVDL9Gh.js → chunk-QN33PNHL-BsNBNA8p.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-B_Cnx6JN.js → chunk-QZHKN3VN-t5QozrKy.js} +1 -1
- package/dist/client/assets/{chunk-TZMSLE5B-DQbyM2Dh.js → chunk-TZMSLE5B-DTbuaeiD.js} +1 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-aEV-2-qP.js +1 -0
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-aEV-2-qP.js +1 -0
- package/dist/client/assets/clone-CArWpwXp.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-CTHDgB6u.js → cose-bilkent-S5V4N54A-HZO5t4GF.js} +1 -1
- package/dist/client/assets/{dagre-6UL2VRFP-UZkfCyUE.js → dagre-6UL2VRFP-DnOsaGGD.js} +1 -1
- package/dist/client/assets/{diagram-PSM6KHXK-DAlkSZ2c.js → diagram-PSM6KHXK-tirWXx7b.js} +1 -1
- package/dist/client/assets/{diagram-QEK2KX5R-CazlpGGg.js → diagram-QEK2KX5R-Cjtr8l3E.js} +1 -1
- package/dist/client/assets/{diagram-S2PKOQOG-COwMJUec.js → diagram-S2PKOQOG-CuNpvzLc.js} +1 -1
- package/dist/client/assets/{erDiagram-Q2GNP2WA-CXZvqia8.js → erDiagram-Q2GNP2WA-D2Rb5UvQ.js} +1 -1
- package/dist/client/assets/{flowDiagram-NV44I4VS-DA3lEpzG.js → flowDiagram-NV44I4VS-BSQxdSDJ.js} +1 -1
- package/dist/client/assets/{ganttDiagram-JELNMOA3-BWRgS4MP.js → ganttDiagram-JELNMOA3-Cj0PWn4F.js} +3 -3
- package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-7FizCSrq.js → gitGraphDiagram-V2S2FVAM-DMoH-grQ.js} +1 -1
- package/dist/client/assets/{graph-4L_GoTFH.js → graph-B7ABrrXm.js} +1 -1
- package/dist/client/assets/{highlighted-body-B3W2YXNL-ydRS8Ic9.js → highlighted-body-B3W2YXNL-DCQslkUR.js} +1 -1
- package/dist/client/assets/{index-BgKMJy37.js → index-8PaDaRYT.js} +1 -1
- package/dist/client/assets/{index-Bq6PEMRy.js → index-9FCRbBun.js} +1 -1
- package/dist/client/assets/{index-DJqbRWRD.js → index-B22f7bFn.js} +1 -1
- package/dist/client/assets/{index-Bs4eGT35.js → index-BCA8lija.js} +1 -1
- package/dist/client/assets/{index-BaTM0g6E.js → index-BG3Ltnuv.js} +1 -1
- package/dist/client/assets/index-BQhRobL8.js +1 -0
- package/dist/client/assets/{index-Cp1FqGEW.js → index-BaT5I2xy.js} +1 -1
- package/dist/client/assets/{index-Csd34_1g.js → index-BsEwdsSv.js} +1 -1
- package/dist/client/assets/{index-B8VQmYG-.js → index-C99EKoUY.js} +1 -1
- package/dist/client/assets/{index-D2ogHyak.js → index-CBLjtUwT.js} +1 -1
- package/dist/client/assets/{index-C6FACjGj.js → index-COql1I_y.js} +1 -1
- package/dist/client/assets/{index-Cl0dKOpc.js → index-D9SknX6B.js} +1 -1
- package/dist/client/assets/{index-CPC-pCRk.js → index-DWj9bxNA.js} +1 -1
- package/dist/client/assets/{index--PCwWsYS.js → index-DWqvtyLc.js} +1 -1
- package/dist/client/assets/{index-DScY4DVi.js → index-DaWbWCgj.js} +1 -1
- package/dist/client/assets/{index-qf4lR_zM.js → index-Diyv48F3.js} +1 -1
- package/dist/client/assets/{index-SJ6t3qme.js → index-DjFlwM8l.js} +1 -1
- package/dist/client/assets/{index-DTonRA2E.js → index-Myu-_U8q.js} +1 -1
- package/dist/client/assets/{infoDiagram-HS3SLOUP-CB9FyKi7.js → infoDiagram-HS3SLOUP-C_wVpnnp.js} +1 -1
- package/dist/client/assets/{journeyDiagram-XKPGCS4Q-C_bPulxt.js → journeyDiagram-XKPGCS4Q-DcF--XQH.js} +1 -1
- package/dist/client/assets/{kanban-definition-3W4ZIXB7-CGLwqWR-.js → kanban-definition-3W4ZIXB7-BA1w8rep.js} +1 -1
- package/dist/client/assets/{layout-XjqfGmSW.js → layout-DVMDYrln.js} +1 -1
- package/dist/client/assets/{main-FwGkrDro.js → main-B6t1j7Kr.js} +231 -231
- package/dist/client/assets/main-i-GTiqUd.css +1 -0
- package/dist/client/assets/{mindmap-definition-VGOIOE7T-DRNRxvpy.js → mindmap-definition-VGOIOE7T-C1vA0wr2.js} +1 -1
- package/dist/client/assets/{pieDiagram-ADFJNKIX-Co4AML3R.js → pieDiagram-ADFJNKIX-Q71p26az.js} +2 -2
- package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DjuSOXov.js → quadrantDiagram-AYHSOK5B-Bxcd0mzk.js} +1 -1
- package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Cl5py0JI.js → requirementDiagram-UZGBJVZJ-DWqCIKiG.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BNJImcEG.js → sankeyDiagram-TZEHDZUN-D9rSnLVX.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-WL72ISMW-Bd3PTcpW.js → sequenceDiagram-WL72ISMW-Co2Jz6Fl.js} +1 -1
- package/dist/client/assets/{square-terminal-CiX1sbUO.js → square-terminal-C3zI_mkt.js} +1 -1
- package/dist/client/assets/{stateDiagram-FKZM4ZOC-DXdFd6-L.js → stateDiagram-FKZM4ZOC-CXLDkeLY.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-R8LzGctw.js +1 -0
- package/dist/client/assets/{timeline-definition-IT6M3QCI-8CA5Ftj2.js → timeline-definition-IT6M3QCI-BXxZZYsm.js} +1 -1
- package/dist/client/assets/{treemap-GDKQZRPO-GQ5N0K_o.js → treemap-GDKQZRPO-BgMoU0kM.js} +1 -1
- package/dist/client/assets/workspace._workspaceId-Bww_ZNFK.js +2 -0
- package/dist/client/assets/{workspace._workspaceId-D0sPlrId.js → workspace._workspaceId-C_KGLGyB.js} +1 -1
- package/dist/client/assets/{xychartDiagram-PRI3JC2R-DzcmFrfB.js → xychartDiagram-PRI3JC2R-BQxVaOKh.js} +1 -1
- package/dist/migrations/20260703151516_add_worktree_name/migration.sql +2 -0
- package/dist/migrations/20260703151516_add_worktree_name/snapshot.json +1167 -0
- package/dist/openapi.json +184 -16
- package/dist/server/assets/{DockviewBrowserContainer-DvltiWxV.js → DockviewBrowserContainer-C6QVux14.js} +16 -3
- package/dist/server/assets/{DockviewTerminalContainer-YGo8Zbx1.js → DockviewTerminalContainer-OevWE65L.js} +29 -6
- package/dist/server/assets/{TerminalPanel-Bd0_i38P.js → TerminalPanel-BhOjwcFW.js} +3 -2
- package/dist/server/assets/{_basePickBy-BBas4T8q.js → _basePickBy-DVK5KtlH.js} +2 -2
- package/dist/server/assets/{_baseUniq-Bb-AXRqu.js → _baseUniq-DSFYYhGd.js} +1 -1
- package/dist/server/assets/_tanstack-start-manifest_v-C_7Mj4aJ.js +4 -0
- package/dist/server/assets/{arc-CNbGanI8.js → arc-BpwEbxUR.js} +1 -1
- package/dist/server/assets/{architecture-7HQA4BMR-BBpvCcgY.js → architecture-7HQA4BMR-CNyHLOO7.js} +6 -6
- package/dist/server/assets/{architectureDiagram-VXUJARFQ-CSgRy1oF.js → architectureDiagram-VXUJARFQ-DVUpIskI.js} +6 -6
- package/dist/server/assets/{blockDiagram-VD42YOAC-BZ551zIx.js → blockDiagram-VD42YOAC-CRv2pc0L.js} +6 -6
- package/dist/server/assets/{c4Diagram-YG6GDRKO-BpFPiRxu.js → c4Diagram-YG6GDRKO-CBv74bWb.js} +2 -2
- package/dist/server/assets/{channel-BakvXn0q.js → channel-C_c7u4ky.js} +1 -1
- package/dist/server/assets/{chunk-4BX2VUAB-iq_ixzMT.js → chunk-4BX2VUAB-85OXnz_P.js} +1 -1
- package/dist/server/assets/{chunk-55IACEB6-BTsLLiUt.js → chunk-55IACEB6-Cl8taExZ.js} +1 -1
- package/dist/server/assets/{chunk-B4BG7PRW-rFWSSos9.js → chunk-B4BG7PRW-C7W_R9n6.js} +4 -4
- package/dist/server/assets/{chunk-DI55MBZ5-C6HYpEOk.js → chunk-DI55MBZ5-CTi30KuT.js} +3 -3
- package/dist/server/assets/{chunk-FMBD7UC4-CWm7G-kI.js → chunk-FMBD7UC4-CsuoPD3I.js} +1 -1
- package/dist/server/assets/{chunk-QN33PNHL-C-sH07qa.js → chunk-QN33PNHL-BHHMj_a1.js} +1 -1
- package/dist/server/assets/{chunk-QZHKN3VN-DBYpRTmd.js → chunk-QZHKN3VN-DwwXlOCl.js} +1 -1
- package/dist/server/assets/{chunk-TZMSLE5B-D374mW8S.js → chunk-TZMSLE5B-ECyN9wrL.js} +1 -1
- package/dist/server/assets/{classDiagram-v2-WZHVMYZB-DV-SD-4W.js → classDiagram-2ON5EDUG-qbF8ds74.js} +5 -5
- package/dist/server/assets/{classDiagram-2ON5EDUG-DV-SD-4W.js → classDiagram-v2-WZHVMYZB-qbF8ds74.js} +5 -5
- package/dist/server/assets/{clone-DVtsQqal.js → clone-BCajbdd5.js} +1 -1
- package/dist/server/assets/{cose-bilkent-S5V4N54A-XbCluv3z.js → cose-bilkent-S5V4N54A-D5-w_t4l.js} +1 -1
- package/dist/server/assets/{dagre-6UL2VRFP-CuR4BisU.js → dagre-6UL2VRFP-CCIdAwdB.js} +6 -6
- package/dist/server/assets/{diagram-PSM6KHXK-CV_nySOq.js → diagram-PSM6KHXK-CWGITxy9.js} +7 -7
- package/dist/server/assets/{diagram-QEK2KX5R-Noar7MQT.js → diagram-QEK2KX5R-B07zrGgY.js} +6 -6
- package/dist/server/assets/{diagram-S2PKOQOG-B2BacNFz.js → diagram-S2PKOQOG-XGIpbjo1.js} +6 -6
- package/dist/server/assets/{erDiagram-Q2GNP2WA-B5Os4Fa-.js → erDiagram-Q2GNP2WA-DYHtO3j9.js} +4 -4
- package/dist/server/assets/{flowDiagram-NV44I4VS-DjQR68un.js → flowDiagram-NV44I4VS-Cs7hS9X4.js} +5 -5
- package/dist/server/assets/{ganttDiagram-JELNMOA3-B5uPZ6pu.js → ganttDiagram-JELNMOA3-BhLp8xvm.js} +1 -1
- package/dist/server/assets/{gitGraph-G5XIXVHT-6ZMiJWQT.js → gitGraph-G5XIXVHT-B46gW1OX.js} +6 -6
- package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-DDF08l5z.js → gitGraphDiagram-V2S2FVAM-CZHNGOm0.js} +7 -7
- package/dist/server/assets/{graph-bRh_VJvO.js → graph-4bVECaJM.js} +2 -2
- package/dist/server/assets/{highlighted-body-B3W2YXNL-BI_Gmrii.js → highlighted-body-B3W2YXNL-DSf8s2aV.js} +1 -1
- package/dist/server/assets/{index-Bdft7sx8.js → index-14dCbIAi.js} +5 -5
- package/dist/server/assets/{index-Dyd5DTki.js → index-1OK7lyTa.js} +2 -2
- package/dist/server/assets/{index-y2Y1JSaD.js → index-8EiXP0Bf.js} +2 -2
- package/dist/server/assets/{index-BlZ00-BN.js → index-B72BPMJQ.js} +3 -3
- package/dist/server/assets/{index-K_Bo1J5h.js → index-BLv-1MtR.js} +5 -5
- package/dist/server/assets/{index-auM21h5r.js → index-BRzkEVRG.js} +1 -1
- package/dist/server/assets/{index-BKTDd3Bk.js → index-C7lRWZi8.js} +4 -4
- package/dist/server/assets/{index-VS9oMvxO.js → index-CDG7KvBY.js} +2 -2
- package/dist/server/assets/{index-C-y9iHQ0.js → index-CHvqm6Lz.js} +5 -5
- package/dist/server/assets/{index-CWdeYFNF.js → index-CKPuU6Za.js} +2 -2
- package/dist/server/assets/{index-RnzJqolD.js → index-CWr-Kh5M.js} +2 -2
- package/dist/server/assets/{index-D2pPyR7I.js → index-D2uLA4oe.js} +2 -2
- package/dist/server/assets/{index-DDZbXJFy.js → index-DAq8fRkd.js} +2 -2
- package/dist/server/assets/{index-5xKUZpsF.js → index-Dz2mzfvS.js} +2 -2
- package/dist/server/assets/{index-6TVwGkMb.js → index-Tq3ajWxh.js} +2 -2
- package/dist/server/assets/{index-DpTDX5JD.js → index-U3tOcUUV.js} +2 -2
- package/dist/server/assets/{index-CTIw5jsP.js → index-pFRKwTv2.js} +2 -2
- package/dist/server/assets/{index-CUQ92e7X.js → index-rT9xGtRW.js} +3 -3
- package/dist/server/assets/{info-VBDWY6EO-JLouBLo5.js → info-VBDWY6EO-DrELfFR0.js} +6 -6
- package/dist/server/assets/{infoDiagram-HS3SLOUP-zmvy_WJR.js → infoDiagram-HS3SLOUP-D40Crb-p.js} +5 -5
- package/dist/server/assets/{journeyDiagram-XKPGCS4Q-DyzviNdt.js → journeyDiagram-XKPGCS4Q-dtlVBwV2.js} +4 -4
- package/dist/server/assets/{kanban-definition-3W4ZIXB7-DOBL7QMj.js → kanban-definition-3W4ZIXB7-72vgA7Jl.js} +2 -2
- package/dist/server/assets/{layout-B_Ylwhz8.js → layout-DJ0Eul-X.js} +4 -4
- package/dist/server/assets/{mermaid-3ZIDBTTL-D1krx3WU.js → mermaid-3ZIDBTTL-DGEHf_at.js} +1 -1
- package/dist/server/assets/{mermaid-parser.core-B3d8rAVm.js → mermaid-parser.core-C1UfVEF8.js} +11 -11
- package/dist/server/assets/{mindmap-definition-VGOIOE7T-Kacyqp9Z.js → mindmap-definition-VGOIOE7T-DYfEp2uH.js} +3 -3
- package/dist/server/assets/{packet-DYOGHKS2-Bl6AuzeP.js → packet-DYOGHKS2-IHYchS32.js} +6 -6
- package/dist/server/assets/{pie-VRWISCQL-DTulKqSB.js → pie-VRWISCQL-R6SvOU4g.js} +6 -6
- package/dist/server/assets/{pieDiagram-ADFJNKIX-EBslGQgI.js → pieDiagram-ADFJNKIX-EgffZsud.js} +7 -7
- package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BKSWYe6P.js → quadrantDiagram-AYHSOK5B-n2oJWllV.js} +1 -1
- package/dist/server/assets/{radar-ZZBFDIW7-C5ulLYDn.js → radar-ZZBFDIW7-BX2ya_Na.js} +6 -6
- package/dist/server/assets/{requirementDiagram-UZGBJVZJ-B7nRcnKx.js → requirementDiagram-UZGBJVZJ-CzCXruFj.js} +3 -3
- package/dist/server/assets/{router-hdCv0b-L.js → router-BC8bCsa3.js} +1100 -725
- package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Dq6Q_X6w.js → sankeyDiagram-TZEHDZUN-C0GqwqSS.js} +1 -1
- package/dist/server/assets/{sequenceDiagram-WL72ISMW-CDfofz-s.js → sequenceDiagram-WL72ISMW-BfX0R0LP.js} +3 -3
- package/dist/server/assets/{square-terminal-D7R89vxW.js → square-terminal-BWcJU95Z.js} +1 -1
- package/dist/server/assets/{stateDiagram-FKZM4ZOC-BQdH_sw5.js → stateDiagram-FKZM4ZOC-QowlLVwh.js} +8 -8
- package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-BTwyLH9n.js → stateDiagram-v2-4FDKWEC3-DVHzQlOF.js} +4 -4
- package/dist/server/assets/{timeline-definition-IT6M3QCI-BLfNWXx-.js → timeline-definition-IT6M3QCI-DUoaC7rz.js} +2 -2
- package/dist/server/assets/{treemap-GDKQZRPO-DYGhrk03.js → treemap-GDKQZRPO-B5KIzomx.js} +6 -6
- package/dist/server/assets/{workspace._workspaceId-C9ijioXa.js → workspace._workspaceId-DRK2dblR.js} +101 -11
- package/dist/server/assets/{workspace._workspaceId-BrMajMrS.js → workspace._workspaceId-hnIpuUNX.js} +1 -1
- package/dist/server/assets/{xychartDiagram-PRI3JC2R-CTiLODEl.js → xychartDiagram-PRI3JC2R-aNxYxejD.js} +1 -1
- package/dist/server/server.js +2 -2
- package/dist/start-server.mjs +736 -512
- package/package.json +4 -4
- package/dist/client/assets/DockviewBrowserContainer-AeGrBvbe.js +0 -5
- package/dist/client/assets/DockviewTerminalContainer-CEcmk81d.js +0 -2
- package/dist/client/assets/channel-ByfqtAS4.js +0 -1
- package/dist/client/assets/classDiagram-2ON5EDUG-CmzSv5tz.js +0 -1
- package/dist/client/assets/classDiagram-v2-WZHVMYZB-CmzSv5tz.js +0 -1
- package/dist/client/assets/clone-D6Np9jJP.js +0 -1
- package/dist/client/assets/index-p4yr3DW9.js +0 -1
- package/dist/client/assets/main-CBlP-xQr.css +0 -1
- package/dist/client/assets/stateDiagram-v2-4FDKWEC3-kbB9WbNB.js +0 -1
- package/dist/client/assets/workspace._workspaceId-C_iuy4p6.js +0 -2
- package/dist/server/assets/_tanstack-start-manifest_v-DJ7xH6AI.js +0 -4
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@band-app/server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.24.0",
|
|
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/
|
|
121
|
-
"@band-app/
|
|
122
|
-
"@band-app/
|
|
120
|
+
"@band-app/coding-agent": "^0.24.0",
|
|
121
|
+
"@band-app/ui": "^0.24.0",
|
|
122
|
+
"@band-app/logger": "^0.24.0"
|
|
123
123
|
},
|
|
124
124
|
"scripts": {
|
|
125
125
|
"dev": "NODE_ENV=development tsx watch start-server.ts",
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{m as be,r as t,bY as B,cx as z,cy as K,cz as Re,p as q,cA as De,cB as Pe,j as o,cC as ie,cv as Ae,cD as Te,cE as Ee,cF as Ie,cG as Be,cH as Fe,cI as qe,cJ as Ue,cK as Le,cL as Me,cM as J,cN as ze,c2 as Oe,cp as Ke,X as me,cO as $e,u as Ge,n as He,o as Ve,q as Qe,v as we,w as We,x as Je,y as Ye,z as Xe,A as Ze,H as ce,J as le,B as et,C as tt,E as rt,F as nt,G as st}from"./main-FwGkrDro.js";const ot=[["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"}]],at=be("history",ot);const it=[["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"}]],ct=be("wrench",it);function lt(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 l=!1;const d={};for(const[c,b]of Object.entries(r)){const x=n.get(c);if(x&&typeof b=="object"&&b!==null&&typeof b.params=="object"&&b.params!==null){const y=b.params;if(!y.initialUrl){d[c]={...b,params:{...y,initialUrl:x}},l=!0;continue}}d[c]=b}return l?{...e,panels:d}:e}const ut={caseSensitive:!1,wholeWord:!1,regex:!1};function dt({key:e,keyName:n}){const[r,l]=t.useState(!1),[d,c]=t.useState(""),[b,x]=t.useState(ut),[y,N]=t.useState(null),j=t.useRef(null),_=t.useRef(e);_.current=e;const F=t.useRef(null),k=t.useCallback(R=>n==="browserId"?R.browser_id:R.workspace_id,[n]),T=t.useCallback((R={})=>({[n]:_.current,...R}),[n]),E=t.useCallback(()=>{requestAnimationFrame(()=>{j.current?.focus(),j.current?.select()})},[]),C=t.useCallback(async(R,f={})=>{if(B){if(!R){N(null),F.current=null;try{await z("browser_stop_find_in_page",T({action:"clearSelection"}))}catch{}return}(f.findNext??!1)||(N(null),F.current=null);try{const s=await z("browser_find_in_page",T({text:R,options:{matchCase:b.caseSensitive,findNext:f.findNext??!1,forward:f.forward??!0}}));typeof s=="number"&&(F.current=s)}catch(s){console.error("browser_find_in_page failed:",s)}}},[T,b.caseSensitive]),I=t.useCallback(()=>{l(!1),c(""),N(null),F.current=null,B&&z("browser_stop_find_in_page",T({action:"clearSelection"})).catch(()=>{})},[T]),v=t.useCallback(()=>{l(!0),E()},[E]);t.useEffect(()=>{r&&C(d)},[d,r,C]),t.useEffect(()=>{if(!B)return;let R;return(async()=>R=await K("browser-found-in-page",f=>{k(f.payload)===_.current&&(F.current!==null&&f.payload.request_id!==F.current||N({total:f.payload.matches,current:f.payload.active_match_ordinal}))}))(),()=>R?.()},[k]),t.useEffect(()=>{if(!B)return;let R;return(async()=>R=await K("browser-find-shortcut",f=>{k(f.payload)===_.current&&(l(!0),E())}))(),()=>R?.()},[E,k]),t.useEffect(()=>{if(!B)return;let R;return(async()=>R=await K("browser-url-changed",f=>{k(f.payload)===_.current&&f.payload.loading&&I()}))(),()=>R?.()},[I,k]);const S=t.useCallback(()=>{d&&C(d,{findNext:!0,forward:!0})},[d,C]),O=t.useCallback(()=>{d&&C(d,{findNext:!0,forward:!1})},[d,C]);return{isOpen:r,open:v,close:I,query:d,setQuery:c,options:b,setOptions:x,matchInfo:y,findNext:S,findPrevious:O,searchBarRef:j}}const ft=50,pt=100;function ht(e){const{key:n,keyName:r,workspaceId:l,currentUrlRef:d,setInputUrl:c,inputUrl:b,onNavigate:x}=e,y=dt({key:n,keyName:r}),N=t.useRef(!1),[j,_]=t.useState([]),[F,k]=t.useState(!1),[T,E]=t.useState(0);Re(F);const C=t.useCallback(()=>{k(!1),_([]),E(0)},[]);t.useEffect(()=>{if(!N.current)return;const f=b.trim();if(f===""){C();return}if(f===d.current.trim()){C();return}let s=!1;const u=setTimeout(()=>{q.history.search.query({workspaceId:l,query:f,limit:8}).then(p=>{if(!s){if(p.entries.length===0){C();return}_(p.entries),k(!0),E(0)}}).catch(()=>{s||C()})},ft);return()=>{s=!0,clearTimeout(u)}},[b,l,C,d]);const I=t.useCallback(f=>{N.current=!0,f.target.select()},[]),v=t.useCallback(()=>{N.current=!1,c(d.current),setTimeout(()=>{N.current||C()},pt)},[d,c,C]),S=t.useCallback(f=>{if(F){if(f.key==="ArrowDown"){f.preventDefault(),E(s=>Math.min(s+1,j.length-1));return}if(f.key==="ArrowUp"){f.preventDefault(),E(s=>Math.max(s-1,0));return}if(f.key==="Enter"){const s=j[T];if(s){f.preventDefault(),C(),x(s.url);return}}if(f.key==="Escape"){f.preventDefault(),C();return}}if(f.key==="Enter"){f.preventDefault(),C(),x(b);return}if(f.key==="Escape"){f.preventDefault(),c(d.current);const s=f.currentTarget;requestAnimationFrame(()=>{s.isConnected&&s.select()})}},[b,x,c,d,F,j,T,C]),O=t.useCallback(f=>{f.key.toLowerCase()!=="f"||f.shiftKey||f.altKey||!(/mac/i.test(navigator.userAgent)?f.metaKey&&!f.ctrlKey:f.ctrlKey&&!f.metaKey)||(f.preventDefault(),f.stopPropagation(),y.open())},[y]),R=t.useCallback(async()=>{if(B)try{await z("browser_toggle_dev_tools",{[r]:n})}catch(f){console.error("browser_toggle_dev_tools failed:",f)}},[n,r]);return{find:y,addressInputFocusedRef:N,handleAddressFocus:I,handleAddressBlur:v,handleAddressKeyDown:S,handlePaneKeyDown:O,handleToggleDevTools:R,autocomplete:{isOpen:F,items:j,selectedIndex:T,close:C,setSelectedIndex:E},paneDataAttrs:{"data-band-browser-pane":"","data-band-browser-pane-key":n,"data-band-browser-pane-keyname":r}}}function ue(){return new Promise(e=>{requestAnimationFrame(()=>requestAnimationFrame(()=>e()))})}function bt(e){const{created:n,visible:r,ipcKeyRef:l}=e,d=De(),[c,b]=t.useState(null),x=t.useRef(!1);return t.useEffect(()=>{if(!B||!n)return;let y=!1;if(d){if(!r)return;const N=l.current;(async()=>{try{const j=await z("browser_capture_page",N);!y&&j&&(Pe.flushSync(()=>b(j)),await ue())}catch{}y||(x.current=!0,z("browser_pause_media",N).catch(()=>{}),z("browser_hide",N).catch(()=>{}))})()}else{const N=x.current;if(x.current=!1,N&&r){const j=l.current;z("browser_show",j).catch(()=>{}),z("browser_resume_media",j).catch(()=>{}),(async()=>(await ue(),y||b(null)))()}else b(null)}return()=>{y=!0}},[d,n,r,l]),{snapshot:c}}let Q=new Set;const te=new Set;let X=!1;function mt(e){const n=e(Q);if(n!==Q){Q=n;for(const r of te)r()}}function de(e){const n=e.toLowerCase();!n||Q.has(n)||mt(r=>{const l=new Set(r);return l.add(n),l})}function wt(){X||B&&(X=!0,K("browser-host-overridden",e=>{e.payload.host&&de(e.payload.host)}).catch(e=>{console.error("browser-host-overridden listen failed:",e),X=!1}),z("browser_get_overridden_hosts").then(e=>{if(Array.isArray(e))for(const n of e)de(n)}).catch(e=>{console.error("browser_get_overridden_hosts failed:",e)}))}function yt(e){return wt(),te.add(e),()=>{te.delete(e)}}function fe(){return Q}function gt(){const e=t.useSyncExternalStore(yt,fe,fe);return{isOverriddenHost:t.useCallback(r=>{if(!r)return!1;let l;try{l=new URL(r).hostname.toLowerCase()}catch{return!1}return e.has(l)},[e])}}function xt({state:e,onSelect:n}){return!e.isOpen||e.items.length===0?null:o.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:o.jsx("ul",{className:"max-h-80 overflow-y-auto py-1",children:e.items.map((r,l)=>{const d=l===e.selectedIndex;return o.jsx("li",{children:o.jsxs("button",{type:"button",onMouseDown:c=>{c.preventDefault(),n(r.url),e.close()},onMouseEnter:()=>e.setSelectedIndex(l),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:[r.faviconUrl?o.jsx("img",{src:r.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:c=>{c.currentTarget.style.display="none"}}):o.jsx(ie,{className:"size-4 shrink-0 text-muted-foreground"}),o.jsxs("div",{className:"flex min-w-0 flex-1 flex-col",children:[r.title?o.jsx("span",{className:"truncate font-medium leading-tight",children:r.title}):null,o.jsx("span",{className:`truncate text-xs leading-tight ${r.title?"text-muted-foreground":"text-foreground"}`,children:r.url})]})]})},r.id)})})})}function vt({find:e}){return e.isOpen?o.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 jt=150,Ct=200;function Nt(e){const n=new Map,r=[];for(const l of e){const d=re(l.lastVisitedAt);let c=n.get(d);c||(c={label:_t(d),entries:[]},n.set(d,c),r.push(d)),c.entries.push(l)}return r.map(l=>n.get(l))}function re(e){const n=new Date(e),r=n.getFullYear(),l=String(n.getMonth()+1).padStart(2,"0"),d=String(n.getDate()).padStart(2,"0");return`${r}-${l}-${d}`}function _t(e){const n=new Date,r=re(n.getTime()),l=new Date(n.getFullYear(),n.getMonth(),n.getDate()-1),d=re(l.getTime());if(e===r)return"Today";if(e===d)return"Yesterday";const[c,b,x]=e.split("-").map(Number),y=new Date(c,b-1,x);return Math.floor((Date.now()-y.getTime())/(1440*60*1e3))<=7?y.toLocaleDateString(void 0,{weekday:"long",month:"short",day:"numeric"}):y.toLocaleDateString(void 0,{year:"numeric",month:"short",day:"numeric"})}function St(e){return new Date(e).toLocaleTimeString(void 0,{hour:"numeric",minute:"2-digit"})}function kt({workspaceId:e,onNavigate:n}){const r=t.useId(),[l,d]=t.useState(!1),[c,b]=t.useState(""),[x,y]=t.useState([]),[N,j]=t.useState(!1),[_,F]=t.useState(0),k=t.useCallback(()=>{F(v=>v+1)},[]);t.useEffect(()=>{if(!l)return;let v=!1;j(!0);const S=c.trim(),f=setTimeout(()=>{(S?q.history.search.query({workspaceId:e,query:S,limit:50}):q.history.list.query({workspaceId:e,limit:Ct})).then(u=>{v||y(u.entries)}).catch(()=>{v||y([])}).finally(()=>{v||j(!1)})},S?jt:0);return()=>{v=!0,clearTimeout(f)}},[l,c,e,_]);const T=t.useMemo(()=>Nt(x),[x]),E=t.useCallback(v=>{n(v),d(!1)},[n]),C=t.useCallback(async v=>{await q.history.delete.mutate({id:v,workspaceId:e}).catch(()=>{}),k()},[k,e]),I=t.useCallback(async v=>{await q.history.clear.mutate({workspaceId:e,range:v}).catch(()=>{}),k()},[k,e]);return o.jsxs(Te,{open:l,onOpenChange:d,children:[o.jsx(Ee,{asChild:!0,children:o.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:o.jsx(at,{className:"size-4"})})}),o.jsxs(Ie,{align:"end",sideOffset:6,className:"w-[440px] p-0",onOpenAutoFocus:v=>{v.preventDefault();const S=document.getElementById(r);S&&S.focus()},children:[o.jsxs("div",{className:"flex items-center gap-2 border-b border-border px-3 py-2",children:[o.jsx(Be,{className:"size-4 shrink-0 text-muted-foreground"}),o.jsx("input",{id:r,type:"text",value:c,onChange:v=>b(v.target.value),placeholder:"Search history",className:"min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"})]}),o.jsx("div",{className:"max-h-[420px] overflow-y-auto",children:N&&x.length===0?o.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:"Loading…"}):T.length===0?o.jsx("div",{className:"px-3 py-6 text-center text-sm text-muted-foreground",children:c?"No matching history":"No history yet"}):T.map(v=>o.jsxs("div",{children:[o.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}),o.jsx("ul",{children:v.entries.map(S=>o.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:[S.faviconUrl?o.jsx("img",{src:S.faviconUrl,alt:"",className:"size-4 shrink-0 rounded-sm",onError:O=>{O.currentTarget.style.display="none"}}):o.jsx(ie,{className:"size-4 shrink-0 text-muted-foreground"}),o.jsxs("button",{type:"button",onClick:()=>E(S.url),className:"flex min-w-0 flex-1 flex-col items-stretch gap-0.5 overflow-hidden pr-6 text-left",children:[o.jsx("span",{className:"block truncate text-sm font-medium leading-tight text-foreground",children:S.title||S.url}),o.jsxs("span",{className:"flex min-w-0 items-baseline gap-2 leading-tight",children:[o.jsx("span",{className:"min-w-0 flex-1 truncate text-xs text-muted-foreground",children:S.url}),o.jsx("span",{className:"shrink-0 text-[11px] text-muted-foreground tabular-nums",children:St(S.lastVisitedAt)})]})]}),o.jsx("button",{type:"button",onClick:()=>C(S.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:o.jsx(Fe,{className:"size-3.5"})})]},S.id))})]},v.label))}),o.jsx("div",{className:"flex items-center justify-end border-t border-border px-3 py-2",children:o.jsxs(qe,{children:[o.jsx(Ue,{asChild:!0,children:o.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 ",o.jsx(Le,{className:"size-3"})]})}),o.jsxs(Me,{align:"end",children:[o.jsx(J,{onSelect:()=>I("hour"),children:"Last hour"}),o.jsx(J,{onSelect:()=>I("day"),children:"Last 24 hours"}),o.jsx(J,{onSelect:()=>I("week"),children:"Last week"}),o.jsx(J,{onSelect:()=>I("all"),children:"All time"})]})]})})]})]})}function Rt(){return o.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:[o.jsx(ze,{className:"size-3","aria-hidden":!0}),"Not secure"]})}const pe="",G="about:blank",ne=new Map,se=new Set;function Dt(e,n){if(ne.get(e)!==n){ne.set(e,n);for(const r of se)r()}}function Pt(e){return se.add(e),()=>{se.delete(e)}}function At(e){return t.useSyncExternalStore(Pt,()=>ne.get(e))}function Tt({params:e,api:n}){const{browserId:r,initialUrl:l,workspaceId:d}=e,[c,b]=t.useState(()=>l??pe),[x,y]=t.useState(()=>l??pe),[N,j]=t.useState(!1),[_,F]=t.useState(!1),k=t.useRef(!1),T=t.useRef(null),E=t.useRef(!1),C=t.useRef(null),I=t.useRef(r);I.current=r;const v=t.useRef(c);v.current=c;const[S,O]=t.useState(d??""),R=t.useRef(S);R.current=S;const f=t.useRef({browserId:r});f.current={browserId:r};const{snapshot:s}=bt({created:_,visible:n.isVisible&&e.wsActive!==!1,ipcKeyRef:f}),{isOverriddenHost:u}=gt(),p=t.useCallback(()=>{const g=T.current;if(!g)return null;const m=g.getBoundingClientRect();return{x:m.left+1,y:m.top,width:Math.max(0,m.width-2),height:m.height}},[]),a=t.useCallback(async(g,m)=>{if(B)return z(g,m)},[]);t.useEffect(()=>{if(!r||l)return;let g=!1;return q.browsers.get.query({browserId:r}).then(m=>{if(g)return;const w=m.browser?.workspaceId;w&&!R.current&&O(w);const P=m.browser?.url;!P||P===""||P===G||(b(P),y(P),k.current?a("browser_navigate",{browserId:r,url:P}).catch(()=>{}):C.current=P)}).catch(()=>{}),()=>{g=!0}},[r,l,a]),t.useEffect(()=>{if(!B||_||E.current)return;const g=T.current;if(!g)return;let m=!1;const w=async()=>{if(m||k.current||E.current)return;const $=p();if(!(!$||$.width===0||$.height===0)){P.disconnect(),E.current=!0;try{await a("browser_create",{browserId:r,...$,url:v.current||G}),k.current=!0,F(!0);const W=C.current;W&&(C.current=null,await a("browser_navigate",{browserId:I.current,url:W}))}catch(W){console.error("Failed to create browser webview:",W)}finally{E.current=!1}}},P=new ResizeObserver(()=>{w()});P.observe(g);const L=setTimeout(w,50);return()=>{m=!0,clearTimeout(L),P.disconnect()}},[_,p,a,r]);const i=t.useRef(null);t.useEffect(()=>{if(!B)return;let g,m;return(async()=>(g=await K("browser-url-changed",w=>{if(w.payload.browser_id!==I.current)return;const P=w.payload.url;if(j(w.payload.loading),P===G)return;b(P),xe.current||y(P),i.current&&clearTimeout(i.current),i.current=setTimeout(()=>{q.browsers.navigate.mutate({browserId:I.current,url:P}).catch(()=>{})},500);let L;try{L=`${new URL(P).origin}/favicon.ico`,Dt(I.current,L)}catch{}!w.payload.loading&&R.current&&q.history.record.mutate({workspaceId:R.current,url:P,faviconUrl:L}).catch(()=>{})}),m=await K("browser-title-changed",w=>{if(w.payload.browser_id===I.current&&w.payload.title){n.setTitle(w.payload.title);const P=v.current;P&&P!==G&&R.current&&q.history.updateMeta.mutate({workspaceId:R.current,url:P,title:w.payload.title}).catch(()=>{})}})))(),()=>{if(g?.(),m?.(),i.current){clearTimeout(i.current),i.current=null;const w=v.current;w&&w!==G&&q.browsers.navigate.mutate({browserId:I.current,url:w}).catch(()=>{})}}},[n]),t.useEffect(()=>{if(!B||!_)return;const g=L=>$=>console.error(`[BrowserPane] ${L} failed`,$),m=()=>{const L=p();L&&L.width>0&&L.height>0&&a("browser_set_bounds",{browserId:r,...L}).catch(g("browser_set_bounds")),a("browser_show",{browserId:r}).catch(g("browser_show"))},w=()=>{a("browser_hide",{browserId:r}).catch(g("browser_hide"))},P=n.onDidVisibilityChange(L=>{L.isVisible?m():w()});return()=>{P.dispose()}},[n,_,p,a,r]),t.useEffect(()=>{if(!B||!_)return;const g=e.wsActive!==!1,m=w=>P=>console.error(`[BrowserPane] ${w} failed`,P);if(!g)a("browser_hide",{browserId:r}).catch(m("browser_hide"));else if(n.isVisible){const w=p();w&&w.width>0&&w.height>0&&a("browser_set_bounds",{browserId:r,...w}).catch(m("browser_set_bounds")),a("browser_show",{browserId:r}).catch(m("browser_show"))}},[e.wsActive,n,_,p,a,r]),t.useEffect(()=>{if(!B||!_)return;const g=T.current;if(!g)return;const m=new ResizeObserver(()=>{const w=p();!w||w.width===0||w.height===0||a("browser_set_bounds",{browserId:r,...w}).catch(()=>{})});return m.observe(g),()=>m.disconnect()},[_,p,a,r]),t.useEffect(()=>()=>{if(B){const g=I.current;z("browser_destroy",{browserId:g}).catch(()=>{})}},[]);const h=t.useCallback(async g=>{let m=g.trim();if(!m){if(b(""),y(""),j(!1),k.current)try{await a("browser_navigate",{browserId:r,url:G})}catch(w){console.error("browser_navigate failed:",w)}else C.current=G;return}if(!m.startsWith("http://")&&!m.startsWith("https://")&&(m.includes(".")&&!m.includes(" ")?m=`https://${m}`:m=`https://www.google.com/search?q=${encodeURIComponent(m)}`),b(m),y(m),j(!0),k.current)try{await a("browser_navigate",{browserId:r,url:m})}catch(w){console.error("browser_navigate failed:",w)}else C.current=m},[a,r]),D=t.useCallback(async()=>{try{await a("browser_go_back",{browserId:r})}catch(g){console.error("browser_go_back failed:",g)}},[a,r]),A=t.useCallback(async()=>{try{await a("browser_go_forward",{browserId:r})}catch(g){console.error("browser_go_forward failed:",g)}},[a,r]),U=t.useCallback(async()=>{try{j(!0),await a("browser_reload",{browserId:r})}catch(g){console.error("browser_reload failed:",g)}},[a,r]),M=t.useCallback(async()=>{try{await a("browser_eval",{browserId:r,js:"window.stop()"}),j(!1)}catch{j(!1)}},[a,r]),{find:Y,addressInputFocusedRef:xe,handleAddressFocus:ve,handleAddressBlur:je,handleAddressKeyDown:Ce,handlePaneKeyDown:Ne,handleToggleDevTools:_e,autocomplete:Se,paneDataAttrs:ke}=ht({key:r,keyName:"browserId",workspaceId:S,currentUrlRef:v,setInputUrl:y,inputUrl:x,onNavigate:h});return r?B?o.jsxs("div",{className:"flex h-full w-full flex-col",onKeyDown:Ne,...ke,children:[o.jsx("style",{children:`@keyframes browser-bar-slide {
|
|
2
|
-
0% { transform: translateX(-100%); }
|
|
3
|
-
50% { transform: translateX(200%); }
|
|
4
|
-
100% { transform: translateX(-100%); }
|
|
5
|
-
}`}),o.jsxs("div",{className:"relative flex h-10 shrink-0 items-center gap-1 border-b border-border bg-background px-2",children:[o.jsx("button",{type:"button",onClick:D,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Back",children:o.jsx(Oe,{className:"size-4"})}),o.jsx("button",{type:"button",onClick:A,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Forward",children:o.jsx(Ke,{className:"size-4"})}),N?o.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:"Stop",children:o.jsx(me,{className:"size-4"})}):o.jsx("button",{type:"button",onClick:U,className:"flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",title:"Reload",children:o.jsx($e,{className:"size-4"})}),u(c)?o.jsx(Rt,{}):null,o.jsx("input",{type:"text",value:x,onChange:g=>y(g.target.value),onKeyDown:Ce,onFocus:ve,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":""}),S?o.jsx(kt,{workspaceId:S,onNavigate:h}):null,o.jsx("button",{type:"button",onClick:_e,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:o.jsx(ct,{className:"size-4"})}),N&&o.jsx("div",{className:"absolute inset-x-0 bottom-0 h-0.5 overflow-hidden bg-blue-500/10",children:o.jsx("div",{className:"h-full w-2/5 rounded-full bg-blue-500",style:{animation:"browser-bar-slide 1.4s ease-in-out infinite"}})}),o.jsx(xt,{state:Se,onSelect:h})]}),o.jsx(vt,{find:Y}),o.jsx("div",{ref:T,className:"relative min-h-0 flex-1",children:s?o.jsx("img",{src:s,alt:"",className:"pointer-events-none absolute inset-0 size-full object-contain object-top",draggable:!1}):null})]}):o.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 ye=new Set;function he(e){ye.add(e)}function Ot(e){return ye.delete(e)}function Et(){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 oe(){return`browser_${Et()}`}function ae(e){return["browserLayout",e]}const Z=new Map;function It(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 ee(e,n,r){if(r?.queryClient){const d=r.queryClient.getQueryData(ae(e));r.queryClient.setQueryData(ae(e),{layout:n,browserIds:It(n),urls:d?.urls??new Map})}const l=Z.get(e);l&&clearTimeout(l),Z.set(e,setTimeout(()=>{Z.delete(e),q.browserLayout.save.mutate({workspaceId:e,tree:n}).catch(d=>{console.error("[DockviewBrowserContainer] failed to persist layout:",d)})},500))}function Bt(e){if(typeof e!="object"||e===null)return!1;const n=e;return typeof n.grid=="object"&&typeof n.panels=="object"}const Ft={name:"band",className:"dockview-theme-band dockview-browser-tabs"};function qt({params:e,api:n}){const{visible:r}=st();if(!e.workspaceId||!e.browserId)return null;const l={workspaceId:e.workspaceId,browserId:e.browserId,wsActive:r,initialUrl:e.initialUrl};return o.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden","data-testid":`dockview-browser-tab__visible-${r?"true":"false"}`,children:o.jsx(Tt,{params:l,api:n})})}function ge(e){const[n,r]=t.useState(e.api.title??"New Tab"),[l,d]=t.useState(!1),c=e.params.browserId,b=At(c),x=t.useRef(b);b!==x.current&&(x.current=b,l&&d(!1)),t.useEffect(()=>{const _=e.api.onDidTitleChange(()=>r(e.api.title??"New Tab"));return()=>_.dispose()},[e.api]);const y=e.containerApi,N=t.useCallback(_=>{_.stopPropagation(),H.get(y.id)?.current?.onClose(c)},[y,c]),j=b&&!l;return o.jsxs("div",{className:"dv-default-tab",children:[o.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[j?o.jsx("img",{src:b,alt:"",className:"size-3.5 shrink-0",onError:()=>d(!0)}):o.jsx(ie,{className:"size-3.5 shrink-0 text-muted-foreground"}),o.jsx("span",{className:"truncate",children:n})]}),o.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:N,title:"Close tab",children:o.jsx(me,{className:"size-3"})})]})}const H=new Map,Ut=et.memo(function(n){const r=(n.location?.type??"grid")==="grid",l=n.containerApi.id,d=n.group.id;return o.jsxs("div",{className:"flex h-full w-full items-center justify-center","data-testid":r?"dockview-browser__toolbar":void 0,children:[r&&o.jsxs(o.Fragment,{children:[o.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:()=>H.get(l)?.current?.onSplit(d,"right"),title:"Split right",children:o.jsx(tt,{className:"size-3.5"})}),o.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:()=>H.get(l)?.current?.onSplit(d,"below"),title:"Split down",children:o.jsx(rt,{className:"size-3.5"})})]}),o.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:()=>H.get(l)?.current?.onAdd(d),title:"New browser tab",children:o.jsx(nt,{className:"size-4"})})]})}),Lt={browserTab:qt},Mt={browserTab:ge};function Kt({workspaceId:e,visible:n,wsActive:r}){const l=Ge(),d=He(),c=t.useRef(null),b=t.useRef(!1),x=t.useRef(null),y=t.useRef(null),N=t.useRef(null),{data:j}=Ve({queryKey:ae(e),queryFn:async()=>{const[{tree:s},{browsers:u}]=await Promise.all([q.browserLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),q.browsers.list.query({workspaceId:e}).catch(()=>({browsers:[]}))]),p=new Map;for(const a of u)a.url&&a.url!=="about:blank"&&p.set(a.id,a.url);return{layout:s,browserIds:new Set(u.map(a=>a.id)),urls:p}},staleTime:Number.POSITIVE_INFINITY}),_=t.useRef(d);_.current=d;const F=t.useCallback(()=>{if(b.current)return;const s=c.current;s&&ee(e,s.toJSON(),{queryClient:_.current})},[e]),k=t.useCallback(async(s,u)=>{const p=c.current;if(!p)return;const a=oe();he(a);const i=u?.initialUrl,h={id:a,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:a,...i?{initialUrl:i}:{}}};s&&(h.position={referenceGroup:s}),p.addPanel(h);try{await q.browsers.create.mutate({workspaceId:e,id:a,...i?{url:i}:{}})}catch(D){console.error("[DockviewBrowserContainer] error pre-creating browser:",D)}},[e]),T=t.useCallback(async(s,u)=>{const p=c.current;if(!p)return;const a=oe();he(a);try{p.addPanel({id:a,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:a},position:{referenceGroup:s,direction:u}})}catch(i){console.error("[DockviewBrowserContainer] split addPanel threw:",i);return}try{await q.browsers.create.mutate({workspaceId:e,id:a})}catch(i){console.error("[DockviewBrowserContainer] error creating split browser:",i)}},[e]),E=t.useCallback(s=>{const u=c.current;if(!u)return;Qe(u,s);const p=u.getPanel(s);p&&u.removePanel(p),u.panels.length===0&&V(u,e),requestAnimationFrame(()=>{const a=u.activePanel;a&&a.view.content.element.querySelector("[data-band-address-input]")?.focus()}),q.browsers.remove.mutate({browserId:s}).catch(a=>{console.error("[DockviewBrowserContainer] failed to remove browser:",a)})},[e]);t.useEffect(()=>{if(!n)return;const s=()=>{const i=c.current?.activePanel;i&&i.view.content.element.querySelector("[data-band-address-input]")?.focus()},u=i=>{ce(c.current,i,()=>{requestAnimationFrame(s)})},p=i=>{le(c.current,i,()=>{requestAnimationFrame(s)})},a=i=>{if(!x.current?.contains(document.activeElement))return;const h=i.key.toLowerCase();if(i.ctrlKey&&!i.metaKey&&h==="tab"){i.preventDefault(),i.stopPropagation(),u(i.shiftKey?-1:1);return}if(i.metaKey||i.ctrlKey){if(i.shiftKey&&(h==="["||h==="]")){i.preventDefault(),i.stopPropagation(),u(h==="]"?1:-1);return}if(!i.shiftKey&&(h==="["||h==="]")){i.preventDefault(),i.stopPropagation(),p(h==="]"?1:-1);return}if(h==="t"&&!i.shiftKey)i.preventDefault(),i.stopPropagation(),k().then(()=>{requestAnimationFrame(()=>{const A=c.current?.activePanel;A&&A.view.content.element.querySelector("[data-band-address-input]")?.focus()})});else if(h==="w"&&!i.shiftKey){const A=c.current;if(!A)return;i.preventDefault(),i.stopPropagation();const U=A.activePanel;U&&E(U.id)}else if(h==="d"){i.preventDefault(),i.stopPropagation();const A=c.current;if(!A)return;const U=A.activeGroup;if(!U)return;const M=i.shiftKey?"below":"right";T(U.id,M)}else if(h==="r"&&!i.shiftKey&&B){const A=c.current;if(!A)return;const M=A.activePanel?.params?.browserId;if(!M)return;i.preventDefault(),i.stopPropagation(),z("browser_reload",{browserId:M}).catch(Y=>{console.error("[DockviewBrowserContainer] browser_reload failed:",Y)})}}};return window.addEventListener("keydown",a,!0),()=>window.removeEventListener("keydown",a,!0)},[n,E,T,k]),t.useLayoutEffect(()=>{if(!n)return;const s=c.current,u=x.current;if(!s||!u)return;const p=u.getBoundingClientRect();if(p.width>0&&p.height>0){s.layout(Math.round(p.width),Math.round(p.height),!0);return}const a=new ResizeObserver(i=>{const h=i[0];if(!h)return;const{width:D,height:A}=h.contentRect;D<=0||A<=0||(a.disconnect(),s.layout(Math.round(D),Math.round(A),!0))});return a.observe(u),()=>a.disconnect()},[n]),t.useEffect(()=>{if(!n)return;const s=requestAnimationFrame(()=>{const u=c.current?.activePanel;u&&u.view.content.element.querySelector("[data-band-address-input]")?.focus()});return()=>cancelAnimationFrame(s)},[n]),t.useEffect(()=>{if(!B)return;let s;return(async()=>s=await K("browser-new-tab-shortcut",u=>{const p=c.current;if(!p)return;const a=u.payload.browser_id;!a||!p.getPanel(a)||k().then(()=>{requestAnimationFrame(()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})})}))(),()=>s?.()},[k]),t.useEffect(()=>{if(!B)return;let s,u=!1;return(async()=>{const p=await K("browser-open-window",a=>{const i=c.current;if(!i)return;const h=a.payload.browser_id,D=h?i.getPanel(h):void 0;if(!D)return;const A=D.group?.id,U=a.payload.url;U&&k(A,{initialUrl:U}).then(()=>{requestAnimationFrame(()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})}).catch(M=>{console.error("[DockviewBrowserContainer] browser-open-window add-tab failed:",M)})});u?p():s=p})(),()=>{u=!0,s?.()}},[k]),t.useEffect(()=>{if(!B)return;const s=[];let u=!1;const p=()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()};return(async()=>{const a=await Promise.all([K("browser-split-shortcut",i=>{const h=c.current;if(!h)return;const D=h.getPanel(i.payload.browser_id);D?.group&&T(D.group.id,i.payload.direction)}),K("browser-close-shortcut",i=>{const h=c.current;if(!h)return;const D=i.payload.browser_id;h.getPanel(D)&&E(D)}),K("browser-cycle-shortcut",i=>{const h=c.current;if(!h)return;const D=h.getPanel(i.payload.browser_id);if(!D)return;D.api.setActive();const A=()=>requestAnimationFrame(p);i.payload.target==="tabs"?ce(c.current,i.payload.direction,A):le(c.current,i.payload.direction,A)})]);if(u)for(const i of a)i();else s.push(...a)})(),()=>{u=!0;for(const a of s)a()}},[T,E]),t.useEffect(()=>{const s=()=>{const u=x.current;if(!u||u.offsetParent===null)return;const p=u.querySelectorAll("[data-band-address-input]");for(const a of p)if(a.offsetParent!==null){a.focus({preventScroll:!0});return}};return window.addEventListener("band:focus-browser",s),()=>window.removeEventListener("band:focus-browser",s)},[]),t.useEffect(()=>l.subscribeStatusEvents(s=>{if(s.workspaceId!==e)return;const u=c.current;if(u){if(s.kind==="browser-created"&&typeof s.browserId=="string"){if(u.getPanel(s.browserId))return;u.addPanel({id:s.browserId,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:s.browserId},position:we(u)})}else if(s.kind==="browser-removed"&&typeof s.browserId=="string"){const p=u.getPanel(s.browserId);p&&(u.removePanel(p),u.panels.length===0&&V(u,e))}}}),[l,e]);const C=t.useRef({onAdd:()=>{},onSplit:()=>{},onClose:()=>{}});C.current={onAdd:k,onSplit:T,onClose:E},t.useEffect(()=>()=>{const s=c.current;s&&H.delete(s.id),y.current?.(),y.current=null,N.current?.(),N.current=null},[]);const I=t.useRef(null);I.current=j?.layout??null;const v=t.useRef(null);v.current=j?.browserIds??null;const S=t.useRef(null);S.current=j?.urls??null;const O=t.useRef(n);O.current=n;const R=t.useCallback(s=>{const u=c.current;u&&u.id!==s.api.id&&H.delete(u.id),c.current=s.api,H.set(s.api.id,C);const p=I.current,a=v.current,i=S.current;if(p&&Bt(p)){b.current=!0;const D=lt(p,i);try{s.api.fromJSON(D)}catch(U){console.error("[DockviewBrowserContainer] fromJSON failed, creating default:",U),V(s.api,e)}let A=0;if(a){const U=s.api.panels.filter(M=>!a.has(M.id));for(const M of U)s.api.removePanel(M),A++;s.api.panels.length===0&&(V(s.api,e),A++)}setTimeout(()=>{b.current=!1},0),A>0&&ee(e,s.api.toJSON(),{queryClient:_.current})}else V(s.api,e),ee(e,s.api.toJSON(),{queryClient:_.current});We(s.api),y.current?.(),y.current=Je(s.api),N.current?.(),x.current&&(N.current=Ye(x.current,s.api));const h=()=>F();if(s.api.onDidLayoutChange(h),s.api.onDidAddPanel(h),s.api.onDidRemovePanel(h),s.api.onDidActivePanelChange(h),s.api.onDidAddGroup(h),s.api.onDidRemoveGroup(h),O.current&&x.current){const D=x.current.getBoundingClientRect();D.width>0&&D.height>0&&s.api.layout(Math.round(D.width),Math.round(D.height),!0)}},[e,F]),f=t.useMemo(()=>({visible:n&&r!==!1,wsActive:r!==!1}),[n,r]);return j?o.jsx("div",{ref:x,className:"flex h-full w-full flex-col overflow-hidden",children:o.jsx(Xe.Provider,{value:f,children:o.jsx(Ze,{theme:Ft,className:"h-full",components:Lt,tabComponents:Mt,defaultTabComponent:ge,onReady:R,rightHeaderActionsComponent:Ut})})}):o.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function V(e,n){const r=oe();q.browsers.create.mutate({workspaceId:n,id:r}).catch(l=>{console.error("[DockviewBrowserContainer] error creating default browser:",l)}),e.addPanel({id:r,component:"browserTab",tabComponent:"browserTab",title:"Browser",params:{workspaceId:n,browserId:r},position:we(e)})}export{Kt as DockviewBrowserContainer,Ot as consumeBrowserFresh,he as markBrowserFresh,oe as newBrowserId};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalPanel-C4ZPrnFP.js","assets/main-FwGkrDro.js","assets/main-CBlP-xQr.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{u as J,n as $,r as l,o as B,p as b,q as U,v as K,w as H,x as Q,y as X,j as f,z as Y,A as W,B as Z,C as ee,E as te,F as ne,X as re,G as ie,H as ae,J as oe,_ as le}from"./main-FwGkrDro.js";import{S as ce}from"./square-terminal-CiX1sbUO.js";const se=l.lazy(()=>le(()=>import("./TerminalPanel-C4ZPrnFP.js"),__vite__mapDeps([0,1,2])).then(e=>({default:e.TerminalPanel})));function ue(){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,o=>o.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 ue()}function z(e){return["terminalLayout",e]}const q=new Map;function fe(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 E(e,r,o){o?.queryClient&&o.queryClient.setQueryData(z(e),{layout:r,terminalIds:fe(r)});const a=q.get(e);a&&clearTimeout(a),q.set(e,setTimeout(()=>{q.delete(e),b.terminalLayout.save.mutate({workspaceId:e,tree:r}).catch(d=>{console.error("[DockviewTerminalContainer] failed to persist layout:",d)})},500))}function me(e){if(typeof e!="object"||e===null)return!1;const r=e;return typeof r.grid=="object"&&typeof r.panels=="object"}const de={name:"band",className:"dockview-theme-band dockview-terminal-tabs"};function pe({params:e,api:r}){const{visible:o}=ie(),a=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 f.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden","data-testid":`dockview-terminal-tab__visible-${o?"true":"false"}`,children:f.jsx(l.Suspense,{fallback:null,children:f.jsx(se,{workspaceId:e.workspaceId,terminalId:e.terminalId,visible:o,paneMetadata:d,autoFocus:e.autoFocus,onTitleChange:a})})})}function I(e){const[r,o]=l.useState(e.api.title??"Terminal"),[a,d]=l.useState(e.containerApi.panels.length);l.useEffect(()=>{const y=e.api.onDidTitleChange(()=>{o(e.api.title??"Terminal")});return()=>y.dispose()},[e.api]),l.useEffect(()=>{const y=e.containerApi,x=()=>d(y.panels.length),P=y.onDidAddPanel(x),D=y.onDidRemovePanel(x);return()=>{P.dispose(),D.dispose()}},[e.containerApi]);const c=e.containerApi,p=e.params.terminalId,h=l.useCallback(y=>{y.stopPropagation(),T.get(c.id)?.current?.onClose(p)},[c,p]),C=a>1;return f.jsxs("div",{className:"dv-default-tab",children:[f.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[f.jsx(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),f.jsx("span",{className:"truncate",children:r})]}),C&&f.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:h,title:"Close terminal",children:f.jsx(re,{className:"size-3"})})]})}const T=new Map,ye=Z.memo(function(r){const o=(r.location?.type??"grid")==="grid",a=r.containerApi.id,d=r.group.id;return f.jsxs("div",{className:"flex h-full w-full items-center justify-center","data-testid":o?"dockview-terminal__toolbar":void 0,children:[o&&f.jsxs(f.Fragment,{children:[f.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:()=>T.get(a)?.current?.onSplit(d,"right"),title:"Split right",children:f.jsx(ee,{className:"size-3.5"})}),f.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:()=>T.get(a)?.current?.onSplit(d,"below"),title:"Split down",children:f.jsx(te,{className:"size-3.5"})})]}),f.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:()=>T.get(a)?.current?.onAdd(d),title:"New terminal",children:f.jsx(ne,{className:"size-4"})})]})}),he={terminalTab:pe},ge={terminalTab:I};function Ce({workspaceId:e,visible:r,wsActive:o}){const a=J(),d=$(),c=l.useRef(null),p=l.useRef(!1),h=l.useRef(null),C=l.useRef(null),y=l.useRef(null),{data:x}=B({queryKey:z(e),queryFn:async()=>{const[{tree:t},{terminals:i}]=await Promise.all([b.terminalLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),b.terminal.list.query({workspaceId:e}).catch(()=>({terminals:[]}))]);return{layout:t,terminalIds:new Set(i.map(s=>s.terminalId))}},staleTime:Number.POSITIVE_INFINITY}),P=l.useRef(d);P.current=d;const D=l.useCallback(()=>{if(p.current)return;const t=c.current;t&&E(e,t.toJSON(),{queryClient:P.current})},[e]),A=l.useCallback(async t=>{const i=c.current;if(!i)return;const s=j(),m={id:s,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:s,autoFocus:!0}};t&&(m.position={referenceGroup:t}),i.addPanel(m);try{await b.terminal.create.mutate({workspaceId:e,id:s})}catch(n){console.error("[DockviewTerminalContainer] error creating terminal:",n)}},[e]),N=l.useCallback(async(t,i)=>{const s=c.current;if(!s)return;const m=j();s.addPanel({id:m,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:m,autoFocus:!0},position:{referenceGroup:t,direction:i}});try{await b.terminal.create.mutate({workspaceId:e,id:m})}catch(n){console.error("[DockviewTerminalContainer] error creating split terminal:",n)}},[e]),S=l.useCallback(t=>{const i=c.current;if(!i||i.panels.length<=1)return;U(i,t);const s=i.getPanel(t);s&&i.removePanel(s),requestAnimationFrame(()=>{const m=i.activePanel;m&&m.view.content.element.querySelector(".xterm-helper-textarea")?.focus()}),b.terminal.kill.mutate({terminalId:t}).catch(m=>{console.error("[DockviewTerminalContainer] failed to kill terminal:",m)})},[]);l.useEffect(()=>{if(!r)return;const t=()=>{const n=c.current?.activePanel;n&&n.view.content.element.querySelector(".xterm-helper-textarea")?.focus()},i=n=>{ae(c.current,n,()=>{requestAnimationFrame(t)})},s=n=>{oe(c.current,n,()=>{requestAnimationFrame(t)})},m=n=>{if(!h.current?.contains(document.activeElement))return;const u=n.key.toLowerCase();if(n.ctrlKey&&!n.metaKey&&u==="tab"){n.preventDefault(),n.stopPropagation(),i(n.shiftKey?-1:1);return}if(!(n.metaKey||n.ctrlKey))return;if(n.shiftKey&&(u==="["||u==="]")){n.preventDefault(),n.stopPropagation(),i(u==="]"?1:-1);return}if(!n.shiftKey&&(u==="["||u==="]")){n.preventDefault(),n.stopPropagation(),s(u==="]"?1:-1);return}const g=()=>{const w=c.current;if(!w||w.panels.length<=1)return!1;const _=w.activePanel;return _?(S(_.id),!0):!1};if(u==="t"&&!n.shiftKey)n.preventDefault(),n.stopPropagation(),A();else if(u==="w"&&!n.shiftKey)g()&&(n.preventDefault(),n.stopPropagation());else if(u==="d")if(n.metaKey&&!n.ctrlKey){n.preventDefault(),n.stopPropagation();const w=c.current?.activeGroup;if(!w)return;N(w.id,n.shiftKey?"below":"right")}else n.ctrlKey&&!n.metaKey&&!n.shiftKey?g()&&(n.preventDefault(),n.stopPropagation()):(n.preventDefault(),n.stopPropagation())};return window.addEventListener("keydown",m,!0),()=>window.removeEventListener("keydown",m,!0)},[r,S,N,A]),l.useLayoutEffect(()=>{if(!r)return;const t=c.current,i=h.current;if(!t||!i)return;const s=i.getBoundingClientRect();if(s.width>0&&s.height>0){t.layout(Math.round(s.width),Math.round(s.height),!0);return}const m=new ResizeObserver(n=>{const u=n[0];if(!u)return;const{width:v,height:g}=u.contentRect;v<=0||g<=0||(m.disconnect(),t.layout(Math.round(v),Math.round(g),!0))});return m.observe(i),()=>m.disconnect()},[r]),l.useEffect(()=>{if(!r)return;const t=requestAnimationFrame(()=>{const i=c.current?.activePanel;i&&i.view.content.element.querySelector(".xterm-helper-textarea")?.focus()});return()=>cancelAnimationFrame(t)},[r]),l.useEffect(()=>a.subscribeStatusEvents(t=>{if(t.workspaceId!==e)return;const i=c.current;if(i){if(t.kind==="terminal-created"&&typeof t.terminalId=="string"){if(i.getPanel(t.terminalId))return;i.addPanel({id:t.terminalId,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:t.terminalId},position:K(i)})}else if(t.kind==="terminal-killed"&&typeof t.terminalId=="string"){const s=i.getPanel(t.terminalId);s&&(i.removePanel(s),i.panels.length===0&&R(i,e))}}}),[a,e]);const k=l.useRef({onAdd:()=>{},onSplit:()=>{},onClose:()=>{}});k.current={onAdd:A,onSplit:N,onClose:S},l.useEffect(()=>()=>{const t=c.current;t&&T.delete(t.id),C.current?.(),C.current=null,y.current?.(),y.current=null},[]);const F=l.useRef(null);F.current=x?.layout??null;const G=l.useRef(null);G.current=x?.terminalIds??null;const L=l.useRef(r);L.current=r;const O=l.useCallback(t=>{const i=c.current;i&&i.id!==t.api.id&&T.delete(i.id),c.current=t.api,T.set(t.api.id,k);const s=F.current,m=G.current;if(s&&me(s)){p.current=!0;try{t.api.fromJSON(s)}catch(v){console.error("[DockviewTerminalContainer] fromJSON failed, creating default:",v),R(t.api,e)}let u=0;if(m){const v=t.api.panels.filter(g=>!m.has(g.id));for(const g of v)t.api.removePanel(g),u++;t.api.panels.length===0&&(R(t.api,e),u++)}setTimeout(()=>{p.current=!1},0),u>0&&E(e,t.api.toJSON(),{queryClient:P.current})}else be(t.api,e,P.current);H(t.api),C.current?.(),C.current=Q(t.api),y.current?.(),h.current&&(y.current=X(h.current,t.api));const n=()=>D();if(t.api.onDidLayoutChange(n),t.api.onDidAddPanel(n),t.api.onDidRemovePanel(n),t.api.onDidActivePanelChange(n),t.api.onDidAddGroup(n),t.api.onDidRemoveGroup(n),L.current&&h.current){const u=h.current.getBoundingClientRect();u.width>0&&u.height>0&&t.api.layout(Math.round(u.width),Math.round(u.height),!0)}},[e,D]),V=l.useMemo(()=>({visible:r&&o!==!1,wsActive:o!==!1}),[r,o]);return x?f.jsx("div",{ref:h,className:"flex h-full w-full flex-col overflow-hidden",children:f.jsx(Y.Provider,{value:V,children:f.jsx(W,{theme:de,className:"h-full",components:he,tabComponents:ge,defaultTabComponent:I,onReady:O,rightHeaderActionsComponent:ye})})}):f.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function R(e,r){const o=j();e.addPanel({id:o,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:r,terminalId:o},position:K(e)}),b.terminal.create.mutate({workspaceId:r,id:o}).catch(a=>{console.error("[DockviewTerminalContainer] error creating default terminal:",a)})}async function be(e,r,o){try{const{config:a}=await b.workspace.getTerminalConfig.query({workspaceId:r});if(a?.layout){const d=M(a.layout);if(d.length>0){for(const c of d)try{const p=j();e.addPanel({id:p,component:"terminalTab",tabComponent:"terminalTab",title:c.name??"Terminal",params:{workspaceId:r,terminalId:p,command:c.command,cwd:c.cwd,env:c.env},position:K(e)}),await b.terminal.create.mutate({workspaceId:r,id:p,command:c.command,cwd:c.cwd,env:c.env})}catch(p){console.error("[DockviewTerminalContainer] error creating terminal from config:",p)}E(r,e.toJSON(),{queryClient:o});return}}}catch{}R(e,r)}function M(e,r=0){if(r>10||typeof e!="object"||e===null)return[];const o=e;if("pane"in o&&typeof o.pane=="object"&&o.pane!==null){const a=o.pane;return[{name:typeof a.name=="string"?a.name:void 0,command:typeof a.command=="string"?a.command:void 0,cwd:typeof a.cwd=="string"?a.cwd:void 0,env:typeof a.env=="object"&&a.env!==null?a.env:void 0}]}if("children"in o&&Array.isArray(o.children)){const a=[];for(const d of o.children)a.push(...M(d,r+1));return a}return[]}export{Ce as DockviewTerminalContainer,j as newTerminalId};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{am as n,an as o}from"./main-FwGkrDro.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-CgpQP0mz.js";import{W as i}from"./main-FwGkrDro.js";import"./chunk-FMBD7UC4-DFsVS8Jr.js";import"./chunk-55IACEB6-CrLS-6CW.js";import"./chunk-QN33PNHL-CmVDL9Gh.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-CgpQP0mz.js";import{W as i}from"./main-FwGkrDro.js";import"./chunk-FMBD7UC4-DFsVS8Jr.js";import"./chunk-55IACEB6-CrLS-6CW.js";import"./chunk-QN33PNHL-CmVDL9Gh.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-B1WwbMDv.js";var e=4;function a(o){return r(o,e)}export{a as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{bM as h,r as o,bN as m,j as e,bO as j,bP as i,bQ as p,bR as n,bS as c,bT as S,bU as v,bV as u,bW as l,bX as d,bY as b}from"./main-FwGkrDro.js";function g({toolbarMenuItems:r}){const s=h(),x=s?{sidebar:s,main:100-s}:void 0,a=o.useRef(!0),f=o.useCallback(t=>{if(a.current){a.current=!1;return}t.sidebar!=null&&m(t.sidebar)},[]);return e.jsx("div",{className:"flex h-full w-full overflow-hidden bg-background text-foreground",children:e.jsxs(j,{orientation:"horizontal",defaultLayout:x,onLayoutChanged:f,children:[e.jsx(i,{id:"sidebar",defaultSize:n,minSize:n,maxSize:p,collapsible:!0,collapsedSize:"0%",children:e.jsx("div",{className:"h-full border-r border-border overflow-hidden",children:e.jsx(c,{toolbarMenuItems:r})})}),e.jsx(S,{className:"w-[3px] bg-transparent hover:bg-accent-foreground/20 active:bg-accent-foreground/30 transition-colors cursor-col-resize"}),e.jsx(i,{id:"main",minSize:"20%",children:e.jsx("div",{className:"flex-1 min-w-0 overflow-hidden",children:e.jsx("div",{className:"flex h-full items-center justify-center",children:e.jsxs("div",{className:"flex flex-col items-center gap-3 text-center px-8",children:[e.jsx(v,{className:"size-8 text-muted-foreground/30"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Select a workspace to get started"})]})})})})]})})}function k(){return u()||b?e.jsx(l,{children:e.jsx(g,{toolbarMenuItems:e.jsx(d,{})})}):e.jsx(l,{children:e.jsx(c,{toolbarMenuItems:e.jsx(d,{})})})}function N(){return u()||b?null:e.jsx("div",{className:"h-dvh pb-4 standalone:pb-[env(safe-area-inset-bottom)]",children:e.jsx(k,{})})}export{N as component};
|