@band-app/server 0.11.0 → 0.13.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/{DockviewTerminalContainer-B_d7xICn.js → DockviewTerminalContainer-CLlvqDbZ.js} +2 -2
  2. package/dist/client/assets/TerminalPanel-BE9r8rEY.js +4 -0
  3. package/dist/client/assets/{_basePickBy-CGUp_yxK.js → _basePickBy-Dh2WFRMd.js} +1 -1
  4. package/dist/client/assets/{_baseUniq-Dw6GHoL9.js → _baseUniq-2BIwN7J1.js} +1 -1
  5. package/dist/client/assets/{arc-XlfWbXyq.js → arc-Wsw6SggN.js} +1 -1
  6. package/dist/client/assets/{architectureDiagram-VXUJARFQ-DrbWYU6-.js → architectureDiagram-VXUJARFQ-XSuarAoX.js} +1 -1
  7. package/dist/client/assets/{blockDiagram-VD42YOAC-CnGWSi-4.js → blockDiagram-VD42YOAC-DSc5TOI1.js} +1 -1
  8. package/dist/client/assets/{c4Diagram-YG6GDRKO-XgYkwrO4.js → c4Diagram-YG6GDRKO-DLlwzfnX.js} +1 -1
  9. package/dist/client/assets/channel-C5uboiOE.js +1 -0
  10. package/dist/client/assets/{chunk-4BX2VUAB-Bni0jj5l.js → chunk-4BX2VUAB-CWduv96U.js} +1 -1
  11. package/dist/client/assets/{chunk-55IACEB6-CP2DHV4G.js → chunk-55IACEB6-D9A39zkK.js} +1 -1
  12. package/dist/client/assets/{chunk-B4BG7PRW-LorOGQCt.js → chunk-B4BG7PRW-CUMptYWA.js} +1 -1
  13. package/dist/client/assets/{chunk-DI55MBZ5-BGfyRUcq.js → chunk-DI55MBZ5-DIwkyxaQ.js} +1 -1
  14. package/dist/client/assets/{chunk-FMBD7UC4-DSwbm1gv.js → chunk-FMBD7UC4-D8F2lei-.js} +1 -1
  15. package/dist/client/assets/{chunk-QN33PNHL-EtPi_Ji9.js → chunk-QN33PNHL-C83_AULb.js} +1 -1
  16. package/dist/client/assets/{chunk-QZHKN3VN-DO6tEA7r.js → chunk-QZHKN3VN-Dtw-3_KI.js} +1 -1
  17. package/dist/client/assets/{chunk-TZMSLE5B-Nj40qaVe.js → chunk-TZMSLE5B-Cg9TlQ9E.js} +1 -1
  18. package/dist/client/assets/classDiagram-2ON5EDUG-CbG2RU7R.js +1 -0
  19. package/dist/client/assets/classDiagram-v2-WZHVMYZB-CbG2RU7R.js +1 -0
  20. package/dist/client/assets/clone-vDxxg1dv.js +1 -0
  21. package/dist/client/assets/{cose-bilkent-S5V4N54A-ak82Fzvq.js → cose-bilkent-S5V4N54A-Drnoe6yO.js} +1 -1
  22. package/dist/client/assets/{dagre-6UL2VRFP-BhRq81p8.js → dagre-6UL2VRFP-BgY7fnyf.js} +2 -2
  23. package/dist/client/assets/{diagram-PSM6KHXK-CdCO4ElG.js → diagram-PSM6KHXK-bmxBt_Q-.js} +1 -1
  24. package/dist/client/assets/{diagram-QEK2KX5R-ZTP_AdCr.js → diagram-QEK2KX5R-DGUqlb8j.js} +1 -1
  25. package/dist/client/assets/{diagram-S2PKOQOG-CUwvj0ij.js → diagram-S2PKOQOG-DxXpOhvW.js} +1 -1
  26. package/dist/client/assets/{erDiagram-Q2GNP2WA-_TAh-IWD.js → erDiagram-Q2GNP2WA-eZBtaSzD.js} +1 -1
  27. package/dist/client/assets/{flowDiagram-NV44I4VS-BuwDJSn1.js → flowDiagram-NV44I4VS-Dfwd3PGB.js} +1 -1
  28. package/dist/client/assets/{ganttDiagram-JELNMOA3-B7yQG2sO.js → ganttDiagram-JELNMOA3-BAMeSthd.js} +1 -1
  29. package/dist/client/assets/{gitGraphDiagram-V2S2FVAM-BO5T-8Lr.js → gitGraphDiagram-V2S2FVAM-Dts_Yrpu.js} +1 -1
  30. package/dist/client/assets/{graph-D-uGD-0H.js → graph-BuNOEI6L.js} +1 -1
  31. package/dist/client/assets/{highlighted-body-B3W2YXNL-BhBwg9zK.js → highlighted-body-B3W2YXNL-Btj0UZe1.js} +1 -1
  32. package/dist/client/assets/{index-CJMoNto1.js → index-B4xvdE9X.js} +1 -1
  33. package/dist/client/assets/{index-CxT2NPzl.js → index-BFyseSVV.js} +1 -1
  34. package/dist/client/assets/{index-Go-0lxNN.js → index-Bmhh2EB_.js} +1 -1
  35. package/dist/client/assets/{index-BMvH6RWO.js → index-CF7iJtA6.js} +1 -1
  36. package/dist/client/assets/{index-P603ebp4.js → index-D7TqJ9RF.js} +1 -1
  37. package/dist/client/assets/{index-DxHeWcH9.js → index-DOb48mtv.js} +2 -2
  38. package/dist/client/assets/{index-DiaEWqnN.js → index-DR-TpUg3.js} +1 -1
  39. package/dist/client/assets/{index-Qgt9bjPe.js → index-DaorCZSP.js} +1 -1
  40. package/dist/client/assets/{index-B1UdfbJU.js → index-JytYW91Z.js} +1 -1
  41. package/dist/client/assets/{index-CvA0I31h.js → index-Ktl6P-nc.js} +1 -1
  42. package/dist/client/assets/{index-ei6PilZv.js → index-Qm_HbX1-.js} +1 -1
  43. package/dist/client/assets/{index-C9CkZeNx.js → index-Vaa1H_pP.js} +1 -1
  44. package/dist/client/assets/{index-DyXCT17y.js → index-cErwJT25.js} +1 -1
  45. package/dist/client/assets/{index-CQ8y5zr7.js → index-g5xXrehm.js} +1 -1
  46. package/dist/client/assets/{index-DZeEuAVf.js → index-gv6bT0S4.js} +1 -1
  47. package/dist/client/assets/{index-BCvOU1J9.js → index-sMR7WunY.js} +1 -1
  48. package/dist/client/assets/{index-B9YuCMCp.js → index-tIReXko0.js} +1 -1
  49. package/dist/client/assets/{index-DB_ThGxo.js → index-xEL9mxnj.js} +1 -1
  50. package/dist/client/assets/{infoDiagram-HS3SLOUP-CXG0VFXc.js → infoDiagram-HS3SLOUP-ygUopIDr.js} +1 -1
  51. package/dist/client/assets/{journeyDiagram-XKPGCS4Q-DHFwgvUa.js → journeyDiagram-XKPGCS4Q-C7fCACOj.js} +1 -1
  52. package/dist/client/assets/{kanban-definition-3W4ZIXB7-Dz5WwtmO.js → kanban-definition-3W4ZIXB7-4jf7Ztsb.js} +1 -1
  53. package/dist/client/assets/{layout-Br-A41yG.js → layout-DBEGDIe2.js} +1 -1
  54. package/dist/client/assets/{linear-eN-Z_k3e.js → linear-2Gp1gLY9.js} +1 -1
  55. package/dist/client/assets/main-4FaYQ5DQ.css +1 -0
  56. package/dist/client/assets/{main-CfXjc_JR.js → main-CzHZzsmJ.js} +264 -264
  57. package/dist/client/assets/{mindmap-definition-VGOIOE7T-KtSITXQp.js → mindmap-definition-VGOIOE7T-CiziEudd.js} +1 -1
  58. package/dist/client/assets/{pieDiagram-ADFJNKIX-BQmo4537.js → pieDiagram-ADFJNKIX-DTFtaGug.js} +1 -1
  59. package/dist/client/assets/{quadrantDiagram-AYHSOK5B-Cftd-sa5.js → quadrantDiagram-AYHSOK5B-fbALF3fd.js} +1 -1
  60. package/dist/client/assets/{requirementDiagram-UZGBJVZJ-Cbad3gPG.js → requirementDiagram-UZGBJVZJ-CRl9BPyr.js} +1 -1
  61. package/dist/client/assets/{sankeyDiagram-TZEHDZUN-CT0Fvveb.js → sankeyDiagram-TZEHDZUN-RgshY6u-.js} +1 -1
  62. package/dist/client/assets/{sequenceDiagram-WL72ISMW-D_VHvSKc.js → sequenceDiagram-WL72ISMW-BbgPIX0Q.js} +1 -1
  63. package/dist/client/assets/{square-terminal-BIHVvHoK.js → square-terminal-DCU0c-OS.js} +1 -1
  64. package/dist/client/assets/{stateDiagram-FKZM4ZOC-BXtCQjOy.js → stateDiagram-FKZM4ZOC-feRu8oRh.js} +1 -1
  65. package/dist/client/assets/stateDiagram-v2-4FDKWEC3-By7mP9TH.js +1 -0
  66. package/dist/client/assets/{timeline-definition-IT6M3QCI-DG4t2xHw.js → timeline-definition-IT6M3QCI-BqWKbKID.js} +1 -1
  67. package/dist/client/assets/{treemap-GDKQZRPO-DQP5MG32.js → treemap-GDKQZRPO-D0xFOnga.js} +1 -1
  68. package/dist/client/assets/{useSessionListContext-CbzNRAeC.js → useSessionListContext-PZqsgbdH.js} +1 -1
  69. package/dist/client/assets/workspace._workspaceId-djkhDM0B.js +1 -0
  70. package/dist/client/assets/{workspace._workspaceId.changes-C0w9GX6M.js → workspace._workspaceId.changes-InUdTCW0.js} +1 -1
  71. package/dist/client/assets/workspace._workspaceId.code-B2HMVWnI.js +1 -0
  72. package/dist/client/assets/{workspace._workspaceId.code._-BlXLI8oa.js → workspace._workspaceId.code._-iCOKNXeZ.js} +1 -1
  73. package/dist/client/assets/{workspace._workspaceId.code.index-C-ai4qSV.js → workspace._workspaceId.code.index-DMKkXryF.js} +1 -1
  74. package/dist/client/assets/{workspace._workspaceId.index-B4ICOQa_.js → workspace._workspaceId.index-BZyamHNS.js} +1 -1
  75. package/dist/client/assets/{workspace._workspaceId.terminal-twItT7MS.js → workspace._workspaceId.terminal-4F7quTy3.js} +2 -2
  76. package/dist/client/assets/{xychartDiagram-PRI3JC2R-B3wc6a3i.js → xychartDiagram-PRI3JC2R-DicPcjot.js} +1 -1
  77. package/dist/migrations/20260513141710_browser_history/migration.sql +12 -0
  78. package/dist/migrations/20260513141710_browser_history/snapshot.json +846 -0
  79. package/dist/server/assets/{DockviewTerminalContainer-C08cAuxR.js → DockviewTerminalContainer-BBQnIZa3.js} +3 -3
  80. package/dist/server/assets/TerminalPanel-B1dKqOMK.js +1016 -0
  81. package/dist/server/assets/{_basePickBy-sZPuo3Ci.js → _basePickBy-BoCJVKe_.js} +2 -2
  82. package/dist/server/assets/{_baseUniq-AWKOFGZz.js → _baseUniq-DCXNOsnI.js} +1 -1
  83. package/dist/server/assets/{_tanstack-start-manifest_v-BxDrbOKJ.js → _tanstack-start-manifest_v-2CeISY5W.js} +1 -1
  84. package/dist/server/assets/{arc-BHB8CdVw.js → arc-BFMEbbxV.js} +1 -1
  85. package/dist/server/assets/{architecture-7HQA4BMR-CegM3zV0.js → architecture-7HQA4BMR-4b2GJppC.js} +6 -6
  86. package/dist/server/assets/{architectureDiagram-VXUJARFQ-C0Hc_lzz.js → architectureDiagram-VXUJARFQ-iVW_FQ4S.js} +6 -6
  87. package/dist/server/assets/{blockDiagram-VD42YOAC-CGmRuJNx.js → blockDiagram-VD42YOAC-D1iPUb9l.js} +6 -6
  88. package/dist/server/assets/{c4Diagram-YG6GDRKO-45kx6aRF.js → c4Diagram-YG6GDRKO-DI4Ztwr3.js} +2 -2
  89. package/dist/server/assets/{channel-YRi2PtmI.js → channel-VwPrL84U.js} +1 -1
  90. package/dist/server/assets/{chunk-4BX2VUAB-CdQZhoNV.js → chunk-4BX2VUAB-B9WFGVXO.js} +1 -1
  91. package/dist/server/assets/{chunk-55IACEB6-3Guaa5mF.js → chunk-55IACEB6-cnFKsxmn.js} +1 -1
  92. package/dist/server/assets/{chunk-B4BG7PRW-crikL5R-.js → chunk-B4BG7PRW-DVIhTopX.js} +4 -4
  93. package/dist/server/assets/{chunk-DI55MBZ5-cdG5TMcl.js → chunk-DI55MBZ5-a2cj65b-.js} +3 -3
  94. package/dist/server/assets/{chunk-FMBD7UC4-BfJRchHH.js → chunk-FMBD7UC4-D79uNYe4.js} +1 -1
  95. package/dist/server/assets/{chunk-QN33PNHL--Lwmy-qD.js → chunk-QN33PNHL-BDbkmWdo.js} +1 -1
  96. package/dist/server/assets/{chunk-QZHKN3VN-BjRv3GOJ.js → chunk-QZHKN3VN-CIC4C0nk.js} +1 -1
  97. package/dist/server/assets/{chunk-TZMSLE5B-H_DXTbB4.js → chunk-TZMSLE5B-BQBr1RGS.js} +1 -1
  98. package/dist/server/assets/{classDiagram-v2-WZHVMYZB-89eor2RH.js → classDiagram-2ON5EDUG-CtbqESgu.js} +5 -5
  99. package/dist/server/assets/{classDiagram-2ON5EDUG-89eor2RH.js → classDiagram-v2-WZHVMYZB-CtbqESgu.js} +5 -5
  100. package/dist/server/assets/{clone-ehRaGIPL.js → clone-Bnbf9Iqg.js} +1 -1
  101. package/dist/server/assets/{cose-bilkent-S5V4N54A-CaxWP-ls.js → cose-bilkent-S5V4N54A-DQl5SFk6.js} +1 -1
  102. package/dist/server/assets/{dagre-6UL2VRFP-nML2GoFm.js → dagre-6UL2VRFP-DWcFImvS.js} +6 -6
  103. package/dist/server/assets/{diagram-PSM6KHXK-DNGTWSIt.js → diagram-PSM6KHXK-CAIVqsc3.js} +7 -7
  104. package/dist/server/assets/{diagram-QEK2KX5R-v8VJEGaP.js → diagram-QEK2KX5R-Dc8wo9c1.js} +6 -6
  105. package/dist/server/assets/{diagram-S2PKOQOG-BaL9LGkK.js → diagram-S2PKOQOG-ZNcpDFrx.js} +6 -6
  106. package/dist/server/assets/{erDiagram-Q2GNP2WA-D8492WtW.js → erDiagram-Q2GNP2WA-BYLAWy_j.js} +4 -4
  107. package/dist/server/assets/{flowDiagram-NV44I4VS-9EzGsZaT.js → flowDiagram-NV44I4VS-CzcX8svk.js} +5 -5
  108. package/dist/server/assets/{ganttDiagram-JELNMOA3-DXT8NWPe.js → ganttDiagram-JELNMOA3-Dxwzox2R.js} +2 -2
  109. package/dist/server/assets/{gitGraph-G5XIXVHT-Bz8_hJ5u.js → gitGraph-G5XIXVHT-LK8-a2sz.js} +6 -6
  110. package/dist/server/assets/{gitGraphDiagram-V2S2FVAM-CnBNPMun.js → gitGraphDiagram-V2S2FVAM-DlgLrJB0.js} +7 -7
  111. package/dist/server/assets/{graph-CkD4QR_J.js → graph-BXmxFNFp.js} +2 -2
  112. package/dist/server/assets/{highlighted-body-B3W2YXNL-Cx9TQQOi.js → highlighted-body-B3W2YXNL-DsSe47sR.js} +1 -1
  113. package/dist/server/assets/{index-Du0s-OSL.js → index-4YgzFKOD.js} +5 -5
  114. package/dist/server/assets/{index-DefaG_Jr.js → index-5upQdcP2.js} +2 -2
  115. package/dist/server/assets/{index-CaMi2wJ-.js → index-B-LK0PYZ.js} +2 -2
  116. package/dist/server/assets/{index-ip3CXBin.js → index-BSojqZdf.js} +2 -2
  117. package/dist/server/assets/{index-BIGELKaL.js → index-BbjwIyTa.js} +5 -5
  118. package/dist/server/assets/{index-DRuNJuxv.js → index-BdNVOcCL.js} +2 -2
  119. package/dist/server/assets/{index-D0EeXiux.js → index-BrkgyCV3.js} +2 -2
  120. package/dist/server/assets/{index-Cuzbefg5.js → index-BsoOL_wq.js} +2 -2
  121. package/dist/server/assets/{index-frDhjK4t.js → index-CVjIVbLj.js} +2 -2
  122. package/dist/server/assets/{index-Ys57JqHp.js → index-CWtvbkAQ.js} +3 -3
  123. package/dist/server/assets/{index-Di60ebJg.js → index-CXycOokw.js} +2 -2
  124. package/dist/server/assets/{index-D-gmsExo.js → index-CaaOSPL7.js} +3 -3
  125. package/dist/server/assets/{index-C4UsgNUp.js → index-CnLND4um.js} +1 -1
  126. package/dist/server/assets/{index-Dl8jeLrk.js → index-DM2r-vGW.js} +2 -2
  127. package/dist/server/assets/{index-CURBmg8q.js → index-DdVNSMNY.js} +2 -2
  128. package/dist/server/assets/{index-BnbsIRq2.js → index-Do1Nx4aA.js} +1 -1
  129. package/dist/server/assets/{index-dHlIt0bs.js → index-nKutdysv.js} +2 -2
  130. package/dist/server/assets/{index-CYaseS8g.js → index-oC76KgvT.js} +4 -4
  131. package/dist/server/assets/{info-VBDWY6EO-Cn3hNsdX.js → info-VBDWY6EO-CM7NSJD8.js} +6 -6
  132. package/dist/server/assets/{infoDiagram-HS3SLOUP-7CfAt4Uh.js → infoDiagram-HS3SLOUP-QMxyRHM5.js} +5 -5
  133. package/dist/server/assets/{journeyDiagram-XKPGCS4Q-BSONqKAA.js → journeyDiagram-XKPGCS4Q-BoA6PlCZ.js} +4 -4
  134. package/dist/server/assets/{kanban-definition-3W4ZIXB7-D6yZMd8l.js → kanban-definition-3W4ZIXB7-r6KtKaEH.js} +2 -2
  135. package/dist/server/assets/{layout-mg-BM0ah.js → layout-D3Do3Tbk.js} +4 -4
  136. package/dist/server/assets/{linear-BMOZWebZ.js → linear-CC2CX22M.js} +1 -1
  137. package/dist/server/assets/{mermaid-3ZIDBTTL-BaXUHzN6.js → mermaid-3ZIDBTTL-De3B4GT2.js} +1 -1
  138. package/dist/server/assets/{mermaid-parser.core-rzveH7k9.js → mermaid-parser.core-BNbfHMQU.js} +11 -11
  139. package/dist/server/assets/{mindmap-definition-VGOIOE7T-BWCUtjdH.js → mindmap-definition-VGOIOE7T-BZA0jx43.js} +3 -3
  140. package/dist/server/assets/{packet-DYOGHKS2-YNVTDtvn.js → packet-DYOGHKS2-FVoQy92R.js} +6 -6
  141. package/dist/server/assets/{pie-VRWISCQL-CUd-HhbY.js → pie-VRWISCQL-BGUPFoed.js} +6 -6
  142. package/dist/server/assets/{pieDiagram-ADFJNKIX-Cn9i98AK.js → pieDiagram-ADFJNKIX-6xe9bPcx.js} +7 -7
  143. package/dist/server/assets/{quadrantDiagram-AYHSOK5B-BIqkmSwk.js → quadrantDiagram-AYHSOK5B-DrjB4XQc.js} +2 -2
  144. package/dist/server/assets/{radar-ZZBFDIW7-Bp2wUTqp.js → radar-ZZBFDIW7-BioEa_Uy.js} +6 -6
  145. package/dist/server/assets/{requirementDiagram-UZGBJVZJ-DCovbx84.js → requirementDiagram-UZGBJVZJ-BQUraj5G.js} +3 -3
  146. package/dist/server/assets/{router-BJ9AnId-.js → router-Ch9bBOlF.js} +974 -351
  147. package/dist/server/assets/{sankeyDiagram-TZEHDZUN-D235svhJ.js → sankeyDiagram-TZEHDZUN-qdkVPLba.js} +1 -1
  148. package/dist/server/assets/{sequenceDiagram-WL72ISMW-BkT1dO7h.js → sequenceDiagram-WL72ISMW-Bh5Gu2_v.js} +3 -3
  149. package/dist/server/assets/{square-terminal-CmcrJjAr.js → square-terminal-DVnlJfcM.js} +1 -1
  150. package/dist/server/assets/{stateDiagram-FKZM4ZOC-BJ70j0rR.js → stateDiagram-FKZM4ZOC-BUasl40g.js} +8 -8
  151. package/dist/server/assets/{stateDiagram-v2-4FDKWEC3-ju1h0Bq1.js → stateDiagram-v2-4FDKWEC3-BL56MbOT.js} +4 -4
  152. package/dist/server/assets/{timeline-definition-IT6M3QCI-C3FJ_HU6.js → timeline-definition-IT6M3QCI-oGfd7fF8.js} +2 -2
  153. package/dist/server/assets/{treemap-GDKQZRPO-DvhWVE_G.js → treemap-GDKQZRPO-CELUCxyO.js} +6 -6
  154. package/dist/server/assets/{workspace._workspaceId-Dzw4IQZA.js → workspace._workspaceId-DhJMpGAq.js} +10 -4
  155. package/dist/server/assets/{workspace._workspaceId.changes-XtB3brY5.js → workspace._workspaceId.changes-5-0MP0m5.js} +1 -1
  156. package/dist/server/assets/{workspace._workspaceId.code._-Ta-O6sWR.js → workspace._workspaceId.code._-BFbAz_ei.js} +1 -1
  157. package/dist/server/assets/{workspace._workspaceId.code.index-snQLg3f2.js → workspace._workspaceId.code.index-BepZ481b.js} +1 -1
  158. package/dist/server/assets/{workspace._workspaceId.index-BSnuZ0EI.js → workspace._workspaceId.index-Cp3_jFDn.js} +1 -1
  159. package/dist/server/assets/{workspace._workspaceId.terminal-D3jJ3XMV.js → workspace._workspaceId.terminal-B5beQDh_.js} +2 -2
  160. package/dist/server/assets/{xychartDiagram-PRI3JC2R-BRlE_l5B.js → xychartDiagram-PRI3JC2R-qDOKCR8M.js} +2 -2
  161. package/dist/server/server.js +2 -2
  162. package/dist/start-server.mjs +1118 -519
  163. package/package.json +5 -5
  164. package/dist/client/assets/TerminalPanel-DMsYxEdX.js +0 -4
  165. package/dist/client/assets/channel-C4hzzilT.js +0 -1
  166. package/dist/client/assets/classDiagram-2ON5EDUG-D7Wwq-uf.js +0 -1
  167. package/dist/client/assets/classDiagram-v2-WZHVMYZB-D7Wwq-uf.js +0 -1
  168. package/dist/client/assets/clone-CRqkC7J9.js +0 -1
  169. package/dist/client/assets/main-F2T48yRI.css +0 -1
  170. package/dist/client/assets/stateDiagram-v2-4FDKWEC3--e7abZtM.js +0 -1
  171. package/dist/client/assets/workspace._workspaceId-BlPtc664.js +0 -1
  172. package/dist/client/assets/workspace._workspaceId.code-B2x2c1r3.js +0 -1
  173. package/dist/server/assets/TerminalPanel-CDMb43XN.js +0 -442
@@ -1093,44 +1093,44 @@ const createLucideIcon = (iconName, iconNode) => {
1093
1093
  Component.displayName = toPascalCase(iconName);
1094
1094
  return Component;
1095
1095
  };
1096
- const __iconNode$1v = [
1096
+ const __iconNode$1w = [
1097
1097
  ["path", { d: "M12 17V3", key: "1cwfxf" }],
1098
1098
  ["path", { d: "m6 11 6 6 6-6", key: "12ii2o" }],
1099
1099
  ["path", { d: "M19 21H5", key: "150jfl" }]
1100
1100
  ];
1101
- const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1v);
1102
- const __iconNode$1u = [
1101
+ const ArrowDownToLine = createLucideIcon("arrow-down-to-line", __iconNode$1w);
1102
+ const __iconNode$1v = [
1103
1103
  ["path", { d: "M12 5v14", key: "s699le" }],
1104
1104
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
1105
1105
  ];
1106
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$1u);
1107
- const __iconNode$1t = [
1106
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$1v);
1107
+ const __iconNode$1u = [
1108
1108
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
1109
1109
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
1110
1110
  ];
1111
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1t);
1112
- const __iconNode$1s = [
1111
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$1u);
1112
+ const __iconNode$1t = [
1113
1113
  ["path", { d: "M5 12h14", key: "1ays0h" }],
1114
1114
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
1115
1115
  ];
1116
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$1s);
1117
- const __iconNode$1r = [
1116
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$1t);
1117
+ const __iconNode$1s = [
1118
1118
  ["path", { d: "m18 9-6-6-6 6", key: "kcunyi" }],
1119
1119
  ["path", { d: "M12 3v14", key: "7cf3v8" }],
1120
1120
  ["path", { d: "M5 21h14", key: "11awu3" }]
1121
1121
  ];
1122
- const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1r);
1123
- const __iconNode$1q = [
1122
+ const ArrowUpFromLine = createLucideIcon("arrow-up-from-line", __iconNode$1s);
1123
+ const __iconNode$1r = [
1124
1124
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
1125
1125
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
1126
1126
  ];
1127
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$1q);
1128
- const __iconNode$1p = [
1127
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$1r);
1128
+ const __iconNode$1q = [
1129
1129
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1130
1130
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }]
1131
1131
  ];
1132
- const Ban = createLucideIcon("ban", __iconNode$1p);
1133
- const __iconNode$1o = [
1132
+ const Ban = createLucideIcon("ban", __iconNode$1q);
1133
+ const __iconNode$1p = [
1134
1134
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
1135
1135
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
1136
1136
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -1138,8 +1138,8 @@ const __iconNode$1o = [
1138
1138
  ["path", { d: "M15 13v2", key: "1xurst" }],
1139
1139
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
1140
1140
  ];
1141
- const Bot = createLucideIcon("bot", __iconNode$1o);
1142
- const __iconNode$1n = [
1141
+ const Bot = createLucideIcon("bot", __iconNode$1p);
1142
+ const __iconNode$1o = [
1143
1143
  [
1144
1144
  "path",
1145
1145
  { d: "M8 3H7a2 2 0 0 0-2 2v5a2 2 0 0 1-2 2 2 2 0 0 1 2 2v5c0 1.1.9 2 2 2h1", key: "ezmyqa" }
@@ -1152,62 +1152,62 @@ const __iconNode$1n = [
1152
1152
  }
1153
1153
  ]
1154
1154
  ];
1155
- const Braces = createLucideIcon("braces", __iconNode$1n);
1156
- const __iconNode$1m = [
1155
+ const Braces = createLucideIcon("braces", __iconNode$1o);
1156
+ const __iconNode$1n = [
1157
1157
  ["path", { d: "m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16", key: "d5nyq2" }],
1158
1158
  ["path", { d: "M22 9v7", key: "pvm9v3" }],
1159
1159
  ["path", { d: "M3.304 13h6.392", key: "1q3zxz" }],
1160
1160
  ["circle", { cx: "18.5", cy: "12.5", r: "3.5", key: "z97x68" }]
1161
1161
  ];
1162
- const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1m);
1163
- const __iconNode$1l = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1164
- const Check = createLucideIcon("check", __iconNode$1l);
1165
- const __iconNode$1k = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1166
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$1k);
1167
- const __iconNode$1j = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1168
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1j);
1169
- const __iconNode$1i = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1170
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$1i);
1171
- const __iconNode$1h = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1172
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$1h);
1173
- const __iconNode$1g = [
1162
+ const CaseSensitive = createLucideIcon("case-sensitive", __iconNode$1n);
1163
+ const __iconNode$1m = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
1164
+ const Check = createLucideIcon("check", __iconNode$1m);
1165
+ const __iconNode$1l = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
1166
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$1l);
1167
+ const __iconNode$1k = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
1168
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$1k);
1169
+ const __iconNode$1j = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
1170
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$1j);
1171
+ const __iconNode$1i = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
1172
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$1i);
1173
+ const __iconNode$1h = [
1174
1174
  ["path", { d: "m7 20 5-5 5 5", key: "13a0gw" }],
1175
1175
  ["path", { d: "m7 4 5 5 5-5", key: "1kwcof" }]
1176
1176
  ];
1177
- const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1g);
1178
- const __iconNode$1f = [
1177
+ const ChevronsDownUp = createLucideIcon("chevrons-down-up", __iconNode$1h);
1178
+ const __iconNode$1g = [
1179
1179
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
1180
1180
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
1181
1181
  ];
1182
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1f);
1183
- const __iconNode$1e = [
1182
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1g);
1183
+ const __iconNode$1f = [
1184
1184
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1185
1185
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
1186
1186
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
1187
1187
  ];
1188
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$1e);
1189
- const __iconNode$1d = [
1188
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1f);
1189
+ const __iconNode$1e = [
1190
1190
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1191
1191
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
1192
1192
  ];
1193
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1d);
1194
- const __iconNode$1c = [
1193
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1e);
1194
+ const __iconNode$1d = [
1195
1195
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1196
1196
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
1197
1197
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
1198
1198
  ];
1199
- const CircleX = createLucideIcon("circle-x", __iconNode$1c);
1200
- const __iconNode$1b = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1201
- const Circle = createLucideIcon("circle", __iconNode$1b);
1202
- const __iconNode$1a = [
1199
+ const CircleX = createLucideIcon("circle-x", __iconNode$1d);
1200
+ const __iconNode$1c = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
1201
+ const Circle = createLucideIcon("circle", __iconNode$1c);
1202
+ const __iconNode$1b = [
1203
1203
  ["path", { d: "M11 14h10", key: "1w8e9d" }],
1204
1204
  ["path", { d: "M16 4h2a2 2 0 0 1 2 2v1.344", key: "1e62lh" }],
1205
1205
  ["path", { d: "m17 18 4-4-4-4", key: "z2g111" }],
1206
1206
  ["path", { d: "M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 1.793-1.113", key: "bjbb7m" }],
1207
1207
  ["rect", { x: "8", y: "2", width: "8", height: "4", rx: "1", key: "ublpy" }]
1208
1208
  ];
1209
- const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$1a);
1210
- const __iconNode$19 = [
1209
+ const ClipboardPaste = createLucideIcon("clipboard-paste", __iconNode$1b);
1210
+ const __iconNode$1a = [
1211
1211
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
1212
1212
  [
1213
1213
  "path",
@@ -1217,59 +1217,59 @@ const __iconNode$19 = [
1217
1217
  }
1218
1218
  ]
1219
1219
  ];
1220
- const Clipboard = createLucideIcon("clipboard", __iconNode$19);
1221
- const __iconNode$18 = [
1220
+ const Clipboard = createLucideIcon("clipboard", __iconNode$1a);
1221
+ const __iconNode$19 = [
1222
1222
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1223
1223
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }]
1224
1224
  ];
1225
- const Clock = createLucideIcon("clock", __iconNode$18);
1226
- const __iconNode$17 = [
1225
+ const Clock = createLucideIcon("clock", __iconNode$19);
1226
+ const __iconNode$18 = [
1227
1227
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
1228
1228
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
1229
1229
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
1230
1230
  ];
1231
- const CodeXml = createLucideIcon("code-xml", __iconNode$17);
1232
- const __iconNode$16 = [
1231
+ const CodeXml = createLucideIcon("code-xml", __iconNode$18);
1232
+ const __iconNode$17 = [
1233
1233
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
1234
1234
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
1235
1235
  ];
1236
- const Code = createLucideIcon("code", __iconNode$16);
1237
- const __iconNode$15 = [
1236
+ const Code = createLucideIcon("code", __iconNode$17);
1237
+ const __iconNode$16 = [
1238
1238
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
1239
1239
  ["path", { d: "M12 3v18", key: "108xh3" }]
1240
1240
  ];
1241
- const Columns2 = createLucideIcon("columns-2", __iconNode$15);
1242
- const __iconNode$14 = [
1241
+ const Columns2 = createLucideIcon("columns-2", __iconNode$16);
1242
+ const __iconNode$15 = [
1243
1243
  [
1244
1244
  "path",
1245
1245
  { d: "M15 6v12a3 3 0 1 0 3-3H6a3 3 0 1 0 3 3V6a3 3 0 1 0-3 3h12a3 3 0 1 0-3-3", key: "11bfej" }
1246
1246
  ]
1247
1247
  ];
1248
- const Command$1 = createLucideIcon("command", __iconNode$14);
1249
- const __iconNode$13 = [
1248
+ const Command$1 = createLucideIcon("command", __iconNode$15);
1249
+ const __iconNode$14 = [
1250
1250
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
1251
1251
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
1252
1252
  ];
1253
- const Copy = createLucideIcon("copy", __iconNode$13);
1254
- const __iconNode$12 = [
1253
+ const Copy = createLucideIcon("copy", __iconNode$14);
1254
+ const __iconNode$13 = [
1255
1255
  ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
1256
1256
  ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
1257
1257
  ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
1258
1258
  ];
1259
- const Database = createLucideIcon("database", __iconNode$12);
1260
- const __iconNode$11 = [
1259
+ const Database = createLucideIcon("database", __iconNode$13);
1260
+ const __iconNode$12 = [
1261
1261
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
1262
1262
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
1263
1263
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
1264
1264
  ];
1265
- const Download = createLucideIcon("download", __iconNode$11);
1266
- const __iconNode$10 = [
1265
+ const Download = createLucideIcon("download", __iconNode$12);
1266
+ const __iconNode$11 = [
1267
1267
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
1268
1268
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
1269
1269
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
1270
1270
  ];
1271
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$10);
1272
- const __iconNode$$ = [
1271
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$11);
1272
+ const __iconNode$10 = [
1273
1273
  ["path", { d: "m15 15 6 6", key: "1s409w" }],
1274
1274
  ["path", { d: "m15 9 6-6", key: "ko1vev" }],
1275
1275
  ["path", { d: "M21 16v5h-5", key: "1ck2sf" }],
@@ -1279,14 +1279,14 @@ const __iconNode$$ = [
1279
1279
  ["path", { d: "M3 8V3h5", key: "1ln10m" }],
1280
1280
  ["path", { d: "M9 9 3 3", key: "v551iv" }]
1281
1281
  ];
1282
- const Expand = createLucideIcon("expand", __iconNode$$);
1283
- const __iconNode$_ = [
1282
+ const Expand = createLucideIcon("expand", __iconNode$10);
1283
+ const __iconNode$$ = [
1284
1284
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
1285
1285
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
1286
1286
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
1287
1287
  ];
1288
- const ExternalLink$1 = createLucideIcon("external-link", __iconNode$_);
1289
- const __iconNode$Z = [
1288
+ const ExternalLink$1 = createLucideIcon("external-link", __iconNode$$);
1289
+ const __iconNode$_ = [
1290
1290
  [
1291
1291
  "path",
1292
1292
  {
@@ -1296,8 +1296,8 @@ const __iconNode$Z = [
1296
1296
  ],
1297
1297
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
1298
1298
  ];
1299
- const Eye = createLucideIcon("eye", __iconNode$Z);
1300
- const __iconNode$Y = [
1299
+ const Eye = createLucideIcon("eye", __iconNode$_);
1300
+ const __iconNode$Z = [
1301
1301
  [
1302
1302
  "path",
1303
1303
  {
@@ -1315,8 +1315,8 @@ const __iconNode$Y = [
1315
1315
  { d: "M14 18a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1 1 1 0 0 1-1-1v-1a1 1 0 0 0-1-1", key: "mpwhp6" }
1316
1316
  ]
1317
1317
  ];
1318
- const FileBraces = createLucideIcon("file-braces", __iconNode$Y);
1319
- const __iconNode$X = [
1318
+ const FileBraces = createLucideIcon("file-braces", __iconNode$Z);
1319
+ const __iconNode$Y = [
1320
1320
  [
1321
1321
  "path",
1322
1322
  {
@@ -1328,8 +1328,8 @@ const __iconNode$X = [
1328
1328
  ["path", { d: "m5 16-3 3 3 3", key: "331omg" }],
1329
1329
  ["path", { d: "m9 22 3-3-3-3", key: "lsp7cz" }]
1330
1330
  ];
1331
- const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$X);
1332
- const __iconNode$W = [
1331
+ const FileCodeCorner = createLucideIcon("file-code-corner", __iconNode$Y);
1332
+ const __iconNode$X = [
1333
1333
  [
1334
1334
  "path",
1335
1335
  {
@@ -1340,8 +1340,8 @@ const __iconNode$W = [
1340
1340
  ["path", { d: "M12 9v4", key: "juzpu7" }],
1341
1341
  ["path", { d: "M12 17h.01", key: "p32p05" }]
1342
1342
  ];
1343
- const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$W);
1344
- const __iconNode$V = [
1343
+ const FileExclamationPoint = createLucideIcon("file-exclamation-point", __iconNode$X);
1344
+ const __iconNode$W = [
1345
1345
  [
1346
1346
  "path",
1347
1347
  {
@@ -1353,8 +1353,8 @@ const __iconNode$V = [
1353
1353
  ["path", { d: "M9 15h6", key: "cctwl0" }],
1354
1354
  ["path", { d: "M12 18v-6", key: "17g6i2" }]
1355
1355
  ];
1356
- const FilePlus = createLucideIcon("file-plus", __iconNode$V);
1357
- const __iconNode$U = [
1356
+ const FilePlus = createLucideIcon("file-plus", __iconNode$W);
1357
+ const __iconNode$V = [
1358
1358
  [
1359
1359
  "path",
1360
1360
  {
@@ -1367,8 +1367,8 @@ const __iconNode$U = [
1367
1367
  ["path", { d: "M16 13H8", key: "t4e002" }],
1368
1368
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
1369
1369
  ];
1370
- const FileText = createLucideIcon("file-text", __iconNode$U);
1371
- const __iconNode$T = [
1370
+ const FileText = createLucideIcon("file-text", __iconNode$V);
1371
+ const __iconNode$U = [
1372
1372
  [
1373
1373
  "path",
1374
1374
  {
@@ -1378,8 +1378,8 @@ const __iconNode$T = [
1378
1378
  ],
1379
1379
  ["path", { d: "M14 2v5a1 1 0 0 0 1 1h5", key: "wfsgrz" }]
1380
1380
  ];
1381
- const File = createLucideIcon("file", __iconNode$T);
1382
- const __iconNode$S = [
1381
+ const File = createLucideIcon("file", __iconNode$U);
1382
+ const __iconNode$T = [
1383
1383
  [
1384
1384
  "path",
1385
1385
  {
@@ -1388,8 +1388,8 @@ const __iconNode$S = [
1388
1388
  }
1389
1389
  ]
1390
1390
  ];
1391
- const FolderOpen = createLucideIcon("folder-open", __iconNode$S);
1392
- const __iconNode$R = [
1391
+ const FolderOpen = createLucideIcon("folder-open", __iconNode$T);
1392
+ const __iconNode$S = [
1393
1393
  ["path", { d: "M12 10v6", key: "1bos4e" }],
1394
1394
  ["path", { d: "M9 13h6", key: "1uhe8q" }],
1395
1395
  [
@@ -1400,8 +1400,8 @@ const __iconNode$R = [
1400
1400
  }
1401
1401
  ]
1402
1402
  ];
1403
- const FolderPlus = createLucideIcon("folder-plus", __iconNode$R);
1404
- const __iconNode$Q = [
1403
+ const FolderPlus = createLucideIcon("folder-plus", __iconNode$S);
1404
+ const __iconNode$R = [
1405
1405
  [
1406
1406
  "path",
1407
1407
  {
@@ -1410,8 +1410,8 @@ const __iconNode$Q = [
1410
1410
  }
1411
1411
  ]
1412
1412
  ];
1413
- const Folder = createLucideIcon("folder", __iconNode$Q);
1414
- const __iconNode$P = [
1413
+ const Folder = createLucideIcon("folder", __iconNode$R);
1414
+ const __iconNode$Q = [
1415
1415
  [
1416
1416
  "path",
1417
1417
  {
@@ -1424,39 +1424,39 @@ const __iconNode$P = [
1424
1424
  { d: "M3 8.268a2 2 0 0 0-1 1.738V19a2 2 0 0 0 2 2h11a2 2 0 0 0 1.732-1", key: "yxbcw3" }
1425
1425
  ]
1426
1426
  ];
1427
- const Folders = createLucideIcon("folders", __iconNode$P);
1428
- const __iconNode$O = [
1427
+ const Folders = createLucideIcon("folders", __iconNode$Q);
1428
+ const __iconNode$P = [
1429
1429
  ["path", { d: "M15 6a9 9 0 0 0-9 9V3", key: "1cii5b" }],
1430
1430
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
1431
1431
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }]
1432
1432
  ];
1433
- const GitBranch = createLucideIcon("git-branch", __iconNode$O);
1434
- const __iconNode$N = [
1433
+ const GitBranch = createLucideIcon("git-branch", __iconNode$P);
1434
+ const __iconNode$O = [
1435
1435
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }],
1436
1436
  ["line", { x1: "3", x2: "9", y1: "12", y2: "12", key: "1dyftd" }],
1437
1437
  ["line", { x1: "15", x2: "21", y1: "12", y2: "12", key: "oup4p8" }]
1438
1438
  ];
1439
- const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$N);
1440
- const __iconNode$M = [
1439
+ const GitCommitHorizontal = createLucideIcon("git-commit-horizontal", __iconNode$O);
1440
+ const __iconNode$N = [
1441
1441
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1442
1442
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1443
1443
  ["path", { d: "M13 6h3a2 2 0 0 1 2 2v7", key: "1yeb86" }],
1444
1444
  ["path", { d: "M11 18H8a2 2 0 0 1-2-2V9", key: "19pyzm" }]
1445
1445
  ];
1446
- const GitCompare = createLucideIcon("git-compare", __iconNode$M);
1447
- const __iconNode$L = [
1446
+ const GitCompare = createLucideIcon("git-compare", __iconNode$N);
1447
+ const __iconNode$M = [
1448
1448
  ["circle", { cx: "18", cy: "18", r: "3", key: "1xkwt0" }],
1449
1449
  ["circle", { cx: "6", cy: "6", r: "3", key: "1lh9wr" }],
1450
1450
  ["path", { d: "M6 21V9a9 9 0 0 0 9 9", key: "7kw0sc" }]
1451
1451
  ];
1452
- const GitMerge = createLucideIcon("git-merge", __iconNode$L);
1453
- const __iconNode$K = [
1452
+ const GitMerge = createLucideIcon("git-merge", __iconNode$M);
1453
+ const __iconNode$L = [
1454
1454
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
1455
1455
  ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
1456
1456
  ["path", { d: "M2 12h20", key: "9i4pu4" }]
1457
1457
  ];
1458
- const Globe = createLucideIcon("globe", __iconNode$K);
1459
- const __iconNode$J = [
1458
+ const Globe = createLucideIcon("globe", __iconNode$L);
1459
+ const __iconNode$K = [
1460
1460
  ["circle", { cx: "12", cy: "9", r: "1", key: "124mty" }],
1461
1461
  ["circle", { cx: "19", cy: "9", r: "1", key: "1ruzo2" }],
1462
1462
  ["circle", { cx: "5", cy: "9", r: "1", key: "1a8b28" }],
@@ -1464,7 +1464,13 @@ const __iconNode$J = [
1464
1464
  ["circle", { cx: "19", cy: "15", r: "1", key: "1a92ep" }],
1465
1465
  ["circle", { cx: "5", cy: "15", r: "1", key: "5r1jwy" }]
1466
1466
  ];
1467
- const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$J);
1467
+ const GripHorizontal = createLucideIcon("grip-horizontal", __iconNode$K);
1468
+ const __iconNode$J = [
1469
+ ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
1470
+ ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
1471
+ ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
1472
+ ];
1473
+ const History = createLucideIcon("history", __iconNode$J);
1468
1474
  const __iconNode$I = [
1469
1475
  ["line", { x1: "2", x2: "22", y1: "2", y2: "22", key: "a6p6uj" }],
1470
1476
  ["path", { d: "M10.41 10.41a2 2 0 1 1-2.83-2.83", key: "1bzlo9" }],
@@ -40556,53 +40562,53 @@ async function loadLanguage(lang) {
40556
40562
  try {
40557
40563
  switch (lang) {
40558
40564
  case "javascript":
40559
- return import("./index-CURBmg8q.js").then((m2) => m2.javascript());
40565
+ return import("./index-DdVNSMNY.js").then((m2) => m2.javascript());
40560
40566
  case "jsx":
40561
- return import("./index-CURBmg8q.js").then((m2) => m2.javascript({ jsx: true }));
40567
+ return import("./index-DdVNSMNY.js").then((m2) => m2.javascript({ jsx: true }));
40562
40568
  case "typescript":
40563
- return import("./index-CURBmg8q.js").then(
40569
+ return import("./index-DdVNSMNY.js").then(
40564
40570
  (m2) => m2.javascript({ typescript: true })
40565
40571
  );
40566
40572
  case "tsx":
40567
- return import("./index-CURBmg8q.js").then(
40573
+ return import("./index-DdVNSMNY.js").then(
40568
40574
  (m2) => m2.javascript({ jsx: true, typescript: true })
40569
40575
  );
40570
40576
  case "python":
40571
- return import("./index-frDhjK4t.js").then((m2) => m2.python());
40577
+ return import("./index-CVjIVbLj.js").then((m2) => m2.python());
40572
40578
  case "html":
40573
- return import("./index-CYaseS8g.js").then((m2) => m2.html());
40579
+ return import("./index-oC76KgvT.js").then((m2) => m2.html());
40574
40580
  case "css":
40575
- return import("./index-DefaG_Jr.js").then((m2) => m2.css());
40581
+ return import("./index-5upQdcP2.js").then((m2) => m2.css());
40576
40582
  case "scss":
40577
40583
  case "sass":
40578
- return import("./index-D-gmsExo.js").then((m2) => m2.sass());
40584
+ return import("./index-CaaOSPL7.js").then((m2) => m2.sass());
40579
40585
  case "less":
40580
- return import("./index-Ys57JqHp.js").then((m2) => m2.less());
40586
+ return import("./index-CWtvbkAQ.js").then((m2) => m2.less());
40581
40587
  case "json":
40582
40588
  case "jsonc":
40583
- return import("./index-D0EeXiux.js").then((m2) => m2.json());
40589
+ return import("./index-BrkgyCV3.js").then((m2) => m2.json());
40584
40590
  case "markdown":
40585
40591
  case "mdx":
40586
- return import("./index-Du0s-OSL.js").then((m2) => m2.markdown());
40592
+ return import("./index-4YgzFKOD.js").then((m2) => m2.markdown());
40587
40593
  case "xml":
40588
- return import("./index-ip3CXBin.js").then((m2) => m2.xml());
40594
+ return import("./index-BSojqZdf.js").then((m2) => m2.xml());
40589
40595
  case "yaml":
40590
- return import("./index-Di60ebJg.js").then((m2) => m2.yaml());
40596
+ return import("./index-CXycOokw.js").then((m2) => m2.yaml());
40591
40597
  case "sql":
40592
- return import("./index-CaMi2wJ-.js").then((m2) => m2.sql());
40598
+ return import("./index-B-LK0PYZ.js").then((m2) => m2.sql());
40593
40599
  case "rust":
40594
- return import("./index-dHlIt0bs.js").then((m2) => m2.rust());
40600
+ return import("./index-nKutdysv.js").then((m2) => m2.rust());
40595
40601
  case "go":
40596
- return import("./index-DRuNJuxv.js").then((m2) => m2.go());
40602
+ return import("./index-BdNVOcCL.js").then((m2) => m2.go());
40597
40603
  case "java":
40598
- return import("./index-Dl8jeLrk.js").then((m2) => m2.java());
40604
+ return import("./index-DM2r-vGW.js").then((m2) => m2.java());
40599
40605
  case "kotlin":
40600
- return import("./index-Dl8jeLrk.js").then((m2) => m2.java());
40606
+ return import("./index-DM2r-vGW.js").then((m2) => m2.java());
40601
40607
  case "c":
40602
40608
  case "cpp":
40603
- return import("./index-Cuzbefg5.js").then((m2) => m2.cpp());
40609
+ return import("./index-BsoOL_wq.js").then((m2) => m2.cpp());
40604
40610
  case "php":
40605
- return import("./index-BIGELKaL.js").then((m2) => m2.php());
40611
+ return import("./index-BbjwIyTa.js").then((m2) => m2.php());
40606
40612
  // Legacy modes via StreamLanguage
40607
40613
  case "bash":
40608
40614
  case "fish":
@@ -49932,6 +49938,99 @@ function overrideChunkInline(state2, chunk, builder, gutterBuilder) {
49932
49938
  }
49933
49939
  return true;
49934
49940
  }
49941
+ const DIFF_MODE_KEY_PREFIX = "band:diff-mode:";
49942
+ const COMPARE_BRANCH_KEY_PREFIX = "band:diff-compare-branch:";
49943
+ const CHANGE_EVENT = "band:diff-target-changed";
49944
+ function readStoredDiffMode(workspaceId) {
49945
+ try {
49946
+ const v2 = localStorage.getItem(DIFF_MODE_KEY_PREFIX + workspaceId);
49947
+ if (v2 === "uncommitted" || v2 === "branch") return v2;
49948
+ } catch {
49949
+ }
49950
+ return "branch";
49951
+ }
49952
+ function readStoredCompareBranch(workspaceId) {
49953
+ try {
49954
+ return localStorage.getItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
49955
+ } catch {
49956
+ return null;
49957
+ }
49958
+ }
49959
+ function writeDiffMode(workspaceId, mode) {
49960
+ try {
49961
+ localStorage.setItem(DIFF_MODE_KEY_PREFIX + workspaceId, mode);
49962
+ } catch {
49963
+ }
49964
+ }
49965
+ function writeCompareBranch(workspaceId, branch) {
49966
+ try {
49967
+ if (branch) {
49968
+ localStorage.setItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId, branch);
49969
+ } else {
49970
+ localStorage.removeItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
49971
+ }
49972
+ } catch {
49973
+ }
49974
+ }
49975
+ function dispatchChange(detail) {
49976
+ if (typeof window === "undefined") return;
49977
+ window.dispatchEvent(new CustomEvent(CHANGE_EVENT, { detail }));
49978
+ }
49979
+ function useDiffTarget(workspaceId) {
49980
+ const [diffMode, setDiffModeState] = reactExports.useState(() => readStoredDiffMode(workspaceId));
49981
+ const [compareBranch, setCompareBranchState] = reactExports.useState(
49982
+ () => readStoredCompareBranch(workspaceId)
49983
+ );
49984
+ const instanceId = reactExports.useId();
49985
+ reactExports.useEffect(() => {
49986
+ setDiffModeState(readStoredDiffMode(workspaceId));
49987
+ setCompareBranchState(readStoredCompareBranch(workspaceId));
49988
+ }, [workspaceId]);
49989
+ reactExports.useEffect(() => {
49990
+ const handler = (e2) => {
49991
+ const detail = e2.detail;
49992
+ if (!detail || detail.workspaceId !== workspaceId) return;
49993
+ if (detail.source && detail.source === instanceId) return;
49994
+ setDiffModeState(detail.diffMode);
49995
+ setCompareBranchState(detail.compareBranch);
49996
+ };
49997
+ window.addEventListener(CHANGE_EVENT, handler);
49998
+ return () => window.removeEventListener(CHANGE_EVENT, handler);
49999
+ }, [workspaceId, instanceId]);
50000
+ reactExports.useEffect(() => {
50001
+ try {
50002
+ localStorage.removeItem("band:diff-mode");
50003
+ } catch {
50004
+ }
50005
+ }, []);
50006
+ const setDiffMode = reactExports.useCallback(
50007
+ (mode) => {
50008
+ writeDiffMode(workspaceId, mode);
50009
+ setDiffModeState(mode);
50010
+ dispatchChange({
50011
+ workspaceId,
50012
+ diffMode: mode,
50013
+ compareBranch: readStoredCompareBranch(workspaceId),
50014
+ source: instanceId
50015
+ });
50016
+ },
50017
+ [workspaceId, instanceId]
50018
+ );
50019
+ const setCompareBranch = reactExports.useCallback(
50020
+ (branch) => {
50021
+ writeCompareBranch(workspaceId, branch);
50022
+ setCompareBranchState(branch);
50023
+ dispatchChange({
50024
+ workspaceId,
50025
+ diffMode: readStoredDiffMode(workspaceId),
50026
+ compareBranch: branch,
50027
+ source: instanceId
50028
+ });
50029
+ },
50030
+ [workspaceId, instanceId]
50031
+ );
50032
+ return { diffMode, compareBranch, setDiffMode, setCompareBranch };
50033
+ }
49935
50034
  const DEFAULT_SEARCH_OPTIONS = {
49936
50035
  caseSensitive: false,
49937
50036
  wholeWord: false,
@@ -50814,39 +50913,6 @@ function storeViewMode(mode) {
50814
50913
  } catch {
50815
50914
  }
50816
50915
  }
50817
- const DIFF_MODE_KEY = "band:diff-mode";
50818
- function getStoredDiffMode() {
50819
- try {
50820
- const v2 = localStorage.getItem(DIFF_MODE_KEY);
50821
- if (v2 === "uncommitted" || v2 === "branch") return v2;
50822
- } catch {
50823
- }
50824
- return "branch";
50825
- }
50826
- function storeDiffMode(mode) {
50827
- try {
50828
- localStorage.setItem(DIFF_MODE_KEY, mode);
50829
- } catch {
50830
- }
50831
- }
50832
- const COMPARE_BRANCH_KEY_PREFIX = "band:diff-compare-branch:";
50833
- function getStoredCompareBranch(workspaceId) {
50834
- try {
50835
- return localStorage.getItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
50836
- } catch {
50837
- return null;
50838
- }
50839
- }
50840
- function storeCompareBranch(workspaceId, branch) {
50841
- try {
50842
- if (branch) {
50843
- localStorage.setItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId, branch);
50844
- } else {
50845
- localStorage.removeItem(COMPARE_BRANCH_KEY_PREFIX + workspaceId);
50846
- }
50847
- } catch {
50848
- }
50849
- }
50850
50916
  const UNCOMMITTED_VALUE = "__uncommitted__";
50851
50917
  const EXPAND_ALL_KEY = "band:diff-expand-all";
50852
50918
  function getStoredExpandAll() {
@@ -51431,13 +51497,10 @@ function DiffView({
51431
51497
  const expandedFilesRef = reactExports.useRef(/* @__PURE__ */ new Set());
51432
51498
  const prevFingerprintRef = reactExports.useRef("");
51433
51499
  const [viewMode, setViewModeState] = reactExports.useState(getStoredViewMode);
51434
- const [diffMode, setDiffModeState] = reactExports.useState(getStoredDiffMode);
51435
51500
  const [expandAll, setExpandAllState] = reactExports.useState(getStoredExpandAll);
51436
- const [compareBranch, setCompareBranchState] = reactExports.useState(
51437
- () => getStoredCompareBranch(workspaceId)
51438
- );
51501
+ const { diffMode, compareBranch, setDiffMode, setCompareBranch } = useDiffTarget(workspaceId);
51439
51502
  const [availableBranches, setAvailableBranches] = reactExports.useState(() => {
51440
- const stored = getStoredCompareBranch(workspaceId);
51503
+ const stored = readStoredCompareBranch(workspaceId);
51441
51504
  return stored ? [stored] : [];
51442
51505
  });
51443
51506
  const [availableDefaultBranch, setAvailableDefaultBranch] = reactExports.useState(null);
@@ -51447,20 +51510,8 @@ function DiffView({
51447
51510
  setViewModeState(mode);
51448
51511
  storeViewMode(mode);
51449
51512
  }, []);
51450
- const setDiffMode = reactExports.useCallback((mode) => {
51451
- setDiffModeState(mode);
51452
- storeDiffMode(mode);
51453
- }, []);
51454
- const setCompareBranch = reactExports.useCallback(
51455
- (branch) => {
51456
- setCompareBranchState(branch);
51457
- storeCompareBranch(workspaceId, branch);
51458
- },
51459
- [workspaceId]
51460
- );
51461
51513
  reactExports.useEffect(() => {
51462
- const stored = getStoredCompareBranch(workspaceId);
51463
- setCompareBranchState(stored);
51514
+ const stored = readStoredCompareBranch(workspaceId);
51464
51515
  setAvailableBranches(stored ? [stored] : []);
51465
51516
  setAvailableDefaultBranch(null);
51466
51517
  }, [workspaceId]);
@@ -52791,6 +52842,15 @@ const FileBrowser = reactExports.forwardRef(function FileBrowser2({
52791
52842
  reactExports.useEffect(() => {
52792
52843
  fetchDir("");
52793
52844
  }, [fetchDir]);
52845
+ reactExports.useEffect(() => {
52846
+ if (!adapter2.subscribeFileChanges) return;
52847
+ const unsubscribe = adapter2.subscribeFileChanges(workspaceId, (changedPath) => {
52848
+ const cache = getCachedContents(workspaceId);
52849
+ if (!cache.has(changedPath)) return;
52850
+ void fetchDir(changedPath, { force: true });
52851
+ });
52852
+ return unsubscribe;
52853
+ }, [adapter2, workspaceId, fetchDir]);
52794
52854
  const prevSelectedRef = reactExports.useRef(void 0);
52795
52855
  reactExports.useEffect(() => {
52796
52856
  if (!selectedFile || selectedFile === prevSelectedRef.current) {
@@ -60732,6 +60792,47 @@ class WebDashboardAdapter {
60732
60792
  }
60733
60793
  });
60734
60794
  }
60795
+ subscribeFileChanges(workspaceId, handler) {
60796
+ let active = true;
60797
+ let currentSub = null;
60798
+ let reconnectTimer = null;
60799
+ let attempt = 0;
60800
+ const MAX_BACKOFF_MS = 3e4;
60801
+ const handleDisconnect = () => {
60802
+ currentSub = null;
60803
+ if (active && !reconnectTimer) {
60804
+ const delay = Math.min(2 ** attempt * 500, MAX_BACKOFF_MS);
60805
+ attempt += 1;
60806
+ reconnectTimer = setTimeout(() => {
60807
+ reconnectTimer = null;
60808
+ if (active) connect();
60809
+ }, delay);
60810
+ }
60811
+ };
60812
+ const connect = () => {
60813
+ currentSub = this.trpc.workspace.fileChanges.subscribe(
60814
+ { workspaceId },
60815
+ {
60816
+ onData: (data) => {
60817
+ attempt = 0;
60818
+ handler(data.path);
60819
+ },
60820
+ onStopped: handleDisconnect,
60821
+ onError: handleDisconnect
60822
+ }
60823
+ );
60824
+ };
60825
+ connect();
60826
+ return () => {
60827
+ active = false;
60828
+ if (reconnectTimer) {
60829
+ clearTimeout(reconnectTimer);
60830
+ reconnectTimer = null;
60831
+ }
60832
+ currentSub?.unsubscribe();
60833
+ currentSub = null;
60834
+ };
60835
+ }
60735
60836
  async checkHooks() {
60736
60837
  return await this.trpc.hooks.check.query();
60737
60838
  }
@@ -61415,10 +61516,10 @@ function parseWorkspaceFromPath(pathname) {
61415
61516
  return match ? decodeURIComponent(match[1]) : null;
61416
61517
  }
61417
61518
  const state$1 = /* @__PURE__ */ new Map();
61418
- const listeners = /* @__PURE__ */ new Map();
61519
+ const listeners$1 = /* @__PURE__ */ new Map();
61419
61520
  const DEFAULT = { wsActive: true };
61420
61521
  function notify(workspaceId) {
61421
- const set2 = listeners.get(workspaceId);
61522
+ const set2 = listeners$1.get(workspaceId);
61422
61523
  if (set2) {
61423
61524
  for (const cb of set2) cb();
61424
61525
  }
@@ -61432,20 +61533,20 @@ function setWsActive(workspaceId, wsActive) {
61432
61533
  function getWsActive(workspaceId) {
61433
61534
  return state$1.get(workspaceId)?.wsActive ?? DEFAULT.wsActive;
61434
61535
  }
61435
- function subscribe$1(workspaceId, cb) {
61436
- let set2 = listeners.get(workspaceId);
61536
+ function subscribe$2(workspaceId, cb) {
61537
+ let set2 = listeners$1.get(workspaceId);
61437
61538
  if (!set2) {
61438
61539
  set2 = /* @__PURE__ */ new Set();
61439
- listeners.set(workspaceId, set2);
61540
+ listeners$1.set(workspaceId, set2);
61440
61541
  }
61441
61542
  set2.add(cb);
61442
61543
  return () => {
61443
61544
  set2.delete(cb);
61444
- if (set2.size === 0) listeners.delete(workspaceId);
61545
+ if (set2.size === 0) listeners$1.delete(workspaceId);
61445
61546
  };
61446
61547
  }
61447
61548
  function useWsActive(workspaceId) {
61448
- const sub2 = reactExports.useCallback((cb) => subscribe$1(workspaceId, cb), [workspaceId]);
61549
+ const sub2 = reactExports.useCallback((cb) => subscribe$2(workspaceId, cb), [workspaceId]);
61449
61550
  const snap = reactExports.useCallback(() => getWsActive(workspaceId), [workspaceId]);
61450
61551
  return reactExports.useSyncExternalStore(sub2, snap);
61451
61552
  }
@@ -116032,7 +116133,7 @@ const invert = (color2, weight = 100) => {
116032
116133
  const {
116033
116134
  entries,
116034
116135
  setPrototypeOf,
116035
- isFrozen,
116136
+ isFrozen: isFrozen$1,
116036
116137
  getPrototypeOf,
116037
116138
  getOwnPropertyDescriptor
116038
116139
  } = Object;
@@ -116115,7 +116216,7 @@ function addToSet(set2, array2) {
116115
116216
  if (typeof element2 === "string") {
116116
116217
  const lcElement = transformCaseFunc(element2);
116117
116218
  if (lcElement !== element2) {
116118
- if (!isFrozen(array2)) {
116219
+ if (!isFrozen$1(array2)) {
116119
116220
  array2[l4] = lcElement;
116120
116221
  }
116121
116222
  element2 = lcElement;
@@ -136202,12 +136303,12 @@ var registerDefaultLayoutLoaders = /* @__PURE__ */ __name(() => {
136202
136303
  registerLayoutLoaders([
136203
136304
  {
136204
136305
  name: "dagre",
136205
- loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-nML2GoFm.js"), "loader")
136306
+ loader: /* @__PURE__ */ __name(async () => await import("./dagre-6UL2VRFP-DWcFImvS.js"), "loader")
136206
136307
  },
136207
136308
  ...[
136208
136309
  {
136209
136310
  name: "cose-bilkent",
136210
- loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-CaxWP-ls.js"), "loader")
136311
+ loader: /* @__PURE__ */ __name(async () => await import("./cose-bilkent-S5V4N54A-DQl5SFk6.js"), "loader")
136211
136312
  }
136212
136313
  ]
136213
136314
  ]);
@@ -136646,7 +136747,7 @@ var detector = /* @__PURE__ */ __name((txt) => {
136646
136747
  return /^\s*C4Context|C4Container|C4Component|C4Dynamic|C4Deployment/.test(txt);
136647
136748
  }, "detector");
136648
136749
  var loader = /* @__PURE__ */ __name(async () => {
136649
- const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-45kx6aRF.js");
136750
+ const { diagram: diagram2 } = await import("./c4Diagram-YG6GDRKO-DI4Ztwr3.js");
136650
136751
  return { id, diagram: diagram2 };
136651
136752
  }, "loader");
136652
136753
  var plugin = {
@@ -136663,7 +136764,7 @@ var detector2 = /* @__PURE__ */ __name((txt, config2) => {
136663
136764
  return /^\s*graph/.test(txt);
136664
136765
  }, "detector");
136665
136766
  var loader2 = /* @__PURE__ */ __name(async () => {
136666
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-9EzGsZaT.js");
136767
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CzcX8svk.js");
136667
136768
  return { id: id2, diagram: diagram2 };
136668
136769
  }, "loader");
136669
136770
  var plugin2 = {
@@ -136686,7 +136787,7 @@ var detector3 = /* @__PURE__ */ __name((txt, config2) => {
136686
136787
  return /^\s*flowchart/.test(txt);
136687
136788
  }, "detector");
136688
136789
  var loader3 = /* @__PURE__ */ __name(async () => {
136689
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-9EzGsZaT.js");
136790
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CzcX8svk.js");
136690
136791
  return { id: id3, diagram: diagram2 };
136691
136792
  }, "loader");
136692
136793
  var plugin3 = {
@@ -136700,7 +136801,7 @@ var detector4 = /* @__PURE__ */ __name((txt) => {
136700
136801
  return /^\s*erDiagram/.test(txt);
136701
136802
  }, "detector");
136702
136803
  var loader4 = /* @__PURE__ */ __name(async () => {
136703
- const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-D8492WtW.js");
136804
+ const { diagram: diagram2 } = await import("./erDiagram-Q2GNP2WA-BYLAWy_j.js");
136704
136805
  return { id: id4, diagram: diagram2 };
136705
136806
  }, "loader");
136706
136807
  var plugin4 = {
@@ -136714,7 +136815,7 @@ var detector5 = /* @__PURE__ */ __name((txt) => {
136714
136815
  return /^\s*gitGraph/.test(txt);
136715
136816
  }, "detector");
136716
136817
  var loader5 = /* @__PURE__ */ __name(async () => {
136717
- const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-CnBNPMun.js");
136818
+ const { diagram: diagram2 } = await import("./gitGraphDiagram-V2S2FVAM-DlgLrJB0.js");
136718
136819
  return { id: id5, diagram: diagram2 };
136719
136820
  }, "loader");
136720
136821
  var plugin5 = {
@@ -136728,7 +136829,7 @@ var detector6 = /* @__PURE__ */ __name((txt) => {
136728
136829
  return /^\s*gantt/.test(txt);
136729
136830
  }, "detector");
136730
136831
  var loader6 = /* @__PURE__ */ __name(async () => {
136731
- const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-DXT8NWPe.js");
136832
+ const { diagram: diagram2 } = await import("./ganttDiagram-JELNMOA3-Dxwzox2R.js");
136732
136833
  return { id: id6, diagram: diagram2 };
136733
136834
  }, "loader");
136734
136835
  var plugin6 = {
@@ -136742,7 +136843,7 @@ var detector7 = /* @__PURE__ */ __name((txt) => {
136742
136843
  return /^\s*info/.test(txt);
136743
136844
  }, "detector");
136744
136845
  var loader7 = /* @__PURE__ */ __name(async () => {
136745
- const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-7CfAt4Uh.js");
136846
+ const { diagram: diagram2 } = await import("./infoDiagram-HS3SLOUP-QMxyRHM5.js");
136746
136847
  return { id: id7, diagram: diagram2 };
136747
136848
  }, "loader");
136748
136849
  var info = {
@@ -136755,7 +136856,7 @@ var detector8 = /* @__PURE__ */ __name((txt) => {
136755
136856
  return /^\s*pie/.test(txt);
136756
136857
  }, "detector");
136757
136858
  var loader8 = /* @__PURE__ */ __name(async () => {
136758
- const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-Cn9i98AK.js");
136859
+ const { diagram: diagram2 } = await import("./pieDiagram-ADFJNKIX-6xe9bPcx.js");
136759
136860
  return { id: id8, diagram: diagram2 };
136760
136861
  }, "loader");
136761
136862
  var pie = {
@@ -136768,7 +136869,7 @@ var detector9 = /* @__PURE__ */ __name((txt) => {
136768
136869
  return /^\s*quadrantChart/.test(txt);
136769
136870
  }, "detector");
136770
136871
  var loader9 = /* @__PURE__ */ __name(async () => {
136771
- const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-BIqkmSwk.js");
136872
+ const { diagram: diagram2 } = await import("./quadrantDiagram-AYHSOK5B-DrjB4XQc.js");
136772
136873
  return { id: id9, diagram: diagram2 };
136773
136874
  }, "loader");
136774
136875
  var plugin7 = {
@@ -136782,7 +136883,7 @@ var detector10 = /* @__PURE__ */ __name((txt) => {
136782
136883
  return /^\s*xychart(-beta)?/.test(txt);
136783
136884
  }, "detector");
136784
136885
  var loader10 = /* @__PURE__ */ __name(async () => {
136785
- const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-BRlE_l5B.js");
136886
+ const { diagram: diagram2 } = await import("./xychartDiagram-PRI3JC2R-qDOKCR8M.js");
136786
136887
  return { id: id10, diagram: diagram2 };
136787
136888
  }, "loader");
136788
136889
  var plugin8 = {
@@ -136796,7 +136897,7 @@ var detector11 = /* @__PURE__ */ __name((txt) => {
136796
136897
  return /^\s*requirement(Diagram)?/.test(txt);
136797
136898
  }, "detector");
136798
136899
  var loader11 = /* @__PURE__ */ __name(async () => {
136799
- const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-DCovbx84.js");
136900
+ const { diagram: diagram2 } = await import("./requirementDiagram-UZGBJVZJ-BQUraj5G.js");
136800
136901
  return { id: id11, diagram: diagram2 };
136801
136902
  }, "loader");
136802
136903
  var plugin9 = {
@@ -136810,7 +136911,7 @@ var detector12 = /* @__PURE__ */ __name((txt) => {
136810
136911
  return /^\s*sequenceDiagram/.test(txt);
136811
136912
  }, "detector");
136812
136913
  var loader12 = /* @__PURE__ */ __name(async () => {
136813
- const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-BkT1dO7h.js");
136914
+ const { diagram: diagram2 } = await import("./sequenceDiagram-WL72ISMW-Bh5Gu2_v.js");
136814
136915
  return { id: id12, diagram: diagram2 };
136815
136916
  }, "loader");
136816
136917
  var plugin10 = {
@@ -136827,7 +136928,7 @@ var detector13 = /* @__PURE__ */ __name((txt, config2) => {
136827
136928
  return /^\s*classDiagram/.test(txt);
136828
136929
  }, "detector");
136829
136930
  var loader13 = /* @__PURE__ */ __name(async () => {
136830
- const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-89eor2RH.js");
136931
+ const { diagram: diagram2 } = await import("./classDiagram-2ON5EDUG-CtbqESgu.js");
136831
136932
  return { id: id13, diagram: diagram2 };
136832
136933
  }, "loader");
136833
136934
  var plugin11 = {
@@ -136844,7 +136945,7 @@ var detector14 = /* @__PURE__ */ __name((txt, config2) => {
136844
136945
  return /^\s*classDiagram-v2/.test(txt);
136845
136946
  }, "detector");
136846
136947
  var loader14 = /* @__PURE__ */ __name(async () => {
136847
- const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-89eor2RH.js");
136948
+ const { diagram: diagram2 } = await import("./classDiagram-v2-WZHVMYZB-CtbqESgu.js");
136848
136949
  return { id: id14, diagram: diagram2 };
136849
136950
  }, "loader");
136850
136951
  var plugin12 = {
@@ -136861,7 +136962,7 @@ var detector15 = /* @__PURE__ */ __name((txt, config2) => {
136861
136962
  return /^\s*stateDiagram/.test(txt);
136862
136963
  }, "detector");
136863
136964
  var loader15 = /* @__PURE__ */ __name(async () => {
136864
- const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-BJ70j0rR.js");
136965
+ const { diagram: diagram2 } = await import("./stateDiagram-FKZM4ZOC-BUasl40g.js");
136865
136966
  return { id: id15, diagram: diagram2 };
136866
136967
  }, "loader");
136867
136968
  var plugin13 = {
@@ -136881,7 +136982,7 @@ var detector16 = /* @__PURE__ */ __name((txt, config2) => {
136881
136982
  return false;
136882
136983
  }, "detector");
136883
136984
  var loader16 = /* @__PURE__ */ __name(async () => {
136884
- const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-ju1h0Bq1.js");
136985
+ const { diagram: diagram2 } = await import("./stateDiagram-v2-4FDKWEC3-BL56MbOT.js");
136885
136986
  return { id: id16, diagram: diagram2 };
136886
136987
  }, "loader");
136887
136988
  var plugin14 = {
@@ -136895,7 +136996,7 @@ var detector17 = /* @__PURE__ */ __name((txt) => {
136895
136996
  return /^\s*journey/.test(txt);
136896
136997
  }, "detector");
136897
136998
  var loader17 = /* @__PURE__ */ __name(async () => {
136898
- const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-BSONqKAA.js");
136999
+ const { diagram: diagram2 } = await import("./journeyDiagram-XKPGCS4Q-BoA6PlCZ.js");
136899
137000
  return { id: id17, diagram: diagram2 };
136900
137001
  }, "loader");
136901
137002
  var plugin15 = {
@@ -136962,7 +137063,7 @@ var detector18 = /* @__PURE__ */ __name((txt, config2 = {}) => {
136962
137063
  return false;
136963
137064
  }, "detector");
136964
137065
  var loader18 = /* @__PURE__ */ __name(async () => {
136965
- const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-9EzGsZaT.js");
137066
+ const { diagram: diagram2 } = await import("./flowDiagram-NV44I4VS-CzcX8svk.js");
136966
137067
  return { id: id18, diagram: diagram2 };
136967
137068
  }, "loader");
136968
137069
  var plugin16 = {
@@ -136976,7 +137077,7 @@ var detector19 = /* @__PURE__ */ __name((txt) => {
136976
137077
  return /^\s*timeline/.test(txt);
136977
137078
  }, "detector");
136978
137079
  var loader19 = /* @__PURE__ */ __name(async () => {
136979
- const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-C3FJ_HU6.js");
137080
+ const { diagram: diagram2 } = await import("./timeline-definition-IT6M3QCI-oGfd7fF8.js");
136980
137081
  return { id: id19, diagram: diagram2 };
136981
137082
  }, "loader");
136982
137083
  var plugin17 = {
@@ -136990,7 +137091,7 @@ var detector20 = /* @__PURE__ */ __name((txt) => {
136990
137091
  return /^\s*mindmap/.test(txt);
136991
137092
  }, "detector");
136992
137093
  var loader20 = /* @__PURE__ */ __name(async () => {
136993
- const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-BWCUtjdH.js");
137094
+ const { diagram: diagram2 } = await import("./mindmap-definition-VGOIOE7T-BZA0jx43.js");
136994
137095
  return { id: id20, diagram: diagram2 };
136995
137096
  }, "loader");
136996
137097
  var plugin18 = {
@@ -137004,7 +137105,7 @@ var detector21 = /* @__PURE__ */ __name((txt) => {
137004
137105
  return /^\s*kanban/.test(txt);
137005
137106
  }, "detector");
137006
137107
  var loader21 = /* @__PURE__ */ __name(async () => {
137007
- const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-D6yZMd8l.js");
137108
+ const { diagram: diagram2 } = await import("./kanban-definition-3W4ZIXB7-r6KtKaEH.js");
137008
137109
  return { id: id21, diagram: diagram2 };
137009
137110
  }, "loader");
137010
137111
  var plugin19 = {
@@ -137018,7 +137119,7 @@ var detector22 = /* @__PURE__ */ __name((txt) => {
137018
137119
  return /^\s*sankey(-beta)?/.test(txt);
137019
137120
  }, "detector");
137020
137121
  var loader22 = /* @__PURE__ */ __name(async () => {
137021
- const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-D235svhJ.js");
137122
+ const { diagram: diagram2 } = await import("./sankeyDiagram-TZEHDZUN-qdkVPLba.js");
137022
137123
  return { id: id22, diagram: diagram2 };
137023
137124
  }, "loader");
137024
137125
  var plugin20 = {
@@ -137032,7 +137133,7 @@ var detector23 = /* @__PURE__ */ __name((txt) => {
137032
137133
  return /^\s*packet(-beta)?/.test(txt);
137033
137134
  }, "detector");
137034
137135
  var loader23 = /* @__PURE__ */ __name(async () => {
137035
- const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-BaL9LGkK.js");
137136
+ const { diagram: diagram2 } = await import("./diagram-S2PKOQOG-ZNcpDFrx.js");
137036
137137
  return { id: id23, diagram: diagram2 };
137037
137138
  }, "loader");
137038
137139
  var packet = {
@@ -137045,7 +137146,7 @@ var detector24 = /* @__PURE__ */ __name((txt) => {
137045
137146
  return /^\s*radar-beta/.test(txt);
137046
137147
  }, "detector");
137047
137148
  var loader24 = /* @__PURE__ */ __name(async () => {
137048
- const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-v8VJEGaP.js");
137149
+ const { diagram: diagram2 } = await import("./diagram-QEK2KX5R-Dc8wo9c1.js");
137049
137150
  return { id: id24, diagram: diagram2 };
137050
137151
  }, "loader");
137051
137152
  var radar = {
@@ -137058,7 +137159,7 @@ var detector25 = /* @__PURE__ */ __name((txt) => {
137058
137159
  return /^\s*block(-beta)?/.test(txt);
137059
137160
  }, "detector");
137060
137161
  var loader25 = /* @__PURE__ */ __name(async () => {
137061
- const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-CGmRuJNx.js");
137162
+ const { diagram: diagram2 } = await import("./blockDiagram-VD42YOAC-D1iPUb9l.js");
137062
137163
  return { id: id25, diagram: diagram2 };
137063
137164
  }, "loader");
137064
137165
  var plugin21 = {
@@ -137072,7 +137173,7 @@ var detector26 = /* @__PURE__ */ __name((txt) => {
137072
137173
  return /^\s*architecture/.test(txt);
137073
137174
  }, "detector");
137074
137175
  var loader26 = /* @__PURE__ */ __name(async () => {
137075
- const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-C0Hc_lzz.js");
137176
+ const { diagram: diagram2 } = await import("./architectureDiagram-VXUJARFQ-iVW_FQ4S.js");
137076
137177
  return { id: id26, diagram: diagram2 };
137077
137178
  }, "loader");
137078
137179
  var architecture = {
@@ -137086,7 +137187,7 @@ var detector27 = /* @__PURE__ */ __name((txt) => {
137086
137187
  return /^\s*treemap/.test(txt);
137087
137188
  }, "detector");
137088
137189
  var loader27 = /* @__PURE__ */ __name(async () => {
137089
- const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-DNGTWSIt.js");
137190
+ const { diagram: diagram2 } = await import("./diagram-PSM6KHXK-CAIVqsc3.js");
137090
137191
  return { id: id27, diagram: diagram2 };
137091
137192
  }, "loader");
137092
137193
  var treemap = {
@@ -154799,7 +154900,7 @@ var tn = f("block", "before:content-[counter(line)]", "before:inline-block", "be
154799
154900
  var et2 = ({ className: e2, language: t2, style: o3, isIncomplete: n2, ...s2 }) => jsxRuntimeExports.jsx("div", { className: f("my-4 flex w-full flex-col gap-2 rounded-xl border border-border bg-sidebar p-2", e2), "data-incomplete": n2 || void 0, "data-language": t2, "data-streamdown": "code-block", style: { contentVisibility: "auto", containIntrinsicSize: "auto 200px", ...o3 }, ...s2 });
154800
154901
  var Se = reactExports.createContext({ code: "" }), de = () => reactExports.useContext(Se);
154801
154902
  var ot2 = ({ language: e2 }) => jsxRuntimeExports.jsx("div", { className: "flex h-8 items-center text-muted-foreground text-xs", "data-language": e2, "data-streamdown": "code-block-header", children: jsxRuntimeExports.jsx("span", { className: "ml-1 font-mono lowercase", children: e2 }) });
154802
- var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-Cx9TQQOi.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
154903
+ var cn = /\n+$/, dn = reactExports.lazy(() => import("./highlighted-body-B3W2YXNL-DsSe47sR.js").then((e2) => ({ default: e2.HighlightedCodeBlockBody }))), rt = ({ code: e2, language: t2, className: o3, children: n2, isIncomplete: s2 = false, ...r2 }) => {
154803
154904
  let i2 = reactExports.useMemo(() => e2.replace(cn, ""), [e2]), c2 = reactExports.useMemo(() => ({ bg: "transparent", fg: "inherit", tokens: i2.split(`
154804
154905
  `).map((a2) => [{ content: a2, color: "inherit", bgColor: "transparent", htmlStyle: {}, offset: 0 }]) }), [i2]);
154805
154906
  return jsxRuntimeExports.jsx(Se.Provider, { value: { code: e2 }, children: jsxRuntimeExports.jsxs(et2, { isIncomplete: s2, language: t2, children: [jsxRuntimeExports.jsx(ot2, { 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, { className: o3, language: t2, result: c2, ...r2 }), children: jsxRuntimeExports.jsx(dn, { className: o3, code: i2, language: t2, raw: c2, ...r2 }) })] }) });
@@ -155121,7 +155222,7 @@ var Dt = ({ children: e2, className: t2, onDownload: o3, onError: n2 }) => {
155121
155222
  }, []), jsxRuntimeExports.jsxs("div", { className: "relative", ref: i2, children: [jsxRuntimeExports.jsx("button", { className: f("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: e2 != null ? e2 : jsxRuntimeExports.jsx(Z, { 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] });
155122
155223
  };
155123
155224
  var Vt = ({ children: e2, 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("w-full divide-y divide-border", t2), "data-streamdown": "table", ...n2, children: e2 }) })] });
155124
- var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-BaXUHzN6.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
155225
+ var Jn = reactExports.lazy(() => import("./mermaid-3ZIDBTTL-De3B4GT2.js").then((e2) => ({ default: e2.Mermaid }))), Kn = /language-([^\s]+)/;
155125
155226
  function ke(e2, t2) {
155126
155227
  if (!(e2 != null && e2.position || t2 != null && t2.position)) return true;
155127
155228
  if (!(e2 != null && e2.position && (t2 != null && t2.position))) return false;
@@ -155801,19 +155902,19 @@ function useFileTabs(workspaceId) {
155801
155902
  };
155802
155903
  }
155803
155904
  const DESKTOP_QUERY = "(min-width: 1024px)";
155804
- function subscribe(cb) {
155905
+ function subscribe$1(cb) {
155805
155906
  const mql = window.matchMedia(DESKTOP_QUERY);
155806
155907
  mql.addEventListener("change", cb);
155807
155908
  return () => mql.removeEventListener("change", cb);
155808
155909
  }
155809
- function getSnapshot() {
155910
+ function getSnapshot$1() {
155810
155911
  return window.matchMedia(DESKTOP_QUERY).matches;
155811
155912
  }
155812
155913
  function getServerSnapshot() {
155813
155914
  return false;
155814
155915
  }
155815
155916
  function useIsDesktop() {
155816
- return reactExports.useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
155917
+ return reactExports.useSyncExternalStore(subscribe$1, getSnapshot$1, getServerSnapshot);
155817
155918
  }
155818
155919
  function storageKey(workspaceId) {
155819
155920
  return `band-tab-state:${workspaceId}`;
@@ -157204,6 +157305,48 @@ function injectInitialUrls(layout, urls) {
157204
157305
  if (!changed) return layout;
157205
157306
  return { ...layout, panels: nextPanels };
157206
157307
  }
157308
+ let domOverlayCount = 0;
157309
+ let manualHoldCount = 0;
157310
+ const listeners = /* @__PURE__ */ new Set();
157311
+ let lastEmitted = false;
157312
+ function isFrozen() {
157313
+ return domOverlayCount + manualHoldCount > 0;
157314
+ }
157315
+ function emitIfChanged() {
157316
+ const next2 = isFrozen();
157317
+ if (next2 === lastEmitted) return;
157318
+ lastEmitted = next2;
157319
+ for (const l4 of listeners) l4();
157320
+ }
157321
+ function subscribe(l4) {
157322
+ listeners.add(l4);
157323
+ return () => {
157324
+ listeners.delete(l4);
157325
+ };
157326
+ }
157327
+ function getSnapshot() {
157328
+ return lastEmitted;
157329
+ }
157330
+ function useBrowserPaneFrozen() {
157331
+ return reactExports.useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
157332
+ }
157333
+ function acquireFreezeHold() {
157334
+ manualHoldCount += 1;
157335
+ emitIfChanged();
157336
+ let released = false;
157337
+ return () => {
157338
+ if (released) return;
157339
+ released = true;
157340
+ manualHoldCount = Math.max(0, manualHoldCount - 1);
157341
+ emitIfChanged();
157342
+ };
157343
+ }
157344
+ function useFreezeWhile(open2) {
157345
+ reactExports.useEffect(() => {
157346
+ if (!open2) return;
157347
+ return acquireFreezeHold();
157348
+ }, [open2]);
157349
+ }
157207
157350
  const DEFAULT_OPTIONS = {
157208
157351
  caseSensitive: false,
157209
157352
  wholeWord: false,
@@ -157358,10 +157501,52 @@ function useBrowserFindInPage({
157358
157501
  searchBarRef
157359
157502
  };
157360
157503
  }
157504
+ const AUTOCOMPLETE_DEBOUNCE_MS = 50;
157505
+ const AUTOCOMPLETE_BLUR_CLOSE_MS = 100;
157361
157506
  function useBrowserPaneControls(args) {
157362
- const { key: key2, keyName: keyName2, currentUrlRef, setInputUrl, inputUrl, onNavigate } = args;
157507
+ const { key: key2, keyName: keyName2, workspaceId, currentUrlRef, setInputUrl, inputUrl, onNavigate } = args;
157363
157508
  const find2 = useBrowserFindInPage({ key: key2, keyName: keyName2 });
157364
157509
  const addressInputFocusedRef = reactExports.useRef(false);
157510
+ const [autocompleteItems, setAutocompleteItems] = reactExports.useState([]);
157511
+ const [autocompleteIsOpen, setAutocompleteIsOpen] = reactExports.useState(false);
157512
+ const [autocompleteSelectedIndex, setAutocompleteSelectedIndex] = reactExports.useState(0);
157513
+ useFreezeWhile(autocompleteIsOpen);
157514
+ const closeAutocomplete = reactExports.useCallback(() => {
157515
+ setAutocompleteIsOpen(false);
157516
+ setAutocompleteItems([]);
157517
+ setAutocompleteSelectedIndex(0);
157518
+ }, []);
157519
+ reactExports.useEffect(() => {
157520
+ if (!addressInputFocusedRef.current) return;
157521
+ const trimmed = inputUrl.trim();
157522
+ if (trimmed === "") {
157523
+ closeAutocomplete();
157524
+ return;
157525
+ }
157526
+ if (trimmed === currentUrlRef.current.trim()) {
157527
+ closeAutocomplete();
157528
+ return;
157529
+ }
157530
+ let cancelled = false;
157531
+ const handle2 = setTimeout(() => {
157532
+ trpc.history.search.query({ workspaceId, query: trimmed, limit: 8 }).then((result) => {
157533
+ if (cancelled) return;
157534
+ if (result.entries.length === 0) {
157535
+ closeAutocomplete();
157536
+ return;
157537
+ }
157538
+ setAutocompleteItems(result.entries);
157539
+ setAutocompleteIsOpen(true);
157540
+ setAutocompleteSelectedIndex(0);
157541
+ }).catch(() => {
157542
+ if (!cancelled) closeAutocomplete();
157543
+ });
157544
+ }, AUTOCOMPLETE_DEBOUNCE_MS);
157545
+ return () => {
157546
+ cancelled = true;
157547
+ clearTimeout(handle2);
157548
+ };
157549
+ }, [inputUrl, workspaceId, closeAutocomplete, currentUrlRef]);
157365
157550
  const handleAddressFocus = reactExports.useCallback((e2) => {
157366
157551
  addressInputFocusedRef.current = true;
157367
157552
  e2.target.select();
@@ -157369,11 +157554,41 @@ function useBrowserPaneControls(args) {
157369
157554
  const handleAddressBlur = reactExports.useCallback(() => {
157370
157555
  addressInputFocusedRef.current = false;
157371
157556
  setInputUrl(currentUrlRef.current);
157372
- }, [currentUrlRef, setInputUrl]);
157557
+ setTimeout(() => {
157558
+ if (!addressInputFocusedRef.current) closeAutocomplete();
157559
+ }, AUTOCOMPLETE_BLUR_CLOSE_MS);
157560
+ }, [currentUrlRef, setInputUrl, closeAutocomplete]);
157373
157561
  const handleAddressKeyDown = reactExports.useCallback(
157374
157562
  (e2) => {
157563
+ if (autocompleteIsOpen) {
157564
+ if (e2.key === "ArrowDown") {
157565
+ e2.preventDefault();
157566
+ setAutocompleteSelectedIndex((i2) => Math.min(i2 + 1, autocompleteItems.length - 1));
157567
+ return;
157568
+ }
157569
+ if (e2.key === "ArrowUp") {
157570
+ e2.preventDefault();
157571
+ setAutocompleteSelectedIndex((i2) => Math.max(i2 - 1, 0));
157572
+ return;
157573
+ }
157574
+ if (e2.key === "Enter") {
157575
+ const selected = autocompleteItems[autocompleteSelectedIndex];
157576
+ if (selected) {
157577
+ e2.preventDefault();
157578
+ closeAutocomplete();
157579
+ onNavigate(selected.url);
157580
+ return;
157581
+ }
157582
+ }
157583
+ if (e2.key === "Escape") {
157584
+ e2.preventDefault();
157585
+ closeAutocomplete();
157586
+ return;
157587
+ }
157588
+ }
157375
157589
  if (e2.key === "Enter") {
157376
157590
  e2.preventDefault();
157591
+ closeAutocomplete();
157377
157592
  onNavigate(inputUrl);
157378
157593
  return;
157379
157594
  }
@@ -157386,7 +157601,16 @@ function useBrowserPaneControls(args) {
157386
157601
  });
157387
157602
  }
157388
157603
  },
157389
- [inputUrl, onNavigate, setInputUrl, currentUrlRef]
157604
+ [
157605
+ inputUrl,
157606
+ onNavigate,
157607
+ setInputUrl,
157608
+ currentUrlRef,
157609
+ autocompleteIsOpen,
157610
+ autocompleteItems,
157611
+ autocompleteSelectedIndex,
157612
+ closeAutocomplete
157613
+ ]
157390
157614
  );
157391
157615
  const handlePaneKeyDown = reactExports.useCallback(
157392
157616
  (e2) => {
@@ -157417,6 +157641,13 @@ function useBrowserPaneControls(args) {
157417
157641
  handleAddressKeyDown,
157418
157642
  handlePaneKeyDown,
157419
157643
  handleToggleDevTools,
157644
+ autocomplete: {
157645
+ isOpen: autocompleteIsOpen,
157646
+ items: autocompleteItems,
157647
+ selectedIndex: autocompleteSelectedIndex,
157648
+ close: closeAutocomplete,
157649
+ setSelectedIndex: setAutocompleteSelectedIndex
157650
+ },
157420
157651
  paneDataAttrs: {
157421
157652
  "data-band-browser-pane": "",
157422
157653
  "data-band-browser-pane-key": key2,
@@ -157424,6 +157655,111 @@ function useBrowserPaneControls(args) {
157424
157655
  }
157425
157656
  };
157426
157657
  }
157658
+ function waitForPaint() {
157659
+ return new Promise((resolve2) => {
157660
+ requestAnimationFrame(() => requestAnimationFrame(() => resolve2()));
157661
+ });
157662
+ }
157663
+ function useBrowserPaneFreeze(args) {
157664
+ const { created, visible, ipcKeyRef } = args;
157665
+ const frozen = useBrowserPaneFrozen();
157666
+ const [snapshot, setSnapshot] = reactExports.useState(null);
157667
+ const freezeAppliedRef = reactExports.useRef(false);
157668
+ reactExports.useEffect(() => {
157669
+ if (!isDesktop || !created) return;
157670
+ let cancelled = false;
157671
+ if (frozen) {
157672
+ if (!visible) return;
157673
+ const ipcKey = ipcKeyRef.current;
157674
+ (async () => {
157675
+ try {
157676
+ const dataUrl = await invoke("browser_capture_page", ipcKey);
157677
+ if (!cancelled && dataUrl) {
157678
+ reactDomExports.flushSync(() => setSnapshot(dataUrl));
157679
+ await waitForPaint();
157680
+ }
157681
+ } catch {
157682
+ }
157683
+ if (cancelled) return;
157684
+ freezeAppliedRef.current = true;
157685
+ invoke("browser_pause_media", ipcKey).catch(() => {
157686
+ });
157687
+ invoke("browser_hide", ipcKey).catch(() => {
157688
+ });
157689
+ })();
157690
+ } else {
157691
+ if (freezeAppliedRef.current) {
157692
+ freezeAppliedRef.current = false;
157693
+ const ipcKey = ipcKeyRef.current;
157694
+ invoke("browser_show", ipcKey).catch(() => {
157695
+ });
157696
+ invoke("browser_resume_media", ipcKey).catch(() => {
157697
+ });
157698
+ (async () => {
157699
+ await waitForPaint();
157700
+ if (!cancelled) setSnapshot(null);
157701
+ })();
157702
+ } else {
157703
+ setSnapshot(null);
157704
+ }
157705
+ }
157706
+ return () => {
157707
+ cancelled = true;
157708
+ };
157709
+ }, [frozen, created, visible, ipcKeyRef]);
157710
+ return { snapshot };
157711
+ }
157712
+ function AddressBarAutocomplete({ state: state2, onSelect }) {
157713
+ if (!state2.isOpen || state2.items.length === 0) return null;
157714
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
157715
+ "div",
157716
+ {
157717
+ className: "absolute top-full left-0 right-0 z-20 mx-2 mt-1 overflow-hidden rounded-md border border-border bg-popover shadow-md",
157718
+ onMouseDown: (e2) => {
157719
+ e2.preventDefault();
157720
+ },
157721
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { className: "max-h-80 overflow-y-auto py-1", children: state2.items.map((item, index2) => {
157722
+ const selected = index2 === state2.selectedIndex;
157723
+ return /* @__PURE__ */ jsxRuntimeExports.jsx("li", { children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
157724
+ "button",
157725
+ {
157726
+ type: "button",
157727
+ onMouseDown: (e2) => {
157728
+ e2.preventDefault();
157729
+ onSelect(item.url);
157730
+ state2.close();
157731
+ },
157732
+ onMouseEnter: () => state2.setSelectedIndex(index2),
157733
+ className: `flex w-full items-center gap-2 px-3 py-1.5 text-left text-sm transition-colors ${selected ? "bg-accent text-foreground" : "text-foreground hover:bg-accent/60"}`,
157734
+ children: [
157735
+ item.faviconUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(
157736
+ "img",
157737
+ {
157738
+ src: item.faviconUrl,
157739
+ alt: "",
157740
+ className: "size-4 shrink-0 rounded-sm",
157741
+ onError: (e2) => {
157742
+ e2.currentTarget.style.display = "none";
157743
+ }
157744
+ }
157745
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Globe, { className: "size-4 shrink-0 text-muted-foreground" }),
157746
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex min-w-0 flex-1 flex-col", children: [
157747
+ item.title ? /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate font-medium leading-tight", children: item.title }) : null,
157748
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
157749
+ "span",
157750
+ {
157751
+ className: `truncate text-xs leading-tight ${item.title ? "text-muted-foreground" : "text-foreground"}`,
157752
+ children: item.url
157753
+ }
157754
+ )
157755
+ ] })
157756
+ ]
157757
+ }
157758
+ ) }, item.id);
157759
+ }) })
157760
+ }
157761
+ );
157762
+ }
157427
157763
  function BrowserFindBar({ find: find2 }) {
157428
157764
  if (!find2.isOpen) return null;
157429
157765
  return /* @__PURE__ */ jsxRuntimeExports.jsx(
@@ -157443,6 +157779,215 @@ function BrowserFindBar({ find: find2 }) {
157443
157779
  }
157444
157780
  );
157445
157781
  }
157782
+ const SEARCH_DEBOUNCE_MS = 150;
157783
+ const LIST_LIMIT = 200;
157784
+ function groupByDay(entries2) {
157785
+ const groups = /* @__PURE__ */ new Map();
157786
+ const order2 = [];
157787
+ for (const entry of entries2) {
157788
+ const dayKey = dayKeyFor(entry.lastVisitedAt);
157789
+ let group = groups.get(dayKey);
157790
+ if (!group) {
157791
+ group = { label: labelFor(dayKey), entries: [] };
157792
+ groups.set(dayKey, group);
157793
+ order2.push(dayKey);
157794
+ }
157795
+ group.entries.push(entry);
157796
+ }
157797
+ return order2.map((k2) => groups.get(k2));
157798
+ }
157799
+ function dayKeyFor(ts) {
157800
+ const d2 = new Date(ts);
157801
+ const y3 = d2.getFullYear();
157802
+ const m2 = String(d2.getMonth() + 1).padStart(2, "0");
157803
+ const day = String(d2.getDate()).padStart(2, "0");
157804
+ return `${y3}-${m2}-${day}`;
157805
+ }
157806
+ function labelFor(dayKey) {
157807
+ const now2 = /* @__PURE__ */ new Date();
157808
+ const today = dayKeyFor(now2.getTime());
157809
+ const yesterdayDate = new Date(now2.getFullYear(), now2.getMonth(), now2.getDate() - 1);
157810
+ const yesterday = dayKeyFor(yesterdayDate.getTime());
157811
+ if (dayKey === today) return "Today";
157812
+ if (dayKey === yesterday) return "Yesterday";
157813
+ const [y3, m2, d2] = dayKey.split("-").map(Number);
157814
+ const date2 = new Date(y3, m2 - 1, d2);
157815
+ const daysSince = Math.floor((Date.now() - date2.getTime()) / (24 * 60 * 60 * 1e3));
157816
+ if (daysSince <= 7) {
157817
+ return date2.toLocaleDateString(void 0, { weekday: "long", month: "short", day: "numeric" });
157818
+ }
157819
+ return date2.toLocaleDateString(void 0, { year: "numeric", month: "short", day: "numeric" });
157820
+ }
157821
+ function timeFor(ts) {
157822
+ return new Date(ts).toLocaleTimeString(void 0, { hour: "numeric", minute: "2-digit" });
157823
+ }
157824
+ function HistoryPopover({ workspaceId, onNavigate }) {
157825
+ const searchId = reactExports.useId();
157826
+ const [open2, setOpen] = reactExports.useState(false);
157827
+ const [query, setQuery] = reactExports.useState("");
157828
+ const [entries2, setEntries] = reactExports.useState([]);
157829
+ const [loading, setLoading] = reactExports.useState(false);
157830
+ const [reloadKey, setReloadKey] = reactExports.useState(0);
157831
+ const refresh = reactExports.useCallback(() => {
157832
+ setReloadKey((k2) => k2 + 1);
157833
+ }, []);
157834
+ reactExports.useEffect(() => {
157835
+ if (!open2) return;
157836
+ let cancelled = false;
157837
+ setLoading(true);
157838
+ const trimmed = query.trim();
157839
+ const fire = () => {
157840
+ const promise = trimmed ? trpc.history.search.query({ workspaceId, query: trimmed, limit: 50 }) : trpc.history.list.query({ workspaceId, limit: LIST_LIMIT });
157841
+ promise.then((result) => {
157842
+ if (cancelled) return;
157843
+ setEntries(result.entries);
157844
+ }).catch(() => {
157845
+ if (!cancelled) setEntries([]);
157846
+ }).finally(() => {
157847
+ if (!cancelled) setLoading(false);
157848
+ });
157849
+ };
157850
+ const delay = trimmed ? SEARCH_DEBOUNCE_MS : 0;
157851
+ const handle2 = setTimeout(fire, delay);
157852
+ return () => {
157853
+ cancelled = true;
157854
+ clearTimeout(handle2);
157855
+ };
157856
+ }, [open2, query, workspaceId, reloadKey]);
157857
+ const groups = reactExports.useMemo(() => groupByDay(entries2), [entries2]);
157858
+ const handleNavigate = reactExports.useCallback(
157859
+ (url) => {
157860
+ onNavigate(url);
157861
+ setOpen(false);
157862
+ },
157863
+ [onNavigate]
157864
+ );
157865
+ const handleDelete2 = reactExports.useCallback(
157866
+ async (id28) => {
157867
+ await trpc.history.delete.mutate({ id: id28, workspaceId }).catch(() => {
157868
+ });
157869
+ refresh();
157870
+ },
157871
+ [refresh, workspaceId]
157872
+ );
157873
+ const handleClear = reactExports.useCallback(
157874
+ async (range2) => {
157875
+ await trpc.history.clear.mutate({ workspaceId, range: range2 }).catch(() => {
157876
+ });
157877
+ refresh();
157878
+ },
157879
+ [refresh, workspaceId]
157880
+ );
157881
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(Popover, { open: open2, onOpenChange: setOpen, children: [
157882
+ /* @__PURE__ */ jsxRuntimeExports.jsx(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsx(
157883
+ "button",
157884
+ {
157885
+ type: "button",
157886
+ className: "flex items-center justify-center rounded p-1.5 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
157887
+ title: "History",
157888
+ "aria-label": "Browser history",
157889
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(History, { className: "size-4" })
157890
+ }
157891
+ ) }),
157892
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
157893
+ PopoverContent,
157894
+ {
157895
+ align: "end",
157896
+ sideOffset: 6,
157897
+ className: "w-[440px] p-0",
157898
+ onOpenAutoFocus: (e2) => {
157899
+ e2.preventDefault();
157900
+ const input = document.getElementById(searchId);
157901
+ if (input) input.focus();
157902
+ },
157903
+ children: [
157904
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex items-center gap-2 border-b border-border px-3 py-2", children: [
157905
+ /* @__PURE__ */ jsxRuntimeExports.jsx(Search, { className: "size-4 shrink-0 text-muted-foreground" }),
157906
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
157907
+ "input",
157908
+ {
157909
+ id: searchId,
157910
+ type: "text",
157911
+ value: query,
157912
+ onChange: (e2) => setQuery(e2.target.value),
157913
+ placeholder: "Search history",
157914
+ className: "min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
157915
+ }
157916
+ )
157917
+ ] }),
157918
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "max-h-[420px] overflow-y-auto", children: loading && entries2.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: "Loading…" }) : groups.length === 0 ? /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "px-3 py-6 text-center text-sm text-muted-foreground", children: query ? "No matching history" : "No history yet" }) : groups.map((group) => /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
157919
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "sticky top-0 z-10 border-b border-border bg-popover px-3 py-1 text-xs font-medium text-muted-foreground", children: group.label }),
157920
+ /* @__PURE__ */ jsxRuntimeExports.jsx("ul", { children: group.entries.map((entry) => /* @__PURE__ */ jsxRuntimeExports.jsxs(
157921
+ "li",
157922
+ {
157923
+ className: "group relative flex min-w-0 items-center gap-2 py-1.5 pl-3 pr-2 hover:bg-accent/60",
157924
+ children: [
157925
+ entry.faviconUrl ? /* @__PURE__ */ jsxRuntimeExports.jsx(
157926
+ "img",
157927
+ {
157928
+ src: entry.faviconUrl,
157929
+ alt: "",
157930
+ className: "size-4 shrink-0 rounded-sm",
157931
+ onError: (e2) => {
157932
+ e2.currentTarget.style.display = "none";
157933
+ }
157934
+ }
157935
+ ) : /* @__PURE__ */ jsxRuntimeExports.jsx(Globe, { className: "size-4 shrink-0 text-muted-foreground" }),
157936
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
157937
+ "button",
157938
+ {
157939
+ type: "button",
157940
+ onClick: () => handleNavigate(entry.url),
157941
+ className: "flex min-w-0 flex-1 flex-col items-stretch gap-0.5 overflow-hidden pr-6 text-left",
157942
+ children: [
157943
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "block truncate text-sm font-medium leading-tight text-foreground", children: entry.title || entry.url }),
157944
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "flex min-w-0 items-baseline gap-2 leading-tight", children: [
157945
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "min-w-0 flex-1 truncate text-xs text-muted-foreground", children: entry.url }),
157946
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "shrink-0 text-[11px] text-muted-foreground tabular-nums", children: timeFor(entry.lastVisitedAt) })
157947
+ ] })
157948
+ ]
157949
+ }
157950
+ ),
157951
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
157952
+ "button",
157953
+ {
157954
+ type: "button",
157955
+ onClick: () => handleDelete2(entry.id),
157956
+ className: "absolute right-2 top-1/2 -translate-y-1/2 rounded p-0.5 text-muted-foreground opacity-0 transition-opacity hover:bg-destructive/10 hover:text-destructive group-hover:opacity-100",
157957
+ title: "Delete entry",
157958
+ "aria-label": "Delete entry",
157959
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Trash2, { className: "size-3.5" })
157960
+ }
157961
+ )
157962
+ ]
157963
+ },
157964
+ entry.id
157965
+ )) })
157966
+ ] }, group.label)) }),
157967
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "flex items-center justify-end border-t border-border px-3 py-2", children: /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenu, { children: [
157968
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
157969
+ "button",
157970
+ {
157971
+ type: "button",
157972
+ className: "flex items-center gap-1 rounded px-2 py-1 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
157973
+ children: [
157974
+ "Clear ",
157975
+ /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { className: "size-3" })
157976
+ ]
157977
+ }
157978
+ ) }),
157979
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownMenuContent, { align: "end", children: [
157980
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuItem, { onSelect: () => handleClear("hour"), children: "Last hour" }),
157981
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuItem, { onSelect: () => handleClear("day"), children: "Last 24 hours" }),
157982
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuItem, { onSelect: () => handleClear("week"), children: "Last week" }),
157983
+ /* @__PURE__ */ jsxRuntimeExports.jsx(DropdownMenuItem, { onSelect: () => handleClear("all"), children: "All time" })
157984
+ ] })
157985
+ ] }) })
157986
+ ]
157987
+ }
157988
+ )
157989
+ ] });
157990
+ }
157446
157991
  const DEFAULT_URL = "";
157447
157992
  const BLANK_URL = "about:blank";
157448
157993
  const faviconMap = /* @__PURE__ */ new Map();
@@ -157466,7 +158011,7 @@ function BrowserPaneComponent({
157466
158011
  params,
157467
158012
  api
157468
158013
  }) {
157469
- const { browserId, initialUrl } = params;
158014
+ const { browserId, initialUrl, workspaceId: workspaceIdParam } = params;
157470
158015
  const [currentUrl, setCurrentUrl] = reactExports.useState(() => initialUrl ?? DEFAULT_URL);
157471
158016
  const [inputUrl, setInputUrl] = reactExports.useState(() => initialUrl ?? DEFAULT_URL);
157472
158017
  const [loading, setLoading] = reactExports.useState(false);
@@ -157479,11 +158024,26 @@ function BrowserPaneComponent({
157479
158024
  browserIdRef.current = browserId;
157480
158025
  const currentUrlRef = reactExports.useRef(currentUrl);
157481
158026
  currentUrlRef.current = currentUrl;
158027
+ const [workspaceId, setWorkspaceId] = reactExports.useState(workspaceIdParam ?? "");
158028
+ const workspaceIdRef = reactExports.useRef(workspaceId);
158029
+ workspaceIdRef.current = workspaceId;
158030
+ const ipcKeyRef = reactExports.useRef({ browserId });
158031
+ ipcKeyRef.current = { browserId };
158032
+ const { snapshot } = useBrowserPaneFreeze({
158033
+ created,
158034
+ visible: api.isVisible && params.wsActive !== false,
158035
+ ipcKeyRef
158036
+ });
157482
158037
  const getBounds = reactExports.useCallback(() => {
157483
158038
  const el = placeholderRef.current;
157484
158039
  if (!el) return null;
157485
158040
  const rect2 = el.getBoundingClientRect();
157486
- return { x: rect2.left, y: rect2.top, width: rect2.width, height: rect2.height };
158041
+ return {
158042
+ x: rect2.left + 1,
158043
+ y: rect2.top,
158044
+ width: Math.max(0, rect2.width - 2),
158045
+ height: rect2.height
158046
+ };
157487
158047
  }, []);
157488
158048
  const invoke$1 = reactExports.useCallback(async (cmd2, args) => {
157489
158049
  if (!isDesktop) return;
@@ -157494,6 +158054,10 @@ function BrowserPaneComponent({
157494
158054
  let cancelled = false;
157495
158055
  trpc.browsers.get.query({ browserId }).then((result) => {
157496
158056
  if (cancelled) return;
158057
+ const ws = result.browser?.workspaceId;
158058
+ if (ws && !workspaceIdRef.current) {
158059
+ setWorkspaceId(ws);
158060
+ }
157497
158061
  const url = result.browser?.url;
157498
158062
  if (!url || url === "" || url === BLANK_URL) return;
157499
158063
  setCurrentUrl(url);
@@ -157574,11 +158138,21 @@ function BrowserPaneComponent({
157574
158138
  trpc.browsers.navigate.mutate({ browserId: browserIdRef.current, url }).catch(() => {
157575
158139
  });
157576
158140
  }, 500);
158141
+ let faviconForHistory;
157577
158142
  try {
157578
158143
  const origin = new URL(url).origin;
157579
- setFaviconUrl(browserIdRef.current, `${origin}/favicon.ico`);
158144
+ faviconForHistory = `${origin}/favicon.ico`;
158145
+ setFaviconUrl(browserIdRef.current, faviconForHistory);
157580
158146
  } catch {
157581
158147
  }
158148
+ if (!event.payload.loading && workspaceIdRef.current) {
158149
+ trpc.history.record.mutate({
158150
+ workspaceId: workspaceIdRef.current,
158151
+ url,
158152
+ faviconUrl: faviconForHistory
158153
+ }).catch(() => {
158154
+ });
158155
+ }
157582
158156
  });
157583
158157
  unlistenTitle = await listen(
157584
158158
  "browser-title-changed",
@@ -157586,6 +158160,15 @@ function BrowserPaneComponent({
157586
158160
  if (event.payload.browser_id !== browserIdRef.current) return;
157587
158161
  if (event.payload.title) {
157588
158162
  api.setTitle(event.payload.title);
158163
+ const url = currentUrlRef.current;
158164
+ if (url && url !== BLANK_URL && workspaceIdRef.current) {
158165
+ trpc.history.updateMeta.mutate({
158166
+ workspaceId: workspaceIdRef.current,
158167
+ url,
158168
+ title: event.payload.title
158169
+ }).catch(() => {
158170
+ });
158171
+ }
157589
158172
  }
157590
158173
  }
157591
158174
  );
@@ -157668,7 +158251,21 @@ function BrowserPaneComponent({
157668
158251
  const handleNavigate = reactExports.useCallback(
157669
158252
  async (rawUrl) => {
157670
158253
  let normalized = rawUrl.trim();
157671
- if (!normalized) return;
158254
+ if (!normalized) {
158255
+ setCurrentUrl("");
158256
+ setInputUrl("");
158257
+ setLoading(false);
158258
+ if (createdRef.current) {
158259
+ try {
158260
+ await invoke$1("browser_navigate", { browserId, url: BLANK_URL });
158261
+ } catch (e2) {
158262
+ console.error("browser_navigate failed:", e2);
158263
+ }
158264
+ } else {
158265
+ pendingNavRef.current = BLANK_URL;
158266
+ }
158267
+ return;
158268
+ }
157672
158269
  if (!normalized.startsWith("http://") && !normalized.startsWith("https://")) {
157673
158270
  if (normalized.includes(".") && !normalized.includes(" ")) {
157674
158271
  normalized = `https://${normalized}`;
@@ -157729,10 +158326,12 @@ function BrowserPaneComponent({
157729
158326
  handleAddressKeyDown,
157730
158327
  handlePaneKeyDown,
157731
158328
  handleToggleDevTools,
158329
+ autocomplete,
157732
158330
  paneDataAttrs
157733
158331
  } = useBrowserPaneControls({
157734
158332
  key: browserId,
157735
158333
  keyName: "browserId",
158334
+ workspaceId,
157736
158335
  currentUrlRef,
157737
158336
  setInputUrl,
157738
158337
  inputUrl,
@@ -157802,6 +158401,7 @@ function BrowserPaneComponent({
157802
158401
  "data-band-address-input": ""
157803
158402
  }
157804
158403
  ),
158404
+ workspaceId ? /* @__PURE__ */ jsxRuntimeExports.jsx(HistoryPopover, { workspaceId, onNavigate: handleNavigate }) : null,
157805
158405
  /* @__PURE__ */ jsxRuntimeExports.jsx(
157806
158406
  "button",
157807
158407
  {
@@ -157820,10 +158420,23 @@ function BrowserPaneComponent({
157820
158420
  animation: "browser-bar-slide 1.4s ease-in-out infinite"
157821
158421
  }
157822
158422
  }
157823
- ) })
158423
+ ) }),
158424
+ /* @__PURE__ */ jsxRuntimeExports.jsx(AddressBarAutocomplete, { state: autocomplete, onSelect: handleNavigate })
157824
158425
  ] }),
157825
158426
  /* @__PURE__ */ jsxRuntimeExports.jsx(BrowserFindBar, { find: find2 }),
157826
- /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: placeholderRef, className: "min-h-0 flex-1" })
158427
+ /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ref: placeholderRef, className: "relative min-h-0 flex-1", children: snapshot ? (
158428
+ // `object-contain object-top` — see the identical block in
158429
+ // `BrowserPanelComponent` for the DevTools-aware rationale.
158430
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
158431
+ "img",
158432
+ {
158433
+ src: snapshot,
158434
+ alt: "",
158435
+ className: "pointer-events-none absolute inset-0 size-full object-contain object-top",
158436
+ draggable: false
158437
+ }
158438
+ )
158439
+ ) : null })
157827
158440
  ] });
157828
158441
  }
157829
158442
  const freshBrowserIds = /* @__PURE__ */ new Set();
@@ -174111,7 +174724,7 @@ const PANEL_SHORTCUTS = {
174111
174724
  browser: "⇧⌘B"
174112
174725
  };
174113
174726
  const DockviewTerminalContainer = reactExports.lazy(
174114
- () => import("./DockviewTerminalContainer-C08cAuxR.js").then((m2) => ({
174727
+ () => import("./DockviewTerminalContainer-BBQnIZa3.js").then((m2) => ({
174115
174728
  default: m2.DockviewTerminalContainer
174116
174729
  }))
174117
174730
  );
@@ -174326,12 +174939,17 @@ const MainGroupRightActions = reactExports.memo(function MainGroupRightActions2(
174326
174939
  ] }) });
174327
174940
  });
174328
174941
  function useDiffFileCount(workspaceId, isActive) {
174942
+ const { diffMode, compareBranch } = useDiffTarget(workspaceId);
174329
174943
  const [count2, setCount] = reactExports.useState(0);
174330
174944
  reactExports.useEffect(() => {
174331
174945
  if (!isActive) return;
174332
174946
  let cancelled = false;
174333
174947
  const fetchCount = () => {
174334
- trpc.workspace.getDiffSummary.query({ workspaceId }).then((result) => {
174948
+ trpc.workspace.getDiffSummary.query({
174949
+ workspaceId,
174950
+ diffMode,
174951
+ compareBranch: compareBranch ?? void 0
174952
+ }).then((result) => {
174335
174953
  if (!cancelled) setCount(result.stats?.filesChanged ?? 0);
174336
174954
  }).catch(() => {
174337
174955
  });
@@ -174342,7 +174960,7 @@ function useDiffFileCount(workspaceId, isActive) {
174342
174960
  cancelled = true;
174343
174961
  clearInterval(interval2);
174344
174962
  };
174345
- }, [workspaceId, isActive]);
174963
+ }, [workspaceId, isActive, diffMode, compareBranch]);
174346
174964
  return count2;
174347
174965
  }
174348
174966
  const REQUIRED_PANEL_IDS = ["projects", "chat", "changes", "files", "terminal", "browser"];
@@ -175612,11 +176230,11 @@ function RootLayout() {
175612
176230
  ] })
175613
176231
  ] });
175614
176232
  }
175615
- const $$splitComponentImporter$7 = () => import("./index-BnbsIRq2.js");
176233
+ const $$splitComponentImporter$7 = () => import("./index-Do1Nx4aA.js");
175616
176234
  const Route$7 = createFileRoute("/")({
175617
176235
  component: lazyRouteComponent($$splitComponentImporter$7, "component")
175618
176236
  });
175619
- const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-Dzw4IQZA.js");
176237
+ const $$splitComponentImporter$6 = () => import("./workspace._workspaceId-DhJMpGAq.js");
175620
176238
  const Route$6 = createFileRoute("/workspace/$workspaceId")({
175621
176239
  component: lazyRouteComponent($$splitComponentImporter$6, "component")
175622
176240
  });
@@ -175635,11 +176253,11 @@ const FindInFileContext = reactExports.createContext({
175635
176253
  function useFindInFileContext() {
175636
176254
  return reactExports.useContext(FindInFileContext);
175637
176255
  }
175638
- const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-BSnuZ0EI.js");
176256
+ const $$splitComponentImporter$5 = () => import("./workspace._workspaceId.index-Cp3_jFDn.js");
175639
176257
  const Route$5 = createFileRoute("/workspace/$workspaceId/")({
175640
176258
  component: lazyRouteComponent($$splitComponentImporter$5, "component")
175641
176259
  });
175642
- const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-D3jJ3XMV.js");
176260
+ const $$splitComponentImporter$4 = () => import("./workspace._workspaceId.terminal-B5beQDh_.js");
175643
176261
  const Route$4 = createFileRoute("/workspace/$workspaceId/terminal")({
175644
176262
  component: lazyRouteComponent($$splitComponentImporter$4, "component")
175645
176263
  });
@@ -175647,15 +176265,15 @@ const $$splitComponentImporter$3 = () => import("./workspace._workspaceId.code-C
175647
176265
  const Route$3 = createFileRoute("/workspace/$workspaceId/code")({
175648
176266
  component: lazyRouteComponent($$splitComponentImporter$3, "component")
175649
176267
  });
175650
- const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-XtB3brY5.js");
176268
+ const $$splitComponentImporter$2 = () => import("./workspace._workspaceId.changes-5-0MP0m5.js");
175651
176269
  const Route$2 = createFileRoute("/workspace/$workspaceId/changes")({
175652
176270
  component: lazyRouteComponent($$splitComponentImporter$2, "component")
175653
176271
  });
175654
- const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-snQLg3f2.js");
176272
+ const $$splitComponentImporter$1 = () => import("./workspace._workspaceId.code.index-BepZ481b.js");
175655
176273
  const Route$1 = createFileRoute("/workspace/$workspaceId/code/")({
175656
176274
  component: lazyRouteComponent($$splitComponentImporter$1, "component")
175657
176275
  });
175658
- const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-Ta-O6sWR.js");
176276
+ const $$splitComponentImporter = () => import("./workspace._workspaceId.code._-BFbAz_ei.js");
175659
176277
  const Route2 = createFileRoute("/workspace/$workspaceId/code/$")({
175660
176278
  component: lazyRouteComponent($$splitComponentImporter, "component")
175661
176279
  });
@@ -175823,7 +176441,7 @@ export {
175823
176441
  withPath as ay,
175824
176442
  halfPi as az,
175825
176443
  useSettingsQuery as b,
175826
- ToolbarOverflowProvider as b$,
176444
+ ToolbarOverflowMenuItems as b$,
175827
176445
  commonDb_exports as b0,
175828
176446
  insertCluster as b1,
175829
176447
  insertNode as b2,
@@ -175834,124 +176452,129 @@ export {
175834
176452
  getSubGraphTitleMargins as b7,
175835
176453
  replaceIconSubstring as b8,
175836
176454
  decodeEntities as b9,
175837
- CompletionContext as bA,
175838
- EditorState as bB,
175839
- languageDataProp as bC,
175840
- LanguageDescription as bD,
175841
- ParseContext as bE,
175842
- bracketMatchingHandle as bF,
175843
- flatIndent as bG,
175844
- sublanguageProp as bH,
175845
- baseRest as bI,
175846
- isArrayLikeObject as bJ,
175847
- constant as bK,
175848
- isFunction as bL,
175849
- isEmpty as bM,
175850
- markers_default as bN,
175851
- clear2 as bO,
175852
- clear as bP,
175853
- clear$1 as bQ,
175854
- updateNodeBounds as bR,
175855
- setNodeElem as bS,
175856
- insertEdge as bT,
175857
- positionEdgeLabel as bU,
175858
- insertEdgeLabel as bV,
175859
- computeDimensionOfText as bW,
175860
- Ut$1 as bX,
175861
- Yt$1 as bY,
175862
- DashboardShell as bZ,
175863
- Qt$1 as b_,
176455
+ EditorState as bA,
176456
+ languageDataProp as bB,
176457
+ LanguageDescription as bC,
176458
+ ParseContext as bD,
176459
+ bracketMatchingHandle as bE,
176460
+ flatIndent as bF,
176461
+ sublanguageProp as bG,
176462
+ baseRest as bH,
176463
+ isArrayLikeObject as bI,
176464
+ constant as bJ,
176465
+ isFunction as bK,
176466
+ isEmpty as bL,
176467
+ markers_default as bM,
176468
+ clear2 as bN,
176469
+ clear as bO,
176470
+ clear$1 as bP,
176471
+ updateNodeBounds as bQ,
176472
+ setNodeElem as bR,
176473
+ insertEdge as bS,
176474
+ positionEdgeLabel as bT,
176475
+ insertEdgeLabel as bU,
176476
+ computeDimensionOfText as bV,
176477
+ Ut$1 as bW,
176478
+ Yt$1 as bX,
176479
+ DashboardShell as bY,
176480
+ Qt$1 as bZ,
176481
+ ToolbarOverflowProvider as b_,
175864
176482
  getStylesFromArray as ba,
175865
- openExternalUrl as bb,
175866
- SearchBar as bc,
175867
- MessageSquare as bd,
175868
- GitCompare as be,
175869
- FolderOpen as bf,
175870
- Route$6 as bg,
175871
- useDashboardStore as bh,
175872
- DesktopDragRegion as bi,
175873
- ArrowLeft as bj,
175874
- QuickOpenDialog as bk,
175875
- SearchFilesDialog as bl,
175876
- delimitedIndent as bm,
175877
- NodeWeakMap as bn,
175878
- snippetCompletion as bo,
175879
- Tag as bp,
175880
- parseMixed as bq,
175881
- EditorSelection as br,
175882
- countColumn as bs,
175883
- Prec as bt,
175884
- keymap as bu,
175885
- EditorView as bv,
175886
- Language as bw,
175887
- indentUnit as bx,
175888
- foldService as by,
175889
- defineLanguageFacet as bz,
176483
+ MessageSquare as bb,
176484
+ GitCompare as bc,
176485
+ FolderOpen as bd,
176486
+ Route$6 as be,
176487
+ useDashboardStore as bf,
176488
+ DesktopDragRegion as bg,
176489
+ ArrowLeft as bh,
176490
+ QuickOpenDialog as bi,
176491
+ SearchFilesDialog as bj,
176492
+ useDiffTarget as bk,
176493
+ delimitedIndent as bl,
176494
+ NodeWeakMap as bm,
176495
+ snippetCompletion as bn,
176496
+ Tag as bo,
176497
+ parseMixed as bp,
176498
+ EditorSelection as bq,
176499
+ countColumn as br,
176500
+ Prec as bs,
176501
+ keymap as bt,
176502
+ EditorView as bu,
176503
+ Language as bv,
176504
+ indentUnit as bw,
176505
+ foldService as bx,
176506
+ defineLanguageFacet as by,
176507
+ CompletionContext as bz,
175890
176508
  agentTypeSupportsSessionListing as c,
175891
- ToolbarOverflowMenuItems as c0,
175892
- DockviewWorkspaceLayout as c1,
175893
- array$2 as c2,
175894
- getUserDefinedConfig as c3,
175895
- getIconSVG as c4,
175896
- registerIconPacks as c5,
175897
- unknownIcon as c6,
175898
- isObject$1 as c7,
175899
- isIterateeCall as c8,
175900
- keysIn as c9,
175901
- merge$1 as cA,
175902
- isObjectLike as cB,
175903
- baseGetTag as cC,
175904
- Symbol$1 as cD,
175905
- arrayLikeKeys as cE,
175906
- baseKeys as cF,
175907
- memoize as cG,
175908
- isArguments as cH,
175909
- copyObject as cI,
175910
- getPrototype as cJ,
175911
- cloneArrayBuffer as cK,
175912
- cloneTypedArray as cL,
175913
- getTag as cM,
175914
- nodeUtil as cN,
175915
- copyArray as cO,
175916
- isBuffer as cP,
175917
- cloneBuffer as cQ,
175918
- initCloneObject as cR,
175919
- Stack as cS,
175920
- MapCache as cT,
175921
- Uint8Array$1 as cU,
175922
- isTypedArray as cV,
175923
- isLength as cW,
175924
- Set$1 as cX,
175925
- createAssigner as cY,
175926
- isPrototype as cZ,
175927
- router as c_,
175928
- eq as ca,
175929
- isArrayLike as cb,
175930
- isArray as cc,
175931
- identity as cd,
175932
- isIndex as ce,
175933
- assignValue as cf,
175934
- constant$2 as cg,
175935
- interpolateNumber as ch,
175936
- color as ci,
175937
- interpolateRgb as cj,
175938
- interpolateString as ck,
175939
- styles2String as cl,
175940
- isLabelStyle as cm,
175941
- Rgb as cn,
175942
- rgbConvert as co,
175943
- define as cp,
175944
- extend$4 as cq,
175945
- Color as cr,
175946
- nogamma as cs,
175947
- hue as ct,
175948
- dayjs2 as cu,
175949
- setToString as cv,
175950
- overRest as cw,
175951
- baseFor as cx,
175952
- baseAssignValue as cy,
175953
- baseUnary as cz,
176509
+ isLength as c$,
176510
+ DockviewWorkspaceLayout as c0,
176511
+ array$2 as c1,
176512
+ getUserDefinedConfig as c2,
176513
+ ArrowRight as c3,
176514
+ ArrowUp as c4,
176515
+ ArrowDown as c5,
176516
+ ClipboardPaste as c6,
176517
+ openExternalUrl as c7,
176518
+ SearchBar as c8,
176519
+ getIconSVG as c9,
176520
+ setToString as cA,
176521
+ overRest as cB,
176522
+ baseFor as cC,
176523
+ baseAssignValue as cD,
176524
+ baseUnary as cE,
176525
+ merge$1 as cF,
176526
+ isObjectLike as cG,
176527
+ baseGetTag as cH,
176528
+ Symbol$1 as cI,
176529
+ arrayLikeKeys as cJ,
176530
+ baseKeys as cK,
176531
+ memoize as cL,
176532
+ isArguments as cM,
176533
+ copyObject as cN,
176534
+ getPrototype as cO,
176535
+ cloneArrayBuffer as cP,
176536
+ cloneTypedArray as cQ,
176537
+ getTag as cR,
176538
+ nodeUtil as cS,
176539
+ copyArray as cT,
176540
+ isBuffer as cU,
176541
+ cloneBuffer as cV,
176542
+ initCloneObject as cW,
176543
+ Stack as cX,
176544
+ MapCache as cY,
176545
+ Uint8Array$1 as cZ,
176546
+ isTypedArray as c_,
176547
+ registerIconPacks as ca,
176548
+ unknownIcon as cb,
176549
+ isObject$1 as cc,
176550
+ isIterateeCall as cd,
176551
+ keysIn as ce,
176552
+ eq as cf,
176553
+ isArrayLike as cg,
176554
+ isArray as ch,
176555
+ identity as ci,
176556
+ isIndex as cj,
176557
+ assignValue as ck,
176558
+ constant$2 as cl,
176559
+ interpolateNumber as cm,
176560
+ color as cn,
176561
+ interpolateRgb as co,
176562
+ interpolateString as cp,
176563
+ styles2String as cq,
176564
+ isLabelStyle as cr,
176565
+ Rgb as cs,
176566
+ rgbConvert as ct,
176567
+ define as cu,
176568
+ extend$4 as cv,
176569
+ Color as cw,
176570
+ nogamma as cx,
176571
+ hue as cy,
176572
+ dayjs2 as cz,
175954
176573
  Route$4 as d,
176574
+ Set$1 as d0,
176575
+ createAssigner as d1,
176576
+ isPrototype as d2,
176577
+ router as d3,
175955
176578
  Route$2 as e,
175956
176579
  useNavigate as f,
175957
176580
  useDiffStatsContext as g,