@band-app/server 0.24.0 → 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 (173) hide show
  1. package/dist/client/assets/{DockviewBrowserContainer-Bh7ygcym.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-BoN5C7c3.js → _basePickBy-WSEGU-48.js} +1 -1
  5. package/dist/client/assets/_baseUniq-CISSY9JU.js +1 -0
  6. package/dist/client/assets/{arc-DStHWz7g.js → arc-EYeeggGP.js} +1 -1
  7. package/dist/client/assets/architectureDiagram-VXUJARFQ-auNzMJHs.js +36 -0
  8. package/dist/client/assets/{blockDiagram-VD42YOAC-CpfEplz4.js → blockDiagram-VD42YOAC-BAxIVlzi.js} +1 -1
  9. package/dist/client/assets/{c4Diagram-YG6GDRKO-DFNXKd12.js → c4Diagram-YG6GDRKO-BRGunjEV.js} +1 -1
  10. package/dist/client/assets/channel-mz7YKOQ7.js +1 -0
  11. package/dist/client/assets/{chunk-4BX2VUAB-BhKLwyZj.js → chunk-4BX2VUAB-DD1K7aO0.js} +1 -1
  12. package/dist/client/assets/{chunk-55IACEB6--1nGJwoJ.js → chunk-55IACEB6-xhCYxBKG.js} +1 -1
  13. package/dist/client/assets/{chunk-B4BG7PRW-DfW_4HED.js → chunk-B4BG7PRW-BRcHAc7V.js} +1 -1
  14. package/dist/client/assets/{chunk-DI55MBZ5-BBLPj3y_.js → chunk-DI55MBZ5-C5AoviQd.js} +3 -3
  15. package/dist/client/assets/{chunk-FMBD7UC4-22_QzB6-.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-t5QozrKy.js → chunk-QZHKN3VN-IXkzzmtV.js} +1 -1
  18. package/dist/client/assets/{chunk-TZMSLE5B-DTbuaeiD.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-D2Rb5UvQ.js → erDiagram-Q2GNP2WA-B1PLdIwn.js} +3 -3
  28. package/dist/client/assets/{flowDiagram-NV44I4VS-BSQxdSDJ.js → flowDiagram-NV44I4VS-C5YhU0Qh.js} +1 -1
  29. package/dist/client/assets/{ganttDiagram-JELNMOA3-Cj0PWn4F.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-B7ABrrXm.js → graph-pEXzxzGm.js} +1 -1
  32. package/dist/client/assets/{highlighted-body-B3W2YXNL-DCQslkUR.js → highlighted-body-B3W2YXNL-DkAr8YBH.js} +1 -1
  33. package/dist/client/assets/{index-DWqvtyLc.js → index-3n8Vw-Mx.js} +1 -1
  34. package/dist/client/assets/{index-DjFlwM8l.js → index-BGzaO0X8.js} +1 -1
  35. package/dist/client/assets/{index-COql1I_y.js → index-BTh70HvG.js} +1 -1
  36. package/dist/client/assets/{index-9FCRbBun.js → index-Bc4l--Pr.js} +1 -1
  37. package/dist/client/assets/{index-C99EKoUY.js → index-BrhTwhg3.js} +1 -1
  38. package/dist/client/assets/{index-8PaDaRYT.js → index-Bsj04x6y.js} +1 -1
  39. package/dist/client/assets/{index-Myu-_U8q.js → index-BtupbjWj.js} +1 -1
  40. package/dist/client/assets/{index-D9SknX6B.js → index-BvTVbNia.js} +1 -1
  41. package/dist/client/assets/{index-BQhRobL8.js → index-C-44kyj4.js} +1 -1
  42. package/dist/client/assets/{index-BG3Ltnuv.js → index-CUvVSQUr.js} +1 -1
  43. package/dist/client/assets/{index-Diyv48F3.js → index-CjLUJG6j.js} +1 -1
  44. package/dist/client/assets/{index-DaWbWCgj.js → index-Cy1ivKKB.js} +1 -1
  45. package/dist/client/assets/{index-DWj9bxNA.js → index-DW-oXjA-.js} +1 -1
  46. package/dist/client/assets/{index-BsEwdsSv.js → index-DrAxRehm.js} +1 -1
  47. package/dist/client/assets/{index-BCA8lija.js → index-DvKArr4F.js} +1 -1
  48. package/dist/client/assets/{index-BaT5I2xy.js → index-abHZx3iS.js} +2 -2
  49. package/dist/client/assets/{index-CBLjtUwT.js → index-kS9W4-gd.js} +1 -1
  50. package/dist/client/assets/{index-B22f7bFn.js → index-unEuBThJ.js} +1 -1
  51. package/dist/client/assets/infoDiagram-HS3SLOUP-BFYSEig3.js +2 -0
  52. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DcF--XQH.js → journeyDiagram-XKPGCS4Q-BxYsQaMT.js} +1 -1
  53. package/dist/client/assets/{kanban-definition-3W4ZIXB7-BA1w8rep.js → kanban-definition-3W4ZIXB7-Bv-pDWZ-.js} +1 -1
  54. package/dist/client/assets/{layout-DVMDYrln.js → layout-B77NnSO1.js} +1 -1
  55. package/dist/client/assets/{main-B6t1j7Kr.js → main-5cZqr4FX.js} +236 -229
  56. package/dist/client/assets/main-DOmWiUwE.css +1 -0
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-C1vA0wr2.js → mindmap-definition-VGOIOE7T-CgxHuURf.js} +3 -3
  58. package/dist/client/assets/pieDiagram-ADFJNKIX-DMT2s9he.js +30 -0
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Bxcd0mzk.js → quadrantDiagram-AYHSOK5B-BXabhtC0.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-DWqCIKiG.js → requirementDiagram-UZGBJVZJ-DTW7rlcB.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-D9rSnLVX.js → sankeyDiagram-TZEHDZUN-BcCwFhUF.js} +5 -5
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-Co2Jz6Fl.js → sequenceDiagram-WL72ISMW-pM8Di5We.js} +6 -6
  63. package/dist/client/assets/{square-terminal-C3zI_mkt.js → square-terminal-DKjKKzzC.js} +1 -1
  64. package/dist/client/assets/stateDiagram-FKZM4ZOC-Daqd80Rx.js +1 -0
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-BCaxpIKa.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-BXxZZYsm.js → timeline-definition-IT6M3QCI-B528DtkS.js} +3 -3
  67. package/dist/client/assets/{treemap-GDKQZRPO-BgMoU0kM.js → treemap-GDKQZRPO-CSzjIbPP.js} +1 -1
  68. package/dist/client/assets/{workspace._workspaceId-Bww_ZNFK.js → workspace._workspaceId-CDQS6YxL.js} +2 -2
  69. package/dist/client/assets/{workspace._workspaceId-C_KGLGyB.js → workspace._workspaceId-DlHLgF3G.js} +1 -1
  70. package/dist/client/assets/{xychartDiagram-PRI3JC2R-BQxVaOKh.js → xychartDiagram-PRI3JC2R-CZehTq19.js} +2 -2
  71. package/dist/server/assets/{DockviewBrowserContainer-C6QVux14.js → DockviewBrowserContainer-NHSxR-nz.js} +1 -1
  72. package/dist/server/assets/{DockviewTerminalContainer-OevWE65L.js → DockviewTerminalContainer-CTJJUByH.js} +5 -3
  73. package/dist/server/assets/TerminalPanel-BiNP-nsL.js +425 -0
  74. package/dist/server/assets/{_basePickBy-DVK5KtlH.js → _basePickBy-C563KIXw.js} +2 -2
  75. package/dist/server/assets/{_baseUniq-DSFYYhGd.js → _baseUniq-d93HSS0F.js} +1 -1
  76. package/dist/server/assets/_tanstack-start-manifest_v-D7mA2JWN.js +4 -0
  77. package/dist/server/assets/{arc-BpwEbxUR.js → arc-jtTutH-i.js} +1 -1
  78. package/dist/server/assets/{architecture-7HQA4BMR-CNyHLOO7.js → architecture-7HQA4BMR-DQzLgw80.js} +6 -6
  79. package/dist/server/assets/{architectureDiagram-VXUJARFQ-DVUpIskI.js → architectureDiagram-VXUJARFQ-DrNJMIEJ.js} +6 -6
  80. package/dist/server/assets/{blockDiagram-VD42YOAC-CRv2pc0L.js → blockDiagram-VD42YOAC-WUFdSkGk.js} +6 -6
  81. package/dist/server/assets/{c4Diagram-YG6GDRKO-CBv74bWb.js → c4Diagram-YG6GDRKO-B3FexEXR.js} +2 -2
  82. package/dist/server/assets/{channel-C_c7u4ky.js → channel-CGY9wImP.js} +1 -1
  83. package/dist/server/assets/{chunk-4BX2VUAB-85OXnz_P.js → chunk-4BX2VUAB-DWhvAfOu.js} +1 -1
  84. package/dist/server/assets/{chunk-55IACEB6-Cl8taExZ.js → chunk-55IACEB6-D9KMaGKQ.js} +1 -1
  85. package/dist/server/assets/{chunk-B4BG7PRW-C7W_R9n6.js → chunk-B4BG7PRW-Bdi0b8I3.js} +4 -4
  86. package/dist/server/assets/{chunk-DI55MBZ5-CTi30KuT.js → chunk-DI55MBZ5-CvFVKOgG.js} +3 -3
  87. package/dist/server/assets/{chunk-FMBD7UC4-CsuoPD3I.js → chunk-FMBD7UC4-CEf8TJeK.js} +1 -1
  88. package/dist/server/assets/{chunk-QN33PNHL-BHHMj_a1.js → chunk-QN33PNHL-CmOqP24j.js} +1 -1
  89. package/dist/server/assets/{chunk-QZHKN3VN-DwwXlOCl.js → chunk-QZHKN3VN-uFFM4Cjm.js} +1 -1
  90. package/dist/server/assets/{chunk-TZMSLE5B-ECyN9wrL.js → chunk-TZMSLE5B-DH8QxQUD.js} +1 -1
  91. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-qbF8ds74.js → classDiagram-2ON5EDUG-Dr94MNeD.js} +5 -5
  92. package/dist/server/assets/{classDiagram-2ON5EDUG-qbF8ds74.js → classDiagram-v2-WZHVMYZB-Dr94MNeD.js} +5 -5
  93. package/dist/server/assets/{clone-BCajbdd5.js → clone-DESSLwZZ.js} +1 -1
  94. package/dist/server/assets/{cose-bilkent-S5V4N54A-D5-w_t4l.js → cose-bilkent-S5V4N54A-B-Bym2R2.js} +1 -1
  95. package/dist/server/assets/{dagre-6UL2VRFP-CCIdAwdB.js → dagre-6UL2VRFP-CJdhKZlX.js} +6 -6
  96. package/dist/server/assets/{diagram-PSM6KHXK-CWGITxy9.js → diagram-PSM6KHXK-Bku5j6_i.js} +7 -7
  97. package/dist/server/assets/{diagram-QEK2KX5R-B07zrGgY.js → diagram-QEK2KX5R-CUdsg8PG.js} +6 -6
  98. package/dist/server/assets/{diagram-S2PKOQOG-XGIpbjo1.js → diagram-S2PKOQOG-DfZmENnB.js} +6 -6
  99. package/dist/server/assets/{erDiagram-Q2GNP2WA-DYHtO3j9.js → erDiagram-Q2GNP2WA-DgXGwPJi.js} +4 -4
  100. package/dist/server/assets/{flowDiagram-NV44I4VS-Cs7hS9X4.js → flowDiagram-NV44I4VS-CCKE-dcR.js} +5 -5
  101. package/dist/server/assets/{ganttDiagram-JELNMOA3-BhLp8xvm.js → ganttDiagram-JELNMOA3-Df1I84HD.js} +1 -1
  102. package/dist/server/assets/{gitGraph-G5XIXVHT-B46gW1OX.js → gitGraph-G5XIXVHT-Da1EJY5L.js} +6 -6
  103. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CZHNGOm0.js → gitGraphDiagram-V2S2FVAM-BoLIFjNj.js} +7 -7
  104. package/dist/server/assets/{graph-4bVECaJM.js → graph-CzqmmHH7.js} +2 -2
  105. package/dist/server/assets/{highlighted-body-B3W2YXNL-DSf8s2aV.js → highlighted-body-B3W2YXNL-D44laf8J.js} +1 -1
  106. package/dist/server/assets/{index-BLv-1MtR.js → index-B-dHru1q.js} +5 -5
  107. package/dist/server/assets/{index-C7lRWZi8.js → index-B9n0dcMw.js} +4 -4
  108. package/dist/server/assets/{index-14dCbIAi.js → index-BVZPT41S.js} +5 -5
  109. package/dist/server/assets/{index-8EiXP0Bf.js → index-BbSejcCZ.js} +2 -2
  110. package/dist/server/assets/{index-1OK7lyTa.js → index-Bgh1V0xV.js} +2 -2
  111. package/dist/server/assets/{index-CHvqm6Lz.js → index-C6mmT4Bf.js} +1 -1
  112. package/dist/server/assets/{index-CDG7KvBY.js → index-CA1ILOaa.js} +2 -2
  113. package/dist/server/assets/{index-B72BPMJQ.js → index-CR4BnEcT.js} +3 -3
  114. package/dist/server/assets/{index-U3tOcUUV.js → index-CU2q4Svg.js} +2 -2
  115. package/dist/server/assets/{index-BRzkEVRG.js → index-CbnRNXnI.js} +1 -1
  116. package/dist/server/assets/{index-rT9xGtRW.js → index-CkCmjvnL.js} +3 -3
  117. package/dist/server/assets/{index-DAq8fRkd.js → index-DM7tck_E.js} +2 -2
  118. package/dist/server/assets/{index-Tq3ajWxh.js → index-DURk6tcR.js} +2 -2
  119. package/dist/server/assets/{index-Dz2mzfvS.js → index-DYATP6mi.js} +2 -2
  120. package/dist/server/assets/{index-CWr-Kh5M.js → index-DdEGElQC.js} +2 -2
  121. package/dist/server/assets/{index-pFRKwTv2.js → index-DoPHl__N.js} +2 -2
  122. package/dist/server/assets/{index-D2uLA4oe.js → index-JQz2Ac_X.js} +2 -2
  123. package/dist/server/assets/{index-CKPuU6Za.js → index-gZfWBVgm.js} +2 -2
  124. package/dist/server/assets/{info-VBDWY6EO-DrELfFR0.js → info-VBDWY6EO-CraK2qik.js} +6 -6
  125. package/dist/server/assets/{infoDiagram-HS3SLOUP-D40Crb-p.js → infoDiagram-HS3SLOUP-m71IJidm.js} +5 -5
  126. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-dtlVBwV2.js → journeyDiagram-XKPGCS4Q-Z2B632R6.js} +4 -4
  127. package/dist/server/assets/{kanban-definition-3W4ZIXB7-72vgA7Jl.js → kanban-definition-3W4ZIXB7-B2vyxAFc.js} +2 -2
  128. package/dist/server/assets/{layout-DJ0Eul-X.js → layout-Ciol0TI8.js} +4 -4
  129. package/dist/server/assets/{mermaid-3ZIDBTTL-DGEHf_at.js → mermaid-3ZIDBTTL-m_-3aBOO.js} +1 -1
  130. package/dist/server/assets/{mermaid-parser.core-C1UfVEF8.js → mermaid-parser.core-DsRAodK1.js} +11 -11
  131. package/dist/server/assets/{mindmap-definition-VGOIOE7T-DYfEp2uH.js → mindmap-definition-VGOIOE7T-B9LDAkQV.js} +3 -3
  132. package/dist/server/assets/{packet-DYOGHKS2-IHYchS32.js → packet-DYOGHKS2-CU0Rnzfp.js} +6 -6
  133. package/dist/server/assets/{pie-VRWISCQL-R6SvOU4g.js → pie-VRWISCQL-DAKQG59I.js} +6 -6
  134. package/dist/server/assets/{pieDiagram-ADFJNKIX-EgffZsud.js → pieDiagram-ADFJNKIX-C895xIIt.js} +7 -7
  135. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-n2oJWllV.js → quadrantDiagram-AYHSOK5B-6UAdibo5.js} +1 -1
  136. package/dist/server/assets/{radar-ZZBFDIW7-BX2ya_Na.js → radar-ZZBFDIW7-CSkyNl40.js} +6 -6
  137. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-CzCXruFj.js → requirementDiagram-UZGBJVZJ-C9qwWXGY.js} +3 -3
  138. package/dist/server/assets/{router-BC8bCsa3.js → router-B9BGcvPs.js} +1570 -519
  139. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-C0GqwqSS.js → sankeyDiagram-TZEHDZUN-BD3BjmcP.js} +1 -1
  140. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BfX0R0LP.js → sequenceDiagram-WL72ISMW-CaRznm1o.js} +3 -3
  141. package/dist/server/assets/{square-terminal-BWcJU95Z.js → square-terminal-CuW8JOAZ.js} +1 -1
  142. package/dist/server/assets/{stateDiagram-FKZM4ZOC-QowlLVwh.js → stateDiagram-FKZM4ZOC-C7925k-i.js} +8 -8
  143. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-DVHzQlOF.js → stateDiagram-v2-4FDKWEC3-C0yapgJL.js} +4 -4
  144. package/dist/server/assets/{timeline-definition-IT6M3QCI-DUoaC7rz.js → timeline-definition-IT6M3QCI-DfwL9TFo.js} +2 -2
  145. package/dist/server/assets/{treemap-GDKQZRPO-B5KIzomx.js → treemap-GDKQZRPO-kKnTHSv2.js} +6 -6
  146. package/dist/server/assets/{workspace._workspaceId-hnIpuUNX.js → workspace._workspaceId-BK83HsBK.js} +1 -1
  147. package/dist/server/assets/{workspace._workspaceId-DRK2dblR.js → workspace._workspaceId-DEWHh9LI.js} +3 -3
  148. package/dist/server/assets/{xychartDiagram-PRI3JC2R-aNxYxejD.js → xychartDiagram-PRI3JC2R-CfUYiueD.js} +1 -1
  149. package/dist/server/server.js +2 -2
  150. package/dist/start-server.mjs +193 -115
  151. package/package.json +4 -4
  152. package/dist/client/assets/DockviewTerminalContainer-BA10dl2w.js +0 -2
  153. package/dist/client/assets/TerminalPanel-C40mohhY.js +0 -5
  154. package/dist/client/assets/_baseUniq-hs8Z8eGG.js +0 -1
  155. package/dist/client/assets/architectureDiagram-VXUJARFQ-BmuwLrzR.js +0 -36
  156. package/dist/client/assets/channel-cGiKwLh2.js +0 -1
  157. package/dist/client/assets/chunk-QN33PNHL-BsNBNA8p.js +0 -1
  158. package/dist/client/assets/classDiagram-2ON5EDUG-aEV-2-qP.js +0 -1
  159. package/dist/client/assets/classDiagram-v2-WZHVMYZB-aEV-2-qP.js +0 -1
  160. package/dist/client/assets/clone-CArWpwXp.js +0 -1
  161. package/dist/client/assets/cose-bilkent-S5V4N54A-HZO5t4GF.js +0 -1
  162. package/dist/client/assets/dagre-6UL2VRFP-DnOsaGGD.js +0 -4
  163. package/dist/client/assets/diagram-PSM6KHXK-tirWXx7b.js +0 -24
  164. package/dist/client/assets/diagram-QEK2KX5R-Cjtr8l3E.js +0 -43
  165. package/dist/client/assets/diagram-S2PKOQOG-CuNpvzLc.js +0 -24
  166. package/dist/client/assets/gitGraphDiagram-V2S2FVAM-DMoH-grQ.js +0 -65
  167. package/dist/client/assets/infoDiagram-HS3SLOUP-C_wVpnnp.js +0 -2
  168. package/dist/client/assets/main-i-GTiqUd.css +0 -1
  169. package/dist/client/assets/pieDiagram-ADFJNKIX-Q71p26az.js +0 -30
  170. package/dist/client/assets/stateDiagram-FKZM4ZOC-CXLDkeLY.js +0 -1
  171. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-R8LzGctw.js +0 -1
  172. package/dist/server/assets/TerminalPanel-BhOjwcFW.js +0 -1236
  173. package/dist/server/assets/_tanstack-start-manifest_v-C_7Mj4aJ.js +0 -4
@@ -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
  ]);
@@ -14781,8 +14781,50 @@ const DIALOG_CONTENT_VARIANTS = {
14781
14781
  // Desktop (lg+): revert to the centred modal
14782
14782
  "lg:inset-auto lg:top-[50%] lg:left-[50%] lg:bottom-auto lg:w-full lg:max-w-lg lg:max-h-[85vh] lg:translate-x-[-50%] lg:translate-y-[-50%] lg:rounded-lg lg:border-b",
14783
14783
  "lg:data-[state=open]:zoom-in-95 lg:data-[state=closed]:zoom-out-95"
14784
+ ].join(" "),
14785
+ "command-palette": [
14786
+ // Shared
14787
+ "fixed z-50 flex flex-col bg-background shadow-lg duration-200 outline-none",
14788
+ "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:animate-in data-[state=open]:fade-in-0",
14789
+ // Mobile (< lg): bottom drawer with the input pinned to the bottom. Flip
14790
+ // the command's flex direction so the input sits below the results list,
14791
+ // and flip the input wrapper's divider to a top border to match. The sheet
14792
+ // floats at `bottom: var(--kb-inset)` (keyboard height; 0 when closed) so
14793
+ // the input clears the on-screen keyboard — see `useKeyboardInset`.
14794
+ "inset-x-0 bottom-[var(--kb-inset,0px)] w-full max-w-none rounded-t-2xl border border-b-0",
14795
+ "max-h-[calc(100dvh-var(--kb-inset,0px)-env(safe-area-inset-top)-1.5rem)]",
14796
+ "max-lg:[&_[data-slot=command]]:flex-col-reverse",
14797
+ "max-lg:[&_[cmdk-input-wrapper]]:border-t max-lg:[&_[cmdk-input-wrapper]]:border-b-0",
14798
+ "max-lg:data-[state=open]:slide-in-from-bottom max-lg:data-[state=closed]:slide-out-to-bottom",
14799
+ // Desktop (lg+): anchored in the upper third by its TOP edge — no
14800
+ // `translate-y`, so the input never moves as the list grows downward.
14801
+ "lg:inset-x-auto lg:bottom-auto lg:top-[12vh] lg:left-1/2 lg:w-full lg:max-w-lg lg:max-h-[70vh] lg:-translate-x-1/2 lg:rounded-lg lg:border",
14802
+ "lg:data-[state=open]:zoom-in-95 lg:data-[state=closed]:zoom-out-95"
14784
14803
  ].join(" ")
14785
14804
  };
14805
+ const keyboardInsetHolders = /* @__PURE__ */ new Set();
14806
+ function useKeyboardInset(active) {
14807
+ reactExports.useEffect(() => {
14808
+ const vv = window.visualViewport;
14809
+ if (!active || !vv) return;
14810
+ const root2 = document.documentElement;
14811
+ const token2 = {};
14812
+ const update = () => {
14813
+ const inset = Math.max(0, window.innerHeight - vv.height - vv.offsetTop);
14814
+ root2.style.setProperty("--kb-inset", `${inset}px`);
14815
+ };
14816
+ keyboardInsetHolders.add(token2);
14817
+ update();
14818
+ vv.addEventListener("resize", update);
14819
+ vv.addEventListener("scroll", update);
14820
+ return () => {
14821
+ vv.removeEventListener("resize", update);
14822
+ vv.removeEventListener("scroll", update);
14823
+ keyboardInsetHolders.delete(token2);
14824
+ if (keyboardInsetHolders.size === 0) root2.style.removeProperty("--kb-inset");
14825
+ };
14826
+ }, [active]);
14827
+ }
14786
14828
  function DialogContent({
14787
14829
  className,
14788
14830
  overlayClassName,
@@ -14791,6 +14833,7 @@ function DialogContent({
14791
14833
  variant = "default",
14792
14834
  ...props
14793
14835
  }) {
14836
+ useKeyboardInset(variant === "command-palette");
14794
14837
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogPortal, { "data-slot": "dialog-portal", children: [
14795
14838
  /* @__PURE__ */ jsxRuntimeExports.jsx(DialogOverlay, { className: overlayClassName }),
14796
14839
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
@@ -42720,53 +42763,53 @@ async function loadLanguage(lang) {
42720
42763
  try {
42721
42764
  switch (lang) {
42722
42765
  case "javascript":
42723
- return import("./index-8EiXP0Bf.js").then((m2) => m2.javascript());
42766
+ return import("./index-BbSejcCZ.js").then((m2) => m2.javascript());
42724
42767
  case "jsx":
42725
- return import("./index-8EiXP0Bf.js").then((m2) => m2.javascript({ jsx: true }));
42768
+ return import("./index-BbSejcCZ.js").then((m2) => m2.javascript({ jsx: true }));
42726
42769
  case "typescript":
42727
- return import("./index-8EiXP0Bf.js").then(
42770
+ return import("./index-BbSejcCZ.js").then(
42728
42771
  (m2) => m2.javascript({ typescript: true })
42729
42772
  );
42730
42773
  case "tsx":
42731
- return import("./index-8EiXP0Bf.js").then(
42774
+ return import("./index-BbSejcCZ.js").then(
42732
42775
  (m2) => m2.javascript({ jsx: true, typescript: true })
42733
42776
  );
42734
42777
  case "python":
42735
- return import("./index-Dz2mzfvS.js").then((m2) => m2.python());
42778
+ return import("./index-DYATP6mi.js").then((m2) => m2.python());
42736
42779
  case "html":
42737
- return import("./index-C7lRWZi8.js").then((m2) => m2.html());
42780
+ return import("./index-B9n0dcMw.js").then((m2) => m2.html());
42738
42781
  case "css":
42739
- return import("./index-1OK7lyTa.js").then((m2) => m2.css());
42782
+ return import("./index-Bgh1V0xV.js").then((m2) => m2.css());
42740
42783
  case "scss":
42741
42784
  case "sass":
42742
- return import("./index-B72BPMJQ.js").then((m2) => m2.sass());
42785
+ return import("./index-CR4BnEcT.js").then((m2) => m2.sass());
42743
42786
  case "less":
42744
- return import("./index-rT9xGtRW.js").then((m2) => m2.less());
42787
+ return import("./index-CkCmjvnL.js").then((m2) => m2.less());
42745
42788
  case "json":
42746
42789
  case "jsonc":
42747
- return import("./index-CDG7KvBY.js").then((m2) => m2.json());
42790
+ return import("./index-CA1ILOaa.js").then((m2) => m2.json());
42748
42791
  case "markdown":
42749
42792
  case "mdx":
42750
- return import("./index-BLv-1MtR.js").then((m2) => m2.markdown());
42793
+ return import("./index-B-dHru1q.js").then((m2) => m2.markdown());
42751
42794
  case "xml":
42752
- return import("./index-DAq8fRkd.js").then((m2) => m2.xml());
42795
+ return import("./index-DM7tck_E.js").then((m2) => m2.xml());
42753
42796
  case "yaml":
42754
- return import("./index-pFRKwTv2.js").then((m2) => m2.yaml());
42797
+ return import("./index-DoPHl__N.js").then((m2) => m2.yaml());
42755
42798
  case "sql":
42756
- return import("./index-D2uLA4oe.js").then((m2) => m2.sql());
42799
+ return import("./index-JQz2Ac_X.js").then((m2) => m2.sql());
42757
42800
  case "rust":
42758
- return import("./index-CKPuU6Za.js").then((m2) => m2.rust());
42801
+ return import("./index-gZfWBVgm.js").then((m2) => m2.rust());
42759
42802
  case "go":
42760
- return import("./index-Tq3ajWxh.js").then((m2) => m2.go());
42803
+ return import("./index-DURk6tcR.js").then((m2) => m2.go());
42761
42804
  case "java":
42762
- return import("./index-U3tOcUUV.js").then((m2) => m2.java());
42805
+ return import("./index-CU2q4Svg.js").then((m2) => m2.java());
42763
42806
  case "kotlin":
42764
- return import("./index-U3tOcUUV.js").then((m2) => m2.java());
42807
+ return import("./index-CU2q4Svg.js").then((m2) => m2.java());
42765
42808
  case "c":
42766
42809
  case "cpp":
42767
- return import("./index-CWr-Kh5M.js").then((m2) => m2.cpp());
42810
+ return import("./index-DdEGElQC.js").then((m2) => m2.cpp());
42768
42811
  case "php":
42769
- return import("./index-14dCbIAi.js").then((m2) => m2.php());
42812
+ return import("./index-BVZPT41S.js").then((m2) => m2.php());
42770
42813
  // Legacy modes via StreamLanguage
42771
42814
  case "bash":
42772
42815
  case "fish":
@@ -43831,22 +43874,30 @@ function CommandPaletteDialog({ open: open2, onOpenChange, commands }) {
43831
43874
  },
43832
43875
  [onOpenChange]
43833
43876
  );
43834
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "overflow-hidden p-0 sm:max-w-[520px]", showCloseButton: false, children: [
43835
- /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { className: "sr-only", children: [
43836
- /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Command Palette" }),
43837
- /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Search for a command to run" })
43838
- ] }),
43839
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Command, { children: [
43840
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandInput, { placeholder: "Search commands..." }),
43841
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[360px]", children: [
43842
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandEmpty, { children: "No commands found." }),
43843
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: commands.map((cmd2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandItem, { value: cmd2.label, onSelect: () => handleSelect(cmd2), children: [
43844
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm", children: cmd2.label }),
43845
- cmd2.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(CommandShortcut, { children: formatShortcut(cmd2.shortcut) })
43846
- ] }, cmd2.id)) })
43847
- ] })
43848
- ] })
43849
- ] }) });
43877
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
43878
+ DialogContent,
43879
+ {
43880
+ variant: "command-palette",
43881
+ className: "overflow-hidden p-0 lg:max-w-[520px]",
43882
+ showCloseButton: false,
43883
+ children: [
43884
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { className: "sr-only", children: [
43885
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Command Palette" }),
43886
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Search for a command to run" })
43887
+ ] }),
43888
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Command, { children: [
43889
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandInput, { placeholder: "Search commands..." }),
43890
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[360px]", children: [
43891
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandEmpty, { children: "No commands found." }),
43892
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: commands.map((cmd2) => /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandItem, { value: cmd2.label, onSelect: () => handleSelect(cmd2), children: [
43893
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-sm", children: cmd2.label }),
43894
+ cmd2.shortcut && /* @__PURE__ */ jsxRuntimeExports.jsx(CommandShortcut, { children: formatShortcut(cmd2.shortcut) })
43895
+ ] }, cmd2.id)) })
43896
+ ] })
43897
+ ] })
43898
+ ]
43899
+ }
43900
+ ) });
43850
43901
  }
43851
43902
  function CommitDialog({
43852
43903
  open: open2,
@@ -52805,7 +52856,7 @@ function readStoredDiffMode(workspaceId) {
52805
52856
  if (v2 === "uncommitted" || v2 === "branch") return v2;
52806
52857
  } catch {
52807
52858
  }
52808
- return "branch";
52859
+ return "uncommitted";
52809
52860
  }
52810
52861
  function readStoredCompareBranch(workspaceId) {
52811
52862
  try {
@@ -52905,7 +52956,7 @@ function useProjectKindForWorkspace(workspaceId) {
52905
52956
  const map2 = useProjectKindMap();
52906
52957
  return map2.get(workspaceId);
52907
52958
  }
52908
- const DEFAULT_SEARCH_OPTIONS = {
52959
+ const DEFAULT_SEARCH_OPTIONS$1 = {
52909
52960
  caseSensitive: false,
52910
52961
  wholeWord: false,
52911
52962
  regex: false
@@ -52917,9 +52968,9 @@ function useSearch({
52917
52968
  }) {
52918
52969
  const [searchOpen, setSearchOpen] = reactExports.useState(false);
52919
52970
  const [searchQuery, setSearchQueryText] = reactExports.useState("");
52920
- const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS);
52971
+ const [searchOptions, setSearchOptions] = reactExports.useState(DEFAULT_SEARCH_OPTIONS$1);
52921
52972
  const searchQueryRef = reactExports.useRef("");
52922
- const searchOptionsRef = reactExports.useRef(DEFAULT_SEARCH_OPTIONS);
52973
+ const searchOptionsRef = reactExports.useRef(DEFAULT_SEARCH_OPTIONS$1);
52923
52974
  const [matchInfo, setMatchInfo] = reactExports.useState({
52924
52975
  total: 0,
52925
52976
  current: 0
@@ -56417,7 +56468,10 @@ const SearchBar = reactExports.forwardRef(function SearchBar2({
56417
56468
  return /* @__PURE__ */ jsxRuntimeExports.jsxs(
56418
56469
  "div",
56419
56470
  {
56420
- className: `flex shrink-0 items-center gap-1.5 border-b border-border bg-muted/30 px-3 py-1.5 ${className ?? ""}`,
56471
+ className: cn$2(
56472
+ "flex shrink-0 items-center gap-1.5 border-b border-border bg-muted/30 px-3 py-1.5",
56473
+ className
56474
+ ),
56421
56475
  children: [
56422
56476
  /* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "size-3.5 shrink-0 text-muted-foreground" }),
56423
56477
  /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -56497,6 +56551,17 @@ function storeViewMode(mode) {
56497
56551
  }
56498
56552
  }
56499
56553
  const UNCOMMITTED_VALUE = "__uncommitted__";
56554
+ const STAGING_BRANCH_PRIORITY = [
56555
+ "develop",
56556
+ "dev",
56557
+ "development",
56558
+ "stage",
56559
+ "staging",
56560
+ "integration",
56561
+ "release",
56562
+ "qa",
56563
+ "uat"
56564
+ ];
56500
56565
  const EXPAND_ALL_KEY = "band:diff-expand-all";
56501
56566
  const MAX_MOUNTED_EDITORS = 50;
56502
56567
  function getStoredExpandAll() {
@@ -57215,6 +57280,7 @@ function DiffView({
57215
57280
  const workspacePath = useWorkspacePath(workspaceId);
57216
57281
  const [summary, setSummary] = reactExports.useState(null);
57217
57282
  const summaryRef = reactExports.useRef(null);
57283
+ const lastHeadBranchRef = reactExports.useRef(null);
57218
57284
  const [error, setError] = reactExports.useState(null);
57219
57285
  const [loading, setLoading] = reactExports.useState(true);
57220
57286
  const fetchSummaryRef = reactExports.useRef(null);
@@ -57750,16 +57816,22 @@ function DiffView({
57750
57816
  }, [active]);
57751
57817
  const summaryCompareBranch = summary?.compareBranch ?? null;
57752
57818
  const defaultBranch = summary?.defaultBranch ?? availableDefaultBranch ?? null;
57753
- const branchOptions = availableBranches.length > 0 ? availableBranches : summaryCompareBranch ? [summaryCompareBranch] : [];
57819
+ const branchOptions = reactExports.useMemo(
57820
+ () => availableBranches.length > 0 ? availableBranches : summaryCompareBranch ? [summaryCompareBranch] : [],
57821
+ [availableBranches, summaryCompareBranch]
57822
+ );
57754
57823
  const targetBranch = compareBranch ?? branchOptions[0] ?? summaryCompareBranch;
57755
- const topSectionBranches = [];
57756
- if (targetBranch) {
57757
- topSectionBranches.push(targetBranch);
57758
- }
57759
- if (defaultBranch && defaultBranch !== targetBranch && branchOptions.includes(defaultBranch)) {
57760
- topSectionBranches.push(defaultBranch);
57761
- }
57762
- const otherBranches = branchOptions.filter((b2) => !topSectionBranches.includes(b2)).sort((a2, b2) => a2.localeCompare(b2));
57824
+ const { topSectionBranches, otherBranches } = reactExports.useMemo(() => {
57825
+ const stagingBranches = STAGING_BRANCH_PRIORITY.map(
57826
+ (name2) => branchOptions.find((b2) => b2.toLowerCase() === name2)
57827
+ ).filter((b2) => b2 != null);
57828
+ const topSection = [...stagingBranches];
57829
+ if (defaultBranch && branchOptions.includes(defaultBranch) && !topSection.includes(defaultBranch)) {
57830
+ topSection.push(defaultBranch);
57831
+ }
57832
+ const others = branchOptions.filter((b2) => !topSection.includes(b2)).sort((a2, b2) => a2.localeCompare(b2));
57833
+ return { topSectionBranches: topSection, otherBranches: others };
57834
+ }, [branchOptions, defaultBranch]);
57763
57835
  const diffSelectValue = diffMode === "uncommitted" ? UNCOMMITTED_VALUE : targetBranch ?? UNCOMMITTED_VALUE;
57764
57836
  const handleDiffSelectChange = (value) => {
57765
57837
  if (value === UNCOMMITTED_VALUE) {
@@ -57770,11 +57842,18 @@ function DiffView({
57770
57842
  }
57771
57843
  };
57772
57844
  const renderDiffSelect = () => /* @__PURE__ */ jsxRuntimeExports.jsxs(Select, { value: diffSelectValue, onValueChange: handleDiffSelectChange, children: [
57773
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectTrigger, { className: "h-6 w-auto max-w-[300px] gap-1 rounded-md border-0 bg-transparent px-1.5 text-xs font-medium text-foreground shadow-none hover:bg-accent [&>[data-slot=select-value]]:truncate [&>[data-slot=select-value]]:block", children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {}) }),
57845
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
57846
+ SelectTrigger,
57847
+ {
57848
+ "data-testid": "diff-view__target-select",
57849
+ className: "h-6 w-auto max-w-[300px] gap-1 rounded-md border-0 bg-transparent px-1.5 text-xs font-medium text-foreground shadow-none hover:bg-accent [&>[data-slot=select-value]]:truncate [&>[data-slot=select-value]]:block",
57850
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(SelectValue, {})
57851
+ }
57852
+ ),
57774
57853
  /* @__PURE__ */ jsxRuntimeExports.jsxs(SelectContent, { children: [
57854
+ /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: UNCOMMITTED_VALUE, "data-testid": "diff-view__target-option-uncommitted", children: "Uncommitted" }),
57775
57855
  topSectionBranches.map((branch) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: branch, children: branch }, branch)),
57776
- /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: UNCOMMITTED_VALUE, children: "Uncommitted" }),
57777
- otherBranches.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(SelectSeparator, {}),
57856
+ topSectionBranches.length > 0 && otherBranches.length > 0 && /* @__PURE__ */ jsxRuntimeExports.jsx(SelectSeparator, {}),
57778
57857
  otherBranches.map((branch) => /* @__PURE__ */ jsxRuntimeExports.jsx(SelectItem, { value: branch, children: branch }, branch))
57779
57858
  ] })
57780
57859
  ] });
@@ -57786,6 +57865,10 @@ function DiffView({
57786
57865
  );
57787
57866
  filenamesRef.current = filenames;
57788
57867
  const stats = hasChanges ? summary.stats : null;
57868
+ reactExports.useEffect(() => {
57869
+ if (summary?.headBranch) lastHeadBranchRef.current = summary.headBranch;
57870
+ }, [summary?.headBranch]);
57871
+ const headBranchLabel = summary?.headBranch ?? lastHeadBranchRef.current;
57789
57872
  reactExports.useEffect(() => {
57790
57873
  const container = scrollContainerRef.current;
57791
57874
  if (!container) return;
@@ -57943,9 +58026,9 @@ function DiffView({
57943
58026
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(PanelLeft, { className: "size-3.5" })
57944
58027
  }
57945
58028
  );
57946
- const renderBranchIndicator = (headBranchLabel) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
57947
- headBranchLabel && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1.5 @[32rem]/diff:flex", children: [
57948
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "font-medium text-foreground", children: headBranchLabel }),
58029
+ const renderBranchIndicator = (headBranchLabel2) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1.5 text-xs text-muted-foreground", children: [
58030
+ headBranchLabel2 && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "hidden items-center gap-1.5 @[32rem]/diff:flex", children: [
58031
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { "data-testid": "diff-view__head-branch", className: "font-medium text-foreground", children: headBranchLabel2 }),
57949
58032
  /* @__PURE__ */ jsxRuntimeExports.jsx(ArrowRight, { className: "size-3", "aria-hidden": true })
57950
58033
  ] }),
57951
58034
  renderDiffSelect()
@@ -58021,7 +58104,7 @@ function DiffView({
58021
58104
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex h-9 shrink-0 items-center justify-between gap-3 border-b border-border pl-2 pr-3", children: [
58022
58105
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 items-center gap-1.5", children: [
58023
58106
  renderSidebarToggle(),
58024
- renderBranchIndicator(summary?.headBranch)
58107
+ renderBranchIndicator(headBranchLabel)
58025
58108
  ] }),
58026
58109
  !hasChanges && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-1", children: [
58027
58110
  renderGitSyncButtons(),
@@ -59457,44 +59540,52 @@ function LanguagePickerDialog({
59457
59540
  },
59458
59541
  [onOpenChange, onSelect]
59459
59542
  );
59460
- return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogContent, { className: "overflow-hidden p-0 sm:max-w-[480px]", showCloseButton: false, children: [
59461
- /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { className: "sr-only", children: [
59462
- /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Select Language Mode" }),
59463
- /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Search for a language to syntax-highlight the file" })
59464
- ] }),
59465
- /* @__PURE__ */ jsxRuntimeExports.jsxs(Command, { children: [
59466
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandInput, { placeholder: "Select language mode…", autoFocus: true }),
59467
- /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[360px]", children: [
59468
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandEmpty, { children: "No languages found." }),
59469
- hasOverride && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
59470
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
59471
- CommandItem,
59472
- {
59473
- value: "Auto Detect",
59474
- onSelect: () => handleSelect(AUTO_DETECT_LANGUAGE_ID),
59475
- children: [
59476
- /* @__PURE__ */ jsxRuntimeExports.jsx(WandSparkles, { className: "size-3.5" }),
59477
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: "Auto Detect" })
59478
- ]
59479
- }
59480
- ) }),
59481
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandSeparator, {})
59543
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
59544
+ DialogContent,
59545
+ {
59546
+ variant: "command-palette",
59547
+ className: "overflow-hidden p-0 lg:max-w-[480px]",
59548
+ showCloseButton: false,
59549
+ children: [
59550
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DialogHeader, { className: "sr-only", children: [
59551
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogTitle, { children: "Select Language Mode" }),
59552
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DialogDescription, { children: "Search for a language to syntax-highlight the file" })
59482
59553
  ] }),
59483
- /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: SUPPORTED_LANGUAGES.map((lang) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
59484
- CommandItem,
59485
- {
59486
- value: `${lang.label} ${lang.id}`,
59487
- onSelect: () => handleSelect(lang.id),
59488
- children: [
59489
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: lang.label }),
59490
- lang.id === currentLanguage && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-muted-foreground" })
59491
- ]
59492
- },
59493
- lang.id
59494
- )) })
59495
- ] })
59496
- ] })
59497
- ] }) });
59554
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(Command, { children: [
59555
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandInput, { placeholder: "Select language mode…", autoFocus: true }),
59556
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[360px]", children: [
59557
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandEmpty, { children: "No languages found." }),
59558
+ hasOverride && /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
59559
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
59560
+ CommandItem,
59561
+ {
59562
+ value: "Auto Detect",
59563
+ onSelect: () => handleSelect(AUTO_DETECT_LANGUAGE_ID),
59564
+ children: [
59565
+ /* @__PURE__ */ jsxRuntimeExports.jsx(WandSparkles, { className: "size-3.5" }),
59566
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: "Auto Detect" })
59567
+ ]
59568
+ }
59569
+ ) }),
59570
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandSeparator, {})
59571
+ ] }),
59572
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CommandGroup, { children: SUPPORTED_LANGUAGES.map((lang) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
59573
+ CommandItem,
59574
+ {
59575
+ value: `${lang.label} ${lang.id}`,
59576
+ onSelect: () => handleSelect(lang.id),
59577
+ children: [
59578
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "flex-1 text-sm", children: lang.label }),
59579
+ lang.id === currentLanguage && /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { className: "size-3.5 text-muted-foreground" })
59580
+ ]
59581
+ },
59582
+ lang.id
59583
+ )) })
59584
+ ] })
59585
+ ] })
59586
+ ]
59587
+ }
59588
+ ) });
59498
59589
  }
59499
59590
  function PdfPreview({ src, filename }) {
59500
59591
  return /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex h-full flex-col", children: /* @__PURE__ */ jsxRuntimeExports.jsx("iframe", { src, title: filename, className: "h-full w-full border-0" }) });
@@ -60189,7 +60280,7 @@ function QuickOpenDialog({
60189
60280
  DialogContent,
60190
60281
  {
60191
60282
  "data-testid": "quick-open__root",
60192
- variant: "bottom-sheet",
60283
+ variant: "command-palette",
60193
60284
  className: "overflow-hidden p-0 lg:max-w-[520px]",
60194
60285
  showCloseButton: false,
60195
60286
  children: [
@@ -60341,7 +60432,7 @@ function SearchFilesDialog({
60341
60432
  DialogContent,
60342
60433
  {
60343
60434
  "data-testid": "search-files__root",
60344
- variant: "bottom-sheet",
60435
+ variant: "command-palette",
60345
60436
  className: "overflow-hidden p-0 lg:max-w-[640px]",
60346
60437
  showCloseButton: false,
60347
60438
  children: [
@@ -60358,7 +60449,8 @@ function SearchFilesDialog({
60358
60449
  onQueryChange: setQuery,
60359
60450
  options: searchOptions,
60360
60451
  onOptionsChange: setSearchOptions,
60361
- placeholder: "Search in files..."
60452
+ placeholder: "Search in files...",
60453
+ className: "max-lg:border-t max-lg:border-b-0"
60362
60454
  }
60363
60455
  ),
60364
60456
  /* @__PURE__ */ jsxRuntimeExports.jsxs(CommandList, { className: "max-h-[400px]", children: [
@@ -60489,9 +60581,8 @@ function WorkspacePickerDialog({ open: open2, onOpenChange }) {
60489
60581
  return /* @__PURE__ */ jsxRuntimeExports.jsx(Dialog, { open: open2, onOpenChange, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
60490
60582
  DialogContent,
60491
60583
  {
60492
- variant: "bottom-sheet",
60493
- className: "overflow-hidden border-0 bg-popover p-0 shadow-2xl lg:max-w-[520px] lg:border-0",
60494
- overlayClassName: "backdrop-blur-sm",
60584
+ variant: "command-palette",
60585
+ className: "overflow-hidden p-0 lg:max-w-[520px]",
60495
60586
  showCloseButton: false,
60496
60587
  "data-testid": "workspace-picker",
60497
60588
  onOpenAutoFocus: (e3) => {
@@ -68624,7 +68715,7 @@ function remove$1(array2, value) {
68624
68715
  }
68625
68716
  return false;
68626
68717
  }
68627
- const clamp = (value, min2, max2) => {
68718
+ const clamp$1 = (value, min2, max2) => {
68628
68719
  if (min2 > max2) {
68629
68720
  return min2;
68630
68721
  }
@@ -68705,7 +68796,7 @@ class ViewItem {
68705
68796
  return;
68706
68797
  }
68707
68798
  if (visible) {
68708
- 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);
68709
68800
  this._cachedVisibleSize = void 0;
68710
68801
  } else {
68711
68802
  this._cachedVisibleSize = typeof size2 === "number" ? size2 : this.size;
@@ -68887,12 +68978,12 @@ class Splitview {
68887
68978
  if (snapped) {
68888
68979
  return this.resize(index2, delta, sizes, lowPriorityIndexes, highPriorityIndexes, overloadMinDelta, overloadMaxDelta);
68889
68980
  }
68890
- const tentativeDelta = clamp(delta, minDelta, maxDelta);
68981
+ const tentativeDelta = clamp$1(delta, minDelta, maxDelta);
68891
68982
  let actualDelta = 0;
68892
68983
  let deltaUp = tentativeDelta;
68893
68984
  for (let i2 = 0; i2 < upItems.length; i2++) {
68894
68985
  const item = upItems[i2];
68895
- const size2 = clamp(upSizes[i2] + deltaUp, item.minimumSize, item.maximumSize);
68986
+ const size2 = clamp$1(upSizes[i2] + deltaUp, item.minimumSize, item.maximumSize);
68896
68987
  const viewDelta = size2 - upSizes[i2];
68897
68988
  actualDelta += viewDelta;
68898
68989
  deltaUp -= viewDelta;
@@ -68901,7 +68992,7 @@ class Splitview {
68901
68992
  let deltaDown = actualDelta;
68902
68993
  for (let i2 = 0; i2 < downItems.length; i2++) {
68903
68994
  const item = downItems[i2];
68904
- const size2 = clamp(downSizes[i2] - deltaDown, item.minimumSize, item.maximumSize);
68995
+ const size2 = clamp$1(downSizes[i2] - deltaDown, item.minimumSize, item.maximumSize);
68905
68996
  const viewDelta = size2 - downSizes[i2];
68906
68997
  deltaDown += viewDelta;
68907
68998
  item.size = size2;
@@ -68984,7 +69075,7 @@ class Splitview {
68984
69075
  const highPriorityIndexes = indexes.filter((i2) => this.viewItems[i2].priority === LayoutPriority.High);
68985
69076
  const item = this.viewItems[index2];
68986
69077
  size2 = Math.round(size2);
68987
- size2 = clamp(size2, item.minimumSize, Math.min(item.maximumSize, this._size));
69078
+ size2 = clamp$1(size2, item.minimumSize, Math.min(item.maximumSize, this._size));
68988
69079
  item.size = size2;
68989
69080
  this.relayout(lowPriorityIndexes, highPriorityIndexes);
68990
69081
  }
@@ -68997,7 +69088,7 @@ class Splitview {
68997
69088
  return;
68998
69089
  }
68999
69090
  size2 = typeof size2 === "number" ? size2 : item.size;
69000
- size2 = clamp(size2, item.minimumSize, item.maximumSize);
69091
+ size2 = clamp$1(size2, item.minimumSize, item.maximumSize);
69001
69092
  item.size = size2;
69002
69093
  const indexes = range$5(this.viewItems.length).filter((i2) => i2 !== index2);
69003
69094
  const lowPriorityIndexes = [
@@ -69129,7 +69220,7 @@ class Splitview {
69129
69220
  }
69130
69221
  const size2 = Math.floor(flexibleSize / flexibleViewItems.length);
69131
69222
  for (const item of flexibleViewItems) {
69132
- item.size = clamp(size2, item.minimumSize, item.maximumSize);
69223
+ item.size = clamp$1(size2, item.minimumSize, item.maximumSize);
69133
69224
  }
69134
69225
  const indexes = range$5(this.viewItems.length);
69135
69226
  const lowPriorityIndexes = indexes.filter((i2) => this.viewItems[i2].priority === LayoutPriority.Low);
@@ -69190,7 +69281,7 @@ class Splitview {
69190
69281
  const item = this.viewItems[i2];
69191
69282
  const proportion = this.proportions[i2];
69192
69283
  if (typeof proportion === "number" && total > 0) {
69193
- 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);
69194
69285
  }
69195
69286
  }
69196
69287
  }
@@ -69221,7 +69312,7 @@ class Splitview {
69221
69312
  }
69222
69313
  for (let i2 = 0; emptyDelta !== 0 && i2 < indexes.length; i2++) {
69223
69314
  const item = this.viewItems[indexes[i2]];
69224
- const size2 = clamp(item.size + emptyDelta, item.minimumSize, item.maximumSize);
69315
+ const size2 = clamp$1(item.size + emptyDelta, item.minimumSize, item.maximumSize);
69225
69316
  const viewDelta = size2 - item.size;
69226
69317
  emptyDelta -= viewDelta;
69227
69318
  item.size = size2;
@@ -71900,13 +71991,13 @@ class Droptarget extends CompositeDisposable {
71900
71991
  let size2 = 1;
71901
71992
  const sizeOptions = (_h2 = (_g2 = this.options.overlayModel) === null || _g2 === void 0 ? void 0 : _g2.size) !== null && _h2 !== void 0 ? _h2 : DEFAULT_SIZE$1;
71902
71993
  if (sizeOptions.type === "percentage") {
71903
- size2 = clamp(sizeOptions.value, 0, 100) / 100;
71994
+ size2 = clamp$1(sizeOptions.value, 0, 100) / 100;
71904
71995
  } else {
71905
71996
  if (rightClass || leftClass) {
71906
- size2 = clamp(0, sizeOptions.value, width) / width;
71997
+ size2 = clamp$1(0, sizeOptions.value, width) / width;
71907
71998
  }
71908
71999
  if (topClass || bottomClass) {
71909
- size2 = clamp(0, sizeOptions.value, height) / height;
72000
+ size2 = clamp$1(0, sizeOptions.value, height) / height;
71910
72001
  }
71911
72002
  }
71912
72003
  if (target) {
@@ -73072,7 +73163,7 @@ class Scrollbar extends CompositeDisposable {
73072
73163
  this._scrollbar.style.height = `${px}px`;
73073
73164
  this._scrollbar.style.width = "";
73074
73165
  }
73075
- this._scrollOffset = clamp(this._scrollOffset, 0, scrollSize - clientSize);
73166
+ this._scrollOffset = clamp$1(this._scrollOffset, 0, scrollSize - clientSize);
73076
73167
  if (this._orientation === "horizontal") {
73077
73168
  this.scrollableElement.scrollLeft = this._scrollOffset;
73078
73169
  } else {
@@ -77582,22 +77673,22 @@ class Overlay extends CompositeDisposable {
77582
77673
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
77583
77674
  const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
77584
77675
  if (this.verticalAlignment === "top") {
77585
- 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));
77586
77677
  this._element.style.top = `${top2}px`;
77587
77678
  this._element.style.bottom = "auto";
77588
77679
  }
77589
77680
  if (this.verticalAlignment === "bottom") {
77590
- 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));
77591
77682
  this._element.style.bottom = `${bottom}px`;
77592
77683
  this._element.style.top = "auto";
77593
77684
  }
77594
77685
  if (this.horiziontalAlignment === "left") {
77595
- 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));
77596
77687
  this._element.style.left = `${left}px`;
77597
77688
  this._element.style.right = "auto";
77598
77689
  }
77599
77690
  if (this.horiziontalAlignment === "right") {
77600
- 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));
77601
77692
  this._element.style.right = `${right}px`;
77602
77693
  this._element.style.left = "auto";
77603
77694
  }
@@ -77648,10 +77739,10 @@ class Overlay extends CompositeDisposable {
77648
77739
  }
77649
77740
  const xOffset = Math.max(0, this.getMinimumWidth(overlayRect.width));
77650
77741
  const yOffset = Math.max(0, this.getMinimumHeight(overlayRect.height));
77651
- const top2 = clamp(y4 - offset2.y, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77652
- const bottom = clamp(offset2.y - y4 + containerRect.height - overlayRect.height, -yOffset, Math.max(0, containerRect.height - overlayRect.height + yOffset));
77653
- const left = clamp(x2 - offset2.x, -xOffset, Math.max(0, containerRect.width - overlayRect.width + xOffset));
77654
- 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));
77655
77746
  const bounds = {};
77656
77747
  if (top2 <= bottom) {
77657
77748
  bounds.top = top2;
@@ -77726,7 +77817,7 @@ class Overlay extends CompositeDisposable {
77726
77817
  let width = void 0;
77727
77818
  const moveTop = () => {
77728
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);
77729
- top2 = clamp(y4, 0, maxTop);
77820
+ top2 = clamp$1(y4, 0, maxTop);
77730
77821
  height = startPosition.originalY + startPosition.originalHeight - top2;
77731
77822
  bottom = containerRect.height - top2 - height;
77732
77823
  };
@@ -77734,12 +77825,12 @@ class Overlay extends CompositeDisposable {
77734
77825
  top2 = startPosition.originalY - startPosition.originalHeight;
77735
77826
  const minHeight = top2 < 0 && typeof this.options.minimumInViewportHeight === "number" ? -top2 + this.options.minimumInViewportHeight : Overlay.MINIMUM_HEIGHT;
77736
77827
  const maxHeight = containerRect.height - Math.max(0, top2);
77737
- height = clamp(y4 - top2, minHeight, maxHeight);
77828
+ height = clamp$1(y4 - top2, minHeight, maxHeight);
77738
77829
  bottom = containerRect.height - top2 - height;
77739
77830
  };
77740
77831
  const moveLeft = () => {
77741
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);
77742
- left = clamp(x2, 0, maxLeft);
77833
+ left = clamp$1(x2, 0, maxLeft);
77743
77834
  width = startPosition.originalX + startPosition.originalWidth - left;
77744
77835
  right = containerRect.width - left - width;
77745
77836
  };
@@ -77747,7 +77838,7 @@ class Overlay extends CompositeDisposable {
77747
77838
  left = startPosition.originalX - startPosition.originalWidth;
77748
77839
  const minWidth = left < 0 && typeof this.options.minimumInViewportWidth === "number" ? -left + this.options.minimumInViewportWidth : Overlay.MINIMUM_WIDTH;
77749
77840
  const maxWidth = containerRect.width - Math.max(0, left);
77750
- width = clamp(x2 - left, minWidth, maxWidth);
77841
+ width = clamp$1(x2 - left, minWidth, maxWidth);
77751
77842
  right = containerRect.width - left - width;
77752
77843
  };
77753
77844
  switch (direction) {
@@ -109288,7 +109379,7 @@ var tn = f$5("block", "before:content-[counter(line)]", "before:inline-block", "
109288
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 });
109289
109380
  var Se$1 = reactExports.createContext({ code: "" }), de$2 = () => reactExports.useContext(Se$1);
109290
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 }) });
109291
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DSf8s2aV.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 }) => {
109292
109383
  let i2 = reactExports.useMemo(() => e3.replace(cn, ""), [e3]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
109293
109384
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
109294
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 }) })] }) });
@@ -109610,7 +109701,7 @@ var Dt = ({ children: e3, className: t2, onDownload: o3, onError: n2 }) => {
109610
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] });
109611
109702
  };
109612
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 }) })] });
109613
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-DGEHf_at.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]+)/;
109614
109705
  function ke$1(e3, t2) {
109615
109706
  if (!(e3 != null && e3.position || t2 != null && t2.position)) return true;
109616
109707
  if (!(e3 != null && e3.position && (t2 != null && t2.position))) return false;
@@ -161781,12 +161872,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
161781
161872
  registerLayoutLoaders([
161782
161873
  {
161783
161874
  name: "dagre",
161784
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-CCIdAwdB.js"), "loader")
161875
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-CJdhKZlX.js"), "loader")
161785
161876
  },
161786
161877
  ...[
161787
161878
  {
161788
161879
  name: "cose-bilkent",
161789
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-D5-w_t4l.js"), "loader")
161880
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-B-Bym2R2.js"), "loader")
161790
161881
  }
161791
161882
  ]
161792
161883
  ]);
@@ -162225,7 +162316,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
162225
162316
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
162226
162317
  }, "detector");
162227
162318
  var loader = /* @__PURE__ */ __name(async () => {
162228
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-CBv74bWb.js");
162319
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-B3FexEXR.js");
162229
162320
  return { id, diagram: diagram2 };
162230
162321
  }, "loader");
162231
162322
  var plugin = {
@@ -162242,7 +162333,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
162242
162333
  return /^\s*graph/.test(txt);
162243
162334
  }, "detector");
162244
162335
  var loader2 = /* @__PURE__ */ __name(async () => {
162245
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Cs7hS9X4.js");
162336
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162246
162337
  return { id: id2, diagram: diagram2 };
162247
162338
  }, "loader");
162248
162339
  var plugin2 = {
@@ -162265,7 +162356,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
162265
162356
  return /^\s*flowchart/.test(txt);
162266
162357
  }, "detector");
162267
162358
  var loader3 = /* @__PURE__ */ __name(async () => {
162268
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Cs7hS9X4.js");
162359
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162269
162360
  return { id: id3, diagram: diagram2 };
162270
162361
  }, "loader");
162271
162362
  var plugin3 = {
@@ -162279,7 +162370,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
162279
162370
  return /^\s*erDiagram/.test(txt);
162280
162371
  }, "detector");
162281
162372
  var loader4 = /* @__PURE__ */ __name(async () => {
162282
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DYHtO3j9.js");
162373
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-DgXGwPJi.js");
162283
162374
  return { id: id4, diagram: diagram2 };
162284
162375
  }, "loader");
162285
162376
  var plugin4 = {
@@ -162293,7 +162384,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
162293
162384
  return /^\s*gitGraph/.test(txt);
162294
162385
  }, "detector");
162295
162386
  var loader5 = /* @__PURE__ */ __name(async () => {
162296
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CZHNGOm0.js");
162387
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-BoLIFjNj.js");
162297
162388
  return { id: id5, diagram: diagram2 };
162298
162389
  }, "loader");
162299
162390
  var plugin5 = {
@@ -162307,7 +162398,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
162307
162398
  return /^\s*gantt/.test(txt);
162308
162399
  }, "detector");
162309
162400
  var loader6 = /* @__PURE__ */ __name(async () => {
162310
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-BhLp8xvm.js");
162401
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-Df1I84HD.js");
162311
162402
  return { id: id6, diagram: diagram2 };
162312
162403
  }, "loader");
162313
162404
  var plugin6 = {
@@ -162321,7 +162412,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
162321
162412
  return /^\s*info/.test(txt);
162322
162413
  }, "detector");
162323
162414
  var loader7 = /* @__PURE__ */ __name(async () => {
162324
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-D40Crb-p.js");
162415
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-m71IJidm.js");
162325
162416
  return { id: id7, diagram: diagram2 };
162326
162417
  }, "loader");
162327
162418
  var info = {
@@ -162334,7 +162425,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
162334
162425
  return /^\s*pie/.test(txt);
162335
162426
  }, "detector");
162336
162427
  var loader8 = /* @__PURE__ */ __name(async () => {
162337
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-EgffZsud.js");
162428
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-C895xIIt.js");
162338
162429
  return { id: id8, diagram: diagram2 };
162339
162430
  }, "loader");
162340
162431
  var pie = {
@@ -162347,7 +162438,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
162347
162438
  return /^\s*quadrantChart/.test(txt);
162348
162439
  }, "detector");
162349
162440
  var loader9 = /* @__PURE__ */ __name(async () => {
162350
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-n2oJWllV.js");
162441
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-6UAdibo5.js");
162351
162442
  return { id: id9, diagram: diagram2 };
162352
162443
  }, "loader");
162353
162444
  var plugin7 = {
@@ -162361,7 +162452,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
162361
162452
  return /^\s*xychart(-beta)?/.test(txt);
162362
162453
  }, "detector");
162363
162454
  var loader10 = /* @__PURE__ */ __name(async () => {
162364
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-aNxYxejD.js");
162455
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-CfUYiueD.js");
162365
162456
  return { id: id10, diagram: diagram2 };
162366
162457
  }, "loader");
162367
162458
  var plugin8 = {
@@ -162375,7 +162466,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
162375
162466
  return /^\s*requirement(Diagram)?/.test(txt);
162376
162467
  }, "detector");
162377
162468
  var loader11 = /* @__PURE__ */ __name(async () => {
162378
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-CzCXruFj.js");
162469
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-C9qwWXGY.js");
162379
162470
  return { id: id11, diagram: diagram2 };
162380
162471
  }, "loader");
162381
162472
  var plugin9 = {
@@ -162389,7 +162480,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
162389
162480
  return /^\s*sequenceDiagram/.test(txt);
162390
162481
  }, "detector");
162391
162482
  var loader12 = /* @__PURE__ */ __name(async () => {
162392
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-BfX0R0LP.js");
162483
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-CaRznm1o.js");
162393
162484
  return { id: id12, diagram: diagram2 };
162394
162485
  }, "loader");
162395
162486
  var plugin10 = {
@@ -162406,7 +162497,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
162406
162497
  return /^\s*classDiagram/.test(txt);
162407
162498
  }, "detector");
162408
162499
  var loader13 = /* @__PURE__ */ __name(async () => {
162409
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-qbF8ds74.js");
162500
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-Dr94MNeD.js");
162410
162501
  return { id: id13, diagram: diagram2 };
162411
162502
  }, "loader");
162412
162503
  var plugin11 = {
@@ -162423,7 +162514,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
162423
162514
  return /^\s*classDiagram-v2/.test(txt);
162424
162515
  }, "detector");
162425
162516
  var loader14 = /* @__PURE__ */ __name(async () => {
162426
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-qbF8ds74.js");
162517
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-Dr94MNeD.js");
162427
162518
  return { id: id14, diagram: diagram2 };
162428
162519
  }, "loader");
162429
162520
  var plugin12 = {
@@ -162440,7 +162531,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
162440
162531
  return /^\s*stateDiagram/.test(txt);
162441
162532
  }, "detector");
162442
162533
  var loader15 = /* @__PURE__ */ __name(async () => {
162443
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-QowlLVwh.js");
162534
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-C7925k-i.js");
162444
162535
  return { id: id15, diagram: diagram2 };
162445
162536
  }, "loader");
162446
162537
  var plugin13 = {
@@ -162460,7 +162551,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
162460
162551
  return false;
162461
162552
  }, "detector");
162462
162553
  var loader16 = /* @__PURE__ */ __name(async () => {
162463
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-DVHzQlOF.js");
162554
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-C0yapgJL.js");
162464
162555
  return { id: id16, diagram: diagram2 };
162465
162556
  }, "loader");
162466
162557
  var plugin14 = {
@@ -162474,7 +162565,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
162474
162565
  return /^\s*journey/.test(txt);
162475
162566
  }, "detector");
162476
162567
  var loader17 = /* @__PURE__ */ __name(async () => {
162477
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-dtlVBwV2.js");
162568
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-Z2B632R6.js");
162478
162569
  return { id: id17, diagram: diagram2 };
162479
162570
  }, "loader");
162480
162571
  var plugin15 = {
@@ -162541,7 +162632,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
162541
162632
  return false;
162542
162633
  }, "detector");
162543
162634
  var loader18 = /* @__PURE__ */ __name(async () => {
162544
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-Cs7hS9X4.js");
162635
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CCKE-dcR.js");
162545
162636
  return { id: id18, diagram: diagram2 };
162546
162637
  }, "loader");
162547
162638
  var plugin16 = {
@@ -162555,7 +162646,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
162555
162646
  return /^\s*timeline/.test(txt);
162556
162647
  }, "detector");
162557
162648
  var loader19 = /* @__PURE__ */ __name(async () => {
162558
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DUoaC7rz.js");
162649
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-DfwL9TFo.js");
162559
162650
  return { id: id19, diagram: diagram2 };
162560
162651
  }, "loader");
162561
162652
  var plugin17 = {
@@ -162569,7 +162660,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
162569
162660
  return /^\s*mindmap/.test(txt);
162570
162661
  }, "detector");
162571
162662
  var loader20 = /* @__PURE__ */ __name(async () => {
162572
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-DYfEp2uH.js");
162663
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-B9LDAkQV.js");
162573
162664
  return { id: id20, diagram: diagram2 };
162574
162665
  }, "loader");
162575
162666
  var plugin18 = {
@@ -162583,7 +162674,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
162583
162674
  return /^\s*kanban/.test(txt);
162584
162675
  }, "detector");
162585
162676
  var loader21 = /* @__PURE__ */ __name(async () => {
162586
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-72vgA7Jl.js");
162677
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-B2vyxAFc.js");
162587
162678
  return { id: id21, diagram: diagram2 };
162588
162679
  }, "loader");
162589
162680
  var plugin19 = {
@@ -162597,7 +162688,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
162597
162688
  return /^\s*sankey(-beta)?/.test(txt);
162598
162689
  }, "detector");
162599
162690
  var loader22 = /* @__PURE__ */ __name(async () => {
162600
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-C0GqwqSS.js");
162691
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-BD3BjmcP.js");
162601
162692
  return { id: id22, diagram: diagram2 };
162602
162693
  }, "loader");
162603
162694
  var plugin20 = {
@@ -162611,7 +162702,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
162611
162702
  return /^\s*packet(-beta)?/.test(txt);
162612
162703
  }, "detector");
162613
162704
  var loader23 = /* @__PURE__ */ __name(async () => {
162614
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-XGIpbjo1.js");
162705
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-DfZmENnB.js");
162615
162706
  return { id: id23, diagram: diagram2 };
162616
162707
  }, "loader");
162617
162708
  var packet = {
@@ -162624,7 +162715,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
162624
162715
  return /^\s*radar-beta/.test(txt);
162625
162716
  }, "detector");
162626
162717
  var loader24 = /* @__PURE__ */ __name(async () => {
162627
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-B07zrGgY.js");
162718
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-CUdsg8PG.js");
162628
162719
  return { id: id24, diagram: diagram2 };
162629
162720
  }, "loader");
162630
162721
  var radar = {
@@ -162637,7 +162728,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
162637
162728
  return /^\s*block(-beta)?/.test(txt);
162638
162729
  }, "detector");
162639
162730
  var loader25 = /* @__PURE__ */ __name(async () => {
162640
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-CRv2pc0L.js");
162731
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-WUFdSkGk.js");
162641
162732
  return { id: id25, diagram: diagram2 };
162642
162733
  }, "loader");
162643
162734
  var plugin21 = {
@@ -162651,7 +162742,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
162651
162742
  return /^\s*architecture/.test(txt);
162652
162743
  }, "detector");
162653
162744
  var loader26 = /* @__PURE__ */ __name(async () => {
162654
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DVUpIskI.js");
162745
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-DrNJMIEJ.js");
162655
162746
  return { id: id26, diagram: diagram2 };
162656
162747
  }, "loader");
162657
162748
  var architecture = {
@@ -162665,7 +162756,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
162665
162756
  return /^\s*treemap/.test(txt);
162666
162757
  }, "detector");
162667
162758
  var loader27 = /* @__PURE__ */ __name(async () => {
162668
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-CWGITxy9.js");
162759
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-Bku5j6_i.js");
162669
162760
  return { id: id27, diagram: diagram2 };
162670
162761
  }, "loader");
162671
162762
  var treemap = {
@@ -173823,7 +173914,7 @@ const CHAT_EVENT_TYPES = [
173823
173914
  "subscription-opened",
173824
173915
  "history-meta"
173825
173916
  ];
173826
- const INITIAL_STATE = {
173917
+ const INITIAL_STATE$1 = {
173827
173918
  messages: [],
173828
173919
  status: "idle",
173829
173920
  sessionId: void 0,
@@ -174266,7 +174357,7 @@ async function fileToWirePart(file2) {
174266
174357
  }
174267
174358
  function useChatSubscription(opts) {
174268
174359
  const { workspaceId, chatId, mode, model, codingAgentId, enabled = true } = opts;
174269
- const [state2, dispatch2] = reactExports.useReducer(chatEventReducer, INITIAL_STATE);
174360
+ const [state2, dispatch2] = reactExports.useReducer(chatEventReducer, INITIAL_STATE$1);
174270
174361
  const [isConnected, setIsConnected] = reactExports.useState(false);
174271
174362
  const [docVisible, setDocVisible] = reactExports.useState(
174272
174363
  () => typeof document === "undefined" ? true : document.visibilityState !== "hidden"
@@ -174460,7 +174551,7 @@ function useChatSubscription(opts) {
174460
174551
  );
174461
174552
  if (!res.ok) throw new Error(`history fetch failed: HTTP ${res.status}`);
174462
174553
  const data = await res.json();
174463
- const folded = applyEvents(INITIAL_STATE, data.events);
174554
+ const folded = applyEvents(INITIAL_STATE$1, data.events);
174464
174555
  const namespaced = folded.messages.map((m2) => ({ ...m2, id: `o${before}-${m2.id}` }));
174465
174556
  dispatch2({
174466
174557
  type: "prepend-messages",
@@ -177980,6 +178071,1042 @@ function createDefaultPanel(api, workspaceId) {
177980
178071
  position: centralPanelPosition(api)
177981
178072
  });
177982
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
+ }
177983
179110
  const states = /* @__PURE__ */ new Map();
177984
179111
  const listeners = /* @__PURE__ */ new Map();
177985
179112
  const EMPTY_STATE = Object.freeze({ openFilePath: null });
@@ -178076,6 +179203,7 @@ function MultiWorkspacePanelHost({ emptyState, children: children2 }) {
178076
179203
  validIds.add(toWorkspaceId(project.name, worktree.name));
178077
179204
  }
178078
179205
  }
179206
+ reconcileTerminalWorkspaces(validIds, activeWorkspaceId);
178079
179207
  setCache((prev2) => {
178080
179208
  let hasStale = false;
178081
179209
  for (const id28 of prev2.keys()) {
@@ -201718,12 +202846,12 @@ const PANEL_SHORTCUTS = {
201718
202846
  browser: "⇧⌘B"
201719
202847
  };
201720
202848
  const DockviewTerminalContainer = reactExports.lazy(
201721
- () => import("./DockviewTerminalContainer-OevWE65L.js").then((m2) => ({
202849
+ () => import("./DockviewTerminalContainer-CTJJUByH.js").then((m2) => ({
201722
202850
  default: m2.DockviewTerminalContainer
201723
202851
  }))
201724
202852
  );
201725
202853
  const DockviewBrowserContainer = reactExports.lazy(
201726
- () => import("./DockviewBrowserContainer-C6QVux14.js").then((m2) => ({
202854
+ () => import("./DockviewBrowserContainer-NHSxR-nz.js").then((m2) => ({
201727
202855
  default: m2.DockviewBrowserContainer
201728
202856
  }))
201729
202857
  );
@@ -202936,80 +204064,6 @@ function useNavigationHistory(routerNavigate, capabilities2) {
202936
204064
  canGoForward: history2.cursor >= 0 && history2.cursor < history2.stack.length - 1
202937
204065
  };
202938
204066
  }
202939
- const ZOOM_LEVEL_KEY = "band:zoom-level";
202940
- const DEFAULT_ZOOM = 1;
202941
- const MIN_ZOOM = 0.5;
202942
- const MAX_ZOOM = 2;
202943
- const ZOOM_STEP = 0.1;
202944
- const ZOOM_CSS_VAR = "--app-zoom";
202945
- const ZOOM_CHANGE_EVENT = "band:zoom-changed";
202946
- function loadZoomLevel() {
202947
- try {
202948
- const stored = localStorage.getItem(ZOOM_LEVEL_KEY);
202949
- if (stored) {
202950
- const parsed = Number.parseFloat(stored);
202951
- if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
202952
- return parsed;
202953
- }
202954
- }
202955
- } catch {
202956
- }
202957
- return DEFAULT_ZOOM;
202958
- }
202959
- function saveZoomLevel(level) {
202960
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
202961
- const rounded = Math.round(clamped * 100) / 100;
202962
- try {
202963
- localStorage.setItem(ZOOM_LEVEL_KEY, String(rounded));
202964
- } catch {
202965
- }
202966
- }
202967
- function applyZoomLevelToDom(level) {
202968
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
202969
- const rounded = Math.round(clamped * 100) / 100;
202970
- const root2 = document.documentElement;
202971
- root2.style.zoom = String(rounded);
202972
- root2.style.setProperty(ZOOM_CSS_VAR, String(rounded));
202973
- window.dispatchEvent(new CustomEvent(ZOOM_CHANGE_EVENT, { detail: rounded }));
202974
- return rounded;
202975
- }
202976
- function applyZoomLevel(level) {
202977
- const clamped = Math.min(MAX_ZOOM, Math.max(MIN_ZOOM, level));
202978
- const rounded = Math.round(clamped * 100) / 100;
202979
- saveZoomLevel(rounded);
202980
- applyZoomLevelToDom(rounded);
202981
- }
202982
- function getCurrentZoomLevel() {
202983
- if (typeof document !== "undefined") {
202984
- const css = document.documentElement.style.getPropertyValue(ZOOM_CSS_VAR);
202985
- if (css) {
202986
- const parsed = Number.parseFloat(css);
202987
- if (!Number.isNaN(parsed) && parsed >= MIN_ZOOM && parsed <= MAX_ZOOM) {
202988
- return parsed;
202989
- }
202990
- }
202991
- }
202992
- return loadZoomLevel();
202993
- }
202994
- function subscribeToZoomChanges(handler) {
202995
- if (typeof window === "undefined") return () => {
202996
- };
202997
- const listener2 = (e3) => {
202998
- const detail = e3.detail;
202999
- if (typeof detail === "number") handler(detail);
203000
- };
203001
- window.addEventListener(ZOOM_CHANGE_EVENT, listener2);
203002
- return () => window.removeEventListener(ZOOM_CHANGE_EVENT, listener2);
203003
- }
203004
- function zoomIn() {
203005
- applyZoomLevel(loadZoomLevel() + ZOOM_STEP);
203006
- }
203007
- function zoomOut() {
203008
- applyZoomLevel(loadZoomLevel() - ZOOM_STEP);
203009
- }
203010
- function zoomReset() {
203011
- applyZoomLevel(DEFAULT_ZOOM);
203012
- }
203013
204067
  function useZoom() {
203014
204068
  reactExports.useEffect(() => {
203015
204069
  if (isDesktop) return;
@@ -203480,12 +204534,12 @@ function RootLayout() {
203480
204534
  ] })
203481
204535
  ] });
203482
204536
  }
203483
- const $$splitComponentImporter$1 = () => import("./index-CHvqm6Lz.js");
204537
+ const $$splitComponentImporter$1 = () => import("./index-C6mmT4Bf.js");
203484
204538
  const Route$1 = createFileRoute("/")({
203485
204539
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
203486
204540
  });
203487
- const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-hnIpuUNX.js");
203488
- const $$splitComponentImporter = () => import("./workspace._workspaceId-DRK2dblR.js");
204541
+ const $$splitNotFoundComponentImporter = () => import("./workspace._workspaceId-BK83HsBK.js");
204542
+ const $$splitComponentImporter = () => import("./workspace._workspaceId-DEWHh9LI.js");
203489
204543
  const Route2 = createFileRoute("/workspace/$workspaceId")({
203490
204544
  component: lazyRouteComponent($$splitComponentImporter, "component"),
203491
204545
  // Bookmarks / shared links from before route unification (`/workspace/$id/changes`,
@@ -203527,288 +204581,285 @@ const router = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProper
203527
204581
  getRouter
203528
204582
  }, Symbol.toStringTag, { value: "Module" }));
203529
204583
  export {
203530
- calculateTextWidth as $,
203531
- Rows2 as A,
203532
- Plus as B,
204584
+ assignWithDepth_default as $,
204585
+ DockviewReact as A,
204586
+ Rows2 as B,
203533
204587
  Columns2 as C,
203534
204588
  DefaultBufferLength as D,
203535
- usePanelVisibility as E,
203536
- cycleTabsInActiveGroup as F,
203537
- cycleGridGroups as G,
203538
- R$4 as H,
204589
+ Plus as E,
204590
+ usePanelVisibility as F,
204591
+ cycleTabsInActiveGroup as G,
204592
+ cycleGridGroups as H,
203539
204593
  IterMode as I,
203540
- setAccDescription as J,
204594
+ R$4 as J,
203541
204595
  Ks as K,
203542
204596
  LanguageSupport as L,
203543
- getAccDescription as M,
204597
+ setAccDescription as M,
203544
204598
  Nt as N,
203545
- getAccTitle as O,
204599
+ getAccDescription as O,
203546
204600
  Parser$2 as P,
203547
204601
  Qe$1 as Q,
203548
204602
  Route2 as R,
203549
- setAccTitle as S,
204603
+ getAccTitle as S,
203550
204604
  Tree as T,
203551
- getConfig2 as U,
203552
- select as V,
203553
- log$1 as W,
204605
+ setAccTitle as U,
204606
+ getConfig2 as V,
204607
+ select as W,
203554
204608
  X$7 as X,
203555
- configureSvgSize as Y,
203556
- assignWithDepth_default as Z,
204609
+ log$1 as Y,
204610
+ configureSvgSize as Z,
203557
204611
  __name as _,
203558
204612
  Navigate as a,
203559
- insertCluster as a$,
203560
- sanitizeText as a0,
203561
- distExports as a1,
203562
- wrapLabel as a2,
203563
- common_default as a3,
203564
- calculateTextHeight as a4,
203565
- lineBreakRegex as a5,
203566
- setConfig2 as a6,
203567
- getRegisteredLayoutAlgorithm as a7,
203568
- render$1 as a8,
203569
- utils_default as a9,
203570
- abs$1 as aA,
203571
- pi as aB,
203572
- sqrt as aC,
203573
- atan2 as aD,
203574
- constant$1 as aE,
203575
- asin as aF,
203576
- acos as aG,
203577
- max as aH,
203578
- linear as aI,
203579
- getThemeVariables3 as aJ,
203580
- band as aK,
203581
- computeDimensionOfText as aL,
203582
- line$1 as aM,
203583
- hasKatex as aN,
203584
- calculateMathMLDimensions as aO,
203585
- parseFontSize as aP,
203586
- ZERO_WIDTH_SPACE as aQ,
203587
- getUrl as aR,
203588
- renderKatexSanitized as aS,
203589
- parseGenericTypes as aT,
203590
- curveBasis as aU,
203591
- generateId as aV,
203592
- setupGraphViewbox as aW,
203593
- isDark as aX,
203594
- lighten as aY,
203595
- darken as aZ,
203596
- commonDb_exports as a_,
203597
- setDiagramTitle as aa,
203598
- getDiagramTitle as ab,
203599
- load as ac,
203600
- JSON_SCHEMA as ad,
203601
- isValidShape as ae,
203602
- getEdgeId as af,
203603
- clear$2 as ag,
203604
- defaultConfig2 as ah,
203605
- rgba$1 as ai,
203606
- Utils as aj,
203607
- Color$1 as ak,
203608
- __export$1 as al,
203609
- setupGraphViewbox2 as am,
203610
- cleanAndMerge as an,
203611
- defaultConfig_default as ao,
203612
- getConfig as ap,
203613
- random as aq,
203614
- selectSvgElement as ar,
203615
- package_default as as,
203616
- withPath as at,
203617
- halfPi as au,
203618
- epsilon as av,
203619
- tau as aw,
203620
- cos as ax,
203621
- sin as ay,
203622
- 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,
203623
204677
  LRLanguage as b,
203624
- cn$2 as b$,
203625
- insertNode as b0,
203626
- positionNode as b1,
203627
- getLineFunctionsWithOffset as b2,
203628
- evaluate as b3,
203629
- createText as b4,
203630
- getSubGraphTitleMargins as b5,
203631
- replaceIconSubstring as b6,
203632
- decodeEntities as b7,
203633
- getStylesFromArray as b8,
203634
- delimitedIndent as b9,
203635
- markers_default as bA,
203636
- clear2 as bB,
203637
- clear as bC,
203638
- clear$1 as bD,
203639
- updateNodeBounds as bE,
203640
- setNodeElem as bF,
203641
- insertEdge as bG,
203642
- positionEdgeLabel as bH,
203643
- insertEdgeLabel as bI,
203644
- loadSidebarWidth as bJ,
203645
- saveSidebarWidth as bK,
203646
- Ut$1 as bL,
203647
- Yt$1 as bM,
203648
- SIDEBAR_MAX_SIZE as bN,
203649
- SIDEBAR_MIN_SIZE as bO,
203650
- DashboardShell as bP,
203651
- Qt$1 as bQ,
203652
- MessageSquare as bR,
203653
- useIsDesktop as bS,
203654
- ToolbarOverflowProvider as bT,
203655
- ToolbarActionBar as bU,
203656
- isDesktop as bV,
203657
- array$2 as bW,
203658
- ordinal as bX,
203659
- Root$5 as bY,
203660
- Content$1 as bZ,
203661
- Close as b_,
203662
- NodeWeakMap as ba,
203663
- snippetCompletion as bb,
203664
- Tag as bc,
203665
- parseMixed as bd,
203666
- EditorSelection as be,
203667
- countColumn as bf,
203668
- Prec as bg,
203669
- keymap as bh,
203670
- EditorView as bi,
203671
- Language as bj,
203672
- indentUnit as bk,
203673
- foldService as bl,
203674
- defineLanguageFacet as bm,
203675
- CompletionContext as bn,
203676
- EditorState as bo,
203677
- languageDataProp as bp,
203678
- LanguageDescription as bq,
203679
- ParseContext as br,
203680
- bracketMatchingHandle as bs,
203681
- flatIndent as bt,
203682
- sublanguageProp as bu,
203683
- baseRest as bv,
203684
- isArrayLikeObject$1 as bw,
203685
- constant as bx,
203686
- isFunction$1 as by,
203687
- 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,
203688
204742
  continuedIndent as c,
203689
- dayjs2 as c$,
203690
- Title as c0,
203691
- Description as c1,
203692
- Portal$4 as c2,
203693
- Overlay$1 as c3,
203694
- GitCompare as c4,
203695
- FolderOpen as c5,
203696
- useDashboardStore as c6,
203697
- DesktopDragRegion as c7,
203698
- Menu$1 as c8,
203699
- ChevronsUpDown as c9,
203700
- ZOOM_CSS_VAR as cA,
203701
- invoke as cB,
203702
- listen as cC,
203703
- reactDomExports as cD,
203704
- Globe as cE,
203705
- Popover as cF,
203706
- PopoverTrigger as cG,
203707
- PopoverContent as cH,
203708
- Search as cI,
203709
- Trash2 as cJ,
203710
- DropdownMenu as cK,
203711
- DropdownMenuTrigger as cL,
203712
- ChevronDown as cM,
203713
- DropdownMenuContent as cN,
203714
- DropdownMenuItem as cO,
203715
- TriangleAlert as cP,
203716
- RotateCw as cQ,
203717
- Rgb as cR,
203718
- rgbConvert as cS,
203719
- define as cT,
203720
- extend$2 as cU,
203721
- Color as cV,
203722
- nogamma as cW,
203723
- hue as cX,
203724
- time$2 as cY,
203725
- min$1 as cZ,
203726
- max$1 as c_,
203727
- DiffView as ca,
203728
- CodeBrowserView as cb,
203729
- QuickOpenDialog as cc,
203730
- SearchFilesDialog as cd,
203731
- WorkspacePickerDialog as ce,
203732
- useDiffTarget as cf,
203733
- useSettingsQuery as cg,
203734
- agentTypeSupportsSessionListing as ch,
203735
- ChatView as ci,
203736
- getUserDefinedConfig as cj,
203737
- getIconSVG as ck,
203738
- registerIconPacks as cl,
203739
- unknownIcon as cm,
203740
- isFilePath as cn,
203741
- writeClipboardText as co,
203742
- readClipboardText as cp,
203743
- ArrowLeft as cq,
203744
- ArrowUp as cr,
203745
- ArrowDown as cs,
203746
- ArrowRight as ct,
203747
- ClipboardCopy as cu,
203748
- ClipboardPaste as cv,
203749
- getCurrentZoomLevel as cw,
203750
- openExternalUrl as cx,
203751
- subscribeToZoomChanges as cy,
203752
- 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,
203753
204807
  foldInside as d,
203754
- timeFormat as d0,
203755
- timeMonth as d1,
203756
- timeSunday as d2,
203757
- timeSaturday as d3,
203758
- timeFriday as d4,
203759
- timeThursday as d5,
203760
- timeWednesday as d6,
203761
- timeTuesday as d7,
203762
- timeMonday as d8,
203763
- timeDay as d9,
203764
- arrayLikeKeys as dA,
203765
- baseKeys as dB,
203766
- memoize as dC,
203767
- isArguments$1 as dD,
203768
- copyObject as dE,
203769
- getPrototype as dF,
203770
- cloneArrayBuffer as dG,
203771
- cloneTypedArray as dH,
203772
- getTag$1 as dI,
203773
- nodeUtil as dJ,
203774
- copyArray as dK,
203775
- isBuffer$1 as dL,
203776
- cloneBuffer as dM,
203777
- initCloneObject as dN,
203778
- Stack as dO,
203779
- MapCache as dP,
203780
- Uint8Array$1 as dQ,
203781
- isTypedArray$1 as dR,
203782
- isLength$1 as dS,
203783
- Set$1 as dT,
203784
- createAssigner as dU,
203785
- isPrototype as dV,
203786
- router as dW,
203787
- timeHour as da,
203788
- timeMinute as db,
203789
- second as dc,
203790
- millisecond as dd,
203791
- isObject$2 as de,
203792
- isIterateeCall$1 as df,
203793
- keysIn as dg,
203794
- eq as dh,
203795
- isArrayLike$1 as di,
203796
- isArray$1 as dj,
203797
- identity$1 as dk,
203798
- isIndex$1 as dl,
203799
- assignValue as dm,
203800
- format as dn,
203801
- styles2String as dp,
203802
- isLabelStyle as dq,
203803
- setToString as dr,
203804
- overRest as ds,
203805
- baseFor as dt,
203806
- baseAssignValue as du,
203807
- baseUnary as dv,
203808
- merge$1 as dw,
203809
- isObjectLike$1 as dx,
203810
- baseGetTag as dy,
203811
- 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,
203812
204863
  ifNotIn as e,
203813
204864
  foldNodeProp as f,
203814
204865
  completeFromList as g,
@@ -203822,13 +204873,13 @@ export {
203822
204873
  useQuery as o,
203823
204874
  trpc as p,
203824
204875
  selectNeighbourBeforeRemove as q,
203825
- centralPanelPosition as r,
204876
+ disposeTerminal as r,
203826
204877
  styleTags as s,
203827
204878
  tags$1 as t,
203828
204879
  useAdapter as u,
203829
- ensureEdgeGroups as v,
203830
- attachEdgeGroupDragVisibility as w,
203831
- registerInnerDockview as x,
203832
- PanelVisibilityContext as y,
203833
- DockviewReact as z
204880
+ centralPanelPosition as v,
204881
+ ensureEdgeGroups as w,
204882
+ attachEdgeGroupDragVisibility as x,
204883
+ registerInnerDockview as y,
204884
+ PanelVisibilityContext as z
203834
204885
  };