@band-app/server 0.20.1 → 0.21.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.
Files changed (162) hide show
  1. package/dist/client/assets/DockviewBrowserContainer-_omnSiyJ.js +5 -0
  2. package/dist/client/assets/DockviewTerminalContainer-DAn_WCfx.js +2 -0
  3. package/dist/client/assets/TerminalPanel-CNPsPif8.js +5 -0
  4. package/dist/client/assets/{_basePickBy-Dcf1Y8Iq.js → _basePickBy-DtyMrmhl.js} +1 -1
  5. package/dist/client/assets/{_baseUniq-Cy98IGsx.js → _baseUniq-BJUkdL_v.js} +1 -1
  6. package/dist/client/assets/{arc-rOBphWj1.js → arc-yAV3EAnY.js} +1 -1
  7. package/dist/client/assets/{architectureDiagram-VXUJARFQ-C54lj_mp.js → architectureDiagram-VXUJARFQ-B3FpBxQF.js} +1 -1
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-IXpkKl99.js → blockDiagram-VD42YOAC-3LlBLqQC.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-eHkAJFz1.js → c4Diagram-YG6GDRKO-Be5RpvjZ.js} +1 -1
  10. package/dist/client/assets/channel-DbN6Vg7w.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-BVtvPQLw.js → chunk-4BX2VUAB-CISDQxrq.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-DWUF7TBt.js → chunk-55IACEB6-BfU__3ET.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-BT2NV-OP.js → chunk-B4BG7PRW-D4iHXw8l.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-Cg5CF9C8.js → chunk-DI55MBZ5-BAdhjTka.js} +1 -1
  15. package/dist/client/assets/{chunk-FMBD7UC4-B0SYeHBH.js → chunk-FMBD7UC4-Zwu4-L0P.js} +1 -1
  16. package/dist/client/assets/{chunk-QN33PNHL-C5tEKH2s.js → chunk-QN33PNHL-DxMovsgL.js} +1 -1
  17. package/dist/client/assets/{chunk-QZHKN3VN-B3eOtTKT.js → chunk-QZHKN3VN-vrDNXKJS.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-C2LU8iG2.js → chunk-TZMSLE5B-CX92zDel.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-BegLJbQe.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-BegLJbQe.js +1 -0
  21. package/dist/client/assets/clone-Cl7gVEL3.js +1 -0
  22. package/dist/client/assets/{cose-bilkent-S5V4N54A-DMEstRG3.js → cose-bilkent-S5V4N54A-GNlGGpMz.js} +1 -1
  23. package/dist/client/assets/{dagre-6UL2VRFP-Dnk33exg.js → dagre-6UL2VRFP-p1fgRXjW.js} +1 -1
  24. package/dist/client/assets/{diagram-PSM6KHXK-mrXKTY_T.js → diagram-PSM6KHXK-CYtWPBH-.js} +1 -1
  25. package/dist/client/assets/{diagram-QEK2KX5R-BzHK-hsq.js → diagram-QEK2KX5R-Cgd-_Ub3.js} +1 -1
  26. package/dist/client/assets/{diagram-S2PKOQOG-CQCxQKV-.js → diagram-S2PKOQOG-DAs62NY3.js} +1 -1
  27. package/dist/client/assets/{erDiagram-Q2GNP2WA-BPDJfava.js → erDiagram-Q2GNP2WA-DBI_1PZQ.js} +1 -1
  28. package/dist/client/assets/{flowDiagram-NV44I4VS-C6Mmdoua.js → flowDiagram-NV44I4VS-C8JqBNNX.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-JELNMOA3-DLbgXlJh.js → ganttDiagram-JELNMOA3-B_NTSbsU.js} +1 -1
  30. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-DVLRTDa6.js → gitGraphDiagram-V2S2FVAM-CSgrclqJ.js} +1 -1
  31. package/dist/client/assets/{graph-Cwyvupsz.js → graph-CnuI3kx8.js} +1 -1
  32. package/dist/client/assets/{highlighted-body-B3W2YXNL-C0bhSLak.js → highlighted-body-B3W2YXNL-B0miGNm_.js} +1 -1
  33. package/dist/client/assets/{index-DsTs1gei.js → index-7yDQgH1f.js} +1 -1
  34. package/dist/client/assets/{index-CbBtBBYr.js → index-B6S69IUm.js} +1 -1
  35. package/dist/client/assets/{index-FSq9CQql.js → index-BArE6nAN.js} +1 -1
  36. package/dist/client/assets/{index-8fmEfQXt.js → index-BOAi4k9G.js} +1 -1
  37. package/dist/client/assets/{index-CCvDsqEy.js → index-BWouWVU0.js} +1 -1
  38. package/dist/client/assets/{index-ERt8cxUV.js → index-BmMzlQLK.js} +1 -1
  39. package/dist/client/assets/{index-CqhJvfhF.js → index-Bz2VMYkX.js} +1 -1
  40. package/dist/client/assets/{index-CA4qMsBj.js → index-C4-1pvZ7.js} +1 -1
  41. package/dist/client/assets/{index-Bx_OaRaP.js → index-CmyTYJul.js} +1 -1
  42. package/dist/client/assets/{index-BzF5H3v-.js → index-CtkaVda1.js} +1 -1
  43. package/dist/client/assets/{index-UCQ1zVBi.js → index-D88tU2rQ.js} +1 -1
  44. package/dist/client/assets/{index-8qew1yXR.js → index-DSgvPpOw.js} +1 -1
  45. package/dist/client/assets/{index-fifqJXyx.js → index-DXAzUetQ.js} +1 -1
  46. package/dist/client/assets/{index-DWLuzOpi.js → index-DYeExVW-.js} +1 -1
  47. package/dist/client/assets/{index-BjRdyIjf.js → index-DtIW2F6f.js} +1 -1
  48. package/dist/client/assets/{index-BwEcNyXc.js → index-UiJjSfLA.js} +1 -1
  49. package/dist/client/assets/{index-CXNMB7pL.js → index-W_8A45Ak.js} +1 -1
  50. package/dist/client/assets/{index-BEfdqN9O.js → index-nNmyPk2g.js} +1 -1
  51. package/dist/client/assets/{infoDiagram-HS3SLOUP-7Hhl73vO.js → infoDiagram-HS3SLOUP-CsK1yEhl.js} +1 -1
  52. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-CJcXgH51.js → journeyDiagram-XKPGCS4Q-7ztemwUy.js} +1 -1
  53. package/dist/client/assets/{kanban-definition-3W4ZIXB7-CBsuk1vp.js → kanban-definition-3W4ZIXB7-Cre8PAMX.js} +1 -1
  54. package/dist/client/assets/{layout-ZjLAsNj-.js → layout-BM0hAxpp.js} +1 -1
  55. package/dist/client/assets/main-BgcIGjy5.css +1 -0
  56. package/dist/client/assets/{main-QmYiKgqv.js → main-p2Lo-pWV.js} +230 -230
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-doqFtLjy.js → mindmap-definition-VGOIOE7T-BjEgocYT.js} +1 -1
  58. package/dist/client/assets/{pieDiagram-ADFJNKIX-Bzaqqvl9.js → pieDiagram-ADFJNKIX-C4RjN3hy.js} +1 -1
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-DxzHu9fl.js → quadrantDiagram-AYHSOK5B-NEf3JRFz.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Cp3foAel.js → requirementDiagram-UZGBJVZJ-BeRnY69a.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-BQx6TKI3.js → sankeyDiagram-TZEHDZUN-DVODsg78.js} +1 -1
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-Cd_242bL.js → sequenceDiagram-WL72ISMW-D6joy57s.js} +1 -1
  63. package/dist/client/assets/{square-terminal-bliRzpRN.js → square-terminal-DHH8tUx5.js} +1 -1
  64. package/dist/client/assets/{stateDiagram-FKZM4ZOC-GZM9iqTD.js → stateDiagram-FKZM4ZOC-DsFp4qia.js} +1 -1
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-Dgk5Hjv7.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-D5mcm-Qu.js → timeline-definition-IT6M3QCI-0xcgjNhV.js} +1 -1
  67. package/dist/client/assets/{treemap-GDKQZRPO-CkKCE0F7.js → treemap-GDKQZRPO-BWb88BcP.js} +1 -1
  68. package/dist/client/assets/{workspace._workspaceId-CQVHqxcU.js → workspace._workspaceId-BGYd2hI-.js} +1 -1
  69. package/dist/client/assets/{workspace._workspaceId-DFvkHRHC.js → workspace._workspaceId-jOqDoJcM.js} +2 -2
  70. package/dist/client/assets/{xychartDiagram-PRI3JC2R-Djg2lfgU.js → xychartDiagram-PRI3JC2R--tkhYHwZ.js} +1 -1
  71. package/dist/openapi.json +85 -25
  72. package/dist/server/assets/{DockviewBrowserContainer-Btjtd2O1.js → DockviewBrowserContainer-bdNwZbjc.js} +62 -44
  73. package/dist/server/assets/{DockviewTerminalContainer-bMEUzx6R.js → DockviewTerminalContainer-B1Nw8LXB.js} +65 -46
  74. package/dist/server/assets/{TerminalPanel-DDazs1HR.js → TerminalPanel-Badqj0m0.js} +67 -11
  75. package/dist/server/assets/{_basePickBy-BR2ebl6H.js → _basePickBy-D8ok8_jI.js} +2 -2
  76. package/dist/server/assets/{_baseUniq-C7-_tYXk.js → _baseUniq--LQjrjoo.js} +1 -1
  77. package/dist/server/assets/_tanstack-start-manifest_v-CIcSNV55.js +4 -0
  78. package/dist/server/assets/{arc-CWFSWY_u.js → arc-UlCdTTPZ.js} +1 -1
  79. package/dist/server/assets/{architecture-7HQA4BMR-DDMO671Z.js → architecture-7HQA4BMR-g585WmZs.js} +6 -6
  80. package/dist/server/assets/{architectureDiagram-VXUJARFQ-vPxmruSN.js → architectureDiagram-VXUJARFQ-kdf4spX4.js} +6 -6
  81. package/dist/server/assets/{blockDiagram-VD42YOAC-DGV6m5iW.js → blockDiagram-VD42YOAC-XJWMoZPI.js} +6 -6
  82. package/dist/server/assets/{c4Diagram-YG6GDRKO-9PjJESuA.js → c4Diagram-YG6GDRKO-BULLTo2O.js} +2 -2
  83. package/dist/server/assets/{channel-DzyKDZfe.js → channel-N781S9-q.js} +1 -1
  84. package/dist/server/assets/{chunk-4BX2VUAB-MyrUiBmB.js → chunk-4BX2VUAB-D4MPtIqQ.js} +1 -1
  85. package/dist/server/assets/{chunk-55IACEB6-CJ4fKFif.js → chunk-55IACEB6-BsRaN4wq.js} +1 -1
  86. package/dist/server/assets/{chunk-B4BG7PRW-CKzqfTU-.js → chunk-B4BG7PRW-kuOFZXeP.js} +4 -4
  87. package/dist/server/assets/{chunk-DI55MBZ5-DrXLxcKs.js → chunk-DI55MBZ5-ccubr48T.js} +3 -3
  88. package/dist/server/assets/{chunk-FMBD7UC4-yeB6m7NE.js → chunk-FMBD7UC4-BNEgTZts.js} +1 -1
  89. package/dist/server/assets/{chunk-QN33PNHL-qCq8pCkn.js → chunk-QN33PNHL-gAa-_mPg.js} +1 -1
  90. package/dist/server/assets/{chunk-QZHKN3VN-CHvK5Ic5.js → chunk-QZHKN3VN-qid0EAJk.js} +1 -1
  91. package/dist/server/assets/{chunk-TZMSLE5B-wF9ZPcJp.js → chunk-TZMSLE5B-BAwrhrCM.js} +1 -1
  92. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-D1OcdIXp.js → classDiagram-2ON5EDUG-D48G1fOA.js} +5 -5
  93. package/dist/server/assets/{classDiagram-2ON5EDUG-D1OcdIXp.js → classDiagram-v2-WZHVMYZB-D48G1fOA.js} +5 -5
  94. package/dist/server/assets/{clone-BH4YtRmr.js → clone-g6aLZKbC.js} +1 -1
  95. package/dist/server/assets/{cose-bilkent-S5V4N54A-BiP6P-09.js → cose-bilkent-S5V4N54A-GH832JBk.js} +1 -1
  96. package/dist/server/assets/{dagre-6UL2VRFP-BKfzYlJQ.js → dagre-6UL2VRFP-DCM_EeeJ.js} +6 -6
  97. package/dist/server/assets/{diagram-PSM6KHXK-BF6r9xQS.js → diagram-PSM6KHXK-Wsb4GT24.js} +7 -7
  98. package/dist/server/assets/{diagram-QEK2KX5R-CxL6qeVX.js → diagram-QEK2KX5R--ln7zI47.js} +6 -6
  99. package/dist/server/assets/{diagram-S2PKOQOG-CUKugrbt.js → diagram-S2PKOQOG-nDhXR9ui.js} +6 -6
  100. package/dist/server/assets/{erDiagram-Q2GNP2WA-CRPjeaHB.js → erDiagram-Q2GNP2WA-CMa2Pz-v.js} +4 -4
  101. package/dist/server/assets/{flowDiagram-NV44I4VS-CXnLZPl0.js → flowDiagram-NV44I4VS-4gEGHH9W.js} +5 -5
  102. package/dist/server/assets/{ganttDiagram-JELNMOA3-CP5EwGxj.js → ganttDiagram-JELNMOA3-BOS7aF_7.js} +1 -1
  103. package/dist/server/assets/{gitGraph-G5XIXVHT-UYMoyufq.js → gitGraph-G5XIXVHT-DPzSD5yq.js} +6 -6
  104. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CZNtwgUE.js → gitGraphDiagram-V2S2FVAM-CKZ8qTSA.js} +7 -7
  105. package/dist/server/assets/{graph-BB1_2Q0x.js → graph-CdCcTp1P.js} +2 -2
  106. package/dist/server/assets/{highlighted-body-B3W2YXNL-C6BqMnvu.js → highlighted-body-B3W2YXNL-Dmr6rOWq.js} +1 -1
  107. package/dist/server/assets/{index-lmhecPWc.js → index-3AJisjJ-.js} +2 -2
  108. package/dist/server/assets/{index-DH3a6-do.js → index-BQy_SzGG.js} +2 -2
  109. package/dist/server/assets/{index-Ct5-lZTn.js → index-BXNtERIJ.js} +2 -2
  110. package/dist/server/assets/{index-Bme4JhwA.js → index-Bvxb7XFW.js} +1 -1
  111. package/dist/server/assets/{index-Dqk2jQZ7.js → index-C4WwCpyx.js} +2 -2
  112. package/dist/server/assets/{index-DLEtsdeb.js → index-CZpP5Q96.js} +2 -2
  113. package/dist/server/assets/{index-BUm0x4GN.js → index-D7vNc-qo.js} +2 -2
  114. package/dist/server/assets/{index-BbUtF3L1.js → index-DAc69z6c.js} +2 -2
  115. package/dist/server/assets/{index-DrWaYPW7.js → index-DBfcn5gX.js} +2 -2
  116. package/dist/server/assets/{index-DsrV0B5O.js → index-DTBi6jO_.js} +5 -5
  117. package/dist/server/assets/{index-D5hMY11m.js → index-Ddp0lHMA.js} +4 -4
  118. package/dist/server/assets/{index-D49PP401.js → index-DinEbWse.js} +3 -3
  119. package/dist/server/assets/{index-CMxtCPk9.js → index-Dm8dBBAU.js} +2 -2
  120. package/dist/server/assets/{index-Bay77lf3.js → index-DtlVc4yR.js} +2 -2
  121. package/dist/server/assets/{index-DLV7EX0H.js → index-DzVgMYHM.js} +1 -1
  122. package/dist/server/assets/{index-BHQ8bMg_.js → index-VEnlzI7K.js} +3 -3
  123. package/dist/server/assets/{index-B5V3PU-n.js → index-gQzM4HJi.js} +2 -2
  124. package/dist/server/assets/{index-DC1gaho7.js → index-joSkjgFP.js} +5 -5
  125. package/dist/server/assets/{info-VBDWY6EO-X8DJfp6J.js → info-VBDWY6EO-BZp8zZQH.js} +6 -6
  126. package/dist/server/assets/{infoDiagram-HS3SLOUP-BqzWimk3.js → infoDiagram-HS3SLOUP-CLZPZZt4.js} +5 -5
  127. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-TTA7OGV5.js → journeyDiagram-XKPGCS4Q-DqIllasj.js} +4 -4
  128. package/dist/server/assets/{kanban-definition-3W4ZIXB7-DxNhleha.js → kanban-definition-3W4ZIXB7-B3yTD6nz.js} +2 -2
  129. package/dist/server/assets/{layout-CdOkK52n.js → layout-DbYj2Jh8.js} +4 -4
  130. package/dist/server/assets/{mermaid-3ZIDBTTL-Cof8t4J_.js → mermaid-3ZIDBTTL-Bf-b4R3F.js} +1 -1
  131. package/dist/server/assets/{mermaid-parser.core-Cqz_DwKC.js → mermaid-parser.core-BPo5KaJR.js} +11 -11
  132. package/dist/server/assets/{mindmap-definition-VGOIOE7T-DeGYTIld.js → mindmap-definition-VGOIOE7T-BsUTGWbP.js} +3 -3
  133. package/dist/server/assets/{packet-DYOGHKS2-TuIP3-Qx.js → packet-DYOGHKS2-BNRq6Npr.js} +6 -6
  134. package/dist/server/assets/{pie-VRWISCQL-DH44dC73.js → pie-VRWISCQL-Dbo7CqNc.js} +6 -6
  135. package/dist/server/assets/{pieDiagram-ADFJNKIX-BPUa7SIP.js → pieDiagram-ADFJNKIX-BSiV1fdc.js} +7 -7
  136. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-CkonmhO6.js → quadrantDiagram-AYHSOK5B-DzkaSCma.js} +1 -1
  137. package/dist/server/assets/{radar-ZZBFDIW7-oedT_dlV.js → radar-ZZBFDIW7-C5pSAtKi.js} +6 -6
  138. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-B39ng8tF.js → requirementDiagram-UZGBJVZJ--OE8EeQy.js} +3 -3
  139. package/dist/server/assets/{router-Dz7oMBKX.js → router-D6HwaUre.js} +851 -445
  140. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-61A7I6h9.js → sankeyDiagram-TZEHDZUN--_Lp6TNE.js} +1 -1
  141. package/dist/server/assets/{sequenceDiagram-WL72ISMW-CXIpjJu4.js → sequenceDiagram-WL72ISMW-Cnkewzyp.js} +3 -3
  142. package/dist/server/assets/{square-terminal-D86hckth.js → square-terminal-D02AASv1.js} +1 -1
  143. package/dist/server/assets/{stateDiagram-FKZM4ZOC-DSp5PEkn.js → stateDiagram-FKZM4ZOC-Rrf6wgHM.js} +8 -8
  144. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-B5TiwK_8.js → stateDiagram-v2-4FDKWEC3-CLZxE5q1.js} +4 -4
  145. package/dist/server/assets/{timeline-definition-IT6M3QCI-DvosEzgh.js → timeline-definition-IT6M3QCI-CXfT4jgF.js} +2 -2
  146. package/dist/server/assets/{treemap-GDKQZRPO-BOdkONyj.js → treemap-GDKQZRPO-CLL_lvY2.js} +6 -6
  147. package/dist/server/assets/{workspace._workspaceId-Dcw9dnbJ.js → workspace._workspaceId-CwFiKcq0.js} +1 -1
  148. package/dist/server/assets/{workspace._workspaceId-CvbciLVC.js → workspace._workspaceId-DXxXFkGR.js} +3 -3
  149. package/dist/server/assets/{xychartDiagram-PRI3JC2R-C22gtuGl.js → xychartDiagram-PRI3JC2R-DPZMWcNA.js} +1 -1
  150. package/dist/server/server.js +2 -2
  151. package/dist/start-server.mjs +477 -220
  152. package/package.json +4 -4
  153. package/dist/client/assets/DockviewBrowserContainer-DqC_h-bo.js +0 -5
  154. package/dist/client/assets/DockviewTerminalContainer-DyBQtb3U.js +0 -2
  155. package/dist/client/assets/TerminalPanel-CFDxHN4Q.js +0 -5
  156. package/dist/client/assets/channel-DDj6wNE3.js +0 -1
  157. package/dist/client/assets/classDiagram-2ON5EDUG-DEMr_v7L.js +0 -1
  158. package/dist/client/assets/classDiagram-v2-WZHVMYZB-DEMr_v7L.js +0 -1
  159. package/dist/client/assets/clone-BsghsKY1.js +0 -1
  160. package/dist/client/assets/main-BzKe6bG7.css +0 -1
  161. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-yLFyTsJU.js +0 -1
  162. package/dist/server/assets/_tanstack-start-manifest_v-TcfwNbuH.js +0 -4
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@band-app/server",
3
- "version": "0.20.1",
3
+ "version": "0.21.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/coding-agent": "^0.20.1",
121
- "@band-app/ui": "^0.20.1",
122
- "@band-app/logger": "^0.20.1"
120
+ "@band-app/coding-agent": "^0.21.0",
121
+ "@band-app/logger": "^0.21.0",
122
+ "@band-app/ui": "^0.21.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 he,r,bU as I,cr as L,cs as M,ct as De,p as B,cu as Pe,cv as Te,j as a,cw as ae,cp as Ae,cx as Ee,cy as Ie,cz as Fe,cA as Be,cB as Ue,cC as qe,cD as Le,cE as Me,cF as ze,cG as Q,cH as Oe,b_ as Ke,ck as $e,X as be,cI 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-QmYiKgqv.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 l=!1;const d={};for(const[c,h]of Object.entries(n)){const g=o.get(c);if(g&&typeof h=="object"&&h!==null&&typeof h.params=="object"&&h.params!==null){const w=h.params;if(!w.initialUrl){d[c]={...h,params:{...w,initialUrl:g}},l=!0;continue}}d[c]=h}return l?{...e,panels:d}:e}const dt={caseSensitive:!1,wholeWord:!1,regex:!1};function ft({key:e,keyName:o}){const[n,l]=r.useState(!1),[d,c]=r.useState(""),[h,g]=r.useState(dt),[w,C]=r.useState(null),x=r.useRef(null),R=r.useRef(e);R.current=e;const F=r.useRef(null),_=r.useCallback(S=>o==="browserId"?S.browser_id:S.workspace_id,[o]),T=r.useCallback((S={})=>({[o]:R.current,...S}),[o]),A=r.useCallback(()=>{requestAnimationFrame(()=>{x.current?.focus(),x.current?.select()})},[]),j=r.useCallback(async(S,t={})=>{if(I){if(!S){C(null),F.current=null;try{await L("browser_stop_find_in_page",T({action:"clearSelection"}))}catch{}return}(t.findNext??!1)||(C(null),F.current=null);try{const i=await L("browser_find_in_page",T({text:S,options:{matchCase:h.caseSensitive,findNext:t.findNext??!1,forward:t.forward??!0}}));typeof i=="number"&&(F.current=i)}catch(i){console.error("browser_find_in_page failed:",i)}}},[T,h.caseSensitive]),E=r.useCallback(()=>{l(!1),c(""),C(null),F.current=null,I&&L("browser_stop_find_in_page",T({action:"clearSelection"})).catch(()=>{})},[T]),v=r.useCallback(()=>{l(!0),A()},[A]);r.useEffect(()=>{n&&j(d)},[d,n,j]),r.useEffect(()=>{if(!I)return;let S;return(async()=>S=await M("browser-found-in-page",t=>{_(t.payload)===R.current&&(F.current!==null&&t.payload.request_id!==F.current||C({total:t.payload.matches,current:t.payload.active_match_ordinal}))}))(),()=>S?.()},[_]),r.useEffect(()=>{if(!I)return;let S;return(async()=>S=await M("browser-find-shortcut",t=>{_(t.payload)===R.current&&(l(!0),A())}))(),()=>S?.()},[A,_]),r.useEffect(()=>{if(!I)return;let S;return(async()=>S=await M("browser-url-changed",t=>{_(t.payload)===R.current&&t.payload.loading&&E()}))(),()=>S?.()},[E,_]);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:h,setOptions:g,matchInfo:w,findNext:N,findPrevious:z,searchBarRef:x}}const pt=50,ht=100;function bt(e){const{key:o,keyName:n,workspaceId:l,currentUrlRef:d,setInputUrl:c,inputUrl:h,onNavigate:g}=e,w=ft({key:o,keyName:n}),C=r.useRef(!1),[x,R]=r.useState([]),[F,_]=r.useState(!1),[T,A]=r.useState(0);De(F);const j=r.useCallback(()=>{_(!1),R([]),A(0)},[]);r.useEffect(()=>{if(!C.current)return;const t=h.trim();if(t===""){j();return}if(t===d.current.trim()){j();return}let i=!1;const p=setTimeout(()=>{B.history.search.query({workspaceId:l,query:t,limit:8}).then(u=>{if(!i){if(u.entries.length===0){j();return}R(u.entries),_(!0),A(0)}}).catch(()=>{i||j()})},pt);return()=>{i=!0,clearTimeout(p)}},[h,l,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(F){if(t.key==="ArrowDown"){t.preventDefault(),A(i=>Math.min(i+1,x.length-1));return}if(t.key==="ArrowUp"){t.preventDefault(),A(i=>Math.max(i-1,0));return}if(t.key==="Enter"){const i=x[T];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(h);return}if(t.key==="Escape"){t.preventDefault(),c(d.current);const i=t.currentTarget;requestAnimationFrame(()=>{i.isConnected&&i.select()})}},[h,g,c,d,F,x,T,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(),w.open())},[w]),S=r.useCallback(async()=>{if(I)try{await L("browser_toggle_dev_tools",{[n]:o})}catch(t){console.error("browser_toggle_dev_tools failed:",t)}},[o,n]);return{find:w,addressInputFocusedRef:C,handleAddressFocus:E,handleAddressBlur:v,handleAddressKeyDown:N,handlePaneKeyDown:z,handleToggleDevTools:S,autocomplete:{isOpen:F,items:x,selectedIndex:T,close:j,setSelectedIndex:A},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:l}=e,d=Pe(),[c,h]=r.useState(null),g=r.useRef(!1);return r.useEffect(()=>{if(!I||!o)return;let w=!1;if(d){if(!n)return;const C=l.current;(async()=>{try{const x=await L("browser_capture_page",C);!w&&x&&(Te.flushSync(()=>h(x)),await le())}catch{}w||(g.current=!0,L("browser_pause_media",C).catch(()=>{}),L("browser_hide",C).catch(()=>{}))})()}else{const C=g.current;if(g.current=!1,C&&n){const x=l.current;L("browser_show",x).catch(()=>{}),L("browser_resume_media",x).catch(()=>{}),(async()=>(await le(),w||h(null)))()}else h(null)}return()=>{w=!0}},[d,o,n,l]),{snapshot:c}}let H=new Set;const ee=new Set;let X=!1;function wt(e){const o=e(H);if(o!==H){H=o;for(const n of ee)n()}}function ue(e){const o=e.toLowerCase();!o||H.has(o)||wt(n=>{const l=new Set(n);return l.add(o),l})}function yt(){X||I&&(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 H}function xt(){const e=r.useSyncExternalStore(gt,de,de);return{isOverriddenHost:r.useCallback(n=>{if(!n)return!1;let l;try{l=new URL(n).hostname.toLowerCase()}catch{return!1}return e.has(l)},[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,l)=>{const d=l===e.selectedIndex;return a.jsx("li",{children:a.jsxs("button",{type:"button",onMouseDown:c=>{c.preventDefault(),o(n.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:[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 l of e){const d=te(l.lastVisitedAt);let c=o.get(d);c||(c={label:St(d),entries:[]},o.set(d,c),n.push(d)),c.entries.push(l)}return n.map(l=>o.get(l))}function te(e){const o=new Date(e),n=o.getFullYear(),l=String(o.getMonth()+1).padStart(2,"0"),d=String(o.getDate()).padStart(2,"0");return`${n}-${l}-${d}`}function St(e){const o=new Date,n=te(o.getTime()),l=new Date(o.getFullYear(),o.getMonth(),o.getDate()-1),d=te(l.getTime());if(e===n)return"Today";if(e===d)return"Yesterday";const[c,h,g]=e.split("-").map(Number),w=new Date(c,h-1,g);return Math.floor((Date.now()-w.getTime())/(1440*60*1e3))<=7?w.toLocaleDateString(void 0,{weekday:"long",month:"short",day:"numeric"}):w.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 Rt({workspaceId:e,onNavigate:o}){const n=r.useId(),[l,d]=r.useState(!1),[c,h]=r.useState(""),[g,w]=r.useState([]),[C,x]=r.useState(!1),[R,F]=r.useState(0),_=r.useCallback(()=>{F(v=>v+1)},[]);r.useEffect(()=>{if(!l)return;let v=!1;x(!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||w(p.entries)}).catch(()=>{v||w([])}).finally(()=>{v||x(!1)})},N?Ct:0);return()=>{v=!0,clearTimeout(t)}},[l,c,e,R]);const T=r.useMemo(()=>_t(g),[g]),A=r.useCallback(v=>{o(v),d(!1)},[o]),j=r.useCallback(async v=>{await B.history.delete.mutate({id:v,workspaceId:e}).catch(()=>{}),_()},[_,e]),E=r.useCallback(async v=>{await B.history.clear.mutate({workspaceId:e,range:v}).catch(()=>{}),_()},[_,e]);return a.jsxs(Ee,{open:l,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=>h(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…"}):T.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"}):T.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:()=>A(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(Ue,{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(qe,{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(Q,{onSelect:()=>E("hour"),children:"Last hour"}),a.jsx(Q,{onSelect:()=>E("day"),children:"Last 24 hours"}),a.jsx(Q,{onSelect:()=>E("week"),children:"Last week"}),a.jsx(Q,{onSelect:()=>E("all"),children:"All time"})]})]})})]})]})}function Dt(){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:l,workspaceId:d}=e,[c,h]=r.useState(()=>l??fe),[g,w]=r.useState(()=>l??fe),[C,x]=r.useState(!1),[R,F]=r.useState(!1),_=r.useRef(!1),T=r.useRef(null),A=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:R,visible:o.isVisible&&e.wsActive!==!1,ipcKeyRef:t}),{isOverriddenHost:p}=xt(),u=r.useCallback(()=>{const y=T.current;if(!y)return null;const b=y.getBoundingClientRect();return{x:b.left+1,y:b.top,width:Math.max(0,b.width-2),height:b.height}},[]),s=r.useCallback(async(y,b)=>{if(I)return L(y,b)},[]);r.useEffect(()=>{if(!n||l)return;let y=!1;return B.browsers.get.query({browserId:n}).then(b=>{if(y)return;const m=b.browser?.workspaceId;m&&!S.current&&z(m);const k=b.browser?.url;!k||k===""||k===$||(h(k),w(k),_.current?s("browser_navigate",{browserId:n,url:k}).catch(()=>{}):j.current=k)}).catch(()=>{}),()=>{y=!0}},[n,l,s]),r.useEffect(()=>{if(!I||R||A.current)return;const y=T.current;if(!y)return;let b=!1;const m=async()=>{if(b||_.current||A.current)return;const K=u();if(!(!K||K.width===0||K.height===0)){k.disconnect(),A.current=!0;try{await s("browser_create",{browserId:n,...K,url:v.current||$}),_.current=!0,F(!0);const V=j.current;V&&(j.current=null,await s("browser_navigate",{browserId:E.current,url:V}))}catch(V){console.error("Failed to create browser webview:",V)}finally{A.current=!1}}},k=new ResizeObserver(()=>{m()});k.observe(y);const q=setTimeout(m,50);return()=>{b=!0,clearTimeout(q),k.disconnect()}},[R,u,s,n]);const f=r.useRef(null);r.useEffect(()=>{if(!I)return;let y,b;return(async()=>(y=await M("browser-url-changed",m=>{if(m.payload.browser_id!==E.current)return;const k=m.payload.url;if(x(m.payload.loading),k===$)return;h(k),ve.current||w(k),f.current&&clearTimeout(f.current),f.current=setTimeout(()=>{B.browsers.navigate.mutate({browserId:E.current,url:k}).catch(()=>{})},500);let q;try{q=`${new URL(k).origin}/favicon.ico`,Pt(E.current,q)}catch{}!m.payload.loading&&S.current&&B.history.record.mutate({workspaceId:S.current,url:k,faviconUrl:q}).catch(()=>{})}),b=await M("browser-title-changed",m=>{if(m.payload.browser_id===E.current&&m.payload.title){o.setTitle(m.payload.title);const k=v.current;k&&k!==$&&S.current&&B.history.updateMeta.mutate({workspaceId:S.current,url:k,title:m.payload.title}).catch(()=>{})}})))(),()=>{if(y?.(),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(!I||!R)return;const y=q=>K=>console.error(`[BrowserPane] ${q} failed`,K),b=()=>{const q=u();q&&q.width>0&&q.height>0&&s("browser_set_bounds",{browserId:n,...q}).catch(y("browser_set_bounds")),s("browser_show",{browserId:n}).catch(y("browser_show"))},m=()=>{s("browser_hide",{browserId:n}).catch(y("browser_hide"))},k=o.onDidVisibilityChange(q=>{q.isVisible?b():m()});return()=>{k.dispose()}},[o,R,u,s,n]),r.useEffect(()=>{if(!I||!R)return;const y=e.wsActive!==!1,b=m=>k=>console.error(`[BrowserPane] ${m} failed`,k);if(!y)s("browser_hide",{browserId:n}).catch(b("browser_hide"));else if(o.isVisible){const m=u();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,R,u,s,n]),r.useEffect(()=>{if(!I||!R)return;const y=T.current;if(!y)return;const b=new ResizeObserver(()=>{const m=u();!m||m.width===0||m.height===0||s("browser_set_bounds",{browserId:n,...m}).catch(()=>{})});return b.observe(y),()=>b.disconnect()},[R,u,s,n]),r.useEffect(()=>()=>{if(I){const y=E.current;L("browser_destroy",{browserId:y}).catch(()=>{})}},[]);const D=r.useCallback(async y=>{let b=y.trim();if(!b){if(h(""),w(""),x(!1),_.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)}`),h(b),w(b),x(!0),_.current)try{await s("browser_navigate",{browserId:n,url:b})}catch(m){console.error("browser_navigate failed:",m)}else j.current=b},[s,n]),P=r.useCallback(async()=>{try{await s("browser_go_back",{browserId:n})}catch(y){console.error("browser_go_back failed:",y)}},[s,n]),U=r.useCallback(async()=>{try{await s("browser_go_forward",{browserId:n})}catch(y){console.error("browser_go_forward failed:",y)}},[s,n]),O=r.useCallback(async()=>{try{x(!0),await s("browser_reload",{browserId:n})}catch(y){console.error("browser_reload failed:",y)}},[s,n]),J=r.useCallback(async()=>{try{await s("browser_eval",{browserId:n,js:"window.stop()"}),x(!1)}catch{x(!1)}},[s,n]),{find:xe,addressInputFocusedRef:ve,handleAddressFocus:je,handleAddressBlur:Ce,handleAddressKeyDown:Ne,handlePaneKeyDown:_e,handleToggleDevTools:Se,autocomplete:ke,paneDataAttrs:Re}=bt({key:n,keyName:"browserId",workspaceId:N,currentUrlRef:v,setInputUrl:w,inputUrl:g,onNavigate:D});return n?I?a.jsxs("div",{className:"flex h-full w-full flex-col",onKeyDown:_e,...Re,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:P,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:U,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(Dt,{}):null,a.jsx("input",{type:"text",value:g,onChange:y=>w(y.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(Rt,{workspaceId:N,onNavigate:D}):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:D})]}),a.jsx(jt,{find:xe}),a.jsx("div",{ref:T,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 l=Y.get(e);l&&clearTimeout(l),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 Ut={name:"band",className:"dockview-theme-band dockview-browser-tabs"};function qt({params:e,api:o}){const{visible:n}=ot();if(!e.workspaceId||!e.browserId)return null;const l={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:l,api:o})})}function ye(e){const[o,n]=r.useState(e.api.title??"New Tab"),[l,d]=r.useState(!1),c=e.params.browserId,h=At(c),g=r.useRef(h);h!==g.current&&(g.current=h,l&&d(!1)),r.useEffect(()=>{const x=e.api.onDidTitleChange(()=>n(e.api.title??"New Tab"));return()=>x.dispose()},[e.api]);const w=r.useCallback(x=>{x.stopPropagation(),ge.current?.(c)},[c]),C=h&&!l;return a.jsxs("div",{className:"dv-default-tab",children:[a.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[C?a.jsx("img",{src:h,alt:"",className:"size-3.5 shrink-0",onError:()=>d(!0)}):a.jsx(ae,{className:"size-3.5 shrink-0 text-muted-foreground"}),a.jsx("span",{className:"truncate",children:o})]}),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:w,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",l=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(l,"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(l,"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(l),title:"New browser tab",children:a.jsx(st,{className:"size-4"})})]})}),Mt={browserTab:qt},zt={browserTab:ye};function $t({workspaceId:e,visible:o,wsActive:n}){const l=He(),d=Ve(),c=r.useRef(null),h=r.useRef(!1),g=r.useRef(null),w=r.useRef(null),C=r.useRef(null),{data:x}=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 u of i)u.url&&u.url!=="about:blank"&&p.set(u.id,u.url);return{layout:t,browserIds:new Set(i.map(u=>u.id)),urls:p}},staleTime:Number.POSITIVE_INFINITY}),R=r.useRef(d);R.current=d;const F=r.useCallback(()=>{if(h.current)return;const t=c.current;t&&Z(e,t.toJSON(),{queryClient:R.current})},[e]),_=r.useCallback(async(t,i)=>{const p=c.current;if(!p)return;const u=se();pe(u);const s=i?.initialUrl,f={id:u,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:u,...s?{initialUrl:s}:{}}};t&&(f.position={referenceGroup:t}),p.addPanel(f);try{await B.browsers.create.mutate({workspaceId:e,id:u,...s?{url:s}:{}})}catch(D){console.error("[DockviewBrowserContainer] error pre-creating browser:",D)}},[e]),T=r.useCallback(async(t,i)=>{const p=c.current;if(!p)return;const u=se();pe(u);try{p.addPanel({id:u,component:"browserTab",tabComponent:"browserTab",title:"New Tab",params:{workspaceId:e,browserId:u},position:{referenceGroup:t,direction:i}})}catch(s){console.error("[DockviewBrowserContainer] split addPanel threw:",s);return}try{await B.browsers.create.mutate({workspaceId:e,id:u})}catch(s){console.error("[DockviewBrowserContainer] error creating split browser:",s)}},[e]),A=r.useCallback(t=>{const i=c.current;if(!i)return;We(i,t);const p=i.getPanel(t);p&&i.removePanel(p),i.panels.length===0&&G(i,e),requestAnimationFrame(()=>{const u=i.activePanel;u&&u.view.content.element.querySelector("[data-band-address-input]")?.focus()}),B.browsers.remove.mutate({browserId:t}).catch(u=>{console.error("[DockviewBrowserContainer] failed to remove browser:",u)})},[e]);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)})},u=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(),_().then(()=>{requestAnimationFrame(()=>{const P=c.current?.activePanel;P&&P.view.content.element.querySelector("[data-band-address-input]")?.focus()})});else if(f==="w"&&!s.shiftKey){const P=c.current;if(!P)return;s.preventDefault(),s.stopPropagation();const U=P.activePanel;U&&A(U.id)}else if(f==="d"){s.preventDefault(),s.stopPropagation();const P=c.current;if(!P)return;const U=P.activeGroup;if(!U)return;const O=s.shiftKey?"below":"right";T(U.id,O)}else if(f==="r"&&!s.shiftKey&&I){const P=c.current;if(!P)return;const O=P.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",u,!0),()=>window.removeEventListener("keydown",u,!0)},[o,A,T,_]),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 u=new ResizeObserver(s=>{const f=s[0];if(!f)return;const{width:D,height:P}=f.contentRect;D<=0||P<=0||(u.disconnect(),t.layout(Math.round(D),Math.round(P),!0))});return u.observe(i),()=>u.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(!I)return;let t;return(async()=>t=await M("browser-new-tab-shortcut",i=>{const p=c.current;if(!p)return;const u=i.payload.browser_id;!u||!p.getPanel(u)||_().then(()=>{requestAnimationFrame(()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()})})}))(),()=>t?.()},[_]),r.useEffect(()=>{if(!I)return;let t,i=!1;return(async()=>{const p=await M("browser-open-window",u=>{const s=c.current;if(!s)return;const f=u.payload.browser_id,D=f?s.getPanel(f):void 0;if(!D)return;const P=D.group?.id,U=u.payload.url;U&&_(P,{initialUrl:U}).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?.()}},[_]),r.useEffect(()=>{if(!I)return;const t=[];let i=!1;const p=()=>{c.current?.activePanel?.view.content.element.querySelector("[data-band-address-input]")?.focus()};return(async()=>{const u=await Promise.all([M("browser-split-shortcut",s=>{const f=c.current;if(!f)return;const D=f.getPanel(s.payload.browser_id);D?.group&&T(D.group.id,s.payload.direction)}),M("browser-close-shortcut",s=>{const f=c.current;if(!f)return;const D=s.payload.browser_id;f.getPanel(D)&&A(D)}),M("browser-cycle-shortcut",s=>{const f=c.current;if(!f)return;const D=f.getPanel(s.payload.browser_id);if(!D)return;D.api.setActive();const P=()=>requestAnimationFrame(p);s.payload.target==="tabs"?ie(c.current,s.payload.direction,P):ce(c.current,s.payload.direction,P)})]);if(i)for(const s of u)s();else t.push(...u)})(),()=>{i=!0;for(const u of t)u()}},[T,A]),r.useEffect(()=>{const t=()=>{const i=g.current;if(!i||i.offsetParent===null)return;const p=i.querySelectorAll("[data-band-address-input]");for(const u of p)if(u.offsetParent!==null){u.focus({preventScroll:!0});return}};return window.addEventListener("band:focus-browser",t),()=>window.removeEventListener("band:focus-browser",t)},[]),r.useEffect(()=>l.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&&G(i,e))}}}),[l,e]),W.current={onAdd:_,onSplit:T},ge.current=A,r.useEffect(()=>()=>{w.current?.(),w.current=null,C.current?.(),C.current=null},[]);const j=r.useRef(null);j.current=x?.layout??null;const E=r.useRef(null);E.current=x?.browserIds??null;const v=r.useRef(null);v.current=x?.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,u=v.current;if(i&&Bt(i)){h.current=!0;const f=ut(i,u);try{t.api.fromJSON(f)}catch(P){console.error("[DockviewBrowserContainer] fromJSON failed, creating default:",P),G(t.api,e)}let D=0;if(p){const P=t.api.panels.filter(U=>!p.has(U.id));for(const U of P)t.api.removePanel(U),D++;t.api.panels.length===0&&(G(t.api,e),D++)}setTimeout(()=>{h.current=!1},0),D>0&&Z(e,t.api.toJSON(),{queryClient:R.current})}else G(t.api,e),Z(e,t.api.toJSON(),{queryClient:R.current});Je(t.api),w.current?.(),w.current=Xe(t.api),C.current?.(),g.current&&(C.current=Ye(g.current,t.api));const s=()=>F();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,F]),S=r.useMemo(()=>({visible:o&&n!==!1,wsActive:n!==!1}),[o,n]);return x?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:Ut,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 G(e,o){const n=se();B.browsers.create.mutate({workspaceId:o,id:n}).catch(l=>{console.error("[DockviewBrowserContainer] error creating default browser:",l)}),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,2 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/TerminalPanel-CFDxHN4Q.js","assets/main-QmYiKgqv.js","assets/main-BzKe6bG7.css"])))=>i.map(i=>d[i]);
2
- import{u as J,n as $,r as l,o as U,p as h,q as B,v as E,w as H,x as Q,y as X,j as m,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-QmYiKgqv.js";import{S as ce}from"./square-terminal-bliRzpRN.js";const se=l.lazy(()=>le(()=>import("./TerminalPanel-CFDxHN4Q.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 R(){return ue()}function z(e){return["terminalLayout",e]}const S=new Map;function me(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 q(e,r,o){o?.queryClient&&o.queryClient.setQueryData(z(e),{layout:r,terminalIds:me(r)});const a=S.get(e);a&&clearTimeout(a),S.set(e,setTimeout(()=>{S.delete(e),h.terminalLayout.save.mutate({workspaceId:e,tree:r}).catch(p=>{console.error("[DockviewTerminalContainer] failed to persist layout:",p)})},500))}function fe(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 p=e.command||e.cwd||e.env?{command:e.command,cwd:e.cwd,env:e.env}:void 0;return m.jsx("div",{className:"flex h-full w-full flex-col overflow-hidden","data-testid":`dockview-terminal-tab__visible-${o?"true":"false"}`,children:m.jsx(l.Suspense,{fallback:null,children:m.jsx(se,{workspaceId:e.workspaceId,terminalId:e.terminalId,visible:o,paneMetadata:p,autoFocus:e.autoFocus,onTitleChange:a})})})}function _(e){const[r,o]=l.useState(e.api.title??"Terminal"),[a,p]=l.useState(e.containerApi.panels.length);l.useEffect(()=>{const d=e.api.onDidTitleChange(()=>{o(e.api.title??"Terminal")});return()=>d.dispose()},[e.api]),l.useEffect(()=>{const d=e.containerApi,g=()=>p(d.panels.length),T=d.onDidAddPanel(g),C=d.onDidRemovePanel(g);return()=>{T.dispose(),C.dispose()}},[e.containerApi]);const c=l.useCallback(d=>{d.stopPropagation(),O.current?.(e.params.terminalId)},[e.params.terminalId]),y=a>1;return m.jsxs("div",{className:"dv-default-tab",children:[m.jsxs("div",{className:"flex items-center gap-1.5 min-w-0",children:[m.jsx(ce,{className:"size-3.5 shrink-0 text-muted-foreground"}),m.jsx("span",{className:"truncate",children:r})]}),y&&m.jsx("button",{type:"button",className:"ml-1 inline-flex size-4 items-center justify-center rounded-sm opacity-60 hover:opacity-100 hover:bg-accent transition-colors",onClick:c,title:"Close terminal",children:m.jsx(re,{className:"size-3"})})]})}const w={current:{onAdd:()=>{},onSplit:()=>{}}},O={current:null},ye=Z.memo(function(r){const o=(r.location?.type??"grid")==="grid",a=r.group.id;return m.jsxs("div",{className:"flex h-full w-full items-center justify-center",children:[o&&m.jsxs(m.Fragment,{children:[m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>w.current.onSplit(a,"right"),title:"Split right",children:m.jsx(ee,{className:"size-3.5"})}),m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>w.current.onSplit(a,"below"),title:"Split down",children:m.jsx(te,{className:"size-3.5"})})]}),m.jsx("button",{type:"button",className:"inline-flex size-7 items-center justify-center text-muted-foreground hover:text-foreground hover:bg-accent rounded transition-colors",onClick:()=>w.current.onAdd(a),title:"New terminal",children:m.jsx(ne,{className:"size-4"})})]})}),he={terminalTab:pe},ge={terminalTab:_};function Ce({workspaceId:e,visible:r,wsActive:o}){const a=J(),p=$(),c=l.useRef(null),y=l.useRef(!1),d=l.useRef(null),g=l.useRef(null),T=l.useRef(null),{data:C}=U({queryKey:z(e),queryFn:async()=>{const[{tree:n},{terminals:i}]=await Promise.all([h.terminalLayout.get.query({workspaceId:e}).catch(()=>({tree:null})),h.terminal.list.query({workspaceId:e}).catch(()=>({terminals:[]}))]);return{layout:n,terminalIds:new Set(i.map(u=>u.terminalId))}},staleTime:Number.POSITIVE_INFINITY}),P=l.useRef(p);P.current=p;const K=l.useCallback(()=>{if(y.current)return;const n=c.current;n&&q(e,n.toJSON(),{queryClient:P.current})},[e]),j=l.useCallback(async n=>{const i=c.current;if(!i)return;const u=R(),s={id:u,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:u,autoFocus:!0}};n&&(s.position={referenceGroup:n}),i.addPanel(s);try{await h.terminal.create.mutate({workspaceId:e,id:u})}catch(t){console.error("[DockviewTerminalContainer] error creating terminal:",t)}},[e]),A=l.useCallback(async(n,i)=>{const u=c.current;if(!u)return;const s=R();u.addPanel({id:s,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:s,autoFocus:!0},position:{referenceGroup:n,direction:i}});try{await h.terminal.create.mutate({workspaceId:e,id:s})}catch(t){console.error("[DockviewTerminalContainer] error creating split terminal:",t)}},[e]),N=l.useCallback(n=>{const i=c.current;if(!i||i.panels.length<=1)return;B(i,n);const u=i.getPanel(n);u&&i.removePanel(u),requestAnimationFrame(()=>{const s=i.activePanel;s&&s.view.content.element.querySelector(".xterm-helper-textarea")?.focus()}),h.terminal.kill.mutate({terminalId:n}).catch(s=>{console.error("[DockviewTerminalContainer] failed to kill terminal:",s)})},[]);l.useEffect(()=>{if(!r)return;const n=()=>{const t=c.current?.activePanel;t&&t.view.content.element.querySelector(".xterm-helper-textarea")?.focus()},i=t=>{ae(c.current,t,()=>{requestAnimationFrame(n)})},u=t=>{oe(c.current,t,()=>{requestAnimationFrame(n)})},s=t=>{if(!d.current?.contains(document.activeElement))return;const f=t.key.toLowerCase();if(t.ctrlKey&&!t.metaKey&&f==="tab"){t.preventDefault(),t.stopPropagation(),i(t.shiftKey?-1:1);return}if(!(t.metaKey||t.ctrlKey))return;if(t.shiftKey&&(f==="["||f==="]")){t.preventDefault(),t.stopPropagation(),i(f==="]"?1:-1);return}if(!t.shiftKey&&(f==="["||f==="]")){t.preventDefault(),t.stopPropagation(),u(f==="]"?1:-1);return}const x=()=>{const v=c.current;if(!v||v.panels.length<=1)return!1;const L=v.activePanel;return L?(N(L.id),!0):!1};if(f==="t"&&!t.shiftKey)t.preventDefault(),t.stopPropagation(),j();else if(f==="w"&&!t.shiftKey)x()&&(t.preventDefault(),t.stopPropagation());else if(f==="d")if(t.metaKey&&!t.ctrlKey){t.preventDefault(),t.stopPropagation();const v=c.current?.activeGroup;if(!v)return;A(v.id,t.shiftKey?"below":"right")}else t.ctrlKey&&!t.metaKey&&!t.shiftKey?x()&&(t.preventDefault(),t.stopPropagation()):(t.preventDefault(),t.stopPropagation())};return window.addEventListener("keydown",s,!0),()=>window.removeEventListener("keydown",s,!0)},[r,N,A,j]),l.useLayoutEffect(()=>{if(!r)return;const n=c.current,i=d.current;if(!n||!i)return;const u=i.getBoundingClientRect();if(u.width>0&&u.height>0){n.layout(Math.round(u.width),Math.round(u.height),!0);return}const s=new ResizeObserver(t=>{const f=t[0];if(!f)return;const{width:b,height:x}=f.contentRect;b<=0||x<=0||(s.disconnect(),n.layout(Math.round(b),Math.round(x),!0))});return s.observe(i),()=>s.disconnect()},[r]),l.useEffect(()=>{if(!r)return;const n=requestAnimationFrame(()=>{const i=c.current?.activePanel;i&&i.view.content.element.querySelector(".xterm-helper-textarea")?.focus()});return()=>cancelAnimationFrame(n)},[r]),l.useEffect(()=>a.subscribeStatusEvents(n=>{if(n.workspaceId!==e)return;const i=c.current;if(i){if(n.kind==="terminal-created"&&typeof n.terminalId=="string"){if(i.getPanel(n.terminalId))return;i.addPanel({id:n.terminalId,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:e,terminalId:n.terminalId},position:E(i)})}else if(n.kind==="terminal-killed"&&typeof n.terminalId=="string"){const u=i.getPanel(n.terminalId);u&&(i.removePanel(u),i.panels.length===0&&D(i,e))}}}),[a,e]),w.current={onAdd:j,onSplit:A},O.current=N,l.useEffect(()=>()=>{g.current?.(),g.current=null,T.current?.(),T.current=null},[]);const k=l.useRef(null);k.current=C?.layout??null;const F=l.useRef(null);F.current=C?.terminalIds??null;const G=l.useRef(r);G.current=r;const I=l.useCallback(n=>{c.current=n.api;const i=k.current,u=F.current;if(i&&fe(i)){y.current=!0;try{n.api.fromJSON(i)}catch(f){console.error("[DockviewTerminalContainer] fromJSON failed, creating default:",f),D(n.api,e)}let t=0;if(u){const f=n.api.panels.filter(b=>!u.has(b.id));for(const b of f)n.api.removePanel(b),t++;n.api.panels.length===0&&(D(n.api,e),t++)}setTimeout(()=>{y.current=!1},0),t>0&&q(e,n.api.toJSON(),{queryClient:P.current})}else be(n.api,e,P.current);H(n.api),g.current?.(),g.current=Q(n.api),T.current?.(),d.current&&(T.current=X(d.current,n.api));const s=()=>K();if(n.api.onDidLayoutChange(s),n.api.onDidAddPanel(s),n.api.onDidRemovePanel(s),n.api.onDidActivePanelChange(s),n.api.onDidAddGroup(s),n.api.onDidRemoveGroup(s),G.current&&d.current){const t=d.current.getBoundingClientRect();t.width>0&&t.height>0&&n.api.layout(Math.round(t.width),Math.round(t.height),!0)}},[e,K]),V=l.useMemo(()=>({visible:r&&o!==!1,wsActive:o!==!1}),[r,o]);return C?m.jsx("div",{ref:d,className:"flex h-full w-full flex-col overflow-hidden",children:m.jsx(Y.Provider,{value:V,children:m.jsx(W,{theme:de,className:"h-full",components:he,tabComponents:ge,defaultTabComponent:_,onReady:I,rightHeaderActionsComponent:ye})})}):m.jsx("div",{className:"flex h-full w-full items-center justify-center"})}function D(e,r){const o=R();e.addPanel({id:o,component:"terminalTab",tabComponent:"terminalTab",title:"Terminal",params:{workspaceId:r,terminalId:o},position:E(e)}),h.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 h.workspace.getTerminalConfig.query({workspaceId:r});if(a?.layout){const p=M(a.layout);if(p.length>0){for(const c of p)try{const y=R();e.addPanel({id:y,component:"terminalTab",tabComponent:"terminalTab",title:c.name??"Terminal",params:{workspaceId:r,terminalId:y,command:c.command,cwd:c.cwd,env:c.env},position:E(e)}),await h.terminal.create.mutate({workspaceId:r,id:y,command:c.command,cwd:c.cwd,env:c.env})}catch(y){console.error("[DockviewTerminalContainer] error creating terminal from config:",y)}q(r,e.toJSON(),{queryClient:o});return}}}catch{}D(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 p of o.children)a.push(...M(p,r+1));return a}return[]}export{Ce as DockviewTerminalContainer,R as newTerminalId};
@@ -1,5 +0,0 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/xterm-AZ511Krh.css"])))=>i.map(i=>d[i]);
2
- import{m as re,r as s,cg as Tt,ch as At,b_ as Ke,ci as Fe,cj as Xe,ck as Ge,j as o,X as kt,cl as Nt,c6 as Ot,_ as z,cm as Mt,cn as Pt,co as Dt,cp as jt,cq as It}from"./main-QmYiKgqv.js";const Bt=[["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"}]],zt=re("clipboard-copy",Bt);const Wt=[["path",{d:"M20 4v7a4 4 0 0 1-4 4H4",key:"6o5b7l"}],["path",{d:"m9 10-5 5 5 5",key:"1kshq7"}]],Ht=re("corner-down-left",Wt);const qt=[["path",{d:"M22 2 2 22",key:"y4kqgn"}]],Kt=re("slash",qt);const Ft=[["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"}]],Xt=re("text-cursor-input",Ft),Gt=49,Ye="(hover: none) and (pointer: coarse)";function $e(){const[t,c]=s.useState(()=>typeof window>"u"?!1:window.matchMedia(Ye).matches),[a,i]=s.useState(0);return s.useEffect(()=>{if(typeof window>"u")return;const l=window.matchMedia(Ye),m=h=>c(h.matches);return c(l.matches),l.addEventListener("change",m),()=>l.removeEventListener("change",m)},[]),s.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?Gt:0}}const ve=/[A-Za-z0-9_./:\-+@~]/;function Yt(t,c,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=xe(Math.floor((t-l.left)/m),0,a.cols-1),E=xe(Math.floor((c-l.top)/h),0,a.rows-1);return{col:v,row:a.buffer.active.viewportY+E}}function Qt(t,c){if(c<0||c>=t.length||!ve.test(t[c])){const l=xe(c,0,Math.max(0,t.length));return{start:l,end:l+1}}let a=c;for(;a>0&&ve.test(t[a-1]);)a--;let i=c+1;for(;i<t.length&&ve.test(t[i]);)i++;return{start:a,end:i}}function Ut(t,c){return t.buffer.active.getLine(c)?.translateToString(!1)??""}function Vt(t,c,a){const i=a.cols,l=Math.max(0,a.buffer.active.length-1);switch(c){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,c,a){const i=t.cols;if(i<=0)return;const l=c.row*i+c.col,m=a.row*i+a.col,h=Math.min(l,m),E=Math.max(l,m)-h+1,y=Math.floor(h/i),S=h-y*i;t.select(S,y,E)}function $t(t,c){const{start:a,end:i}=Qt(c,t.col);return{anchor:{col:a,row:t.row},head:{col:Math.max(a,i-1),row:t.row}}}function xe(t,c,a){return t<c?c:t>a?a:t}const Zt="\x1B",Jt=" ",en="\r",tn="/",nn="\x1B[A",rn="\x1B[B",on="\x1B[C",sn="\x1B[D",R=t=>c=>{c.preventDefault(),t()};function cn({terminal:t,sendInput:c,pendingCtrl:a,onToggleCtrl:i,selectionMode:l,onExtendSelection:m,onExitSelection:h,onSelectAll:v}){const{enabled:E,bottomOffset:y}=$e(),S=s.useCallback(async()=>{if(!t.hasSelection())return;const b=t.getSelection();if(!b)return;await Tt(b)||console.warn("[TerminalToolbar] clipboard write failed")},[t]),g=s.useCallback(async()=>{await S(),h()},[S,h]),W=s.useCallback(async()=>{const b=await At();b&&c(b)},[c]),oe=s.useMemo(()=>[{label:"Esc",seq:Zt,ariaLabel:"Send Escape"},{label:"Tab",seq:Jt,ariaLabel:"Send Tab"}],[]),Q=s.useMemo(()=>[{Icon:Ke,seq:sn,ariaLabel:"Arrow Left"},{Icon:Fe,seq:nn,ariaLabel:"Arrow Up"},{Icon:Xe,seq:rn,ariaLabel:"Arrow Down"},{Icon:Ge,seq:on,ariaLabel:"Arrow Right"}],[]),U=s.useMemo(()=>[{Icon:Ke,dir:"left",ariaLabel:"Extend selection left"},{Icon:Fe,dir:"up",ariaLabel:"Extend selection up"},{Icon:Xe,dir:"down",ariaLabel:"Extend selection down"},{Icon:Ge,dir:"right",ariaLabel:"Extend selection right"}],[]);return E?o.jsx("div",{"data-testid":"terminal-toolbar","data-mode":l?"selection":"idle",role:"toolbar","aria-label":l?"Terminal selection controls":"Terminal accessory keys",style:{bottom:y},className:"fixed inset-x-0 z-50 flex justify-center border-t border-border bg-background/95 shadow-lg backdrop-blur-md",children:o.jsxs("div",{className:"flex w-full max-w-3xl items-center gap-1 px-2 py-1.5",children:[o.jsx("div",{className:"flex min-w-0 flex-1 items-center gap-1 overflow-x-auto",children:l?o.jsxs(o.Fragment,{children:[o.jsxs(_,{ariaLabel:"Copy selection and exit",title:"Copy",onPointerDown:R(g),variant:"primary",children:[o.jsx(zt,{className:"size-4"}),o.jsx("span",{className:"text-xs",children:"Copy"})]}),o.jsxs(_,{ariaLabel:"Exit selection mode",title:"Done",onPointerDown:R(h),children:[o.jsx(kt,{className:"size-4"}),o.jsx("span",{className:"text-xs",children:"Done"})]}),o.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),o.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:w})=>o.jsx(_,{ariaLabel:w,title:w,onPointerDown:R(()=>m(L)),children:o.jsx(b,{className:"size-4"})},L))]}):o.jsxs(o.Fragment,{children:[o.jsxs(_,{ariaLabel:"Paste from clipboard",title:"Paste",onPointerDown:R(W),children:[o.jsx(Nt,{className:"size-4"}),o.jsx("span",{className:"text-xs",children:"Paste"})]}),o.jsxs(_,{ariaLabel:"Select all",title:"Select all",onPointerDown:R(v),children:[o.jsx(Xt,{className:"size-4"}),o.jsx("span",{className:"text-xs",children:"All"})]}),o.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),oe.map(({label:b,seq:L,ariaLabel:w})=>o.jsx(_,{ariaLabel:w,title:b,onPointerDown:R(()=>c(L)),children:o.jsx("span",{className:"text-xs font-medium",children:b})},b)),o.jsx(_,{ariaLabel:"Send slash",title:"Slash command",onPointerDown:R(()=>c(tn)),children:o.jsx(Kt,{className:"size-4"})}),o.jsx(_,{ariaLabel:a?"Cancel pending Ctrl":"Arm Ctrl modifier",title:"Ctrl (sticky — taps the next key as Ctrl+key)",onPointerDown:R(i),active:a,children:o.jsx("span",{className:"text-xs font-medium",children:"Ctrl"})}),o.jsx("div",{className:"mx-1 h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),Q.map(({Icon:b,seq:L,ariaLabel:w})=>o.jsx(_,{ariaLabel:w,title:w,onPointerDown:R(()=>c(L)),children:o.jsx(b,{className:"size-4"})},w))]})}),o.jsx("div",{className:"h-6 w-px shrink-0 bg-border","aria-hidden":"true"}),o.jsx(_,{ariaLabel:"Send Enter",title:"Enter",onPointerDown:R(()=>c(en)),variant:"primary",children:o.jsx(Ht,{className:"size-4"})})]})}):null}function _({ariaLabel:t,title:c,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 o.jsx("button",{type:"button","aria-label":t,"aria-pressed":i,title:c,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,an=500,Ue=10,ln={matchBackground:"#515c6a",activeMatchBackground:"#a9913680",matchOverviewRuler:"#a9913680",activeMatchColorOverviewRuler:"#a99136"},un={caseSensitive:!1,wholeWord:!1,regex:!1};function be(t){return{caseSensitive:t.caseSensitive,wholeWord:t.wholeWord,regex:t.regex,decorations:ln}}const dn={background:"#1e1e1e",foreground:"#e8e8e8",cursor:"#e8e8e8",selectionBackground:"rgba(255, 255, 255, 0.2)"},fn={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 hn(){return document.documentElement.classList.contains("dark")}function Ve(){return hn()?dn:fn}function vn({workspaceId:t,terminalId:c,visible:a,paneMetadata:i,autoFocus:l,onTitleChange:m}){const h=s.useRef(null),v=s.useRef(null),E=s.useRef(null),y=s.useRef(null),S=s.useRef(null),g=s.useRef(null),W=s.useRef(m);W.current=m;const{settings:oe}=Ot(),Q=oe.useWebGLTerminalRenderer??!0,U=s.useRef(Q);U.current=Q;const[b,L]=s.useState(!1),[w,ge]=s.useState(""),[A,Ze]=s.useState(un),[Je,se]=s.useState({total:0,current:0}),ce=s.useRef(null),ye=s.useRef(()=>{}),[et,Ee]=s.useState(!1),M=s.useRef(!1),[tt,V]=s.useState(!1),nt=s.useCallback(()=>{const d=!M.current;M.current=d,V(d)},[]),C=s.useRef(null),T=s.useRef(null),[rt,H]=s.useState(!1),ot=s.useCallback(()=>{C.current=null,T.current=null,H(!1),v.current?.clearSelection()},[]),st=s.useCallback(d=>{const x=v.current,P=C.current,k=T.current;if(!x||!P||!k)return;const $=Vt(k,d,x);T.current=$,ne(x,P,$)},[]),ct=s.useCallback(()=>{const d=v.current;if(!d)return;const x={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,x,k),C.current=x,T.current=k,H(!0),d.blur()},[]);s.useEffect(()=>{if(!h.current)return;let d=!1,x;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:wt}=k,{WebLinksAddon:pt}=$,{SearchAddon:vt}=ft,{WebglAddon:bt}=ht;if(d||!h.current)return;const Se=U.current;z(()=>Promise.resolve({}),__vite__mapDeps([0]));const n=new mt({allowProposedApi:!0,cursorBlink:!0,fontSize:Qe*Mt(),fontFamily:"'SF Mono', Menlo, Monaco, 'Courier New', monospace",lineHeight:Se?1.2:1,macOptionIsMeta:!0,scrollback:1e4,theme:Ve()}),Le=new MutationObserver(()=>{n.options.theme=Ve()});Le.observe(document.documentElement,{attributes:!0,attributeFilter:["class"]});const q=new wt;n.loadAddon(q),n.loadAddon(new pt((e,r)=>Pt(r))),n.open(h.current);let ae;const ie=()=>{try{const e=new bt({customGlyphs:!0});n.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;n.loadAddon(le);const xt=le.onDidChangeResults(e=>{se({total:e.resultCount,current:e.resultIndex>=0?e.resultIndex+1:0})});n.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 n.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(),ye.current(),!1;if(e.key==="Enter"&&e.shiftKey&&!e.altKey&&!e.metaKey&&!e.ctrlKey)return e.preventDefault(),n.input(`
3
- `),!1;if(e.altKey&&!e.metaKey&&!e.ctrlKey){if(e.key==="ArrowLeft")return n.input("\x1Bb"),!1;if(e.key==="ArrowRight")return n.input("\x1Bf"),!1}}return!0}),v.current=n,E.current=q,y.current=le,Ee(!0);const f=h.current;let K=null;const Re=e=>{K=e.touches.length===1?e.touches[0].clientY:null},_e=e=>{if(e.touches.length!==1||K===null)return;const r=e.touches[0].clientY,u=K-r,p=f.querySelector(".xterm-viewport"),O=p&&n.rows>0?p.clientHeight/n.rows:17,Y=Math.trunc(u/O);Y!==0&&(n.scrollLines(Y),K=r+(u-Y*O),e.preventDefault())},Z=()=>{K=null};f.addEventListener("touchstart",Re,{passive:!0}),f.addEventListener("touchmove",_e,{passive:!1}),f.addEventListener("touchend",Z,{passive:!0}),f.addEventListener("touchcancel",Z,{passive:!0});let F=null,D=null;const N=()=>{F!==null&&(window.clearTimeout(F),F=null),D=null},Ce=e=>{if(N(),e.touches.length!==1)return;const r=e.touches[0];D={x:r.clientX,y:r.clientY},F=window.setTimeout(()=>{F=null;const u=D;if(!u)return;const p=f.querySelector(".xterm-screen");if(!p)return;const O=Yt(u.x,u.y,n,p),Y=Ut(n,O.row),{anchor:He,head:qe}=$t(O,Y);if(ne(n,He,qe),C.current=He,T.current=qe,H(!0),j=null,I=null,n.blur(),typeof navigator.vibrate=="function")try{navigator.vibrate(15)}catch{}},an)},Te=e=>{if(!D||e.touches.length!==1)return;const r=e.touches[0],u=Math.abs(r.clientX-D.x),p=Math.abs(r.clientY-D.y);(u>Ue||p>Ue)&&N()};f.addEventListener("touchstart",Ce,{passive:!0}),f.addEventListener("touchmove",Te,{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 r=j,u=I;if(j=null,I=null,r===null||u===null||e.changedTouches.length!==1)return;const p=Math.abs(e.changedTouches[0].clientX-r),O=Math.abs(e.changedTouches[0].clientY-u);p<10&&O<10&&(C.current!==null&&(C.current=null,T.current=null,H(!1),n.clearSelection()),n.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 gt=`${location.protocol==="https:"?"wss:":"ws:"}//${location.host}/terminal?workspaceId=${encodeURIComponent(t)}&terminalId=${encodeURIComponent(c)}`,yt=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=g.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,r=new WebSocket(gt);g.current=r,r.binaryType="arraybuffer",r.onopen=()=>{if(J=0,de=Date.now(),e&&n.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),r.send(JSON.stringify(u))}ue=!0,q.fit(),r.send(JSON.stringify({type:"resize",cols:n.cols,rows:n.rows})),l&&!e&&n.focus(),he(),ee=setInterval(Me,yt)},r.onmessage=u=>{if(u.data instanceof ArrayBuffer)n.write(new Uint8Array(u.data));else try{const p=JSON.parse(u.data);p.type==="pong"?de=Date.now():p.type==="title"&&typeof p.title=="string"&&W.current?.(p.title)}catch{n.write(u.data)}},r.onclose=()=>{g.current===r&&(he(),!X&&(n.write(`\r
4
- \x1B[90m[Reconnecting…]\x1B[0m\r
5
- `),Lt()))}}const we=()=>{if(X)return;const e=g.current;!e||e.readyState===WebSocket.CLOSED||e.readyState===WebSocket.CLOSING?(J=0,fe(),me()):e.readyState===WebSocket.OPEN&&Me()},Pe=()=>{document.hidden||we()};window.addEventListener("online",we),document.addEventListener("visibilitychange",Pe),me(),n.onData(e=>{const r=g.current;r&&r.readyState===WebSocket.OPEN&&r.send(e)}),n.onTitleChange(e=>{W.current?.(e)});let G=null;const Rt=()=>{G===null&&(!C.current||!T.current||(G=requestAnimationFrame(()=>{G=null;const e=C.current,r=T.current;e&&r&&ne(n,e,r)})))},_t=n.onResize(Rt);let De=window.devicePixelRatio;const je=()=>{const e=g.current;!e||e.readyState!==WebSocket.OPEN||n.cols<=0||n.rows<=0||e.send(JSON.stringify({type:"resize",cols:n.cols,rows:n.rows}))},Ie=(e={})=>{const{newFontSize:r}=e;if(r!==void 0)n.options.fontSize!==r&&(n.options.fontSize=r);else{const p=n.options.fontSize;typeof p=="number"&&(n.options.fontSize=p+1,n.options.fontSize=p)}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 r=e[0];if(!r||r.contentRect.width===0||r.contentRect.height===0)return;Be()||q.fit(),je()});ze.observe(h.current);const Ct=Dt(e=>{const r=Math.round(Qe*e*100)/100;n.options.fontSize!==r&&(Ie({newFontSize:r}),je())});let te;const We=()=>{te=window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`),te.addEventListener("change",pe)},pe=()=>{Be(),te?.removeEventListener("change",pe),We()};We(),x=()=>{X=!0,fe(),he(),window.removeEventListener("online",we),document.removeEventListener("visibilitychange",Pe),Le.disconnect(),ze.disconnect(),xt.dispose(),_t.dispose(),G!==null&&cancelAnimationFrame(G),ae?.dispose(),te?.removeEventListener("change",pe),Ct(),N(),f.removeEventListener("touchstart",Re),f.removeEventListener("touchmove",_e),f.removeEventListener("touchend",Z),f.removeEventListener("touchcancel",Z),f.removeEventListener("touchstart",Ce),f.removeEventListener("touchmove",Te),f.removeEventListener("touchend",N),f.removeEventListener("touchcancel",N),f.removeEventListener("touchstart",Ae),f.removeEventListener("touchend",ke),f.removeEventListener("touchcancel",Ne),g.current?.close(),n.dispose(),v.current=null,E.current=null,y.current=null,S.current=null,g.current=null,C.current=null,T.current=null,M.current=!1,H(!1),V(!1),Ee(!1)}}),()=>{d=!0,x?.()}},[c,t,i,l]),s.useEffect(()=>{a&&E.current&&requestAnimationFrame(()=>{E.current?.fit();const d=v.current,x=g.current;d&&x?.readyState===WebSocket.OPEN&&d.cols>0&&d.rows>0&&x.send(JSON.stringify({type:"resize",cols:d.cols,rows:d.rows}))})},[a]),s.useEffect(()=>{const d=()=>{a&&v.current?.focus()};return window.addEventListener("band:focus-terminal",d),()=>window.removeEventListener("band:focus-terminal",d)},[a]);const at=s.useCallback(()=>{L(!0),requestAnimationFrame(()=>{ce.current?.focus(),ce.current?.select()})},[]);ye.current=at;const it=s.useCallback(()=>{y.current?.clearDecorations(),L(!1),ge(""),se({total:0,current:0}),v.current?.focus()},[]),lt=s.useCallback(()=>{w&&y.current?.findNext(w,be(A))},[w,A]),ut=s.useCallback(()=>{w&&y.current?.findPrevious(w,be(A))},[w,A]);s.useEffect(()=>{const d=y.current;if(d){if(!w){d.clearDecorations(),se({total:0,current:0});return}d.findNext(w,be(A))}},[w,A]);const{contentBottomInset:dt}=$e();return o.jsxs("div",{className:"relative flex h-full w-full flex-col",children:[b&&o.jsx(jt,{ref:ce,query:w,onQueryChange:ge,options:A,onOptionsChange:Ze,placeholder:"Find in terminal...",matchInfo:Je,onNext:lt,onPrevious:ut,onClose:it}),o.jsx("div",{className:"relative min-h-0 flex-1",children:o.jsx("div",{ref:h,className:"absolute inset-x-2 top-2 overflow-hidden",style:{bottom:8+dt,zoom:`calc(1 / var(${It}, 1))`}})}),et&&v.current&&o.jsx(cn,{terminal:v.current,sendInput:d=>{const x=g.current;x?.readyState===WebSocket.OPEN&&x.send(d)},pendingCtrl:tt,onToggleCtrl:nt,selectionMode:rt,onExtendSelection:st,onExitSelection:ot,onSelectAll:ct})]})}export{vn as TerminalPanel};
@@ -1 +0,0 @@
1
- import{am as n,an as o}from"./main-QmYiKgqv.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-BT2NV-OP.js";import{W as i}from"./main-QmYiKgqv.js";import"./chunk-FMBD7UC4-B0SYeHBH.js";import"./chunk-55IACEB6-DWUF7TBt.js";import"./chunk-QN33PNHL-C5tEKH2s.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-BT2NV-OP.js";import{W as i}from"./main-QmYiKgqv.js";import"./chunk-FMBD7UC4-B0SYeHBH.js";import"./chunk-55IACEB6-DWUF7TBt.js";import"./chunk-QN33PNHL-C5tEKH2s.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-Cy98IGsx.js";var e=4;function a(o){return r(o,e)}export{a as c};