@band-app/server 0.24.1 → 0.25.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 (170) hide show
  1. package/dist/client/assets/{DockviewBrowserContainer-pecXom0M.js → DockviewBrowserContainer-C_SeGH4m.js} +2 -2
  2. package/dist/client/assets/DockviewTerminalContainer-CnyEPngk.js +2 -0
  3. package/dist/client/assets/TerminalPanel-DIvPtQ0C.js +1 -0
  4. package/dist/client/assets/{_basePickBy-CtbD70T-.js → _basePickBy-WSEGU-48.js} +1 -1
  5. package/dist/client/assets/_baseUniq-CISSY9JU.js +1 -0
  6. package/dist/client/assets/{arc-BEzsE6TU.js → arc-EYeeggGP.js} +1 -1
  7. package/dist/client/assets/architectureDiagram-VXUJARFQ-auNzMJHs.js +36 -0
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-CVv0vV-s.js → blockDiagram-VD42YOAC-BAxIVlzi.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-W3bslfZm.js → c4Diagram-YG6GDRKO-BRGunjEV.js} +1 -1
  10. package/dist/client/assets/channel-mz7YKOQ7.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-B4zNuPCM.js → chunk-4BX2VUAB-DD1K7aO0.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6-CJb5GOdO.js → chunk-55IACEB6-xhCYxBKG.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-m9UNdA4H.js → chunk-B4BG7PRW-BRcHAc7V.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-Dyl4ba3F.js → chunk-DI55MBZ5-C5AoviQd.js} +3 -3
  15. package/dist/client/assets/{chunk-FMBD7UC4-Ds1gRx94.js → chunk-FMBD7UC4-CelHUigz.js} +1 -1
  16. package/dist/client/assets/chunk-QN33PNHL-nQBPkq6v.js +1 -0
  17. package/dist/client/assets/{chunk-QZHKN3VN-BiZtPmD0.js → chunk-QZHKN3VN-IXkzzmtV.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-DCz64hjM.js → chunk-TZMSLE5B-kYboanfD.js} +1 -1
  19. package/dist/client/assets/classDiagram-2ON5EDUG-khRtU3oZ.js +1 -0
  20. package/dist/client/assets/classDiagram-v2-WZHVMYZB-khRtU3oZ.js +1 -0
  21. package/dist/client/assets/clone-D_zAu_UU.js +1 -0
  22. package/dist/client/assets/cose-bilkent-S5V4N54A-xs2qxNxB.js +1 -0
  23. package/dist/client/assets/dagre-6UL2VRFP-Cs2kFqLw.js +4 -0
  24. package/dist/client/assets/diagram-PSM6KHXK-CL0KNaAN.js +24 -0
  25. package/dist/client/assets/diagram-QEK2KX5R-bojH3Fje.js +43 -0
  26. package/dist/client/assets/diagram-S2PKOQOG-CR3NnSCV.js +24 -0
  27. package/dist/client/assets/{erDiagram-Q2GNP2WA-WnEcSFDk.js → erDiagram-Q2GNP2WA-B1PLdIwn.js} +3 -3
  28. package/dist/client/assets/{flowDiagram-NV44I4VS-BONBJZ3h.js → flowDiagram-NV44I4VS-C5YhU0Qh.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-JELNMOA3-BDhpQL_t.js → ganttDiagram-JELNMOA3-CT-ZyTN-.js} +3 -3
  30. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-BJOR_jnq.js +65 -0
  31. package/dist/client/assets/{graph-DmGEXolJ.js → graph-pEXzxzGm.js} +1 -1
  32. package/dist/client/assets/{highlighted-body-B3W2YXNL-m0iS7EC3.js → highlighted-body-B3W2YXNL-DkAr8YBH.js} +1 -1
  33. package/dist/client/assets/{index-BBy73G4g.js → index-3n8Vw-Mx.js} +1 -1
  34. package/dist/client/assets/{index-CFnCbQSl.js → index-BGzaO0X8.js} +1 -1
  35. package/dist/client/assets/{index-B-4gD4iz.js → index-BTh70HvG.js} +1 -1
  36. package/dist/client/assets/{index-3O6bsWX3.js → index-Bc4l--Pr.js} +1 -1
  37. package/dist/client/assets/{index-CDJOOMr2.js → index-BrhTwhg3.js} +1 -1
  38. package/dist/client/assets/{index-B102sYPH.js → index-Bsj04x6y.js} +1 -1
  39. package/dist/client/assets/{index-Dmse4WDP.js → index-BtupbjWj.js} +1 -1
  40. package/dist/client/assets/{index-DBnjKdGf.js → index-BvTVbNia.js} +1 -1
  41. package/dist/client/assets/{index-BoLCZb5I.js → index-C-44kyj4.js} +1 -1
  42. package/dist/client/assets/{index-0oNHljPn.js → index-CUvVSQUr.js} +1 -1
  43. package/dist/client/assets/{index-BMTzG2fm.js → index-CjLUJG6j.js} +1 -1
  44. package/dist/client/assets/{index-DgEnCq6K.js → index-Cy1ivKKB.js} +1 -1
  45. package/dist/client/assets/{index-C46YYuZo.js → index-DW-oXjA-.js} +1 -1
  46. package/dist/client/assets/{index-CiKuHiO0.js → index-DrAxRehm.js} +1 -1
  47. package/dist/client/assets/{index-BpxKDn01.js → index-DvKArr4F.js} +1 -1
  48. package/dist/client/assets/{index-BvzISRCa.js → index-abHZx3iS.js} +2 -2
  49. package/dist/client/assets/{index-CfW6UcUl.js → index-kS9W4-gd.js} +1 -1
  50. package/dist/client/assets/{index-D6Afu1pA.js → index-unEuBThJ.js} +1 -1
  51. package/dist/client/assets/infoDiagram-HS3SLOUP-BFYSEig3.js +2 -0
  52. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-Dlf8x32q.js → journeyDiagram-XKPGCS4Q-BxYsQaMT.js} +1 -1
  53. package/dist/client/assets/{kanban-definition-3W4ZIXB7-BVJThDju.js → kanban-definition-3W4ZIXB7-Bv-pDWZ-.js} +1 -1
  54. package/dist/client/assets/{layout-CbZgayJn.js → layout-B77NnSO1.js} +1 -1
  55. package/dist/client/assets/{main-RztHx-sU.js → main-5cZqr4FX.js} +226 -219
  56. package/dist/client/assets/{mindmap-definition-VGOIOE7T-C4kJ6VHG.js → mindmap-definition-VGOIOE7T-CgxHuURf.js} +3 -3
  57. package/dist/client/assets/pieDiagram-ADFJNKIX-DMT2s9he.js +30 -0
  58. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Bec9Hhh2.js → quadrantDiagram-AYHSOK5B-BXabhtC0.js} +1 -1
  59. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-CsOubtSM.js → requirementDiagram-UZGBJVZJ-DTW7rlcB.js} +1 -1
  60. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-C8Gm96t1.js → sankeyDiagram-TZEHDZUN-BcCwFhUF.js} +5 -5
  61. package/dist/client/assets/{sequenceDiagram-WL72ISMW-Bvgi8x7V.js → sequenceDiagram-WL72ISMW-pM8Di5We.js} +6 -6
  62. package/dist/client/assets/{square-terminal-BHkrAD3A.js → square-terminal-DKjKKzzC.js} +1 -1
  63. package/dist/client/assets/stateDiagram-FKZM4ZOC-Daqd80Rx.js +1 -0
  64. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BCaxpIKa.js +1 -0
  65. package/dist/client/assets/{timeline-definition-IT6M3QCI-BNBrcAuE.js → timeline-definition-IT6M3QCI-B528DtkS.js} +3 -3
  66. package/dist/client/assets/{treemap-GDKQZRPO-Dt5TrQzS.js → treemap-GDKQZRPO-CSzjIbPP.js} +1 -1
  67. package/dist/client/assets/{workspace._workspaceId-Cx9WUFHK.js → workspace._workspaceId-CDQS6YxL.js} +2 -2
  68. package/dist/client/assets/{workspace._workspaceId-DGQl6asL.js → workspace._workspaceId-DlHLgF3G.js} +1 -1
  69. package/dist/client/assets/{xychartDiagram-PRI3JC2R-BbVpQ6GU.js → xychartDiagram-PRI3JC2R-CZehTq19.js} +2 -2
  70. package/dist/server/assets/{DockviewBrowserContainer-BDsafKFK.js → DockviewBrowserContainer-NHSxR-nz.js} +1 -1
  71. package/dist/server/assets/{DockviewTerminalContainer-CMbrr8wZ.js → DockviewTerminalContainer-CTJJUByH.js} +5 -3
  72. package/dist/server/assets/TerminalPanel-BiNP-nsL.js +425 -0
  73. package/dist/server/assets/{_basePickBy-ljLFy5Cm.js → _basePickBy-C563KIXw.js} +2 -2
  74. package/dist/server/assets/{_baseUniq-DQmNpetJ.js → _baseUniq-d93HSS0F.js} +1 -1
  75. package/dist/server/assets/{_tanstack-start-manifest_v-v9ri0NYD.js → _tanstack-start-manifest_v-D7mA2JWN.js} +1 -1
  76. package/dist/server/assets/{arc-KHCw-8vd.js → arc-jtTutH-i.js} +1 -1
  77. package/dist/server/assets/{architecture-7HQA4BMR-BScKJqpc.js → architecture-7HQA4BMR-DQzLgw80.js} +6 -6
  78. package/dist/server/assets/{architectureDiagram-VXUJARFQ-T9CAFBo1.js → architectureDiagram-VXUJARFQ-DrNJMIEJ.js} +6 -6
  79. package/dist/server/assets/{blockDiagram-VD42YOAC-BKZ2vg7U.js → blockDiagram-VD42YOAC-WUFdSkGk.js} +6 -6
  80. package/dist/server/assets/{c4Diagram-YG6GDRKO-D585k1An.js → c4Diagram-YG6GDRKO-B3FexEXR.js} +2 -2
  81. package/dist/server/assets/{channel-CyG4ozZq.js → channel-CGY9wImP.js} +1 -1
  82. package/dist/server/assets/{chunk-4BX2VUAB-BHWbP2Lt.js → chunk-4BX2VUAB-DWhvAfOu.js} +1 -1
  83. package/dist/server/assets/{chunk-55IACEB6-CrerCu6v.js → chunk-55IACEB6-D9KMaGKQ.js} +1 -1
  84. package/dist/server/assets/{chunk-B4BG7PRW-D3sl50Aa.js → chunk-B4BG7PRW-Bdi0b8I3.js} +4 -4
  85. package/dist/server/assets/{chunk-DI55MBZ5-DR6gThvq.js → chunk-DI55MBZ5-CvFVKOgG.js} +3 -3
  86. package/dist/server/assets/{chunk-FMBD7UC4-Cil9b1Ts.js → chunk-FMBD7UC4-CEf8TJeK.js} +1 -1
  87. package/dist/server/assets/{chunk-QN33PNHL-BAKy9Ygg.js → chunk-QN33PNHL-CmOqP24j.js} +1 -1
  88. package/dist/server/assets/{chunk-QZHKN3VN-G4fU4Ucn.js → chunk-QZHKN3VN-uFFM4Cjm.js} +1 -1
  89. package/dist/server/assets/{chunk-TZMSLE5B-LzSrmWV5.js → chunk-TZMSLE5B-DH8QxQUD.js} +1 -1
  90. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-Ds7CCTUR.js → classDiagram-2ON5EDUG-Dr94MNeD.js} +5 -5
  91. package/dist/server/assets/{classDiagram-2ON5EDUG-Ds7CCTUR.js → classDiagram-v2-WZHVMYZB-Dr94MNeD.js} +5 -5
  92. package/dist/server/assets/{clone-B4KVJdwD.js → clone-DESSLwZZ.js} +1 -1
  93. package/dist/server/assets/{cose-bilkent-S5V4N54A-DaKuQRAN.js → cose-bilkent-S5V4N54A-B-Bym2R2.js} +1 -1
  94. package/dist/server/assets/{dagre-6UL2VRFP-CNIyd6rH.js → dagre-6UL2VRFP-CJdhKZlX.js} +6 -6
  95. package/dist/server/assets/{diagram-PSM6KHXK-ByElNwdP.js → diagram-PSM6KHXK-Bku5j6_i.js} +7 -7
  96. package/dist/server/assets/{diagram-QEK2KX5R-Bpupf8hI.js → diagram-QEK2KX5R-CUdsg8PG.js} +6 -6
  97. package/dist/server/assets/{diagram-S2PKOQOG-CSa3a_oJ.js → diagram-S2PKOQOG-DfZmENnB.js} +6 -6
  98. package/dist/server/assets/{erDiagram-Q2GNP2WA-B3yUU2uu.js → erDiagram-Q2GNP2WA-DgXGwPJi.js} +4 -4
  99. package/dist/server/assets/{flowDiagram-NV44I4VS-CUlvxSwr.js → flowDiagram-NV44I4VS-CCKE-dcR.js} +5 -5
  100. package/dist/server/assets/{ganttDiagram-JELNMOA3-BWxUm4vA.js → ganttDiagram-JELNMOA3-Df1I84HD.js} +1 -1
  101. package/dist/server/assets/{gitGraph-G5XIXVHT-DexlvPgJ.js → gitGraph-G5XIXVHT-Da1EJY5L.js} +6 -6
  102. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CepF7ieg.js → gitGraphDiagram-V2S2FVAM-BoLIFjNj.js} +7 -7
  103. package/dist/server/assets/{graph-BB3rQyk7.js → graph-CzqmmHH7.js} +2 -2
  104. package/dist/server/assets/{highlighted-body-B3W2YXNL-CktYi1nO.js → highlighted-body-B3W2YXNL-D44laf8J.js} +1 -1
  105. package/dist/server/assets/{index-BDqHa1DL.js → index-B-dHru1q.js} +5 -5
  106. package/dist/server/assets/{index-CUnnFiRO.js → index-B9n0dcMw.js} +4 -4
  107. package/dist/server/assets/{index-BZSAPXc2.js → index-BVZPT41S.js} +5 -5
  108. package/dist/server/assets/{index-8fW2N3v4.js → index-BbSejcCZ.js} +2 -2
  109. package/dist/server/assets/{index-O03NM4sL.js → index-Bgh1V0xV.js} +2 -2
  110. package/dist/server/assets/{index-B9xqso9p.js → index-C6mmT4Bf.js} +1 -1
  111. package/dist/server/assets/{index-DipxLM5f.js → index-CA1ILOaa.js} +2 -2
  112. package/dist/server/assets/{index-bbP5Ilkt.js → index-CR4BnEcT.js} +3 -3
  113. package/dist/server/assets/{index-5St5BCcJ.js → index-CU2q4Svg.js} +2 -2
  114. package/dist/server/assets/{index-zM-wWcHV.js → index-CbnRNXnI.js} +1 -1
  115. package/dist/server/assets/{index-BiMwh0FT.js → index-CkCmjvnL.js} +3 -3
  116. package/dist/server/assets/{index-DEZw9nkv.js → index-DM7tck_E.js} +2 -2
  117. package/dist/server/assets/{index-DYiuwMzT.js → index-DURk6tcR.js} +2 -2
  118. package/dist/server/assets/{index-DsPBpNpr.js → index-DYATP6mi.js} +2 -2
  119. package/dist/server/assets/{index-DR892S39.js → index-DdEGElQC.js} +2 -2
  120. package/dist/server/assets/{index-dAOow3Ru.js → index-DoPHl__N.js} +2 -2
  121. package/dist/server/assets/{index-igT3OuCm.js → index-JQz2Ac_X.js} +2 -2
  122. package/dist/server/assets/{index-CGm8Czks.js → index-gZfWBVgm.js} +2 -2
  123. package/dist/server/assets/{info-VBDWY6EO-BDX5_HTZ.js → info-VBDWY6EO-CraK2qik.js} +6 -6
  124. package/dist/server/assets/{infoDiagram-HS3SLOUP-BMd22txJ.js → infoDiagram-HS3SLOUP-m71IJidm.js} +5 -5
  125. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-DyIx8DQc.js → journeyDiagram-XKPGCS4Q-Z2B632R6.js} +4 -4
  126. package/dist/server/assets/{kanban-definition-3W4ZIXB7-D6P6mjw2.js → kanban-definition-3W4ZIXB7-B2vyxAFc.js} +2 -2
  127. package/dist/server/assets/{layout-_MqV9Ys8.js → layout-Ciol0TI8.js} +4 -4
  128. package/dist/server/assets/{mermaid-3ZIDBTTL-CIBz4-1r.js → mermaid-3ZIDBTTL-m_-3aBOO.js} +1 -1
  129. package/dist/server/assets/{mermaid-parser.core-Cga0uwWI.js → mermaid-parser.core-DsRAodK1.js} +11 -11
  130. package/dist/server/assets/{mindmap-definition-VGOIOE7T-C2EIvkPG.js → mindmap-definition-VGOIOE7T-B9LDAkQV.js} +3 -3
  131. package/dist/server/assets/{packet-DYOGHKS2-CCOI47dY.js → packet-DYOGHKS2-CU0Rnzfp.js} +6 -6
  132. package/dist/server/assets/{pie-VRWISCQL-BLqEHL1E.js → pie-VRWISCQL-DAKQG59I.js} +6 -6
  133. package/dist/server/assets/{pieDiagram-ADFJNKIX-Cv-DbjH6.js → pieDiagram-ADFJNKIX-C895xIIt.js} +7 -7
  134. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-DFyjNST4.js → quadrantDiagram-AYHSOK5B-6UAdibo5.js} +1 -1
  135. package/dist/server/assets/{radar-ZZBFDIW7-CWlYIMXf.js → radar-ZZBFDIW7-CSkyNl40.js} +6 -6
  136. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-DFM89i-H.js → requirementDiagram-UZGBJVZJ-C9qwWXGY.js} +3 -3
  137. package/dist/server/assets/{router-cAoMUC9Q.js → router-B9BGcvPs.js} +1402 -442
  138. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-Nmb2f9ga.js → sankeyDiagram-TZEHDZUN-BD3BjmcP.js} +1 -1
  139. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BiqqAguj.js → sequenceDiagram-WL72ISMW-CaRznm1o.js} +3 -3
  140. package/dist/server/assets/{square-terminal-DerzWAi-.js → square-terminal-CuW8JOAZ.js} +1 -1
  141. package/dist/server/assets/{stateDiagram-FKZM4ZOC-CkiJXki8.js → stateDiagram-FKZM4ZOC-C7925k-i.js} +8 -8
  142. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-Bt1BL33e.js → stateDiagram-v2-4FDKWEC3-C0yapgJL.js} +4 -4
  143. package/dist/server/assets/{timeline-definition-IT6M3QCI-DCRlJiLq.js → timeline-definition-IT6M3QCI-DfwL9TFo.js} +2 -2
  144. package/dist/server/assets/{treemap-GDKQZRPO-Ci-r6jiA.js → treemap-GDKQZRPO-kKnTHSv2.js} +6 -6
  145. package/dist/server/assets/{workspace._workspaceId-Dj6Y8WPo.js → workspace._workspaceId-BK83HsBK.js} +1 -1
  146. package/dist/server/assets/{workspace._workspaceId-BMnOV3pd.js → workspace._workspaceId-DEWHh9LI.js} +3 -3
  147. package/dist/server/assets/{xychartDiagram-PRI3JC2R-r_3LO6yK.js → xychartDiagram-PRI3JC2R-CfUYiueD.js} +1 -1
  148. package/dist/server/server.js +2 -2
  149. package/dist/start-server.mjs +31 -4
  150. package/package.json +4 -4
  151. package/dist/client/assets/DockviewTerminalContainer-B_36q2Dz.js +0 -2
  152. package/dist/client/assets/TerminalPanel-DbxLiy2t.js +0 -5
  153. package/dist/client/assets/_baseUniq-Cb5igq_8.js +0 -1
  154. package/dist/client/assets/architectureDiagram-VXUJARFQ-BnV97au3.js +0 -36
  155. package/dist/client/assets/channel-2Of2aNA_.js +0 -1
  156. package/dist/client/assets/chunk-QN33PNHL-yK0yp12G.js +0 -1
  157. package/dist/client/assets/classDiagram-2ON5EDUG-D6UcKhcB.js +0 -1
  158. package/dist/client/assets/classDiagram-v2-WZHVMYZB-D6UcKhcB.js +0 -1
  159. package/dist/client/assets/clone-DBCpY5Fq.js +0 -1
  160. package/dist/client/assets/cose-bilkent-S5V4N54A-BZFGVpWR.js +0 -1
  161. package/dist/client/assets/dagre-6UL2VRFP-DRDPL67k.js +0 -4
  162. package/dist/client/assets/diagram-PSM6KHXK-DYAOsIc0.js +0 -24
  163. package/dist/client/assets/diagram-QEK2KX5R-CnjVQgn2.js +0 -43
  164. package/dist/client/assets/diagram-S2PKOQOG-B8sAgSNe.js +0 -24
  165. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-CZGjCgZ_.js +0 -65
  166. package/dist/client/assets/infoDiagram-HS3SLOUP-Bf3MrisJ.js +0 -2
  167. package/dist/client/assets/pieDiagram-ADFJNKIX-B4aWIFbt.js +0 -30
  168. package/dist/client/assets/stateDiagram-FKZM4ZOC-TzlVvqDv.js +0 -1
  169. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BibE5lUV.js +0 -1
  170. package/dist/server/assets/TerminalPanel-nFYTCFHx.js +0 -1238
@@ -4470,7 +4470,7 @@ const oppositeSideMap = {
4470
4470
  bottom: "top",
4471
4471
  top: "bottom"
4472
4472
  };
4473
- function clamp$2(start2, value, end) {
4473
+ function clamp$3(start2, value, end) {
4474
4474
  return max$2(start2, min$2(value, end));
4475
4475
  }
4476
4476
  function evaluate$1(value, param) {
@@ -4827,7 +4827,7 @@ const arrow$3 = (options) => ({
4827
4827
  const min$12 = minPadding;
4828
4828
  const max2 = clientSize - arrowDimensions[length2] - maxPadding;
4829
4829
  const center = clientSize / 2 - arrowDimensions[length2] / 2 + centerToReference;
4830
- const offset2 = clamp$2(min$12, center, max2);
4830
+ const offset2 = clamp$3(min$12, center, max2);
4831
4831
  const shouldAddOffset = !middlewareData.arrow && getAlignment(placement) != null && center !== offset2 && rects.reference[length2] / 2 - (center < min$12 ? minPadding : maxPadding) - arrowDimensions[length2] / 2 < 0;
4832
4832
  const alignmentOffset = shouldAddOffset ? center < min$12 ? center - min$12 : center - max2 : 0;
4833
4833
  return {
@@ -5126,14 +5126,14 @@ const shift$3 = function(options) {
5126
5126
  const maxSide = mainAxis === "y" ? "bottom" : "right";
5127
5127
  const min2 = mainAxisCoord + overflow[minSide];
5128
5128
  const max2 = mainAxisCoord - overflow[maxSide];
5129
- mainAxisCoord = clamp$2(min2, mainAxisCoord, max2);
5129
+ mainAxisCoord = clamp$3(min2, mainAxisCoord, max2);
5130
5130
  }
5131
5131
  if (checkCrossAxis) {
5132
5132
  const minSide = crossAxis === "y" ? "top" : "left";
5133
5133
  const maxSide = crossAxis === "y" ? "bottom" : "right";
5134
5134
  const min2 = crossAxisCoord + overflow[minSide];
5135
5135
  const max2 = crossAxisCoord - overflow[maxSide];
5136
- crossAxisCoord = clamp$2(min2, crossAxisCoord, max2);
5136
+ crossAxisCoord = clamp$3(min2, crossAxisCoord, max2);
5137
5137
  }
5138
5138
  const limitedCoords = limiter.fn({
5139
5139
  ...state2,
@@ -8204,7 +8204,7 @@ var Label$2 = reactExports.forwardRef((props, forwardedRef) => {
8204
8204
  });
8205
8205
  Label$2.displayName = NAME;
8206
8206
  var Root$2 = Label$2;
8207
- function clamp$1(value, [min2, max2]) {
8207
+ function clamp$2(value, [min2, max2]) {
8208
8208
  return Math.min(max2, Math.max(min2, value));
8209
8209
  }
8210
8210
  var POPOVER_NAME = "Popover";
@@ -9132,7 +9132,7 @@ function getThumbOffsetFromScroll(scrollPos, sizes, dir = "ltr") {
9132
9132
  const maxScrollPos = sizes.content - sizes.viewport;
9133
9133
  const maxThumbPos = scrollbar - thumbSizePx;
9134
9134
  const scrollClampRange = dir === "ltr" ? [0, maxScrollPos] : [maxScrollPos * -1, 0];
9135
- const scrollWithoutMomentum = clamp$1(scrollPos, scrollClampRange);
9135
+ const scrollWithoutMomentum = clamp$2(scrollPos, scrollClampRange);
9136
9136
  const interpolate2 = linearScale([0, maxScrollPos], [0, maxThumbPos]);
9137
9137
  return interpolate2(scrollWithoutMomentum);
9138
9138
  }
@@ -9694,7 +9694,7 @@ var SelectItemAlignedPosition = reactExports.forwardRef((props, forwardedRef) =>
9694
9694
  const minContentWidth = triggerRect.width + leftDelta;
9695
9695
  const contentWidth = Math.max(minContentWidth, contentRect.width);
9696
9696
  const rightEdge = window.innerWidth - CONTENT_MARGIN;
9697
- const clampedLeft = clamp$1(left, [
9697
+ const clampedLeft = clamp$2(left, [
9698
9698
  CONTENT_MARGIN,
9699
9699
  // Prevents the content from going off the starting edge of the
9700
9700
  // viewport. It may still go off the ending edge, but this can be
@@ -9712,7 +9712,7 @@ var SelectItemAlignedPosition = reactExports.forwardRef((props, forwardedRef) =>
9712
9712
  const minContentWidth = triggerRect.width + rightDelta;
9713
9713
  const contentWidth = Math.max(minContentWidth, contentRect.width);
9714
9714
  const leftEdge = window.innerWidth - CONTENT_MARGIN;
9715
- const clampedRight = clamp$1(right, [
9715
+ const clampedRight = clamp$2(right, [
9716
9716
  CONTENT_MARGIN,
9717
9717
  Math.max(CONTENT_MARGIN, leftEdge - contentWidth)
9718
9718
  ]);
@@ -42763,53 +42763,53 @@ async function loadLanguage(lang) {
42763
42763
  try {
42764
42764
  switch (lang) {
42765
42765
  case "javascript":
42766
- return import("./index-8fW2N3v4.js").then((m2) => m2.javascript());
42766
+ return import("./index-BbSejcCZ.js").then((m2) => m2.javascript());
42767
42767
  case "jsx":
42768
- return import("./index-8fW2N3v4.js").then((m2) => m2.javascript({ jsx: true }));
42768
+ return import("./index-BbSejcCZ.js").then((m2) => m2.javascript({ jsx: true }));
42769
42769
  case "typescript":
42770
- return import("./index-8fW2N3v4.js").then(
42770
+ return import("./index-BbSejcCZ.js").then(
42771
42771
  (m2) => m2.javascript({ typescript: true })
42772
42772
  );
42773
42773
  case "tsx":
42774
- return import("./index-8fW2N3v4.js").then(
42774
+ return import("./index-BbSejcCZ.js").then(
42775
42775
  (m2) => m2.javascript({ jsx: true, typescript: true })
42776
42776
  );
42777
42777
  case "python":
42778
- return import("./index-DsPBpNpr.js").then((m2) => m2.python());
42778
+ return import("./index-DYATP6mi.js").then((m2) => m2.python());
42779
42779
  case "html":
42780
- return import("./index-CUnnFiRO.js").then((m2) => m2.html());
42780
+ return import("./index-B9n0dcMw.js").then((m2) => m2.html());
42781
42781
  case "css":
42782
- return import("./index-O03NM4sL.js").then((m2) => m2.css());
42782
+ return import("./index-Bgh1V0xV.js").then((m2) => m2.css());
42783
42783
  case "scss":
42784
42784
  case "sass":
42785
- return import("./index-bbP5Ilkt.js").then((m2) => m2.sass());
42785
+ return import("./index-CR4BnEcT.js").then((m2) => m2.sass());
42786
42786
  case "less":
42787
- return import("./index-BiMwh0FT.js").then((m2) => m2.less());
42787
+ return import("./index-CkCmjvnL.js").then((m2) => m2.less());
42788
42788
  case "json":
42789
42789
  case "jsonc":
42790
- return import("./index-DipxLM5f.js").then((m2) => m2.json());
42790
+ return import("./index-CA1ILOaa.js").then((m2) => m2.json());
42791
42791
  case "markdown":
42792
42792
  case "mdx":
42793
- return import("./index-BDqHa1DL.js").then((m2) => m2.markdown());
42793
+ return import("./index-B-dHru1q.js").then((m2) => m2.markdown());
42794
42794
  case "xml":
42795
- return import("./index-DEZw9nkv.js").then((m2) => m2.xml());
42795
+ return import("./index-DM7tck_E.js").then((m2) => m2.xml());
42796
42796
  case "yaml":
42797
- return import("./index-dAOow3Ru.js").then((m2) => m2.yaml());
42797
+ return import("./index-DoPHl__N.js").then((m2) => m2.yaml());
42798
42798
  case "sql":
42799
- return import("./index-igT3OuCm.js").then((m2) => m2.sql());
42799
+ return import("./index-JQz2Ac_X.js").then((m2) => m2.sql());
42800
42800
  case "rust":
42801
- return import("./index-CGm8Czks.js").then((m2) => m2.rust());
42801
+ return import("./index-gZfWBVgm.js").then((m2) => m2.rust());
42802
42802
  case "go":
42803
- return import("./index-DYiuwMzT.js").then((m2) => m2.go());
42803
+ return import("./index-DURk6tcR.js").then((m2) => m2.go());
42804
42804
  case "java":
42805
- return import("./index-5St5BCcJ.js").then((m2) => m2.java());
42805
+ return import("./index-CU2q4Svg.js").then((m2) => m2.java());
42806
42806
  case "kotlin":
42807
- return import("./index-5St5BCcJ.js").then((m2) => m2.java());
42807
+ return import("./index-CU2q4Svg.js").then((m2) => m2.java());
42808
42808
  case "c":
42809
42809
  case "cpp":
42810
- return import("./index-DR892S39.js").then((m2) => m2.cpp());
42810
+ return import("./index-DdEGElQC.js").then((m2) => m2.cpp());
42811
42811
  case "php":
42812
- return import("./index-BZSAPXc2.js").then((m2) => m2.php());
42812
+ return import("./index-BVZPT41S.js").then((m2) => m2.php());
42813
42813
  // Legacy modes via StreamLanguage
42814
42814
  case "bash":
42815
42815
  case "fish":
@@ -52956,7 +52956,7 @@ function useProjectKindForWorkspace(workspaceId) {
52956
52956
  const map2 = useProjectKindMap();
52957
52957
  return map2.get(workspaceId);
52958
52958
  }
52959
- const DEFAULT_SEARCH_OPTIONS = {
52959
+ const DEFAULT_SEARCH_OPTIONS$1 = {
52960
52960
  caseSensitive: false,
52961
52961
  wholeWord: false,
52962
52962
  regex: false
@@ -52968,9 +52968,9 @@ function useSearch({
52968
52968
  }) {
52969
52969
  const [searchOpen, setSearchOpen] = reactExports.useState(false);
52970
52970
  const [searchQuery, setSearchQueryText] = reactExports.useState("");
52971
- const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS);
52971
+ const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS$1);
52972
52972
  const searchQueryRef = reactExports.useRef("");
52973
- const searchOptionsRef = reactExports.useRef(DEFAULT_SEARCH_OPTIONS);
52973
+ const searchOptionsRef = reactExports.useRef(DEFAULT_SEARCH_OPTIONS$1);
52974
52974
  const [matchInfo, setMatchInfo] = reactExports.useState({
52975
52975
  total: 0,
52976
52976
  current: 0
@@ -68715,7 +68715,7 @@ function remove$1(array2, value) {
68715
68715
  }
68716
68716
  return false;
68717
68717
  }
68718
- const clamp = (value, min2, max2) => {
68718
+ const clamp$1 = (value, min2, max2) => {
68719
68719
  if (min2 > max2) {
68720
68720
  return min2;
68721
68721
  }
@@ -68796,7 +68796,7 @@ class ViewItem {
68796
68796
  return;
68797
68797
  }
68798
68798
  if (visible) {
68799
- this.size = clamp((_a3 = this._cachedVisibleSize) !== null && _a3 !== void 0 ? _a3 : 0, this.viewMinimumSize, this.viewMaximumSize);
68799
+ this.size = clamp$1((_a3 = this._cachedVisibleSize) !== null && _a3 !== void 0 ? _a3 : 0, this.viewMinimumSize, this.viewMaximumSize);
68800
68800
  this._cachedVisibleSize = void 0;
68801
68801
  } else {
68802
68802
  this._cachedVisibleSize = typeof size2 === "number" ? size2 : this.size;
@@ -68978,12 +68978,12 @@ class Splitview {
68978
68978
  if (snapped) {
68979
68979
  return this.resize(index2, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);
68980
68980
  }
68981
- const tentativeDelta = clamp(delta, minDelta, maxDelta);
68981
+ const tentativeDelta = clamp$1(delta, minDelta, maxDelta);
68982
68982
  let actualDelta = 0;
68983
68983
  let deltaUp = tentativeDelta;
68984
68984
  for (let i2 = 0; i2 < upItems.length; i2++) {
68985
68985
  const item = upItems[i2];
68986
- const size2 = clamp(upSizes[i2] + deltaUp, item.minimumSize, item.maximumSize);
68986
+ const size2 = clamp$1(upSizes[i2] + deltaUp, item.minimumSize, item.maximumSize);
68987
68987
  const viewDelta = size2 - upSizes[i2];
68988
68988
  actualDelta += viewDelta;
68989
68989
  deltaUp -= viewDelta;
@@ -68992,7 +68992,7 @@ class Splitview {
68992
68992
  let deltaDown = actualDelta;
68993
68993
  for (let i2 = 0; i2 < downItems.length; i2++) {
68994
68994
  const item = downItems[i2];
68995
- const size2 = clamp(downSizes[i2] - deltaDown, item.minimumSize, item.maximumSize);
68995
+ const size2 = clamp$1(downSizes[i2] - deltaDown, item.minimumSize, item.maximumSize);
68996
68996
  const viewDelta = size2 - downSizes[i2];
68997
68997
  deltaDown += viewDelta;
68998
68998
  item.size = size2;
@@ -69075,7 +69075,7 @@ class Splitview {
69075
69075
  const highPriorityIndexes = indexes.filter((i2) => this.viewItems[i2].priority === LayoutPriority.High);
69076
69076
  const item = this.viewItems[index2];
69077
69077
  size2 = Math.round(size2);
69078
- size2 = clamp(size2, item.minimumSize, Math.min(item.maximumSize, this._size));
69078
+ size2 = clamp$1(size2, item.minimumSize, Math.min(item.maximumSize, this._size));
69079
69079
  item.size = size2;
69080
69080
  this.relayout(lowPriorityIndexes, highPriorityIndexes);
69081
69081
  }
@@ -69088,7 +69088,7 @@ class Splitview {
69088
69088
  return;
69089
69089
  }
69090
69090
  size2 = typeof size2 === "number" ? size2 : item.size;
69091
- size2 = clamp(size2, item.minimumSize, item.maximumSize);
69091
+ size2 = clamp$1(size2, item.minimumSize, item.maximumSize);
69092
69092
  item.size = size2;
69093
69093
  const indexes = range$5(this.viewItems.length).filter((i2) => i2 !== index2);
69094
69094
  const lowPriorityIndexes = [
@@ -69220,7 +69220,7 @@ class Splitview {
69220
69220
  }
69221
69221
  const size2 = Math.floor(flexibleSize / flexibleViewItems.length);
69222
69222
  for (const item of flexibleViewItems) {
69223
- item.size = clamp(size2, item.minimumSize, item.maximumSize);
69223
+ item.size = clamp$1(size2, item.minimumSize, item.maximumSize);
69224
69224
  }
69225
69225
  const indexes = range$5(this.viewItems.length);
69226
69226
  const lowPriorityIndexes = indexes.filter((i2) => this.viewItems[i2].priority === LayoutPriority.Low);
@@ -69281,7 +69281,7 @@ class Splitview {
69281
69281
  const item = this.viewItems[i2];
69282
69282
  const proportion = this.proportions[i2];
69283
69283
  if (typeof proportion === "number" && total > 0) {
69284
- item.size = clamp(Math.round(proportion * size2 / total), item.minimumSize, item.maximumSize);
69284
+ item.size = clamp$1(Math.round(proportion * size2 / total), item.minimumSize, item.maximumSize);
69285
69285
  }
69286
69286
  }
69287
69287
  }
@@ -69312,7 +69312,7 @@ class Splitview {
69312
69312
  }
69313
69313
  for (let i2 = 0; emptyDelta !== 0 && i2 < indexes.length; i2++) {
69314
69314
  const item = this.viewItems[indexes[i2]];
69315
- const size2 = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);
69315
+ const size2 = clamp$1(item.size + emptyDelta, item.minimumSize, item.maximumSize);
69316
69316
  const viewDelta = size2 - item.size;
69317
69317
  emptyDelta -= viewDelta;
69318
69318
  item.size = size2;
@@ -71991,13 +71991,13 @@ class Droptarget extends CompositeDisposable {
71991
71991
  let size2 = 1;
71992
71992
  const sizeOptions = (_h2 = (_g2 = this.options.overlayModel) === null || _g2 === void 0 ? void 0 : _g2.size) !== null && _h2 !== void 0 ? _h2 : DEFAULT_SIZE$1;
71993
71993
  if (sizeOptions.type === "percentage") {
71994
- size2 = clamp(sizeOptions.value, 0, 100) / 100;
71994
+ size2 = clamp$1(sizeOptions.value, 0, 100) / 100;
71995
71995
  } else {
71996
71996
  if (rightClass || leftClass) {
71997
- size2 = clamp(0, sizeOptions.value, width) / width;
71997
+ size2 = clamp$1(0, sizeOptions.value, width) / width;
71998
71998
  }
71999
71999
  if (topClass || bottomClass) {
72000
- size2 = clamp(0, sizeOptions.value, height) / height;
72000
+ size2 = clamp$1(0, sizeOptions.value, height) / height;
72001
72001
  }
72002
72002
  }
72003
72003
  if (target) {
@@ -73163,7 +73163,7 @@ class Scrollbar extends CompositeDisposable {
73163
73163
  this._scrollbar.style.height = `${px}px`;
73164
73164
  this._scrollbar.style.width = "";
73165
73165
  }
73166
- this._scrollOffset = clamp(this._scrollOffset, 0, scrollSize - clientSize);
73166
+ this._scrollOffset = clamp$1(this._scrollOffset, 0, scrollSize - clientSize);
73167
73167
  if (this._orientation === "horizontal") {
73168
73168
  this.scrollableElement.scrollLeft = this._scrollOffset;
73169
73169
  } else {
@@ -77673,22 +77673,22 @@ class Overlay extends CompositeDisposable {
77673
77673
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
77674
77674
  const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
77675
77675
  if (this.verticalAlignment === "top") {
77676
- const top2 = clamp(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77676
+ const top2 = clamp$1(overlayRect.top - containerRect.top, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77677
77677
  this._element.style.top = `${top2}px`;
77678
77678
  this._element.style.bottom = "auto";
77679
77679
  }
77680
77680
  if (this.verticalAlignment === "bottom") {
77681
- const bottom = clamp(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77681
+ const bottom = clamp$1(containerRect.bottom - overlayRect.bottom, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77682
77682
  this._element.style.bottom = `${bottom}px`;
77683
77683
  this._element.style.top = "auto";
77684
77684
  }
77685
77685
  if (this.horiziontalAlignment === "left") {
77686
- const left = clamp(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77686
+ const left = clamp$1(overlayRect.left - containerRect.left, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77687
77687
  this._element.style.left = `${left}px`;
77688
77688
  this._element.style.right = "auto";
77689
77689
  }
77690
77690
  if (this.horiziontalAlignment === "right") {
77691
- const right = clamp(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77691
+ const right = clamp$1(containerRect.right - overlayRect.right, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77692
77692
  this._element.style.right = `${right}px`;
77693
77693
  this._element.style.left = "auto";
77694
77694
  }
@@ -77739,10 +77739,10 @@ class Overlay extends CompositeDisposable {
77739
77739
  }
77740
77740
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
77741
77741
  const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
77742
- const top2 = clamp(y4 - offset2.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77743
- const bottom = clamp(offset2.y - y4 + containerRect.height - overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77744
- const left = clamp(x2 - offset2.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77745
- const right = clamp(offset2.x - x2 + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77742
+ const top2 = clamp$1(y4 - offset2.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77743
+ const bottom = clamp$1(offset2.y - y4 + containerRect.height - overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77744
+ const left = clamp$1(x2 - offset2.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77745
+ const right = clamp$1(offset2.x - x2 + containerRect.width - overlayRect.width, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77746
77746
  const bounds = {};
77747
77747
  if (top2 <= bottom) {
77748
77748
  bounds.top = top2;
@@ -77817,7 +77817,7 @@ class Overlay extends CompositeDisposable {
77817
77817
  let width = void 0;
77818
77818
  const moveTop = () => {
77819
77819
  const maxTop = startPosition.originalY + startPosition.originalHeight > containerRect.height ? Math.max(0, containerRect.height - Overlay.MINIMUM_HEIGHT) : Math.max(0, startPosition.originalY + startPosition.originalHeight - Overlay.MINIMUM_HEIGHT);
77820
- top2 = clamp(y4, 0, maxTop);
77820
+ top2 = clamp$1(y4, 0, maxTop);
77821
77821
  height = startPosition.originalY + startPosition.originalHeight - top2;
77822
77822
  bottom = containerRect.height - top2 - height;
77823
77823
  };
@@ -77825,12 +77825,12 @@ class Overlay extends CompositeDisposable {
77825
77825
  top2 = startPosition.originalY - startPosition.originalHeight;
77826
77826
  const minHeight = top2 < 0 && typeof this.options.minimumInViewportHeight === "number" ? -top2 + this.options.minimumInViewportHeight : Overlay.MINIMUM_HEIGHT;
77827
77827
  const maxHeight = containerRect.height - Math.max(0, top2);
77828
- height = clamp(y4 - top2, minHeight, maxHeight);
77828
+ height = clamp$1(y4 - top2, minHeight, maxHeight);
77829
77829
  bottom = containerRect.height - top2 - height;
77830
77830
  };
77831
77831
  const moveLeft = () => {
77832
77832
  const maxLeft = startPosition.originalX + startPosition.originalWidth > containerRect.width ? Math.max(0, containerRect.width - Overlay.MINIMUM_WIDTH) : Math.max(0, startPosition.originalX + startPosition.originalWidth - Overlay.MINIMUM_WIDTH);
77833
- left = clamp(x2, 0, maxLeft);
77833
+ left = clamp$1(x2, 0, maxLeft);
77834
77834
  width = startPosition.originalX + startPosition.originalWidth - left;
77835
77835
  right = containerRect.width - left - width;
77836
77836
  };
@@ -77838,7 +77838,7 @@ class Overlay extends CompositeDisposable {
77838
77838
  left = startPosition.originalX - startPosition.originalWidth;
77839
77839
  const minWidth = left < 0 && typeof this.options.minimumInViewportWidth === "number" ? -left + this.options.minimumInViewportWidth : Overlay.MINIMUM_WIDTH;
77840
77840
  const maxWidth = containerRect.width - Math.max(0, left);
77841
- width = clamp(x2 - left, minWidth, maxWidth);
77841
+ width = clamp$1(x2 - left, minWidth, maxWidth);
77842
77842
  right = containerRect.width - left - width;
77843
77843
  };
77844
77844
  switch (direction) {
@@ -109379,7 +109379,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
109379
109379
  var et$1 = ({ className: e3, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f$5("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e3), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
109380
109380
  var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
109381
109381
  var ot$1 = ({ language: e3 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e3, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e3 }) });
109382
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-CktYi1nO.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
109382
+ var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-D44laf8J.js").then((e3) => ({ default: e3.HighlightedCodeBlockBody }))), rt = ({ code: e3, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
109383
109383
  let i2 = reactExports.useMemo(() => e3.replace(cn, ""), [e3]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
109384
109384
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
109385
109385
  return jsxRuntimeExports.jsx(Se$1.Provider, { value: { code: e3 }, children: jsxRuntimeExports.jsxs(et$1, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot$1, { language: t2 }), n2 ? jsxRuntimeExports.jsx("div", { className: "pointer-events-none sticky top-2 z-10 -mt-10 flex h-8 items-center justify-end", children: jsxRuntimeExports.jsx("div", { className: "pointer-events-auto flex shrink-0 items-center gap-2 rounded-md border border-sidebar bg-sidebar/80 px-1.5 py-1 supports-[backdrop-filter]:bg-sidebar/70 supports-[backdrop-filter]:backdrop-blur", "data-streamdown": "code-block-actions", children: n2 }) }) : null, jsxRuntimeExports.jsx(reactExports.Suspense, { fallback: jsxRuntimeExports.jsx(Qe$1, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
@@ -109701,7 +109701,7 @@ var Dt = ({ children: e3, className: t2, onDownload: o3, onError: n2 }) => {
109701
109701
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f$5("cursor-pointer p-1 text-muted-foreground transition-all hover:text-foreground disabled:cursor-not-allowed disabled:opacity-50", t2), disabled: c2, onClick: () => r2(!s2), title: "Download table", type: "button", children: e3 != null ? e3 : jsxRuntimeExports.jsx(Z$2, { size: 14 }) }), s2 ? jsxRuntimeExports.jsxs("div", { className: "absolute top-full right-0 z-10 mt-1 min-w-[120px] overflow-hidden rounded-md border border-border bg-background shadow-lg", children: [jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("csv"), title: "Download table as CSV", type: "button", children: "CSV" }), jsxRuntimeExports.jsx("button", { className: "w-full px-3 py-2 text-left text-sm transition-colors hover:bg-muted/40", onClick: () => a2("markdown"), title: "Download table as Markdown", type: "button", children: "Markdown" })] }) : null] });
109702
109702
  };
109703
109703
  var Vt = ({ children: e3, className: t2, showControls: o3, ...n2 }) => jsxRuntimeExports.jsxs("div", { className: "my-4 flex flex-col gap-2 rounded-lg border border-border bg-sidebar p-2", "data-streamdown": "table-wrapper", children: [o3 ? jsxRuntimeExports.jsxs("div", { className: "flex items-center justify-end gap-1", children: [jsxRuntimeExports.jsx(Ht, {}), jsxRuntimeExports.jsx(Dt, {})] }) : null, jsxRuntimeExports.jsx("div", { className: "border-collapse overflow-x-auto overscroll-y-auto rounded-md border border-border bg-background", children: jsxRuntimeExports.jsx("table", { className: f$5("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e3 }) })] });
109704
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-CIBz4-1r.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109704
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-m_-3aBOO.js").then((e3) => ({ default: e3.Mermaid }))), Kn = /language-([^\s]+)/;
109705
109705
  function ke$1(e3, t2) {
109706
109706
  if (!(e3 != null && e3.position || t2 != null && t2.position)) return true;
109707
109707
  if (!(e3 != null && e3.position && (t2 != null && t2.position))) return false;
@@ -161872,12 +161872,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
161872
161872
  registerLayoutLoaders([
161873
161873
  {
161874
161874
  name: "dagre",
161875
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-CNIyd6rH.js"), "loader")
161875
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-CJdhKZlX.js"), "loader")
161876
161876
  },
161877
161877
  ...[
161878
161878
  {
161879
161879
  name: "cose-bilkent",
161880
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-DaKuQRAN.js"), "loader")
161880
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-B-Bym2R2.js"), "loader")
161881
161881
  }
161882
161882
  ]
161883
161883
  ]);
@@ -162316,7 +162316,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
162316
162316
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
162317
162317
  }, "detector");
162318
162318
  var loader = /* @__PURE__ */ __name(async () => {
162319
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-D585k1An.js");
162319
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-B3FexEXR.js");
162320
162320
  return { id, diagram: diagram2 };
162321
162321
  }, "loader");
162322
162322
  var plugin = {
@@ -162333,7 +162333,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
162333
162333
  return /^\s*graph/.test(txt);
162334
162334
  }, "detector");
162335
162335
  var loader2 = /* @__PURE__ */ __name(async () => {
162336
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CUlvxSwr.js");
162336
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162337
162337
  return { id: id2, diagram: diagram2 };
162338
162338
  }, "loader");
162339
162339
  var plugin2 = {
@@ -162356,7 +162356,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
162356
162356
  return /^\s*flowchart/.test(txt);
162357
162357
  }, "detector");
162358
162358
  var loader3 = /* @__PURE__ */ __name(async () => {
162359
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CUlvxSwr.js");
162359
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162360
162360
  return { id: id3, diagram: diagram2 };
162361
162361
  }, "loader");
162362
162362
  var plugin3 = {
@@ -162370,7 +162370,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
162370
162370
  return /^\s*erDiagram/.test(txt);
162371
162371
  }, "detector");
162372
162372
  var loader4 = /* @__PURE__ */ __name(async () => {
162373
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-B3yUU2uu.js");
162373
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DgXGwPJi.js");
162374
162374
  return { id: id4, diagram: diagram2 };
162375
162375
  }, "loader");
162376
162376
  var plugin4 = {
@@ -162384,7 +162384,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
162384
162384
  return /^\s*gitGraph/.test(txt);
162385
162385
  }, "detector");
162386
162386
  var loader5 = /* @__PURE__ */ __name(async () => {
162387
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CepF7ieg.js");
162387
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-BoLIFjNj.js");
162388
162388
  return { id: id5, diagram: diagram2 };
162389
162389
  }, "loader");
162390
162390
  var plugin5 = {
@@ -162398,7 +162398,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
162398
162398
  return /^\s*gantt/.test(txt);
162399
162399
  }, "detector");
162400
162400
  var loader6 = /* @__PURE__ */ __name(async () => {
162401
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-BWxUm4vA.js");
162401
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-Df1I84HD.js");
162402
162402
  return { id: id6, diagram: diagram2 };
162403
162403
  }, "loader");
162404
162404
  var plugin6 = {
@@ -162412,7 +162412,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
162412
162412
  return /^\s*info/.test(txt);
162413
162413
  }, "detector");
162414
162414
  var loader7 = /* @__PURE__ */ __name(async () => {
162415
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-BMd22txJ.js");
162415
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-m71IJidm.js");
162416
162416
  return { id: id7, diagram: diagram2 };
162417
162417
  }, "loader");
162418
162418
  var info = {
@@ -162425,7 +162425,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
162425
162425
  return /^\s*pie/.test(txt);
162426
162426
  }, "detector");
162427
162427
  var loader8 = /* @__PURE__ */ __name(async () => {
162428
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-Cv-DbjH6.js");
162428
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-C895xIIt.js");
162429
162429
  return { id: id8, diagram: diagram2 };
162430
162430
  }, "loader");
162431
162431
  var pie = {
@@ -162438,7 +162438,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
162438
162438
  return /^\s*quadrantChart/.test(txt);
162439
162439
  }, "detector");
162440
162440
  var loader9 = /* @__PURE__ */ __name(async () => {
162441
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-DFyjNST4.js");
162441
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-6UAdibo5.js");
162442
162442
  return { id: id9, diagram: diagram2 };
162443
162443
  }, "loader");
162444
162444
  var plugin7 = {
@@ -162452,7 +162452,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
162452
162452
  return /^\s*xychart(-beta)?/.test(txt);
162453
162453
  }, "detector");
162454
162454
  var loader10 = /* @__PURE__ */ __name(async () => {
162455
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-r_3LO6yK.js");
162455
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-CfUYiueD.js");
162456
162456
  return { id: id10, diagram: diagram2 };
162457
162457
  }, "loader");
162458
162458
  var plugin8 = {
@@ -162466,7 +162466,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
162466
162466
  return /^\s*requirement(Diagram)?/.test(txt);
162467
162467
  }, "detector");
162468
162468
  var loader11 = /* @__PURE__ */ __name(async () => {
162469
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-DFM89i-H.js");
162469
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-C9qwWXGY.js");
162470
162470
  return { id: id11, diagram: diagram2 };
162471
162471
  }, "loader");
162472
162472
  var plugin9 = {
@@ -162480,7 +162480,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
162480
162480
  return /^\s*sequenceDiagram/.test(txt);
162481
162481
  }, "detector");
162482
162482
  var loader12 = /* @__PURE__ */ __name(async () => {
162483
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-BiqqAguj.js");
162483
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-CaRznm1o.js");
162484
162484
  return { id: id12, diagram: diagram2 };
162485
162485
  }, "loader");
162486
162486
  var plugin10 = {
@@ -162497,7 +162497,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
162497
162497
  return /^\s*classDiagram/.test(txt);
162498
162498
  }, "detector");
162499
162499
  var loader13 = /* @__PURE__ */ __name(async () => {
162500
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-Ds7CCTUR.js");
162500
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-Dr94MNeD.js");
162501
162501
  return { id: id13, diagram: diagram2 };
162502
162502
  }, "loader");
162503
162503
  var plugin11 = {
@@ -162514,7 +162514,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
162514
162514
  return /^\s*classDiagram-v2/.test(txt);
162515
162515
  }, "detector");
162516
162516
  var loader14 = /* @__PURE__ */ __name(async () => {
162517
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Ds7CCTUR.js");
162517
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Dr94MNeD.js");
162518
162518
  return { id: id14, diagram: diagram2 };
162519
162519
  }, "loader");
162520
162520
  var plugin12 = {
@@ -162531,7 +162531,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
162531
162531
  return /^\s*stateDiagram/.test(txt);
162532
162532
  }, "detector");
162533
162533
  var loader15 = /* @__PURE__ */ __name(async () => {
162534
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-CkiJXki8.js");
162534
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-C7925k-i.js");
162535
162535
  return { id: id15, diagram: diagram2 };
162536
162536
  }, "loader");
162537
162537
  var plugin13 = {
@@ -162551,7 +162551,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
162551
162551
  return false;
162552
162552
  }, "detector");
162553
162553
  var loader16 = /* @__PURE__ */ __name(async () => {
162554
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-Bt1BL33e.js");
162554
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-C0yapgJL.js");
162555
162555
  return { id: id16, diagram: diagram2 };
162556
162556
  }, "loader");
162557
162557
  var plugin14 = {
@@ -162565,7 +162565,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
162565
162565
  return /^\s*journey/.test(txt);
162566
162566
  }, "detector");
162567
162567
  var loader17 = /* @__PURE__ */ __name(async () => {
162568
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-DyIx8DQc.js");
162568
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-Z2B632R6.js");
162569
162569
  return { id: id17, diagram: diagram2 };
162570
162570
  }, "loader");
162571
162571
  var plugin15 = {
@@ -162632,7 +162632,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
162632
162632
  return false;
162633
162633
  }, "detector");
162634
162634
  var loader18 = /* @__PURE__ */ __name(async () => {
162635
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CUlvxSwr.js");
162635
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162636
162636
  return { id: id18, diagram: diagram2 };
162637
162637
  }, "loader");
162638
162638
  var plugin16 = {
@@ -162646,7 +162646,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
162646
162646
  return /^\s*timeline/.test(txt);
162647
162647
  }, "detector");
162648
162648
  var loader19 = /* @__PURE__ */ __name(async () => {
162649
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DCRlJiLq.js");
162649
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DfwL9TFo.js");
162650
162650
  return { id: id19, diagram: diagram2 };
162651
162651
  }, "loader");
162652
162652
  var plugin17 = {
@@ -162660,7 +162660,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
162660
162660
  return /^\s*mindmap/.test(txt);
162661
162661
  }, "detector");
162662
162662
  var loader20 = /* @__PURE__ */ __name(async () => {
162663
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-C2EIvkPG.js");
162663
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-B9LDAkQV.js");
162664
162664
  return { id: id20, diagram: diagram2 };
162665
162665
  }, "loader");
162666
162666
  var plugin18 = {
@@ -162674,7 +162674,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
162674
162674
  return /^\s*kanban/.test(txt);
162675
162675
  }, "detector");
162676
162676
  var loader21 = /* @__PURE__ */ __name(async () => {
162677
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-D6P6mjw2.js");
162677
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-B2vyxAFc.js");
162678
162678
  return { id: id21, diagram: diagram2 };
162679
162679
  }, "loader");
162680
162680
  var plugin19 = {
@@ -162688,7 +162688,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
162688
162688
  return /^\s*sankey(-beta)?/.test(txt);
162689
162689
  }, "detector");
162690
162690
  var loader22 = /* @__PURE__ */ __name(async () => {
162691
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-Nmb2f9ga.js");
162691
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-BD3BjmcP.js");
162692
162692
  return { id: id22, diagram: diagram2 };
162693
162693
  }, "loader");
162694
162694
  var plugin20 = {
@@ -162702,7 +162702,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
162702
162702
  return /^\s*packet(-beta)?/.test(txt);
162703
162703
  }, "detector");
162704
162704
  var loader23 = /* @__PURE__ */ __name(async () => {
162705
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-CSa3a_oJ.js");
162705
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-DfZmENnB.js");
162706
162706
  return { id: id23, diagram: diagram2 };
162707
162707
  }, "loader");
162708
162708
  var packet = {
@@ -162715,7 +162715,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
162715
162715
  return /^\s*radar-beta/.test(txt);
162716
162716
  }, "detector");
162717
162717
  var loader24 = /* @__PURE__ */ __name(async () => {
162718
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-Bpupf8hI.js");
162718
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-CUdsg8PG.js");
162719
162719
  return { id: id24, diagram: diagram2 };
162720
162720
  }, "loader");
162721
162721
  var radar = {
@@ -162728,7 +162728,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
162728
162728
  return /^\s*block(-beta)?/.test(txt);
162729
162729
  }, "detector");
162730
162730
  var loader25 = /* @__PURE__ */ __name(async () => {
162731
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-BKZ2vg7U.js");
162731
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-WUFdSkGk.js");
162732
162732
  return { id: id25, diagram: diagram2 };
162733
162733
  }, "loader");
162734
162734
  var plugin21 = {
@@ -162742,7 +162742,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
162742
162742
  return /^\s*architecture/.test(txt);
162743
162743
  }, "detector");
162744
162744
  var loader26 = /* @__PURE__ */ __name(async () => {
162745
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-T9CAFBo1.js");
162745
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DrNJMIEJ.js");
162746
162746
  return { id: id26, diagram: diagram2 };
162747
162747
  }, "loader");
162748
162748
  var architecture = {
@@ -162756,7 +162756,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
162756
162756
  return /^\s*treemap/.test(txt);
162757
162757
  }, "detector");
162758
162758
  var loader27 = /* @__PURE__ */ __name(async () => {
162759
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-ByElNwdP.js");
162759
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-Bku5j6_i.js");
162760
162760
  return { id: id27, diagram: diagram2 };
162761
162761
  }, "loader");
162762
162762
  var treemap = {
@@ -173914,7 +173914,7 @@ const CHAT_EVENT_TYPES = [
173914
173914
  "subscription-opened",
173915
173915
  "history-meta"
173916
173916
  ];
173917
- const INITIAL_STATE = {
173917
+ const INITIAL_STATE$1 = {
173918
173918
  messages: [],
173919
173919
  status: "idle",
173920
173920
  sessionId: void 0,
@@ -174357,7 +174357,7 @@ async function fileToWirePart(file2) {
174357
174357
  }
174358
174358
  function useChatSubscription(opts) {
174359
174359
  const { workspaceId, chatId, mode, model, codingAgentId, enabled = true } = opts;
174360
- const [state2, dispatch2] = reactExports.useReducer(chatEventReducer, INITIAL_STATE);
174360
+ const [state2, dispatch2] = reactExports.useReducer(chatEventReducer, INITIAL_STATE$1);
174361
174361
  const [isConnected, setIsConnected] = reactExports.useState(false);
174362
174362
  const [docVisible, setDocVisible] = reactExports.useState(
174363
174363
  () => typeof document === "undefined" ? true : document.visibilityState !== "hidden"
@@ -174551,7 +174551,7 @@ function useChatSubscription(opts) {
174551
174551
  );
174552
174552
  if (!res.ok) throw new Error(`history fetch failed: HTTP ${res.status}`);
174553
174553
  const data = await res.json();
174554
- const folded = applyEvents(INITIAL_STATE, data.events);
174554
+ const folded = applyEvents(INITIAL_STATE$1, data.events);
174555
174555
  const namespaced = folded.messages.map((m2) => ({ ...m2, id: `o${before}-${m2.id}` }));
174556
174556
  dispatch2({
174557
174557
  type: "prepend-messages",
@@ -178071,6 +178071,1042 @@ function createDefaultPanel(api, workspaceId) {
178071
178071
  position: centralPanelPosition(api)
178072
178072
  });
178073
178073
  }
178074
+ function findTerminalFileLinks(lineText) {
178075
+ const candidateRe = /[A-Za-z0-9._/@~+-]+(?::\d+(?:[-:]\d+)?)?/g;
178076
+ const matches2 = [];
178077
+ for (const match of lineText.matchAll(candidateRe)) {
178078
+ const text2 = match[0];
178079
+ if (isFilePath(text2)) {
178080
+ matches2.push({ text: text2, startIndex: match.index, endIndex: match.index + text2.length });
178081
+ }
178082
+ }
178083
+ return matches2;
178084
+ }
178085
+ function readLineColumns(terminal, line2) {
178086
+ const parts = [];
178087
+ const columnForIndex = [];
178088
+ let length2 = 0;
178089
+ let cell2;
178090
+ for (let x2 = 0; x2 < terminal.cols; x2++) {
178091
+ cell2 = line2.getCell(x2, cell2);
178092
+ if (!cell2) continue;
178093
+ if (cell2.getWidth() === 0) continue;
178094
+ const chars = cell2.getChars();
178095
+ const ch = chars.length > 0 ? chars : " ";
178096
+ columnForIndex[length2] = x2 + 1;
178097
+ parts.push(ch);
178098
+ length2 += ch.length;
178099
+ }
178100
+ return { text: parts.join(""), columnForIndex };
178101
+ }
178102
+ function createTerminalFileLinkProvider(terminal, onActivate) {
178103
+ return {
178104
+ provideLinks(bufferLineNumber, callback) {
178105
+ const line2 = terminal.buffer.active.getLine(bufferLineNumber - 1);
178106
+ if (!line2) {
178107
+ callback(void 0);
178108
+ return;
178109
+ }
178110
+ const { text: text2, columnForIndex } = readLineColumns(terminal, line2);
178111
+ const matches2 = findTerminalFileLinks(text2);
178112
+ if (matches2.length === 0) {
178113
+ callback(void 0);
178114
+ return;
178115
+ }
178116
+ const links = matches2.map((m2) => {
178117
+ const startColumn = columnForIndex[m2.startIndex] ?? 1;
178118
+ const endColumn = columnForIndex[m2.endIndex - 1] ?? terminal.cols;
178119
+ return {
178120
+ text: m2.text,
178121
+ range: {
178122
+ start: { x: startColumn, y: bufferLineNumber },
178123
+ end: { x: endColumn, y: bufferLineNumber }
178124
+ },
178125
+ decorations: { pointerCursor: true, underline: true },
178126
+ activate: (event) => {
178127
+ event.preventDefault();
178128
+ onActivate(m2.text);
178129
+ }
178130
+ };
178131
+ });
178132
+ callback(links);
178133
+ }
178134
+ };
178135
+ }
178136
+ const PARKING_WIDTH_PX = 800;
178137
+ const PARKING_HEIGHT_PX = 600;
178138
+ const PARKING_KEY = "__bandTerminalParking__";
178139
+ function getParkingContainer() {
178140
+ const store = globalThis;
178141
+ const existing = store[PARKING_KEY];
178142
+ if (existing?.isConnected) return existing;
178143
+ const container = document.createElement("div");
178144
+ container.dataset.testid = "terminal-parking";
178145
+ Object.assign(container.style, {
178146
+ position: "fixed",
178147
+ left: "-9999px",
178148
+ top: "-9999px",
178149
+ width: `${PARKING_WIDTH_PX}px`,
178150
+ height: `${PARKING_HEIGHT_PX}px`,
178151
+ overflow: "hidden",
178152
+ // Keep it out of the pointer/hit-testing path entirely.
178153
+ pointerEvents: "none"
178154
+ });
178155
+ container.inert = true;
178156
+ container.setAttribute("inert", "");
178157
+ container.setAttribute("aria-hidden", "true");
178158
+ document.body.appendChild(container);
178159
+ store[PARKING_KEY] = container;
178160
+ return container;
178161
+ }
178162
+ const WORD_RE = /[A-Za-z0-9_./:\-+@~]/;
178163
+ function pointToCell(clientX, clientY, terminal, screenEl) {
178164
+ const rect2 = screenEl.getBoundingClientRect();
178165
+ if (rect2.width <= 0 || rect2.height <= 0 || terminal.cols <= 0 || terminal.rows <= 0) {
178166
+ return { col: 0, row: terminal.buffer.active.viewportY };
178167
+ }
178168
+ const cellW = rect2.width / terminal.cols;
178169
+ const cellH = rect2.height / terminal.rows;
178170
+ const col = clamp(Math.floor((clientX - rect2.left) / cellW), 0, terminal.cols - 1);
178171
+ const viewportRow = clamp(Math.floor((clientY - rect2.top) / cellH), 0, terminal.rows - 1);
178172
+ return { col, row: terminal.buffer.active.viewportY + viewportRow };
178173
+ }
178174
+ function findWordBoundaries(line2, col) {
178175
+ if (col < 0 || col >= line2.length || !WORD_RE.test(line2[col])) {
178176
+ const safeCol = clamp(col, 0, Math.max(0, line2.length));
178177
+ return { start: safeCol, end: safeCol + 1 };
178178
+ }
178179
+ let start2 = col;
178180
+ while (start2 > 0 && WORD_RE.test(line2[start2 - 1])) start2--;
178181
+ let end = col + 1;
178182
+ while (end < line2.length && WORD_RE.test(line2[end])) end++;
178183
+ return { start: start2, end };
178184
+ }
178185
+ function getLineText(terminal, row2) {
178186
+ return terminal.buffer.active.getLine(row2)?.translateToString(false) ?? "";
178187
+ }
178188
+ function moveCell(cell2, dir, terminal) {
178189
+ const cols = terminal.cols;
178190
+ const lastRow = Math.max(0, terminal.buffer.active.length - 1);
178191
+ switch (dir) {
178192
+ case "left":
178193
+ if (cell2.col > 0) return { col: cell2.col - 1, row: cell2.row };
178194
+ if (cell2.row > 0) return { col: cols - 1, row: cell2.row - 1 };
178195
+ return cell2;
178196
+ case "right":
178197
+ if (cell2.col < cols - 1) return { col: cell2.col + 1, row: cell2.row };
178198
+ if (cell2.row < lastRow) return { col: 0, row: cell2.row + 1 };
178199
+ return cell2;
178200
+ case "up":
178201
+ if (cell2.row > 0) return { col: cell2.col, row: cell2.row - 1 };
178202
+ return cell2;
178203
+ case "down":
178204
+ if (cell2.row < lastRow) return { col: cell2.col, row: cell2.row + 1 };
178205
+ return cell2;
178206
+ }
178207
+ }
178208
+ function applySelection(terminal, anchor2, head2) {
178209
+ const cols = terminal.cols;
178210
+ if (cols <= 0) return;
178211
+ const anchorLinear = anchor2.row * cols + anchor2.col;
178212
+ const headLinear = head2.row * cols + head2.col;
178213
+ const startLinear = Math.min(anchorLinear, headLinear);
178214
+ const endLinear = Math.max(anchorLinear, headLinear);
178215
+ const length2 = endLinear - startLinear + 1;
178216
+ const startRow = Math.floor(startLinear / cols);
178217
+ const startCol = startLinear - startRow * cols;
178218
+ terminal.select(startCol, startRow, length2);
178219
+ }
178220
+ function wordSelectionAt(cell2, lineText) {
178221
+ const { start: start2, end } = findWordBoundaries(lineText, cell2.col);
178222
+ return {
178223
+ anchor: { col: start2, row: cell2.row },
178224
+ // `head` is the last cell of the selection (inclusive). `end` from
178225
+ // findWordBoundaries is exclusive, so subtract one.
178226
+ head: { col: Math.max(start2, end - 1), row: cell2.row }
178227
+ };
178228
+ }
178229
+ function clamp(n2, lo2, hi) {
178230
+ if (n2 < lo2) return lo2;
178231
+ if (n2 > hi) return hi;
178232
+ return n2;
178233
+ }
178234
+ const ZOOM_LEVEL_KEY = "band:zoom-level";
178235
+ const DEFAULT_ZOOM = 1;
178236
+ const MIN_ZOOM = 0.5;
178237
+ const MAX_ZOOM = 2;
178238
+ const ZOOM_STEP = 0.1;
178239
+ const ZOOM_CSS_VAR = "--app-zoom";
178240
+ const ZOOM_CHANGE_EVENT = "band:zoom-changed";
178241
+ function loadZoomLevel() {
178242
+ try {
178243
+ const stored = localStorage.getItem(ZOOM_LEVEL_KEY);
178244
+ if (stored) {
178245
+ const parsed = Number.parseFloat(stored);
178246
+ if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
178247
+ return parsed;
178248
+ }
178249
+ }
178250
+ } catch {
178251
+ }
178252
+ return DEFAULT_ZOOM;
178253
+ }
178254
+ function saveZoomLevel(level) {
178255
+ const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
178256
+ const rounded = Math.round(clamped * 100) / 100;
178257
+ try {
178258
+ localStorage.setItem(ZOOM_LEVEL_KEY, String(rounded));
178259
+ } catch {
178260
+ }
178261
+ }
178262
+ function applyZoomLevelToDom(level) {
178263
+ const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
178264
+ const rounded = Math.round(clamped * 100) / 100;
178265
+ const root2 = document.documentElement;
178266
+ root2.style.zoom = String(rounded);
178267
+ root2.style.setProperty(ZOOM_CSS_VAR, String(rounded));
178268
+ window.dispatchEvent(new CustomEvent(ZOOM_CHANGE_EVENT, { detail: rounded }));
178269
+ return rounded;
178270
+ }
178271
+ function applyZoomLevel(level) {
178272
+ const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
178273
+ const rounded = Math.round(clamped * 100) / 100;
178274
+ saveZoomLevel(rounded);
178275
+ applyZoomLevelToDom(rounded);
178276
+ }
178277
+ function getCurrentZoomLevel() {
178278
+ if (typeof document !== "undefined") {
178279
+ const css = document.documentElement.style.getPropertyValue(ZOOM_CSS_VAR);
178280
+ if (css) {
178281
+ const parsed = Number.parseFloat(css);
178282
+ if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
178283
+ return parsed;
178284
+ }
178285
+ }
178286
+ }
178287
+ return loadZoomLevel();
178288
+ }
178289
+ function subscribeToZoomChanges(handler) {
178290
+ if (typeof window === "undefined") return () => {
178291
+ };
178292
+ const listener2 = (e3) => {
178293
+ const detail = e3.detail;
178294
+ if (typeof detail === "number") handler(detail);
178295
+ };
178296
+ window.addEventListener(ZOOM_CHANGE_EVENT, listener2);
178297
+ return () => window.removeEventListener(ZOOM_CHANGE_EVENT, listener2);
178298
+ }
178299
+ function zoomIn() {
178300
+ applyZoomLevel(loadZoomLevel() + ZOOM_STEP);
178301
+ }
178302
+ function zoomOut() {
178303
+ applyZoomLevel(loadZoomLevel() - ZOOM_STEP);
178304
+ }
178305
+ function zoomReset() {
178306
+ applyZoomLevel(DEFAULT_ZOOM);
178307
+ }
178308
+ const BASE_FONT_SIZE = 13;
178309
+ const LONG_PRESS_MS = 500;
178310
+ const LONG_PRESS_SLOP_PX = 10;
178311
+ const SEARCH_DECORATIONS = {
178312
+ matchBackground: "#515c6a",
178313
+ activeMatchBackground: "#a9913680",
178314
+ matchOverviewRuler: "#a9913680",
178315
+ activeMatchColorOverviewRuler: "#a99136"
178316
+ };
178317
+ const DEFAULT_SEARCH_OPTIONS = {
178318
+ caseSensitive: false,
178319
+ wholeWord: false,
178320
+ regex: false
178321
+ };
178322
+ function toXtermSearchOptions(opts) {
178323
+ return {
178324
+ caseSensitive: opts.caseSensitive,
178325
+ wholeWord: opts.wholeWord,
178326
+ regex: opts.regex,
178327
+ decorations: SEARCH_DECORATIONS
178328
+ };
178329
+ }
178330
+ const DARK_TERMINAL_THEME = {
178331
+ background: "#1e1e1e",
178332
+ foreground: "#e8e8e8",
178333
+ cursor: "#e8e8e8",
178334
+ selectionBackground: "rgba(255, 255, 255, 0.2)",
178335
+ black: "#000000",
178336
+ red: "#cd3131",
178337
+ green: "#0dbc79",
178338
+ yellow: "#e5e510",
178339
+ blue: "#2472c8",
178340
+ magenta: "#bc3fbc",
178341
+ cyan: "#11a8cd",
178342
+ white: "#e5e5e5",
178343
+ brightBlack: "#666666",
178344
+ brightRed: "#f14c4c",
178345
+ brightGreen: "#23d18b",
178346
+ brightYellow: "#f5f543",
178347
+ brightBlue: "#3b8eea",
178348
+ brightMagenta: "#d670d6",
178349
+ brightCyan: "#29b8db",
178350
+ brightWhite: "#e5e5e5"
178351
+ };
178352
+ const LIGHT_TERMINAL_THEME = {
178353
+ background: "#ffffff",
178354
+ foreground: "#1e1e1e",
178355
+ cursor: "#1e1e1e",
178356
+ cursorAccent: "#ffffff",
178357
+ selectionBackground: "rgba(0, 0, 0, 0.15)",
178358
+ black: "#000000",
178359
+ red: "#cd3131",
178360
+ green: "#0a8043",
178361
+ yellow: "#946800",
178362
+ blue: "#0451a5",
178363
+ magenta: "#bc05bc",
178364
+ cyan: "#0598bc",
178365
+ white: "#555555",
178366
+ brightBlack: "#666666",
178367
+ brightRed: "#cd3131",
178368
+ brightGreen: "#0a8043",
178369
+ brightYellow: "#946800",
178370
+ brightBlue: "#0451a5",
178371
+ brightMagenta: "#bc05bc",
178372
+ brightCyan: "#0598bc",
178373
+ brightWhite: "#1e1e1e"
178374
+ };
178375
+ function isDarkMode() {
178376
+ return document.documentElement.classList.contains("dark");
178377
+ }
178378
+ function getTerminalTheme() {
178379
+ return isDarkMode() ? DARK_TERMINAL_THEME : LIGHT_TERMINAL_THEME;
178380
+ }
178381
+ const HEARTBEAT_INTERVAL_MS = 1e4;
178382
+ const HEARTBEAT_TIMEOUT_MS = 2e4;
178383
+ const RECONNECT_BASE_MS = 500;
178384
+ const RECONNECT_MAX_MS = 1e4;
178385
+ const MAX_LAYOUT_FRAMES = 5;
178386
+ const MAX_CACHED_TERMINALS = 8;
178387
+ const INITIAL_STATE = {
178388
+ ready: false,
178389
+ searchOpen: false,
178390
+ searchQuery: "",
178391
+ searchOptions: DEFAULT_SEARCH_OPTIONS,
178392
+ matchInfo: { total: 0, current: 0 },
178393
+ selectionMode: false,
178394
+ pendingCtrl: false,
178395
+ terminated: false
178396
+ };
178397
+ const CACHE_KEY = "__bandTerminalCache__";
178398
+ function getCache() {
178399
+ const store = globalThis;
178400
+ if (!store[CACHE_KEY]) store[CACHE_KEY] = /* @__PURE__ */ new Map();
178401
+ return store[CACHE_KEY];
178402
+ }
178403
+ function createEntry(terminalId, opts) {
178404
+ const { workspaceId, paneMetadata, useWebGL, autoFocus } = opts;
178405
+ const wrapper = document.createElement("div");
178406
+ wrapper.dataset.testid = "terminal-wrapper";
178407
+ wrapper.dataset.terminalId = terminalId;
178408
+ wrapper.dataset.workspaceId = workspaceId;
178409
+ wrapper.style.position = "absolute";
178410
+ wrapper.style.inset = "0";
178411
+ wrapper.style.overflow = "hidden";
178412
+ wrapper.style.setProperty("zoom", "calc(1 / var(--app-zoom, 1))");
178413
+ getParkingContainer().appendChild(wrapper);
178414
+ let state2 = INITIAL_STATE;
178415
+ const listeners2 = /* @__PURE__ */ new Set();
178416
+ const notify = () => {
178417
+ for (const l4 of listeners2) l4();
178418
+ };
178419
+ const setState = (patch2) => {
178420
+ state2 = { ...state2, ...patch2 };
178421
+ notify();
178422
+ };
178423
+ const connectListeners = /* @__PURE__ */ new Set();
178424
+ let titleListener = null;
178425
+ let lastTitle = null;
178426
+ const emitTitle = (title) => {
178427
+ lastTitle = title;
178428
+ titleListener?.(title);
178429
+ };
178430
+ let terminal = null;
178431
+ let searchAddon = null;
178432
+ let webglAddon = null;
178433
+ let ws = null;
178434
+ let liveContainer = null;
178435
+ let attached = false;
178436
+ let autoFocusPending = autoFocus ?? paneMetadata?.focus ?? false;
178437
+ let lastActive = Date.now();
178438
+ let webglSuspect = false;
178439
+ let selectionAnchor = null;
178440
+ let selectionHead = null;
178441
+ let destroyed = false;
178442
+ let cleanup = null;
178443
+ Promise.all([
178444
+ import("./xterm-CkV9CBvP.js"),
178445
+ import("./addon-fit-D89xfLfG.js"),
178446
+ import("./addon-web-links-CzLDtFWc.js"),
178447
+ import("./addon-search-BS53_-cp.js"),
178448
+ import("./addon-webgl-BeO2q2vc.js")
178449
+ ]).then(([xtermMod, fitMod, webLinksMod, searchMod, webglMod]) => {
178450
+ if (destroyed) return;
178451
+ const { Terminal: XTerm } = xtermMod;
178452
+ const { FitAddon: XFitAddon } = fitMod;
178453
+ const { WebLinksAddon: XWebLinksAddon } = webLinksMod;
178454
+ const { SearchAddon: XSearchAddon } = searchMod;
178455
+ const { WebglAddon: XWebglAddon } = webglMod;
178456
+ Promise.resolve({ });
178457
+ const term = new XTerm({
178458
+ allowProposedApi: true,
178459
+ cursorBlink: true,
178460
+ fontSize: BASE_FONT_SIZE * getCurrentZoomLevel(),
178461
+ fontFamily: "'SF Mono', Menlo, Monaco, 'Courier New', monospace",
178462
+ // 1.2 row spacing is only safe under WebGL (redraws continuous glyphs at
178463
+ // full cell rect); the DOM renderer needs 1.0 to keep box art continuous.
178464
+ lineHeight: useWebGL ? 1.2 : 1,
178465
+ macOptionIsMeta: true,
178466
+ scrollback: 1e4,
178467
+ theme: getTerminalTheme()
178468
+ });
178469
+ terminal = term;
178470
+ const themeObserver = new MutationObserver(() => {
178471
+ term.options.theme = getTerminalTheme();
178472
+ });
178473
+ themeObserver.observe(document.documentElement, {
178474
+ attributes: true,
178475
+ attributeFilter: ["class"]
178476
+ });
178477
+ const fit = new XFitAddon();
178478
+ term.loadAddon(fit);
178479
+ term.loadAddon(new XWebLinksAddon((_event, uri) => openExternalUrl(uri)));
178480
+ const fileLinkProviderDisposable = term.registerLinkProvider(
178481
+ createTerminalFileLinkProvider(term, (filename) => {
178482
+ window.dispatchEvent(
178483
+ new CustomEvent("band:open-file", { detail: { filename, workspaceId } })
178484
+ );
178485
+ })
178486
+ );
178487
+ term.open(wrapper);
178488
+ let webglContextLossDisposable;
178489
+ const attachWebGL = () => {
178490
+ try {
178491
+ const addon = new XWebglAddon({ customGlyphs: true });
178492
+ term.loadAddon(addon);
178493
+ const screenEl = wrapper.querySelector(".xterm-screen");
178494
+ const webglCanvas = screenEl?.querySelector(
178495
+ ":scope > canvas:last-of-type"
178496
+ );
178497
+ if (webglCanvas) {
178498
+ webglCanvas.style.pointerEvents = "none";
178499
+ webglCanvas.style.touchAction = "none";
178500
+ }
178501
+ webglAddon = addon;
178502
+ webglContextLossDisposable?.dispose();
178503
+ webglContextLossDisposable = addon.onContextLoss(() => {
178504
+ console.warn("[terminal-cache] WebGL context lost, reattaching addon");
178505
+ addon.dispose();
178506
+ webglAddon = null;
178507
+ if (attached && hostIsVisible()) {
178508
+ attachWebGL();
178509
+ } else {
178510
+ webglSuspect = true;
178511
+ }
178512
+ });
178513
+ return true;
178514
+ } catch (err) {
178515
+ console.warn("[terminal-cache] WebGL renderer unavailable, falling back to DOM", err);
178516
+ return false;
178517
+ }
178518
+ };
178519
+ if (useWebGL) attachWebGL();
178520
+ const search2 = new XSearchAddon();
178521
+ searchAddon = search2;
178522
+ term.loadAddon(search2);
178523
+ const searchResultsDisposable = search2.onDidChangeResults((event) => {
178524
+ setState({
178525
+ matchInfo: {
178526
+ total: event.resultCount,
178527
+ current: event.resultIndex >= 0 ? event.resultIndex + 1 : 0
178528
+ }
178529
+ });
178530
+ });
178531
+ term.attachCustomKeyEventHandler((e3) => {
178532
+ if (e3.type === "keydown") {
178533
+ if (state2.pendingCtrl && e3.key.length === 1 && !e3.metaKey && !e3.altKey && !e3.ctrlKey) {
178534
+ const lower2 = e3.key.toLowerCase();
178535
+ const code2 = lower2.charCodeAt(0);
178536
+ if (code2 >= 97 && code2 <= 122) {
178537
+ term.input(String.fromCharCode(code2 - 96));
178538
+ setState({ pendingCtrl: false });
178539
+ e3.preventDefault();
178540
+ return false;
178541
+ }
178542
+ setState({ pendingCtrl: false });
178543
+ }
178544
+ if ((e3.metaKey || e3.ctrlKey) && !e3.shiftKey && !e3.altKey && e3.key.toLowerCase() === "f") {
178545
+ e3.preventDefault();
178546
+ publicApi.openSearch();
178547
+ return false;
178548
+ }
178549
+ if (e3.key === "Enter" && e3.shiftKey && !e3.altKey && !e3.metaKey && !e3.ctrlKey) {
178550
+ e3.preventDefault();
178551
+ term.input("\n");
178552
+ return false;
178553
+ }
178554
+ if (e3.altKey && !e3.metaKey && !e3.ctrlKey) {
178555
+ if (e3.key === "ArrowLeft") {
178556
+ term.input("\x1Bb");
178557
+ return false;
178558
+ }
178559
+ if (e3.key === "ArrowRight") {
178560
+ term.input("\x1Bf");
178561
+ return false;
178562
+ }
178563
+ }
178564
+ }
178565
+ return true;
178566
+ });
178567
+ const viewportEl = wrapper.querySelector(".xterm-viewport");
178568
+ let lastTouchY = null;
178569
+ const onTouchStart = (e3) => {
178570
+ lastTouchY = e3.touches.length === 1 ? e3.touches[0].clientY : null;
178571
+ };
178572
+ const onTouchMove = (e3) => {
178573
+ if (e3.touches.length !== 1 || lastTouchY === null) return;
178574
+ const currentY = e3.touches[0].clientY;
178575
+ const deltaY = lastTouchY - currentY;
178576
+ const cellHeight = viewportEl && term.rows > 0 ? viewportEl.clientHeight / term.rows : 17;
178577
+ const lineDelta = Math.trunc(deltaY / cellHeight);
178578
+ if (lineDelta !== 0) {
178579
+ term.scrollLines(lineDelta);
178580
+ lastTouchY = currentY + (deltaY - lineDelta * cellHeight);
178581
+ e3.preventDefault();
178582
+ }
178583
+ };
178584
+ const onTouchEnd = () => {
178585
+ lastTouchY = null;
178586
+ };
178587
+ wrapper.addEventListener("touchstart", onTouchStart, { passive: true });
178588
+ wrapper.addEventListener("touchmove", onTouchMove, { passive: false });
178589
+ wrapper.addEventListener("touchend", onTouchEnd, { passive: true });
178590
+ wrapper.addEventListener("touchcancel", onTouchEnd, { passive: true });
178591
+ let longPressTimer = null;
178592
+ let longPressStart = null;
178593
+ const cancelLongPress = () => {
178594
+ if (longPressTimer !== null) {
178595
+ window.clearTimeout(longPressTimer);
178596
+ longPressTimer = null;
178597
+ }
178598
+ longPressStart = null;
178599
+ };
178600
+ const onLongPressStart = (e3) => {
178601
+ cancelLongPress();
178602
+ if (e3.touches.length !== 1) return;
178603
+ const t2 = e3.touches[0];
178604
+ longPressStart = { x: t2.clientX, y: t2.clientY };
178605
+ longPressTimer = window.setTimeout(() => {
178606
+ longPressTimer = null;
178607
+ const start2 = longPressStart;
178608
+ if (!start2) return;
178609
+ const screenEl = wrapper.querySelector(".xterm-screen");
178610
+ if (!screenEl) return;
178611
+ const cell2 = pointToCell(start2.x, start2.y, term, screenEl);
178612
+ const lineText = getLineText(term, cell2.row);
178613
+ const { anchor: anchor2, head: head2 } = wordSelectionAt(cell2, lineText);
178614
+ applySelection(term, anchor2, head2);
178615
+ selectionAnchor = anchor2;
178616
+ selectionHead = head2;
178617
+ setState({ selectionMode: true });
178618
+ tapStartX = null;
178619
+ tapStartY = null;
178620
+ term.blur();
178621
+ if (typeof navigator.vibrate === "function") {
178622
+ try {
178623
+ navigator.vibrate(15);
178624
+ } catch {
178625
+ }
178626
+ }
178627
+ }, LONG_PRESS_MS);
178628
+ };
178629
+ const onLongPressMove = (e3) => {
178630
+ if (!longPressStart || e3.touches.length !== 1) return;
178631
+ const t2 = e3.touches[0];
178632
+ const dx = Math.abs(t2.clientX - longPressStart.x);
178633
+ const dy = Math.abs(t2.clientY - longPressStart.y);
178634
+ if (dx > LONG_PRESS_SLOP_PX || dy > LONG_PRESS_SLOP_PX) cancelLongPress();
178635
+ };
178636
+ wrapper.addEventListener("touchstart", onLongPressStart, { passive: true });
178637
+ wrapper.addEventListener("touchmove", onLongPressMove, { passive: true });
178638
+ wrapper.addEventListener("touchend", cancelLongPress, { passive: true });
178639
+ wrapper.addEventListener("touchcancel", cancelLongPress, { passive: true });
178640
+ let tapStartX = null;
178641
+ let tapStartY = null;
178642
+ const onTapStart = (e3) => {
178643
+ if (e3.touches.length === 1) {
178644
+ tapStartX = e3.touches[0].clientX;
178645
+ tapStartY = e3.touches[0].clientY;
178646
+ } else {
178647
+ tapStartX = null;
178648
+ tapStartY = null;
178649
+ }
178650
+ };
178651
+ const onTapEnd = (e3) => {
178652
+ const startX = tapStartX;
178653
+ const startY = tapStartY;
178654
+ tapStartX = null;
178655
+ tapStartY = null;
178656
+ if (startX === null || startY === null || e3.changedTouches.length !== 1) return;
178657
+ const dx = Math.abs(e3.changedTouches[0].clientX - startX);
178658
+ const dy = Math.abs(e3.changedTouches[0].clientY - startY);
178659
+ if (dx < 10 && dy < 10) {
178660
+ if (selectionAnchor !== null) {
178661
+ selectionAnchor = null;
178662
+ selectionHead = null;
178663
+ setState({ selectionMode: false });
178664
+ term.clearSelection();
178665
+ }
178666
+ term.focus();
178667
+ }
178668
+ };
178669
+ const onTapCancel = () => {
178670
+ tapStartX = null;
178671
+ tapStartY = null;
178672
+ };
178673
+ wrapper.addEventListener("touchstart", onTapStart, { passive: true });
178674
+ wrapper.addEventListener("touchend", onTapEnd, { passive: true });
178675
+ wrapper.addEventListener("touchcancel", onTapCancel, { passive: true });
178676
+ const proto2 = location.protocol === "https:" ? "wss:" : "ws:";
178677
+ const wsUrl = `${proto2}//${location.host}/terminal?workspaceId=${encodeURIComponent(workspaceId)}&terminalId=${encodeURIComponent(terminalId)}`;
178678
+ let intentionalClose = false;
178679
+ let terminated = false;
178680
+ let didConnectOnce = false;
178681
+ let reconnectAttempts = 0;
178682
+ let reconnectTimer = null;
178683
+ let heartbeatTimer = null;
178684
+ let lastPongAt = 0;
178685
+ const clearReconnectTimer = () => {
178686
+ if (reconnectTimer !== null) {
178687
+ clearTimeout(reconnectTimer);
178688
+ reconnectTimer = null;
178689
+ }
178690
+ };
178691
+ const stopHeartbeat = () => {
178692
+ if (heartbeatTimer !== null) {
178693
+ clearInterval(heartbeatTimer);
178694
+ heartbeatTimer = null;
178695
+ }
178696
+ };
178697
+ const probeConnection = () => {
178698
+ const sock = ws;
178699
+ if (!sock || sock.readyState !== WebSocket.OPEN) return;
178700
+ if (Date.now() - lastPongAt > HEARTBEAT_TIMEOUT_MS) {
178701
+ sock.close();
178702
+ return;
178703
+ }
178704
+ try {
178705
+ sock.send(JSON.stringify({ type: "ping" }));
178706
+ } catch {
178707
+ sock.close();
178708
+ }
178709
+ };
178710
+ const scheduleReconnect = () => {
178711
+ if (intentionalClose || terminated || reconnectTimer !== null) return;
178712
+ const delay = Math.min(RECONNECT_BASE_MS * 2 ** reconnectAttempts, RECONNECT_MAX_MS);
178713
+ if (delay < RECONNECT_MAX_MS) reconnectAttempts += 1;
178714
+ reconnectTimer = setTimeout(() => {
178715
+ reconnectTimer = null;
178716
+ connect();
178717
+ }, delay);
178718
+ };
178719
+ function connect() {
178720
+ if (intentionalClose || terminated || destroyed) return;
178721
+ clearReconnectTimer();
178722
+ const isReconnect = didConnectOnce;
178723
+ const sock = new WebSocket(wsUrl);
178724
+ ws = sock;
178725
+ sock.binaryType = "arraybuffer";
178726
+ sock.onopen = () => {
178727
+ reconnectAttempts = 0;
178728
+ lastPongAt = Date.now();
178729
+ if (isReconnect) term.reset();
178730
+ if (!didConnectOnce && paneMetadata && (paneMetadata.command || paneMetadata.cwd || paneMetadata.env)) {
178731
+ const initMsg = { type: "init" };
178732
+ if (paneMetadata.command) initMsg.command = paneMetadata.command;
178733
+ if (paneMetadata.cwd) initMsg.cwd = paneMetadata.cwd;
178734
+ if (paneMetadata.env) initMsg.env = paneMetadata.env;
178735
+ sock.send(JSON.stringify(initMsg));
178736
+ }
178737
+ didConnectOnce = true;
178738
+ if (attached && hostIsVisible()) {
178739
+ fit.fit();
178740
+ sendPtyResize();
178741
+ if (autoFocusPending && !isReconnect) {
178742
+ term.focus();
178743
+ autoFocusPending = false;
178744
+ }
178745
+ }
178746
+ stopHeartbeat();
178747
+ heartbeatTimer = setInterval(probeConnection, HEARTBEAT_INTERVAL_MS);
178748
+ for (const l4 of connectListeners) l4();
178749
+ };
178750
+ sock.onmessage = (event) => {
178751
+ if (event.data instanceof ArrayBuffer) {
178752
+ term.write(new Uint8Array(event.data));
178753
+ } else {
178754
+ try {
178755
+ const msg = JSON.parse(event.data);
178756
+ if (msg.type === "pong") {
178757
+ lastPongAt = Date.now();
178758
+ } else if (msg.type === "title" && typeof msg.title === "string") {
178759
+ emitTitle(msg.title);
178760
+ } else if (msg.type === "error" && typeof msg.message === "string") {
178761
+ const safe = msg.message.replace(new RegExp("\\p{Cc}", "gu"), "");
178762
+ term.write(`\r
178763
+ \x1B[31m${safe}\x1B[0m\r
178764
+ `);
178765
+ }
178766
+ } catch {
178767
+ term.write(event.data);
178768
+ }
178769
+ }
178770
+ };
178771
+ sock.onclose = (event) => {
178772
+ if (ws !== sock) return;
178773
+ stopHeartbeat();
178774
+ if (intentionalClose) return;
178775
+ if (event.code === 1e3 || event.code >= 4e3) {
178776
+ terminated = true;
178777
+ if (event.code === 1e3) {
178778
+ term.write("\r\n\x1B[90m[Process completed]\x1B[0m\r\n");
178779
+ }
178780
+ setState({ terminated: true });
178781
+ return;
178782
+ }
178783
+ term.write("\r\n\x1B[90m[Reconnecting…]\x1B[0m\r\n");
178784
+ scheduleReconnect();
178785
+ };
178786
+ }
178787
+ const handleResume = () => {
178788
+ if (intentionalClose || terminated) return;
178789
+ const sock = ws;
178790
+ if (!sock || sock.readyState === WebSocket.CLOSED || sock.readyState === WebSocket.CLOSING) {
178791
+ reconnectAttempts = 0;
178792
+ clearReconnectTimer();
178793
+ connect();
178794
+ } else if (sock.readyState === WebSocket.OPEN) {
178795
+ probeConnection();
178796
+ }
178797
+ };
178798
+ const handleVisibility = () => {
178799
+ if (!document.hidden) handleResume();
178800
+ };
178801
+ window.addEventListener("online", handleResume);
178802
+ document.addEventListener("visibilitychange", handleVisibility);
178803
+ connect();
178804
+ term.onData((data) => {
178805
+ if (ws && ws.readyState === WebSocket.OPEN) ws.send(data);
178806
+ });
178807
+ term.onTitleChange((title) => emitTitle(title));
178808
+ let selectionRafId = null;
178809
+ const reapplySelectionOnNextFrame = () => {
178810
+ if (selectionRafId !== null) return;
178811
+ if (!selectionAnchor || !selectionHead) return;
178812
+ selectionRafId = requestAnimationFrame(() => {
178813
+ selectionRafId = null;
178814
+ if (selectionAnchor && selectionHead) applySelection(term, selectionAnchor, selectionHead);
178815
+ });
178816
+ };
178817
+ const selectionResizeDisposable = term.onResize(reapplySelectionOnNextFrame);
178818
+ let lastDpr = window.devicePixelRatio;
178819
+ const sendPtyResize = () => {
178820
+ if (!ws || ws.readyState !== WebSocket.OPEN) return;
178821
+ if (term.cols <= 0 || term.rows <= 0) return;
178822
+ ws.send(JSON.stringify({ type: "resize", cols: term.cols, rows: term.rows }));
178823
+ };
178824
+ const remeasureAndReattach = (opt = {}) => {
178825
+ const { newFontSize } = opt;
178826
+ if (newFontSize !== void 0) {
178827
+ if (term.options.fontSize !== newFontSize) term.options.fontSize = newFontSize;
178828
+ } else {
178829
+ const fs = term.options.fontSize;
178830
+ if (typeof fs === "number") {
178831
+ term.options.fontSize = fs + 1;
178832
+ term.options.fontSize = fs;
178833
+ }
178834
+ }
178835
+ if (!attached || !hostIsVisible()) {
178836
+ webglSuspect = true;
178837
+ return;
178838
+ }
178839
+ if (webglAddon) {
178840
+ webglAddon.dispose();
178841
+ webglAddon = null;
178842
+ attachWebGL();
178843
+ }
178844
+ fit.fit();
178845
+ };
178846
+ const handleDprChange = () => {
178847
+ const currentDpr = window.devicePixelRatio;
178848
+ if (currentDpr === lastDpr) return false;
178849
+ lastDpr = currentDpr;
178850
+ remeasureAndReattach();
178851
+ return true;
178852
+ };
178853
+ const resizeObserver = new ResizeObserver((entries2) => {
178854
+ const entry = entries2[0];
178855
+ if (!entry || entry.contentRect.width === 0 || entry.contentRect.height === 0) return;
178856
+ if (!attached || !hostIsVisible()) return;
178857
+ const dprChanged = handleDprChange();
178858
+ if (!dprChanged) fit.fit();
178859
+ sendPtyResize();
178860
+ });
178861
+ resizeObserver.observe(wrapper);
178862
+ const handleZoomChange = (zoom) => {
178863
+ const target = Math.round(BASE_FONT_SIZE * zoom * 100) / 100;
178864
+ if (term.options.fontSize === target) return;
178865
+ remeasureAndReattach({ newFontSize: target });
178866
+ if (attached && hostIsVisible()) sendPtyResize();
178867
+ };
178868
+ const unsubscribeZoom = subscribeToZoomChanges(handleZoomChange);
178869
+ let dprMql;
178870
+ const onDprMediaChange = () => {
178871
+ handleDprChange();
178872
+ dprMql?.removeEventListener("change", onDprMediaChange);
178873
+ bindDprListener();
178874
+ };
178875
+ const bindDprListener = () => {
178876
+ dprMql = window.matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);
178877
+ dprMql.addEventListener("change", onDprMediaChange);
178878
+ };
178879
+ bindDprListener();
178880
+ repairAndFit = () => {
178881
+ if (!attached || !hostIsVisible()) return;
178882
+ const dprChanged = handleDprChange();
178883
+ if (!dprChanged) {
178884
+ if (webglSuspect && webglAddon == null && useWebGL) {
178885
+ attachWebGL();
178886
+ } else if (webglSuspect && webglAddon) {
178887
+ webglAddon.dispose();
178888
+ webglAddon = null;
178889
+ attachWebGL();
178890
+ }
178891
+ fit.fit();
178892
+ }
178893
+ webglSuspect = false;
178894
+ if (term.rows > 0) term.refresh(0, term.rows - 1);
178895
+ sendPtyResize();
178896
+ };
178897
+ hostIsVisible = () => !!liveContainer && liveContainer.clientWidth > 0 && liveContainer.clientHeight > 0;
178898
+ if (attached) scheduleRepair();
178899
+ setState({ ready: true });
178900
+ cleanup = () => {
178901
+ intentionalClose = true;
178902
+ clearReconnectTimer();
178903
+ stopHeartbeat();
178904
+ window.removeEventListener("online", handleResume);
178905
+ document.removeEventListener("visibilitychange", handleVisibility);
178906
+ themeObserver.disconnect();
178907
+ resizeObserver.disconnect();
178908
+ searchResultsDisposable.dispose();
178909
+ selectionResizeDisposable.dispose();
178910
+ fileLinkProviderDisposable.dispose();
178911
+ if (selectionRafId !== null) cancelAnimationFrame(selectionRafId);
178912
+ webglContextLossDisposable?.dispose();
178913
+ dprMql?.removeEventListener("change", onDprMediaChange);
178914
+ unsubscribeZoom();
178915
+ cancelLongPress();
178916
+ ws?.close();
178917
+ term.dispose();
178918
+ };
178919
+ });
178920
+ let hostIsVisible = () => !!liveContainer && liveContainer.clientWidth > 0 && liveContainer.clientHeight > 0;
178921
+ let repairAndFit = () => {
178922
+ };
178923
+ let repairRafId = null;
178924
+ const scheduleRepair = () => {
178925
+ if (repairRafId !== null) return;
178926
+ let frame2 = 0;
178927
+ const run2 = () => {
178928
+ repairRafId = null;
178929
+ if (!attached) return;
178930
+ if (!hostIsVisible()) {
178931
+ if (frame2 < MAX_LAYOUT_FRAMES) {
178932
+ frame2 += 1;
178933
+ repairRafId = requestAnimationFrame(run2);
178934
+ }
178935
+ return;
178936
+ }
178937
+ repairAndFit();
178938
+ };
178939
+ repairRafId = requestAnimationFrame(run2);
178940
+ };
178941
+ const publicApi = {
178942
+ terminalId,
178943
+ workspaceId,
178944
+ getTerminal: () => terminal,
178945
+ attach(container, attachOpts) {
178946
+ if (destroyed) return;
178947
+ liveContainer = container;
178948
+ attached = true;
178949
+ lastActive = Date.now();
178950
+ if (attachOpts?.autoFocus) autoFocusPending = true;
178951
+ if (wrapper.parentElement !== container) container.appendChild(wrapper);
178952
+ scheduleRepair();
178953
+ },
178954
+ detach() {
178955
+ if (destroyed) return;
178956
+ attached = false;
178957
+ liveContainer = null;
178958
+ if (repairRafId !== null) {
178959
+ cancelAnimationFrame(repairRafId);
178960
+ repairRafId = null;
178961
+ }
178962
+ const parking = getParkingContainer();
178963
+ if (wrapper.parentElement !== parking) parking.appendChild(wrapper);
178964
+ evictLeastRecentlyUsed(terminalId);
178965
+ },
178966
+ getLastActive: () => lastActive,
178967
+ touch() {
178968
+ lastActive = Date.now();
178969
+ },
178970
+ isAttached: () => attached,
178971
+ isDestroyed: () => destroyed,
178972
+ subscribe(listener2) {
178973
+ listeners2.add(listener2);
178974
+ return () => listeners2.delete(listener2);
178975
+ },
178976
+ getSnapshot: () => state2,
178977
+ openSearch() {
178978
+ setState({ searchOpen: true });
178979
+ },
178980
+ closeSearch() {
178981
+ searchAddon?.clearDecorations();
178982
+ setState({ searchOpen: false, searchQuery: "", matchInfo: { total: 0, current: 0 } });
178983
+ terminal?.focus();
178984
+ },
178985
+ setSearchQuery(query) {
178986
+ setState({ searchQuery: query });
178987
+ const addon = searchAddon;
178988
+ if (!addon) return;
178989
+ if (!query) {
178990
+ addon.clearDecorations();
178991
+ setState({ matchInfo: { total: 0, current: 0 } });
178992
+ return;
178993
+ }
178994
+ addon.findNext(query, toXtermSearchOptions(state2.searchOptions));
178995
+ },
178996
+ setSearchOptions(options) {
178997
+ setState({ searchOptions: options });
178998
+ if (!searchAddon || !state2.searchQuery) return;
178999
+ searchAddon.findNext(state2.searchQuery, toXtermSearchOptions(options));
179000
+ },
179001
+ findNext() {
179002
+ if (!state2.searchQuery) return;
179003
+ searchAddon?.findNext(state2.searchQuery, toXtermSearchOptions(state2.searchOptions));
179004
+ },
179005
+ findPrevious() {
179006
+ if (!state2.searchQuery) return;
179007
+ searchAddon?.findPrevious(state2.searchQuery, toXtermSearchOptions(state2.searchOptions));
179008
+ },
179009
+ toggleCtrl() {
179010
+ setState({ pendingCtrl: !state2.pendingCtrl });
179011
+ },
179012
+ extendSelection(direction) {
179013
+ if (!terminal || !selectionAnchor || !selectionHead) return;
179014
+ const next2 = moveCell(selectionHead, direction, terminal);
179015
+ selectionHead = next2;
179016
+ applySelection(terminal, selectionAnchor, next2);
179017
+ },
179018
+ exitSelection() {
179019
+ selectionAnchor = null;
179020
+ selectionHead = null;
179021
+ setState({ selectionMode: false });
179022
+ terminal?.clearSelection();
179023
+ },
179024
+ selectAll() {
179025
+ if (!terminal) return;
179026
+ const anchor2 = { col: 0, row: 0 };
179027
+ const lastRow = Math.max(0, terminal.buffer.active.length - 1);
179028
+ const head2 = { col: Math.max(0, terminal.cols - 1), row: lastRow };
179029
+ applySelection(terminal, anchor2, head2);
179030
+ selectionAnchor = anchor2;
179031
+ selectionHead = head2;
179032
+ setState({ selectionMode: true });
179033
+ terminal.blur();
179034
+ },
179035
+ sendInput(data) {
179036
+ if (ws && ws.readyState === WebSocket.OPEN) ws.send(data);
179037
+ },
179038
+ isSocketOpen: () => !!ws && ws.readyState === WebSocket.OPEN,
179039
+ focus() {
179040
+ terminal?.focus();
179041
+ },
179042
+ subscribeConnect(listener2) {
179043
+ connectListeners.add(listener2);
179044
+ return () => connectListeners.delete(listener2);
179045
+ },
179046
+ registerTitleListener(listener2) {
179047
+ titleListener = listener2;
179048
+ if (lastTitle !== null) listener2(lastTitle);
179049
+ return () => {
179050
+ if (titleListener === listener2) titleListener = null;
179051
+ };
179052
+ },
179053
+ _destroy() {
179054
+ if (destroyed) return;
179055
+ destroyed = true;
179056
+ if (repairRafId !== null) {
179057
+ cancelAnimationFrame(repairRafId);
179058
+ repairRafId = null;
179059
+ }
179060
+ cleanup?.();
179061
+ cleanup = null;
179062
+ listeners2.clear();
179063
+ connectListeners.clear();
179064
+ titleListener = null;
179065
+ wrapper.remove();
179066
+ }
179067
+ };
179068
+ return publicApi;
179069
+ }
179070
+ function getOrCreateTerminal(terminalId, opts) {
179071
+ const cache = getCache();
179072
+ const existing = cache.get(terminalId);
179073
+ if (existing) {
179074
+ existing.touch();
179075
+ return existing;
179076
+ }
179077
+ const entry = createEntry(terminalId, opts);
179078
+ cache.set(terminalId, entry);
179079
+ evictLeastRecentlyUsed(terminalId);
179080
+ return entry;
179081
+ }
179082
+ function evictLeastRecentlyUsed(keepId) {
179083
+ const cache = getCache();
179084
+ if (cache.size <= MAX_CACHED_TERMINALS) return;
179085
+ const candidates = [...cache.values()].filter((e3) => e3.terminalId !== keepId && !e3.isAttached()).sort((a2, b2) => a2.getLastActive() - b2.getLastActive());
179086
+ let over = cache.size - MAX_CACHED_TERMINALS;
179087
+ for (const entry of candidates) {
179088
+ if (over <= 0) break;
179089
+ cache.delete(entry.terminalId);
179090
+ entry._destroy();
179091
+ over -= 1;
179092
+ }
179093
+ }
179094
+ function disposeTerminal(terminalId) {
179095
+ const cache = getCache();
179096
+ const entry = cache.get(terminalId);
179097
+ if (!entry) return;
179098
+ cache.delete(terminalId);
179099
+ entry._destroy();
179100
+ }
179101
+ function reconcileTerminalWorkspaces(validWorkspaceIds, activeWorkspaceId) {
179102
+ const cache = getCache();
179103
+ for (const [id28, entry] of cache) {
179104
+ if (!validWorkspaceIds.has(entry.workspaceId) && entry.workspaceId !== activeWorkspaceId) {
179105
+ cache.delete(id28);
179106
+ entry._destroy();
179107
+ }
179108
+ }
179109
+ }
178074
179110
  const states = /* @__PURE__ */ new Map();
178075
179111
  const listeners = /* @__PURE__ */ new Map();
178076
179112
  const EMPTY_STATE = Object.freeze({ openFilePath: null });
@@ -178167,6 +179203,7 @@ function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
178167
179203
  validIds.add(toWorkspaceId(project.name, worktree.name));
178168
179204
  }
178169
179205
  }
179206
+ reconcileTerminalWorkspaces(validIds, activeWorkspaceId);
178170
179207
  setCache((prev2) => {
178171
179208
  let hasStale = false;
178172
179209
  for (const id28 of prev2.keys()) {
@@ -201809,12 +202846,12 @@ const PANEL_SHORTCUTS = {
201809
202846
  browser: "⇧⌘B"
201810
202847
  };
201811
202848
  const DockviewTerminalContainer = reactExports.lazy(
201812
- () => import("./DockviewTerminalContainer-CMbrr8wZ.js").then((m2) => ({
202849
+ () => import("./DockviewTerminalContainer-CTJJUByH.js").then((m2) => ({
201813
202850
  default: m2.DockviewTerminalContainer
201814
202851
  }))
201815
202852
  );
201816
202853
  const DockviewBrowserContainer = reactExports.lazy(
201817
- () => import("./DockviewBrowserContainer-BDsafKFK.js").then((m2) => ({
202854
+ () => import("./DockviewBrowserContainer-NHSxR-nz.js").then((m2) => ({
201818
202855
  default: m2.DockviewBrowserContainer
201819
202856
  }))
201820
202857
  );
@@ -203027,80 +204064,6 @@ function useNavigationHistory(routerNavigate, capabilities2) {
203027
204064
  canGoForward: history2.cursor >= 0 && history2.cursor < history2.stack.length - 1
203028
204065
  };
203029
204066
  }
203030
- const ZOOM_LEVEL_KEY = "band:zoom-level";
203031
- const DEFAULT_ZOOM = 1;
203032
- const MIN_ZOOM = 0.5;
203033
- const MAX_ZOOM = 2;
203034
- const ZOOM_STEP = 0.1;
203035
- const ZOOM_CSS_VAR = "--app-zoom";
203036
- const ZOOM_CHANGE_EVENT = "band:zoom-changed";
203037
- function loadZoomLevel() {
203038
- try {
203039
- const stored = localStorage.getItem(ZOOM_LEVEL_KEY);
203040
- if (stored) {
203041
- const parsed = Number.parseFloat(stored);
203042
- if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
203043
- return parsed;
203044
- }
203045
- }
203046
- } catch {
203047
- }
203048
- return DEFAULT_ZOOM;
203049
- }
203050
- function saveZoomLevel(level) {
203051
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
203052
- const rounded = Math.round(clamped * 100) / 100;
203053
- try {
203054
- localStorage.setItem(ZOOM_LEVEL_KEY, String(rounded));
203055
- } catch {
203056
- }
203057
- }
203058
- function applyZoomLevelToDom(level) {
203059
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
203060
- const rounded = Math.round(clamped * 100) / 100;
203061
- const root2 = document.documentElement;
203062
- root2.style.zoom = String(rounded);
203063
- root2.style.setProperty(ZOOM_CSS_VAR, String(rounded));
203064
- window.dispatchEvent(new CustomEvent(ZOOM_CHANGE_EVENT, { detail: rounded }));
203065
- return rounded;
203066
- }
203067
- function applyZoomLevel(level) {
203068
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
203069
- const rounded = Math.round(clamped * 100) / 100;
203070
- saveZoomLevel(rounded);
203071
- applyZoomLevelToDom(rounded);
203072
- }
203073
- function getCurrentZoomLevel() {
203074
- if (typeof document !== "undefined") {
203075
- const css = document.documentElement.style.getPropertyValue(ZOOM_CSS_VAR);
203076
- if (css) {
203077
- const parsed = Number.parseFloat(css);
203078
- if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
203079
- return parsed;
203080
- }
203081
- }
203082
- }
203083
- return loadZoomLevel();
203084
- }
203085
- function subscribeToZoomChanges(handler) {
203086
- if (typeof window === "undefined") return () => {
203087
- };
203088
- const listener2 = (e3) => {
203089
- const detail = e3.detail;
203090
- if (typeof detail === "number") handler(detail);
203091
- };
203092
- window.addEventListener(ZOOM_CHANGE_EVENT, listener2);
203093
- return () => window.removeEventListener(ZOOM_CHANGE_EVENT, listener2);
203094
- }
203095
- function zoomIn() {
203096
- applyZoomLevel(loadZoomLevel() + ZOOM_STEP);
203097
- }
203098
- function zoomOut() {
203099
- applyZoomLevel(loadZoomLevel() - ZOOM_STEP);
203100
- }
203101
- function zoomReset() {
203102
- applyZoomLevel(DEFAULT_ZOOM);
203103
- }
203104
204067
  function useZoom() {
203105
204068
  reactExports.useEffect(() => {
203106
204069
  if (isDesktop) return;
@@ -203571,12 +204534,12 @@ function RootLayout() {
203571
204534
  ] })
203572
204535
  ] });
203573
204536
  }
203574
- const $$splitComponentImporter$1 = () => import("./index-B9xqso9p.js");
204537
+ const $$splitComponentImporter$1 = () => import("./index-C6mmT4Bf.js");
203575
204538
  const Route$1 = createFileRoute("/")({
203576
204539
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
203577
204540
  });
203578
- const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-Dj6Y8WPo.js");
203579
- const $$splitComponentImporter = () => import("./workspace._workspaceId-BMnOV3pd.js");
204541
+ const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-BK83HsBK.js");
204542
+ const $$splitComponentImporter = () => import("./workspace._workspaceId-DEWHh9LI.js");
203580
204543
  const Route2 = createFileRoute("/workspace/$workspaceId")({
203581
204544
  component: lazyRouteComponent($$splitComponentImporter, "component"),
203582
204545
  // Bookmarks / shared links from before route unification (`/workspace/$id/changes`,
@@ -203618,288 +204581,285 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
203618
204581
  getRouter
203619
204582
  }, Symbol.toStringTag, { value: "Module" }));
203620
204583
  export {
203621
- calculateTextWidth as $,
203622
- Rows2 as A,
203623
- Plus as B,
204584
+ assignWithDepth_default as $,
204585
+ DockviewReact as A,
204586
+ Rows2 as B,
203624
204587
  Columns2 as C,
203625
204588
  DefaultBufferLength as D,
203626
- usePanelVisibility as E,
203627
- cycleTabsInActiveGroup as F,
203628
- cycleGridGroups as G,
203629
- R$4 as H,
204589
+ Plus as E,
204590
+ usePanelVisibility as F,
204591
+ cycleTabsInActiveGroup as G,
204592
+ cycleGridGroups as H,
203630
204593
  IterMode as I,
203631
- setAccDescription as J,
204594
+ R$4 as J,
203632
204595
  Ks as K,
203633
204596
  LanguageSupport as L,
203634
- getAccDescription as M,
204597
+ setAccDescription as M,
203635
204598
  Nt as N,
203636
- getAccTitle as O,
204599
+ getAccDescription as O,
203637
204600
  Parser$2 as P,
203638
204601
  Qe$1 as Q,
203639
204602
  Route2 as R,
203640
- setAccTitle as S,
204603
+ getAccTitle as S,
203641
204604
  Tree as T,
203642
- getConfig2 as U,
203643
- select as V,
203644
- log$1 as W,
204605
+ setAccTitle as U,
204606
+ getConfig2 as V,
204607
+ select as W,
203645
204608
  X$7 as X,
203646
- configureSvgSize as Y,
203647
- assignWithDepth_default as Z,
204609
+ log$1 as Y,
204610
+ configureSvgSize as Z,
203648
204611
  __name as _,
203649
204612
  Navigate as a,
203650
- insertCluster as a$,
203651
- sanitizeText as a0,
203652
- distExports as a1,
203653
- wrapLabel as a2,
203654
- common_default as a3,
203655
- calculateTextHeight as a4,
203656
- lineBreakRegex as a5,
203657
- setConfig2 as a6,
203658
- getRegisteredLayoutAlgorithm as a7,
203659
- render$1 as a8,
203660
- utils_default as a9,
203661
- abs$1 as aA,
203662
- pi as aB,
203663
- sqrt as aC,
203664
- atan2 as aD,
203665
- constant$1 as aE,
203666
- asin as aF,
203667
- acos as aG,
203668
- max as aH,
203669
- linear as aI,
203670
- getThemeVariables3 as aJ,
203671
- band as aK,
203672
- computeDimensionOfText as aL,
203673
- line$1 as aM,
203674
- hasKatex as aN,
203675
- calculateMathMLDimensions as aO,
203676
- parseFontSize as aP,
203677
- ZERO_WIDTH_SPACE as aQ,
203678
- getUrl as aR,
203679
- renderKatexSanitized as aS,
203680
- parseGenericTypes as aT,
203681
- curveBasis as aU,
203682
- generateId as aV,
203683
- setupGraphViewbox as aW,
203684
- isDark as aX,
203685
- lighten as aY,
203686
- darken as aZ,
203687
- commonDb_exports as a_,
203688
- setDiagramTitle as aa,
203689
- getDiagramTitle as ab,
203690
- load as ac,
203691
- JSON_SCHEMA as ad,
203692
- isValidShape as ae,
203693
- getEdgeId as af,
203694
- clear$2 as ag,
203695
- defaultConfig2 as ah,
203696
- rgba$1 as ai,
203697
- Utils as aj,
203698
- Color$1 as ak,
203699
- __export$1 as al,
203700
- setupGraphViewbox2 as am,
203701
- cleanAndMerge as an,
203702
- defaultConfig_default as ao,
203703
- getConfig as ap,
203704
- random as aq,
203705
- selectSvgElement as ar,
203706
- package_default as as,
203707
- withPath as at,
203708
- halfPi as au,
203709
- epsilon as av,
203710
- tau as aw,
203711
- cos as ax,
203712
- sin as ay,
203713
- min as az,
204613
+ commonDb_exports as a$,
204614
+ calculateTextWidth as a0,
204615
+ sanitizeText as a1,
204616
+ distExports as a2,
204617
+ wrapLabel as a3,
204618
+ common_default as a4,
204619
+ calculateTextHeight as a5,
204620
+ lineBreakRegex as a6,
204621
+ setConfig2 as a7,
204622
+ getRegisteredLayoutAlgorithm as a8,
204623
+ render$1 as a9,
204624
+ min as aA,
204625
+ abs$1 as aB,
204626
+ pi as aC,
204627
+ sqrt as aD,
204628
+ atan2 as aE,
204629
+ constant$1 as aF,
204630
+ asin as aG,
204631
+ acos as aH,
204632
+ max as aI,
204633
+ linear as aJ,
204634
+ getThemeVariables3 as aK,
204635
+ band as aL,
204636
+ computeDimensionOfText as aM,
204637
+ line$1 as aN,
204638
+ hasKatex as aO,
204639
+ calculateMathMLDimensions as aP,
204640
+ parseFontSize as aQ,
204641
+ ZERO_WIDTH_SPACE as aR,
204642
+ getUrl as aS,
204643
+ renderKatexSanitized as aT,
204644
+ parseGenericTypes as aU,
204645
+ curveBasis as aV,
204646
+ generateId as aW,
204647
+ setupGraphViewbox as aX,
204648
+ isDark as aY,
204649
+ lighten as aZ,
204650
+ darken as a_,
204651
+ utils_default as aa,
204652
+ setDiagramTitle as ab,
204653
+ getDiagramTitle as ac,
204654
+ load as ad,
204655
+ JSON_SCHEMA as ae,
204656
+ isValidShape as af,
204657
+ getEdgeId as ag,
204658
+ clear$2 as ah,
204659
+ defaultConfig2 as ai,
204660
+ rgba$1 as aj,
204661
+ Utils as ak,
204662
+ Color$1 as al,
204663
+ __export$1 as am,
204664
+ setupGraphViewbox2 as an,
204665
+ cleanAndMerge as ao,
204666
+ defaultConfig_default as ap,
204667
+ getConfig as aq,
204668
+ random as ar,
204669
+ selectSvgElement as as,
204670
+ package_default as at,
204671
+ withPath as au,
204672
+ halfPi as av,
204673
+ epsilon as aw,
204674
+ tau as ax,
204675
+ cos as ay,
204676
+ sin as az,
203714
204677
  LRLanguage as b,
203715
- cn$2 as b$,
203716
- insertNode as b0,
203717
- positionNode as b1,
203718
- getLineFunctionsWithOffset as b2,
203719
- evaluate as b3,
203720
- createText as b4,
203721
- getSubGraphTitleMargins as b5,
203722
- replaceIconSubstring as b6,
203723
- decodeEntities as b7,
203724
- getStylesFromArray as b8,
203725
- delimitedIndent as b9,
203726
- markers_default as bA,
203727
- clear2 as bB,
203728
- clear as bC,
203729
- clear$1 as bD,
203730
- updateNodeBounds as bE,
203731
- setNodeElem as bF,
203732
- insertEdge as bG,
203733
- positionEdgeLabel as bH,
203734
- insertEdgeLabel as bI,
203735
- loadSidebarWidth as bJ,
203736
- saveSidebarWidth as bK,
203737
- Ut$1 as bL,
203738
- Yt$1 as bM,
203739
- SIDEBAR_MAX_SIZE as bN,
203740
- SIDEBAR_MIN_SIZE as bO,
203741
- DashboardShell as bP,
203742
- Qt$1 as bQ,
203743
- MessageSquare as bR,
203744
- useIsDesktop as bS,
203745
- ToolbarOverflowProvider as bT,
203746
- ToolbarActionBar as bU,
203747
- isDesktop as bV,
203748
- array$2 as bW,
203749
- ordinal as bX,
203750
- Root$5 as bY,
203751
- Content$1 as bZ,
203752
- Close as b_,
203753
- NodeWeakMap as ba,
203754
- snippetCompletion as bb,
203755
- Tag as bc,
203756
- parseMixed as bd,
203757
- EditorSelection as be,
203758
- countColumn as bf,
203759
- Prec as bg,
203760
- keymap as bh,
203761
- EditorView as bi,
203762
- Language as bj,
203763
- indentUnit as bk,
203764
- foldService as bl,
203765
- defineLanguageFacet as bm,
203766
- CompletionContext as bn,
203767
- EditorState as bo,
203768
- languageDataProp as bp,
203769
- LanguageDescription as bq,
203770
- ParseContext as br,
203771
- bracketMatchingHandle as bs,
203772
- flatIndent as bt,
203773
- sublanguageProp as bu,
203774
- baseRest as bv,
203775
- isArrayLikeObject$1 as bw,
203776
- constant as bx,
203777
- isFunction$1 as by,
203778
- isEmpty as bz,
204678
+ Close as b$,
204679
+ insertCluster as b0,
204680
+ insertNode as b1,
204681
+ positionNode as b2,
204682
+ getLineFunctionsWithOffset as b3,
204683
+ evaluate as b4,
204684
+ createText as b5,
204685
+ getSubGraphTitleMargins as b6,
204686
+ replaceIconSubstring as b7,
204687
+ decodeEntities as b8,
204688
+ getStylesFromArray as b9,
204689
+ isEmpty as bA,
204690
+ markers_default as bB,
204691
+ clear2 as bC,
204692
+ clear as bD,
204693
+ clear$1 as bE,
204694
+ updateNodeBounds as bF,
204695
+ setNodeElem as bG,
204696
+ insertEdge as bH,
204697
+ positionEdgeLabel as bI,
204698
+ insertEdgeLabel as bJ,
204699
+ loadSidebarWidth as bK,
204700
+ saveSidebarWidth as bL,
204701
+ Ut$1 as bM,
204702
+ Yt$1 as bN,
204703
+ SIDEBAR_MAX_SIZE as bO,
204704
+ SIDEBAR_MIN_SIZE as bP,
204705
+ DashboardShell as bQ,
204706
+ Qt$1 as bR,
204707
+ MessageSquare as bS,
204708
+ useIsDesktop as bT,
204709
+ ToolbarOverflowProvider as bU,
204710
+ ToolbarActionBar as bV,
204711
+ isDesktop as bW,
204712
+ array$2 as bX,
204713
+ ordinal as bY,
204714
+ Root$5 as bZ,
204715
+ Content$1 as b_,
204716
+ delimitedIndent as ba,
204717
+ NodeWeakMap as bb,
204718
+ snippetCompletion as bc,
204719
+ Tag as bd,
204720
+ parseMixed as be,
204721
+ EditorSelection as bf,
204722
+ countColumn as bg,
204723
+ Prec as bh,
204724
+ keymap as bi,
204725
+ EditorView as bj,
204726
+ Language as bk,
204727
+ indentUnit as bl,
204728
+ foldService as bm,
204729
+ defineLanguageFacet as bn,
204730
+ CompletionContext as bo,
204731
+ EditorState as bp,
204732
+ languageDataProp as bq,
204733
+ LanguageDescription as br,
204734
+ ParseContext as bs,
204735
+ bracketMatchingHandle as bt,
204736
+ flatIndent as bu,
204737
+ sublanguageProp as bv,
204738
+ baseRest as bw,
204739
+ isArrayLikeObject$1 as bx,
204740
+ constant as by,
204741
+ isFunction$1 as bz,
203779
204742
  continuedIndent as c,
203780
- dayjs2 as c$,
203781
- Title as c0,
203782
- Description as c1,
203783
- Portal$4 as c2,
203784
- Overlay$1 as c3,
203785
- GitCompare as c4,
203786
- FolderOpen as c5,
203787
- useDashboardStore as c6,
203788
- DesktopDragRegion as c7,
203789
- Menu$1 as c8,
203790
- ChevronsUpDown as c9,
203791
- ZOOM_CSS_VAR as cA,
203792
- invoke as cB,
203793
- listen as cC,
203794
- reactDomExports as cD,
203795
- Globe as cE,
203796
- Popover as cF,
203797
- PopoverTrigger as cG,
203798
- PopoverContent as cH,
203799
- Search as cI,
203800
- Trash2 as cJ,
203801
- DropdownMenu as cK,
203802
- DropdownMenuTrigger as cL,
203803
- ChevronDown as cM,
203804
- DropdownMenuContent as cN,
203805
- DropdownMenuItem as cO,
203806
- TriangleAlert as cP,
203807
- RotateCw as cQ,
203808
- Rgb as cR,
203809
- rgbConvert as cS,
203810
- define as cT,
203811
- extend$2 as cU,
203812
- Color as cV,
203813
- nogamma as cW,
203814
- hue as cX,
203815
- time$2 as cY,
203816
- min$1 as cZ,
203817
- max$1 as c_,
203818
- DiffView as ca,
203819
- CodeBrowserView as cb,
203820
- QuickOpenDialog as cc,
203821
- SearchFilesDialog as cd,
203822
- WorkspacePickerDialog as ce,
203823
- useDiffTarget as cf,
203824
- useSettingsQuery as cg,
203825
- agentTypeSupportsSessionListing as ch,
203826
- ChatView as ci,
203827
- getUserDefinedConfig as cj,
203828
- getIconSVG as ck,
203829
- registerIconPacks as cl,
203830
- unknownIcon as cm,
203831
- isFilePath as cn,
203832
- writeClipboardText as co,
203833
- readClipboardText as cp,
203834
- ArrowLeft as cq,
203835
- ArrowUp as cr,
203836
- ArrowDown as cs,
203837
- ArrowRight as ct,
203838
- ClipboardCopy as cu,
203839
- ClipboardPaste as cv,
203840
- getCurrentZoomLevel as cw,
203841
- openExternalUrl as cx,
203842
- subscribeToZoomChanges as cy,
203843
- SearchBar as cz,
204743
+ timeSunday as c$,
204744
+ cn$2 as c0,
204745
+ Title as c1,
204746
+ Description as c2,
204747
+ Portal$4 as c3,
204748
+ Overlay$1 as c4,
204749
+ GitCompare as c5,
204750
+ FolderOpen as c6,
204751
+ useDashboardStore as c7,
204752
+ DesktopDragRegion as c8,
204753
+ Menu$1 as c9,
204754
+ reactDomExports as cA,
204755
+ Globe as cB,
204756
+ Popover as cC,
204757
+ PopoverTrigger as cD,
204758
+ PopoverContent as cE,
204759
+ Search as cF,
204760
+ Trash2 as cG,
204761
+ DropdownMenu as cH,
204762
+ DropdownMenuTrigger as cI,
204763
+ ChevronDown as cJ,
204764
+ DropdownMenuContent as cK,
204765
+ DropdownMenuItem as cL,
204766
+ TriangleAlert as cM,
204767
+ RotateCw as cN,
204768
+ Rgb as cO,
204769
+ rgbConvert as cP,
204770
+ define as cQ,
204771
+ extend$2 as cR,
204772
+ Color as cS,
204773
+ nogamma as cT,
204774
+ hue as cU,
204775
+ time$2 as cV,
204776
+ min$1 as cW,
204777
+ max$1 as cX,
204778
+ dayjs2 as cY,
204779
+ timeFormat as cZ,
204780
+ timeMonth as c_,
204781
+ ChevronsUpDown as ca,
204782
+ DiffView as cb,
204783
+ CodeBrowserView as cc,
204784
+ QuickOpenDialog as cd,
204785
+ SearchFilesDialog as ce,
204786
+ WorkspacePickerDialog as cf,
204787
+ useDiffTarget as cg,
204788
+ useSettingsQuery as ch,
204789
+ agentTypeSupportsSessionListing as ci,
204790
+ ChatView as cj,
204791
+ getUserDefinedConfig as ck,
204792
+ writeClipboardText as cl,
204793
+ readClipboardText as cm,
204794
+ ArrowLeft as cn,
204795
+ ArrowUp as co,
204796
+ ArrowDown as cp,
204797
+ ArrowRight as cq,
204798
+ ClipboardCopy as cr,
204799
+ ClipboardPaste as cs,
204800
+ getOrCreateTerminal as ct,
204801
+ SearchBar as cu,
204802
+ getIconSVG as cv,
204803
+ registerIconPacks as cw,
204804
+ unknownIcon as cx,
204805
+ invoke as cy,
204806
+ listen as cz,
203844
204807
  foldInside as d,
203845
- timeFormat as d0,
203846
- timeMonth as d1,
203847
- timeSunday as d2,
203848
- timeSaturday as d3,
203849
- timeFriday as d4,
203850
- timeThursday as d5,
203851
- timeWednesday as d6,
203852
- timeTuesday as d7,
203853
- timeMonday as d8,
203854
- timeDay as d9,
203855
- arrayLikeKeys as dA,
203856
- baseKeys as dB,
203857
- memoize as dC,
203858
- isArguments$1 as dD,
203859
- copyObject as dE,
203860
- getPrototype as dF,
203861
- cloneArrayBuffer as dG,
203862
- cloneTypedArray as dH,
203863
- getTag$1 as dI,
203864
- nodeUtil as dJ,
203865
- copyArray as dK,
203866
- isBuffer$1 as dL,
203867
- cloneBuffer as dM,
203868
- initCloneObject as dN,
203869
- Stack as dO,
203870
- MapCache as dP,
203871
- Uint8Array$1 as dQ,
203872
- isTypedArray$1 as dR,
203873
- isLength$1 as dS,
203874
- Set$1 as dT,
203875
- createAssigner as dU,
203876
- isPrototype as dV,
203877
- router as dW,
203878
- timeHour as da,
203879
- timeMinute as db,
203880
- second as dc,
203881
- millisecond as dd,
203882
- isObject$2 as de,
203883
- isIterateeCall$1 as df,
203884
- keysIn as dg,
203885
- eq as dh,
203886
- isArrayLike$1 as di,
203887
- isArray$1 as dj,
203888
- identity$1 as dk,
203889
- isIndex$1 as dl,
203890
- assignValue as dm,
203891
- format as dn,
203892
- styles2String as dp,
203893
- isLabelStyle as dq,
203894
- setToString as dr,
203895
- overRest as ds,
203896
- baseFor as dt,
203897
- baseAssignValue as du,
203898
- baseUnary as dv,
203899
- merge$1 as dw,
203900
- isObjectLike$1 as dx,
203901
- baseGetTag as dy,
203902
- Symbol$1 as dz,
204808
+ timeSaturday as d0,
204809
+ timeFriday as d1,
204810
+ timeThursday as d2,
204811
+ timeWednesday as d3,
204812
+ timeTuesday as d4,
204813
+ timeMonday as d5,
204814
+ timeDay as d6,
204815
+ timeHour as d7,
204816
+ timeMinute as d8,
204817
+ second as d9,
204818
+ isArguments$1 as dA,
204819
+ copyObject as dB,
204820
+ getPrototype as dC,
204821
+ cloneArrayBuffer as dD,
204822
+ cloneTypedArray as dE,
204823
+ getTag$1 as dF,
204824
+ nodeUtil as dG,
204825
+ copyArray as dH,
204826
+ isBuffer$1 as dI,
204827
+ cloneBuffer as dJ,
204828
+ initCloneObject as dK,
204829
+ Stack as dL,
204830
+ MapCache as dM,
204831
+ Uint8Array$1 as dN,
204832
+ isTypedArray$1 as dO,
204833
+ isLength$1 as dP,
204834
+ Set$1 as dQ,
204835
+ createAssigner as dR,
204836
+ isPrototype as dS,
204837
+ router as dT,
204838
+ millisecond as da,
204839
+ isObject$2 as db,
204840
+ isIterateeCall$1 as dc,
204841
+ keysIn as dd,
204842
+ eq as de,
204843
+ isArrayLike$1 as df,
204844
+ isArray$1 as dg,
204845
+ identity$1 as dh,
204846
+ isIndex$1 as di,
204847
+ assignValue as dj,
204848
+ format as dk,
204849
+ styles2String as dl,
204850
+ isLabelStyle as dm,
204851
+ setToString as dn,
204852
+ overRest as dp,
204853
+ baseFor as dq,
204854
+ baseAssignValue as dr,
204855
+ baseUnary as ds,
204856
+ merge$1 as dt,
204857
+ isObjectLike$1 as du,
204858
+ baseGetTag as dv,
204859
+ Symbol$1 as dw,
204860
+ arrayLikeKeys as dx,
204861
+ baseKeys as dy,
204862
+ memoize as dz,
203903
204863
  ifNotIn as e,
203904
204864
  foldNodeProp as f,
203905
204865
  completeFromList as g,
@@ -203913,13 +204873,13 @@ export {
203913
204873
  useQuery as o,
203914
204874
  trpc as p,
203915
204875
  selectNeighbourBeforeRemove as q,
203916
- centralPanelPosition as r,
204876
+ disposeTerminal as r,
203917
204877
  styleTags as s,
203918
204878
  tags$1 as t,
203919
204879
  useAdapter as u,
203920
- ensureEdgeGroups as v,
203921
- attachEdgeGroupDragVisibility as w,
203922
- registerInnerDockview as x,
203923
- PanelVisibilityContext as y,
203924
- DockviewReact as z
204880
+ centralPanelPosition as v,
204881
+ ensureEdgeGroups as w,
204882
+ attachEdgeGroupDragVisibility as x,
204883
+ registerInnerDockview as y,
204884
+ PanelVisibilityContext as z
203925
204885
  };