@tencent-ai/agent-sdk 0.3.272 → 0.3.273

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 (142) hide show
  1. package/cli/CHANGELOG.md +17 -0
  2. package/cli/dist/codebuddy-headless.js +23 -23
  3. package/cli/dist/codebuddy-lite-wb.mjs +25 -25
  4. package/cli/dist/web-ui/assets/{CanvasPaneStandaloneView-DIn545ua.js → CanvasPaneStandaloneView-dyWkk4PZ.js} +1 -1
  5. package/cli/dist/web-ui/assets/{CanvasView-hnvCmPSV.js → CanvasView-DkhyH_1F.js} +1 -1
  6. package/cli/dist/web-ui/assets/{ChangesView-CtIfLmOc.js → ChangesView-CaHOWv2Z.js} +1 -1
  7. package/cli/dist/web-ui/assets/{DocsView-HBxNI97Q.js → DocsView-DiGzijj1.js} +1 -1
  8. package/cli/dist/web-ui/assets/{EditorView-DvwpvafF.js → EditorView-CUu0ekRP.js} +1 -1
  9. package/cli/dist/web-ui/assets/HoverHint-LssI0qEE.js +1 -0
  10. package/cli/dist/web-ui/assets/{KeybindingsView-B88MXgWr.js → KeybindingsView-DWUI1JpY.js} +1 -1
  11. package/cli/dist/web-ui/assets/{LogsView-DjF_5-Jd.js → LogsView-CEHx06nm.js} +1 -1
  12. package/cli/dist/web-ui/assets/{MetricsView-DImkPyZM.js → MetricsView-BZuMTUvp.js} +1 -1
  13. package/cli/dist/web-ui/assets/{PluginsView-2uPy3XvK.js → PluginsView-DPWy3FBq.js} +1 -1
  14. package/cli/dist/web-ui/assets/{RemoteControlView-kPy9GUlN.js → RemoteControlView-C1NdBeJw.js} +1 -1
  15. package/cli/dist/web-ui/assets/{SettingsView-CWRqL0oA.js → SettingsView-BJCKKgWV.js} +1 -1
  16. package/cli/dist/web-ui/assets/{SplitContainer-Dm1TgCaG.js → SplitContainer-BpAMtGSs.js} +1 -1
  17. package/cli/dist/web-ui/assets/{StatsView-okhz7xRe.js → StatsView-C-HzWG8r.js} +1 -1
  18. package/cli/dist/web-ui/assets/{TasksView-CICNpZ9N.js → TasksView-BnFNp4fv.js} +1 -1
  19. package/cli/dist/web-ui/assets/{TerminalPaneView-BFSDyqOG.js → TerminalPaneView-ALwEzbwH.js} +1 -1
  20. package/cli/dist/web-ui/assets/{TracesView-Burz_yeC.js → TracesView-t3wi7Kes.js} +1 -1
  21. package/cli/dist/web-ui/assets/{WorkersView-BqddwtUV.js → WorkersView-d7IuRA1g.js} +1 -1
  22. package/cli/dist/web-ui/assets/{abnfDiagram-O67JEVCF-33nTnJ2S.js → abnfDiagram-O67JEVCF-DlRX5Clr.js} +1 -1
  23. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-4118Qje4.js +1 -0
  24. package/cli/dist/web-ui/assets/{architectureDiagram-NJMV4G6O-FzGcEis5.js → architectureDiagram-NJMV4G6O-CvzoqRYj.js} +1 -1
  25. package/cli/dist/web-ui/assets/{blockDiagram-BEXU5L5S-DSx6FBt9.js → blockDiagram-BEXU5L5S-Dmo7FSbu.js} +1 -1
  26. package/cli/dist/web-ui/assets/{c4Diagram-YGBWAQC7-CF2SLLtS.js → c4Diagram-YGBWAQC7-D-rNXRo3.js} +1 -1
  27. package/cli/dist/web-ui/assets/{canvas-store-CTF2gk3l.js → canvas-store-C-T5LSPT.js} +1 -1
  28. package/cli/dist/web-ui/assets/channel-CzlEOE5Z.js +1 -0
  29. package/cli/dist/web-ui/assets/{chunk-3FUC2YCW-BSfDfOZA.js → chunk-3FUC2YCW-44Og191I.js} +1 -1
  30. package/cli/dist/web-ui/assets/{chunk-5DYCD2WN-Cw4uUnBv.js → chunk-5DYCD2WN-BMcJMkic.js} +1 -1
  31. package/cli/dist/web-ui/assets/{chunk-742MDFTN-Crj_2MBX.js → chunk-742MDFTN-C9Feux5F.js} +1 -1
  32. package/cli/dist/web-ui/assets/{chunk-7INBJB4K-CQzVOJr6.js → chunk-7INBJB4K-DFzU3uUY.js} +1 -1
  33. package/cli/dist/web-ui/assets/{chunk-7M6MHVWA-C0J56L0S.js → chunk-7M6MHVWA-BP_hs_Zh.js} +1 -1
  34. package/cli/dist/web-ui/assets/{chunk-7PRAP22T-CcX4ntNx.js → chunk-7PRAP22T-DhCB5ggZ.js} +1 -1
  35. package/cli/dist/web-ui/assets/{chunk-GTNCS2PH-UUmiv_WZ.js → chunk-GTNCS2PH-CgRQhFK-.js} +1 -1
  36. package/cli/dist/web-ui/assets/{chunk-GWA4HPMP-Cj2HSbZB.js → chunk-GWA4HPMP-DVQFlNrg.js} +1 -1
  37. package/cli/dist/web-ui/assets/{chunk-MBY4JIJT-BeWwQI_5.js → chunk-MBY4JIJT-ClsX9AV0.js} +1 -1
  38. package/cli/dist/web-ui/assets/{chunk-NETBCI7D-BXoE0wX2.js → chunk-NETBCI7D-Ok_AlsOs.js} +1 -1
  39. package/cli/dist/web-ui/assets/{chunk-O7XYJQB3-BkJCF4Hl.js → chunk-O7XYJQB3-BrUoQZlx.js} +1 -1
  40. package/cli/dist/web-ui/assets/{chunk-UA2S7LBM-BiEZLJdx.js → chunk-UA2S7LBM-CcImKd_4.js} +1 -1
  41. package/cli/dist/web-ui/assets/{chunk-WEXAMYUT-CVYmgL88.js → chunk-WEXAMYUT-DuMzoDxl.js} +1 -1
  42. package/cli/dist/web-ui/assets/{chunk-Z7XXMR3K-CNWwStqk.js → chunk-Z7XXMR3K-DNFavXEr.js} +1 -1
  43. package/cli/dist/web-ui/assets/{chunk-ZIGJFQKS-B2DOCzA_.js → chunk-ZIGJFQKS-C7Y7rwsz.js} +1 -1
  44. package/cli/dist/web-ui/assets/{classDiagram-v2-NBCMYWYE-Cg87JbAk.js → classDiagram-v2-NBCMYWYE-DtdQ5tsO.js} +1 -1
  45. package/cli/dist/web-ui/assets/{cssMode-CRv4tEjN.js → cssMode-DqpFSny4.js} +1 -1
  46. package/cli/dist/web-ui/assets/{cynefin-OW5HDTMX-CzRVph15.js → cynefin-OW5HDTMX-D-khVVHT.js} +1 -1
  47. package/cli/dist/web-ui/assets/{cynefinDiagram-VND7K2PF-CNBPnBJq.js → cynefinDiagram-VND7K2PF-D4SBf27A.js} +1 -1
  48. package/cli/dist/web-ui/assets/{dagre-6A5THRUB-Din1Iojv.js → dagre-6A5THRUB-DVdcjlZz.js} +1 -1
  49. package/cli/dist/web-ui/assets/{diagram-22UHCM2B-DYXr4hLX.js → diagram-22UHCM2B-N9qNPFGx.js} +1 -1
  50. package/cli/dist/web-ui/assets/{diagram-3UASUU5V-Q_QpApP2.js → diagram-3UASUU5V-BOrM2fJW.js} +1 -1
  51. package/cli/dist/web-ui/assets/{diagram-ATOU4E4O-B0cBUUAl.js → diagram-ATOU4E4O-BnlFCQjV.js} +1 -1
  52. package/cli/dist/web-ui/assets/{diagram-CDSNMT55-CqpNUvJt.js → diagram-CDSNMT55-Db7azPHL.js} +1 -1
  53. package/cli/dist/web-ui/assets/{diagram-MLGK6HIB-4ZDRCl9v.js → diagram-MLGK6HIB-Awr2vnnw.js} +1 -1
  54. package/cli/dist/web-ui/assets/{diagram-MPIPVDR6-t-N00d6f.js → diagram-MPIPVDR6-mMEzAWkb.js} +1 -1
  55. package/cli/dist/web-ui/assets/{ebnfDiagram-ZINNZB2B-DPflRvsG.js → ebnfDiagram-ZINNZB2B-DDcxPluf.js} +1 -1
  56. package/cli/dist/web-ui/assets/{editor-store-Bnu4yw4O.js → editor-store-BVy4DJoP.js} +1 -1
  57. package/cli/dist/web-ui/assets/{editor.main-BES2SJR1.js → editor.main-BPCdeUv0.js} +2 -2
  58. package/cli/dist/web-ui/assets/{elk-276RUBZZ-DMGj1qO4.js → elk-276RUBZZ-1ObyfSih.js} +1 -1
  59. package/cli/dist/web-ui/assets/{erDiagram-OPXOYQCR-DhPB_L2_.js → erDiagram-OPXOYQCR-85QZesG5.js} +1 -1
  60. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DzcNhtMG.js +1 -0
  61. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C7gZq6zs.js +1 -0
  62. package/cli/dist/web-ui/assets/{ganttDiagram-FUAMR5RP-BuNFnD8o.js → ganttDiagram-FUAMR5RP-CWKxEm2a.js} +1 -1
  63. package/cli/dist/web-ui/assets/{gitGraph-4MIJSDKK-DvwoNKUh.js → gitGraph-4MIJSDKK-Va9MqQP7.js} +1 -1
  64. package/cli/dist/web-ui/assets/{gitGraphDiagram-X574FWY7-CMVV2pN8.js → gitGraphDiagram-X574FWY7-CxDUZnv6.js} +1 -1
  65. package/cli/dist/web-ui/assets/{htmlMode-RPgBxfFT.js → htmlMode-CcmjLBK1.js} +1 -1
  66. package/cli/dist/web-ui/assets/index-BUL8iy6o.css +1 -0
  67. package/cli/dist/web-ui/assets/{index-BI5Z_cST.js → index-CcT-vg3O.js} +88 -88
  68. package/cli/dist/web-ui/assets/{info-A6RAGUB7-BkTwTvGc.js → info-A6RAGUB7-KlhzL_St.js} +1 -1
  69. package/cli/dist/web-ui/assets/{infoDiagram-VRGFBTTK-B9qpTfBj.js → infoDiagram-VRGFBTTK-COv85ylX.js} +1 -1
  70. package/cli/dist/web-ui/assets/{ishikawaDiagram-OU5B5YK6-CQYN-WJG.js → ishikawaDiagram-OU5B5YK6-B6LK0Dp0.js} +1 -1
  71. package/cli/dist/web-ui/assets/{journeyDiagram-ZHPQQLJL-Bhhb_1ix.js → journeyDiagram-ZHPQQLJL-7_gx-X1b.js} +1 -1
  72. package/cli/dist/web-ui/assets/{jsonMode-BmcV16dZ.js → jsonMode-DjeQHeec.js} +1 -1
  73. package/cli/dist/web-ui/assets/{kanban-definition-PNTS6WVX-2sWMVFOP.js → kanban-definition-PNTS6WVX-BuoY2Y9n.js} +1 -1
  74. package/cli/dist/web-ui/assets/{line-dyZ1bUO3.js → line-U1NpPN9F.js} +1 -1
  75. package/cli/dist/web-ui/assets/loader-circle-CbX-mRDA.js +1 -0
  76. package/cli/dist/web-ui/assets/{mermaid-parser.core-DCSwPqyy.js → mermaid-parser.core-CWo09gq-.js} +3 -3
  77. package/cli/dist/web-ui/assets/{mermaid.core-00vr9ukx.js → mermaid.core-ChqNs8I4.js} +4 -4
  78. package/cli/dist/web-ui/assets/{mindmap-definition-NLK3R4M7-CxnIh2aq.js → mindmap-definition-NLK3R4M7-CqCx8Oby.js} +1 -1
  79. package/cli/dist/web-ui/assets/{packet-AYTQ26CC-CMmSJjVl.js → packet-AYTQ26CC-7UVU8Lay.js} +1 -1
  80. package/cli/dist/web-ui/assets/{pegDiagram-GJSIUBJH-D4cdj7vr.js → pegDiagram-GJSIUBJH-BBJmKZzK.js} +1 -1
  81. package/cli/dist/web-ui/assets/{pie-WAS4IAKB-BesuGcpz.js → pie-WAS4IAKB-CWoQ0mW0.js} +1 -1
  82. package/cli/dist/web-ui/assets/{pieDiagram-5QR66LMP-BGskFaPj.js → pieDiagram-5QR66LMP-BbAkRCRb.js} +1 -1
  83. package/cli/dist/web-ui/assets/power-GWOABL7s.js +1 -0
  84. package/cli/dist/web-ui/assets/{quadrantDiagram-O4NWA36T-Bkvvkyx-.js → quadrantDiagram-O4NWA36T-Bcgl9szm.js} +1 -1
  85. package/cli/dist/web-ui/assets/{radar-RG4KPBEZ-Bj7UyIL-.js → radar-RG4KPBEZ-B0sDFvbJ.js} +1 -1
  86. package/cli/dist/web-ui/assets/{railroad-74A4TZTK-D2D2Em5k.js → railroad-74A4TZTK-C0abYTLu.js} +1 -1
  87. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-BhEAzBPy.js +1 -0
  88. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-BQshAF1C.js +1 -0
  89. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BhzEUl06.js +1 -0
  90. package/cli/dist/web-ui/assets/{railroadDiagram-XR7U4H2S-kdQApYhY.js → railroadDiagram-XR7U4H2S-Xdtrah7h.js} +1 -1
  91. package/cli/dist/web-ui/assets/{requirementDiagram-PLB6GJNP-BqBC3CXU.js → requirementDiagram-PLB6GJNP-Dmm_Xtdj.js} +1 -1
  92. package/cli/dist/web-ui/assets/{sankeyDiagram-IPEJSGJF-DVzCsx-G.js → sankeyDiagram-IPEJSGJF-BExPBGN1.js} +1 -1
  93. package/cli/dist/web-ui/assets/{sequenceDiagram-PO4LG4MO-yG_YwbRF.js → sequenceDiagram-PO4LG4MO-DjyWwluL.js} +1 -1
  94. package/cli/dist/web-ui/assets/{server-CnUlxMCB.js → server-BYrFK9uI.js} +1 -1
  95. package/cli/dist/web-ui/assets/{sidebar-store-BECS2ZHH.js → sidebar-store-bTJzulZp.js} +1 -1
  96. package/cli/dist/web-ui/assets/{stateDiagram-v2-GCMORJYK-CTmS4-3L.js → stateDiagram-v2-GCMORJYK-BKgBFDVg.js} +1 -1
  97. package/cli/dist/web-ui/assets/{swimlanes-2SLR337P-B8qdR1JY.js → swimlanes-2SLR337P-vVovFCNH.js} +1 -1
  98. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-DRp2HW8M.js +8 -0
  99. package/cli/dist/web-ui/assets/{terminal-store-C9T3TvZG.js → terminal-store-CCHDZeLq.js} +1 -1
  100. package/cli/dist/web-ui/assets/{theme-store-e89BUV83.js → theme-store-Cvh0uW_P.js} +1 -1
  101. package/cli/dist/web-ui/assets/{timeline-definition-EJHVYXUP-DBuW2EtA.js → timeline-definition-EJHVYXUP-DkMh7Iif.js} +1 -1
  102. package/cli/dist/web-ui/assets/{timer-hXQHNuTF.js → timer-BJmcyIbv.js} +1 -1
  103. package/cli/dist/web-ui/assets/{treeView-Q6P3EWNA-DZwOY3Vo.js → treeView-Q6P3EWNA-DkhVSMV1.js} +1 -1
  104. package/cli/dist/web-ui/assets/{treemap-WGGIJYW6-KzsufT0z.js → treemap-WGGIJYW6-CWTt7auX.js} +1 -1
  105. package/cli/dist/web-ui/assets/{triangle-alert-Bgaqn5eg.js → triangle-alert-CGAm2zgw.js} +1 -1
  106. package/cli/dist/web-ui/assets/{tsMode-DmXjlKw6.js → tsMode-92q32nO9.js} +1 -1
  107. package/cli/dist/web-ui/assets/use-i18n-pIrmaYmw.js +10 -0
  108. package/cli/dist/web-ui/assets/{usecaseDiagram-POWQR4AR-CMUsnek4.js → usecaseDiagram-POWQR4AR-Cmkzn47X.js} +1 -1
  109. package/cli/dist/web-ui/assets/{vennDiagram-UO4OBE2U-DfvnmEI-.js → vennDiagram-UO4OBE2U-krvLAVN1.js} +1 -1
  110. package/cli/dist/web-ui/assets/{wardley-WFR3VGLG-gMMXWBBC.js → wardley-WFR3VGLG-D5c13zW9.js} +1 -1
  111. package/cli/dist/web-ui/assets/{wardleyDiagram-VNRHLVJA-Dg12ciAd.js → wardleyDiagram-VNRHLVJA-CrnhHeux.js} +1 -1
  112. package/cli/dist/web-ui/assets/{workspace-dock-store-uPe33-_O.js → workspace-dock-store-DnFjd3tC.js} +1 -1
  113. package/cli/dist/web-ui/assets/{xychartDiagram-PMCCYNJV-DF6GiPla.js → xychartDiagram-PMCCYNJV-CUWbjTrP.js} +1 -1
  114. package/cli/dist/web-ui/assets/{zap-nSKVK-41.js → zap-BbNNHf5_.js} +1 -1
  115. package/cli/dist/web-ui/index.html +11 -11
  116. package/cli/dist/web-ui/sw.js +1 -1
  117. package/cli/dist-server/3163.codebuddy.js +1 -1
  118. package/cli/dist-server/3209.codebuddy.js +2 -2
  119. package/cli/dist-server/codebuddy.js +7 -7
  120. package/cli/dist-server/types/node/agent-home/agent-home-agent-create.d.ts +5 -0
  121. package/cli/dist-server/types/vendor/cbc-core/node/session/session-admission-service.d.ts +6 -0
  122. package/cli/dist-server/types/vendor/cbc-shared/node/model/model-errors.d.ts +5 -2
  123. package/cli/package.json +1 -1
  124. package/cli/product.cloudhosted.json +2 -2
  125. package/cli/product.internal.json +2 -2
  126. package/cli/product.ioa.json +2 -2
  127. package/cli/product.json +2 -2
  128. package/cli/product.selfhosted.json +2 -2
  129. package/package.json +1 -1
  130. package/cli/dist/web-ui/assets/HoverHint-D2G73lbr.js +0 -1
  131. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-DIJIAReN.js +0 -1
  132. package/cli/dist/web-ui/assets/channel-Oqc_5uJL.js +0 -1
  133. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-DhJKLgIL.js +0 -1
  134. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-C8j8-NKs.js +0 -1
  135. package/cli/dist/web-ui/assets/index-_kDd5loD.css +0 -1
  136. package/cli/dist/web-ui/assets/loader-circle-OavGeXCF.js +0 -1
  137. package/cli/dist/web-ui/assets/power-f1Ij2Msg.js +0 -1
  138. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-qU-l3gTW.js +0 -1
  139. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-Co7bnXh9.js +0 -1
  140. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-BE_5lCh8.js +0 -1
  141. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-B2Lj57-K.js +0 -8
  142. package/cli/dist/web-ui/assets/use-i18n-BvN1piiI.js +0 -10
@@ -1 +1 @@
1
- import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{W as t,_ as n,c as r,ct as i,i as a,ot as o,q as s,s as c,st as l,t as u,tt as d}from"./use-i18n-BvN1piiI.js";import{l as f,n as p,o as m,u as h}from"./markdown-DCKhnxE9.js";import{t as g}from"./theme-store-e89BUV83.js";import{n as _}from"./vendor-D7d5DZKE.js";import{c as v,f as y,i as b,p as x,s as S}from"./terminal-store-C9T3TvZG.js";import{_ as C,a as w,c as T,d as E,f as D,g as O,h as k,i as A,l as j,m as ee,n as M,o as N,p as P,r as F,s as I,t as L,v as R,y as z}from"./editor-store-Bnu4yw4O.js";import{t as B}from"./loader-circle-OavGeXCF.js";import{t as V}from"./workspace-dock-store-uPe33-_O.js";import{i as H,m as U,t as W}from"./composer-selection-ulujmy_S.js";import{t as G}from"./sidebar-store-BECS2ZHH.js";import{$t as K,A as te,At as q,B as ne,C as re,Cn as ie,Ct as J,Dt as ae,Et as oe,F as se,G as ce,H as le,Ht as ue,I as de,It as fe,Jt as Y,L as pe,M as me,Mt as X,N as he,Ot as ge,P as _e,Pt as ve,Qt as ye,R as be,Rt as xe,S as Se,St as Ce,Tn as we,Tt as Te,W as Ee,Xt as De,Yt as Oe,Zt as ke,_n as Ae,_t as je,c as Me,f as Ne,fn as Pe,gn as Fe,hn as Z,in as Ie,j as Le,k as Re,kt as ze,m as Be,nn as Ve,nt as He,o as Ue,on as We,p as Ge,pn as Ke,rn as qe,rt as Je,s as Ye,sn as Xe,st as Ze,tn as Qe,vn as $e,vt as et,wn as tt,xn as nt,z as rt,zt as it}from"./index-BI5Z_cST.js";import{r as at,t as ot}from"./TerminalPaneView-BFSDyqOG.js";import{t as st}from"./SplitContainer-Dm1TgCaG.js";var ct=a(`case-sensitive`,[[`path`,{d:`m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16`,key:`d5nyq2`}],[`path`,{d:`M22 9v7`,key:`pvm9v3`}],[`path`,{d:`M3.304 13h6.392`,key:`1q3zxz`}],[`circle`,{cx:`18.5`,cy:`12.5`,r:`3.5`,key:`z97x68`}]]),lt=a(`copy-minus`,[[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`,key:`1nscbv`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`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`}]]),ut=a(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),dt=a(`file-plus`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M9 15h6`,key:`cctwl0`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}]]),ft=a(`fold-vertical`,[[`path`,{d:`M12 22v-6`,key:`6o8u61`}],[`path`,{d:`M12 8V2`,key:`1wkif3`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}],[`path`,{d:`m15 19-3-3-3 3`,key:`e37ymu`}],[`path`,{d:`m15 5-3 3-3-3`,key:`19d6lf`}]]),pt=a(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),mt=a(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),ht=a(`panel-bottom`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),gt=a(`regex`,[[`path`,{d:`M17 3v10`,key:`15fgeh`}],[`path`,{d:`m12.67 5.5 8.66 5`,key:`1gpheq`}],[`path`,{d:`m12.67 10.5 8.66-5`,key:`1dkfa6`}],[`path`,{d:`M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z`,key:`swwfx4`}]]),_t=a(`tree-pine`,[[`path`,{d:`m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z`,key:`cpyugq`}],[`path`,{d:`M12 22v-3`,key:`kmzjlo`}]]),vt=a(`unfold-vertical`,[[`path`,{d:`M12 22v-6`,key:`6o8u61`}],[`path`,{d:`M12 8V2`,key:`1wkif3`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}],[`path`,{d:`m15 19-3 3-3-3`,key:`11eu04`}],[`path`,{d:`m15 5-3-3-3 3`,key:`itvq4r`}]]),yt=a(`whole-word`,[[`circle`,{cx:`7`,cy:`12`,r:`3`,key:`12clwm`}],[`path`,{d:`M10 9v6`,key:`17i7lo`}],[`circle`,{cx:`17`,cy:`12`,r:`3`,key:`gl7c2s`}],[`path`,{d:`M14 7v8`,key:`dl84cr`}],[`path`,{d:`M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1`,key:`lt2kga`}]]),Q=e(h(),1),$=f(),bt=(0,Q.createContext)(E);function xt({store:e,children:t}){return(0,$.jsx)(bt.Provider,{value:e,children:t})}function St(){return(0,Q.useContext)(bt)}function Ct(e){let t=St();return i(t,e??(e=>e))}function wt(e){let t=e.split(`/`).pop();return t&&t.trim()?t:e}function Tt(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)}function Et(e,t){Tt(e,new Blob([t],{type:`text/plain;charset=utf-8`}))}async function Dt(e,t){let n=await fetch(S(e),{headers:d()});if(!n.ok)throw Error(`HTTP ${n.status}`);Tt(t,await n.blob())}function Ot(e){let t=new Map;function n(e){let n=t.get(e);n!==void 0&&(clearTimeout(n),t.delete(e))}function r(r,i){n(r);let a=setTimeout(()=>{t.get(r)===a&&(t.delete(r),i())},e);t.set(r,a)}function i(){for(let e of t.values())clearTimeout(e);t.clear()}return{schedule:r,cancel:n,dispose:i}}function kt(e){return[...e].sort((e,t)=>e.type===`directory`&&t.type!==`directory`?-1:e.type!==`directory`&&t.type===`directory`?1:e.name.localeCompare(t.name,void 0,{numeric:!0,sensitivity:`base`}))}function At({filePath:e,rootPath:t,onSegmentClick:n,onOpenFile:r}){let{t:i}=u(),a=(e.startsWith(t)?e.slice(t.length).replace(/^\//,``):e).split(`/`).filter(Boolean),[o,s]=(0,Q.useState)(null),[c,l]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(-1),h=(0,Q.useRef)(null),g=(0,Q.useRef)(null),_=(0,Q.useCallback)(async(e,t)=>{let n=t.getBoundingClientRect();s({dirPath:e,anchorRect:n}),f(!0),l([]),m(-1);try{let t=await v(e);l(kt(t.map(e=>({name:e.name,path:e.path,type:e.type,symlinkTarget:e.symlinkTarget}))))}catch{l([])}f(!1)},[]),y=(0,Q.useCallback)(()=>{s(null),l([]),m(-1)},[]),b=(0,Q.useCallback)(e=>{e.type===`directory`?(n(e.path),y()):(r(e.path),y())},[n,r,y]);(0,Q.useEffect)(()=>{if(!o)return;let e=e=>{if(e.key===`Escape`){e.preventDefault(),y();return}e.key===`ArrowDown`?(e.preventDefault(),m(e=>e<c.length-1?e+1:0)):e.key===`ArrowUp`?(e.preventDefault(),m(e=>e>0?e-1:c.length-1)):e.key===`Enter`&&p>=0&&p<c.length&&(e.preventDefault(),b(c[p]))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o,c,p,y,b]),(0,Q.useEffect)(()=>{p>=0&&g.current&&g.current.querySelectorAll(`.breadcrumb-dropdown-item`)[p]?.scrollIntoView({block:`nearest`})},[p]);let x=(0,Q.useCallback)((e,t)=>{e.stopPropagation();let n=e.currentTarget;o&&o.dirPath===t?y():_(t,n)},[o,_,y]),S=(0,Q.useCallback)((e,t)=>{e.stopPropagation();let n=e.currentTarget;o&&o.dirPath===t?y():_(t,n)},[o,_,y]);return(0,$.jsxs)(`div`,{className:`editor-breadcrumbs`,children:[(0,$.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:(0,$.jsx)(`span`,{className:`editor-breadcrumb-segment ${a.length===0?`active`:``}`,onClick:e=>x(e,t),children:(0,$.jsx)(`span`,{children:t.split(`/`).pop()||t})})}),a.map((e,n)=>{let r=n===a.length-1,i=t+`/`+a.slice(0,n+1).join(`/`),s=n===0?t:t+`/`+a.slice(0,n).join(`/`);return(0,$.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{className:`editor-breadcrumb-separator`,children:(0,$.jsx)(Z,{size:10})}),(0,$.jsxs)(`span`,{className:`editor-breadcrumb-segment ${r?`active`:``} ${o?.dirPath===(r?s:i)?`dropdown-open`:``}`,onClick:e=>r?S(e,s):x(e,i),children:[r&&(0,$.jsx)(Ge,{name:e,type:`file`,size:14}),(0,$.jsx)(`span`,{style:r?{fontWeight:500}:void 0,children:e})]})]},i)}),o&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-overlay`,onClick:y}),(0,$.jsx)(`div`,{ref:h,className:`breadcrumb-dropdown`,style:{left:Math.min(o.anchorRect.left,window.innerWidth-260),top:o.anchorRect.bottom+2},children:d?(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-loading`,children:(0,$.jsx)(B,{size:14,className:`animate-spin`})}):c.length===0?(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-empty`,children:`Empty`}):(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-list`,ref:g,children:c.map((t,n)=>{let r=t.path===e;return(0,$.jsxs)(`div`,{className:`breadcrumb-dropdown-item ${r?`current`:``} ${n===p?`highlighted`:``}`,onClick:()=>b(t),children:[t.type===`directory`?(0,$.jsx)(Z,{size:12,style:{flexShrink:0,opacity:.5}}):(0,$.jsx)(Ge,{name:t.name,type:t.type,size:16}),(0,$.jsx)(`span`,{className:`breadcrumb-dropdown-item-name`,children:t.name}),(0,$.jsx)(Be,{entry:t,label:i(`editor.symbolicLink`),className:`ml-auto order-10`})]},t.path)})})})]})]})}var jt=_();function Mt(e,t,n){let r=n.getState().pendingReveal;if(!r||r.path!==t)return!1;n.getState().setPendingReveal(null);let{line:i,col:a,endLine:o,endCol:s,query:c}=r,l=e.getModel();if(!l)return!1;let u=a&&a>0?a:1;if(o&&o>=i){let t=Math.min(o,l.getLineCount()),n={startLineNumber:Math.min(i,t),startColumn:u,endLineNumber:t,endColumn:s&&s>0?s:l.getLineMaxColumn(t)};e.setSelection(n),e.revealRangeInCenter(n)}else e.revealLineInCenter(i),e.setPosition({lineNumber:i,column:u});if(e.focus(),c){let t=l.findMatches(c,!1,!1,!1,null,!0);if(t.length>0){let n=t.find(e=>e.range.startLineNumber>=i)||t[0];e.setSelection(n.range),e.revealRangeInCenter(n.range);let r=t.map(e=>({range:e.range,options:{className:`search-find-match`,overviewRuler:{color:`#d7ba7d`,position:1}}})),a=e.deltaDecorations([],r);setTimeout(()=>{try{e.deltaDecorations(a,[])}catch{}},5e3)}}return!0}function Nt({path:e,content:t,language:n,onContentChange:r,onSave:i,minimap:a=!0,onCursorChange:o}){let{t:s}=u(),c=St(),{resolved:l}=g(),d=(0,Q.useRef)(null),f=(0,Q.useRef)(o);f.current=o;let p=l===`dark`?`cbc-dark`:`cbc-light`,[m,h]=(0,Q.useState)(()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);(0,Q.useEffect)(()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>h(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[_,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(null),x=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{let e=!1;return Le().then(()=>{e||v(!0)}),()=>{e=!0}},[]),(0,Q.useEffect)(()=>{if(y)return he({onClose:()=>b(null),isInside:e=>_e(e,x.current)})},[y]),(0,Q.useLayoutEffect)(()=>{y&&x.current&&se(x.current,y.x+4,y.y+4)},[y]);let S=(0,$.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2`,style:{color:`var(--color-text-tertiary)`},children:[(0,$.jsx)(B,{size:16,className:`animate-spin`}),(0,$.jsx)(`span`,{style:{fontSize:13},children:s(`editor.loading`)})]}),C=(0,Q.useCallback)((e,t)=>{d.current=e,t.editor.defineTheme(`cbc-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#121314`}}),t.editor.defineTheme(`cbc-light`,{base:`vs`,inherit:!0,rules:[],colors:{"editor.background":`#ffffff`}}),t.editor.setTheme(p),e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KeyS,()=>{i()});let n=()=>{let t=f.current;if(!t)return;let n=e.getPosition(),r=e.getSelection();if(!n)return;let i=0,a=0;if(r&&!r.isEmpty()){let t=e.getModel();t&&(i=t.getValueInRange(r).length,a=Math.abs(r.endLineNumber-r.startLineNumber)+1)}t(n.lineNumber,n.column,i,a)};e.onDidChangeCursorPosition(n),e.onDidChangeCursorSelection(n),n()},[p,i]),w=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation();let t=d.current?.getSelection();b({x:e.clientX,y:e.clientY,hasSelection:!(!t||t.isEmpty())})},[]),T=(0,Q.useCallback)(()=>b(null),[]),E=(0,Q.useCallback)(()=>{let t=d.current,n=t?.getSelection();T(),t&&n&&!n.isEmpty()&&ce(W(e,{startLineNumber:n.startLineNumber,startColumn:n.startColumn,endLineNumber:n.endLineNumber,endColumn:n.endColumn}))},[T,e]),D=(0,Q.useCallback)(e=>{let t=d.current;T(),t&&(t.focus(),t.trigger(`keyboard`,e,void 0))},[T]),O=(0,Q.useCallback)(async()=>{let e=d.current;if(T(),e){e.focus();try{let t=await navigator.clipboard.readText();if(t){e.trigger(`keyboard`,`type`,{text:t});return}}catch{}e.trigger(`keyboard`,`editor.action.clipboardPasteAction`,void 0)}},[T]),k=(0,Q.useCallback)(e=>{e!==void 0&&r(e)},[r]),A=Ct(e=>e.pendingReveal);return(0,Q.useEffect)(()=>{if(!A||A.path!==e)return;if(d.current){Mt(d.current,e,c);return}let t=0,n=setInterval(()=>{t++,d.current?(Mt(d.current,e,c),clearInterval(n)):t>=50&&clearInterval(n)},50);return()=>clearInterval(n)},[e,A]),_?(0,$.jsxs)(`div`,{className:`h-full`,onContextMenu:w,children:[(0,$.jsx)(de,{path:me(e),height:`100%`,language:n,theme:p,value:t,onChange:k,onMount:C,loading:S,options:{fontSize:13,fontFamily:`'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace`,lineHeight:20,minimap:{enabled:a,maxColumn:80},scrollBeyondLastLine:!1,automaticLayout:!0,wordWrap:`off`,tabSize:4,insertSpaces:!0,renderWhitespace:`selection`,bracketPairColorization:{enabled:!0},padding:{top:8},smoothScrolling:!m,cursorBlinking:m?`solid`:`smooth`,cursorSmoothCaretAnimation:m?`off`:`on`,fixedOverflowWidgets:!0,contextmenu:!1}},e),y&&(0,jt.createPortal)((0,$.jsxs)(`div`,{ref:x,className:`editor-context-menu`,role:`menu`,style:{left:y.x,top:y.y},onPointerDown:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),children:[y.hasSelection&&(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:E,children:s(`editor.addToChat`)}),y.hasSelection&&(0,$.jsx)(`div`,{className:`editor-context-separator`,role:`separator`}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!y.hasSelection,onClick:()=>D(`editor.action.clipboardCutAction`),children:s(`editor.cut`)}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!y.hasSelection,onClick:()=>D(`editor.action.clipboardCopyAction`),children:s(`editor.copy`)}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{O().catch(()=>void 0)},children:s(`editor.paste`)})]}),document.body)]}):S}function Pt({tab:e,onRetry:t}){let{t:n}=u();return e.loadStatus===`ready`?null:e.loadStatus===`loading`?(0,$.jsxs)(`div`,{className:`editor-content-state`,role:`status`,"aria-live":`polite`,children:[(0,$.jsx)(`span`,{className:`editor-state-spinner`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.loadingFile`)})]}):e.loadStatus===`too-large`?(0,$.jsxs)(`div`,{className:`editor-content-state`,role:`status`,children:[(0,$.jsx)(ut,{className:`editor-content-state-icon`,size:24,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.fileTooLarge`)})]}):(0,$.jsxs)(`div`,{className:`editor-content-state editor-content-state-error`,role:`alert`,children:[(0,$.jsx)(Ke,{className:`editor-content-state-icon`,size:24,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.loadError`)}),e.loadError&&(0,$.jsx)(`span`,{className:`editor-content-state-reason`,children:e.loadError}),(0,$.jsx)(`button`,{type:`button`,className:`editor-content-state-retry`,onClick:()=>{Promise.resolve(t()).catch(()=>void 0)},children:n(`editor.retryLoad`)})]})}var Ft=l(e=>({progress:null,setProgress:t=>e({progress:t})}));async function It(e,t,n=!0){let r=D(),i={...r?{cwd:r}:{},...t},a=await o(`/api/v1/git/${e}`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify(i)},n?void 0:{maxRetries:0});if(!a.ok){let e=await a.json().catch(()=>({error:{message:a.statusText}}));throw Error(e.error?.message||`Git API error: ${a.status}`)}let s=await a.json();return s.data??s}async function Lt(){return It(`status`)}async function Rt(e,t){return(await It(`check-ignore`,{paths:e,cwd:t})).paths}async function zt(e){await It(`stage`,{paths:e},!1)}async function Bt(e){await It(`unstage`,{paths:e},!1)}async function Vt(e){return It(`commit`,{message:e},!1)}async function Ht(e,t){return It(`diff`,{path:e,staged:t})}async function Ut(e,t){await It(`discard`,{paths:e,useTrash:t},!1)}async function Wt(){return(await It(`branches`)).branches}async function Gt(e){return It(`branch/switch`,{name:e},!1)}async function Kt(e,t=!0){return It(`branch/create`,{name:e,checkout:t},!1)}async function qt(){return It(`push`,void 0,!1)}async function Jt(){return It(`pull`,void 0,!1)}async function Yt(e){return(await It(`log`,{limit:e})).entries}var Xt=3e3,Zt=15e3,Qt=3e4;function $t(e){return e.hidden?null:e.pushLive?Qt:e.focused?Xt:Zt}function en(e){return typeof document>`u`?{hidden:!1,focused:!0,pushLive:e}:{hidden:document.visibilityState===`hidden`,focused:typeof document.hasFocus!=`function`||document.hasFocus(),pushLive:e}}function tn(e,t){return t?!e||typeof e!=`object`?!1:e.repositoryRoot===t:!0}var nn=null,rn=null,an=!1,on=!1,sn=`app:git`,cn=!1,ln=!1,un=null;function dn(){return cn&&ln}function fn(){return en(dn())}function pn(){nn&&=(clearTimeout(nn),null)}function mn(){if(pn(),!an)return;let e=$t(fn());e!==null&&(nn=setTimeout(()=>{nn=null,xn.getState().refresh().finally(mn)},e))}function hn(e=!1){an&&(pn(),$t(fn())!==null&&xn.getState().refresh(e).finally(mn))}function gn(){if(un)return;let e=Ze(),t=n(null),r=()=>{let n=e.getStatus(t)===`ready`&&e.isStreamAligned(t,sn);n!==cn&&(cn=n,n?hn(!0):mn())},i=e.onAppEvent(e=>{e.baseUrl===t&&e.frame.streamId===sn&&e.frame.event.event===`changed`&&tn(e.frame.event.data,xn.getState().repositoryRoot)&&hn(!0)}),a=e.onAck(e=>{e.baseUrl===t&&r()}),o=e.onStatusChange(e=>{e===t&&r()});e.subscribeAppStream(t,sn),un=()=>{i(),a(),o(),e.unsubscribeAppStream(t,sn),cn=!1}}function _n(){hn()}function vn(){on||typeof window>`u`||typeof document>`u`||(document.addEventListener(`visibilitychange`,_n),window.addEventListener(`focus`,_n),window.addEventListener(`blur`,mn),on=!0)}function yn(){on&&=(document.removeEventListener(`visibilitychange`,_n),window.removeEventListener(`focus`,_n),window.removeEventListener(`blur`,mn),!1)}async function bn(){try{let e=await o(`/api/v1/info`,{headers:d()});if(e.ok){let t=await e.json();return(t.data??t).cwd||void 0}}catch{}}var xn=l((e,t)=>({isGitRepo:!1,repositoryRoot:null,loading:!1,error:null,files:[],currentBranch:null,ahead:0,behind:0,remote:null,branches:[],branchesLoading:!1,branchOperationInProgress:!1,repositoryOperationInProgress:!1,selectedFile:null,selectedFileStaged:!1,diffResult:null,diffLoading:!1,commitMessage:``,committing:!1,pushing:!1,pulling:!1,operationFeedback:null,refresh:async(n=!1)=>{if(rn&&(await rn,!n))return;let r=(async()=>{t().files.length===0&&!t().isGitRepo&&e({loading:!0,error:null});try{let t=await Lt();ln=t.pushUpdates===!0,e({isGitRepo:t.isGitRepo,repositoryRoot:t.repositoryRoot,files:t.files,currentBranch:t.branch,ahead:t.ahead,behind:t.behind,remote:t.remote,loading:!1})}catch(t){e({loading:!1,error:t.message})}})();rn=r;try{await r}finally{rn===r&&(rn=null)}},loadBranches:async()=>{e({branchesLoading:!0});try{e({branches:await Wt(),branchesLoading:!1})}catch{e({branchesLoading:!1})}},stageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await zt([n]),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`stage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},unstageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Bt([n]),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`unstage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},stageAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>!e.staged).map(e=>e.path);if(n.length!==0){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await zt(n),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`stage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},unstageAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>e.staged).map(e=>e.path);if(n.length!==0){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Bt(n),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`unstage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},discardFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Ut([n],!0),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`discard`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},discardAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>!e.staged);if(n.length===0)return;let r=n.filter(e=>e.status!==`untracked`),i=n.filter(e=>e.status===`untracked`);e({repositoryOperationInProgress:!0,operationFeedback:null});try{r.length>0&&await Ut(r.map(e=>e.path)),i.length>0&&await Ut(i.map(e=>e.path),!0),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`discard`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}},commit:async()=>{let n=t().commitMessage.trim();if(n&&!t().repositoryOperationInProgress){e({committing:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Vt(n);e({committing:!1,commitMessage:r.success?``:t().commitMessage,operationFeedback:{operation:`commit`,success:r.success,message:r.message}}),await t().refresh(!0)}catch(t){e({committing:!1,operationFeedback:{operation:`commit`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},push:async()=>{if(!t().repositoryOperationInProgress){e({pushing:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let n=await qt();e({pushing:!1,operationFeedback:{operation:`push`,success:n.success,message:n.message}}),await t().refresh(!0)}catch(t){e({pushing:!1,operationFeedback:{operation:`push`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},pull:async()=>{if(!t().repositoryOperationInProgress){e({pulling:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let n=await Jt();e({pulling:!1,operationFeedback:{operation:`pull`,success:n.success,message:n.message}}),await t().refresh(!0)}catch(t){e({pulling:!1,operationFeedback:{operation:`pull`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},switchBranch:async n=>{if(!(t().repositoryOperationInProgress||n===t().currentBranch)){e({branchOperationInProgress:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Gt(n);e({operationFeedback:{operation:`switchBranch`,success:r.success,message:r.message,target:n}}),await t().refresh(!0),r.success&&await t().loadBranches()}catch(t){e({operationFeedback:{operation:`switchBranch`,success:!1,message:t.message,target:n}})}finally{e({branchOperationInProgress:!1,repositoryOperationInProgress:!1})}}},createBranch:async n=>{if(!t().repositoryOperationInProgress){e({branchOperationInProgress:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Kt(n);e({operationFeedback:{operation:`createBranch`,success:r.success,message:r.message,target:n}}),await t().refresh(!0),await t().loadBranches()}catch(t){e({operationFeedback:{operation:`createBranch`,success:!1,message:t.message,target:n}})}finally{e({branchOperationInProgress:!1,repositoryOperationInProgress:!1})}}},selectFile:async(n,r)=>{if(t().selectedFile===n&&t().selectedFileStaged===r){e({selectedFile:null,diffResult:null,selectedFileStaged:!1});return}e({selectedFile:n,selectedFileStaged:r,diffLoading:!0,diffResult:null});try{e({diffResult:await Ht(n,r),diffLoading:!1})}catch{e({diffLoading:!1})}},clearSelection:()=>e({selectedFile:null,diffResult:null,selectedFileStaged:!1}),setCommitMessage:t=>e({commitMessage:t}),clearOperationMessage:()=>e({operationFeedback:null}),startWatching:async()=>{if(an)return;let e=D();e||=await bn(),e&&(an=!0,vn(),gn(),mn())},stopWatching:async()=>{an=!1,yn(),un?.(),un=null,pn()}}));P(async()=>{let e=xn.getState();await e.stopWatching(),e.refresh(),await e.startWatching()});function Sn(e,t){let n=e.toLowerCase();return/repository is busy|index\.lock|another git process|could not lock|unable to create.*\.lock/.test(n)?`ide.scm.error.busy`:/untracked working tree files.*overwritten/s.test(n)?`ide.scm.error.untrackedFiles`:/local changes.*overwritten|would be overwritten by (?:checkout|merge)/s.test(n)?`ide.scm.error.localChanges`:/resolve your current index first|unmerged files|you need to resolve your current index/.test(n)?`ide.scm.error.conflicts`:[`switchBranch`,`createBranch`].includes(t)&&/pathspec.*did not match|not a commit|unknown revision/.test(n)?`ide.scm.error.branchNotFound`:t===`switchBranch`?`ide.scm.error.switchFailed`:`ide.scm.error.operationFailed`}function Cn(e,t){if(![`switchBranch`,`createBranch`,`push`,`pull`].includes(t))return!1;let n=Sn(e,t);return n===`ide.scm.error.busy`||n===`ide.scm.error.switchFailed`||n===`ide.scm.error.operationFailed`}function wn({currentBranch:e,branches:t,branchesLoading:n,operationInProgress:r,onSwitch:i,onCreate:a,onLoadBranches:o,actions:s,defaultOpen:c,onClose:l}){let{t:d}=u(),[f,p]=(0,Q.useState)(c??!1),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(``),[v,y]=(0,Q.useState)(0),[b,x]=(0,Q.useState)(!1),S=(0,Q.useRef)(null),C=(0,Q.useCallback)(e=>{p(e),e||l?.()},[l]);(0,Q.useEffect)(()=>{let e=setTimeout(()=>_(m),100);return()=>clearTimeout(e)},[m]),(0,Q.useEffect)(()=>{f&&o()},[f,o]),(0,Q.useEffect)(()=>{f?setTimeout(()=>S.current?.focus(),0):(h(``),_(``),y(0),x(!1))},[f]);let{localBranches:w,remoteBranches:T,flatList:E}=(0,Q.useMemo)(()=>{let e;if(g){let n=[];for(let e of t){let t=Se(g,e.name);t.match&&n.push({...e,_score:t.score})}n.sort((e,t)=>t._score-e._score),e=n}else e=t;let n=e.filter(e=>!e.isRemote),r=e.filter(e=>e.isRemote);return{localBranches:n,remoteBranches:r,flatList:[...n,...r]}},[t,g]);(0,Q.useEffect)(()=>{y(0)},[m]);let D=(0,Q.useCallback)(e=>{r||(e.key===`Escape`?C(!1):e.key===`ArrowDown`?(e.preventDefault(),y(e=>Math.min(e+1,E.length-1))):e.key===`ArrowUp`?(e.preventDefault(),y(e=>Math.max(e-1,0))):e.key===`Enter`&&(e.preventDefault(),b?m.trim()&&(a(m.trim()),C(!1)):E[v]?(i(E[v].name),C(!1)):m.trim()&&E.length===0&&(a(m.trim()),C(!1))))},[E,v,b,m,i,a,r]),O=(0,Q.useCallback)(t=>{r||t===e||(i(t),C(!1))},[e,i,r]),k=(0,Q.useCallback)(()=>{x(!0),setTimeout(()=>S.current?.focus(),0)},[]),A=(0,Q.useCallback)(()=>{m.trim()&&(a(m.trim()),C(!1))},[m,a]);return(0,$.jsxs)(`div`,{className:`branch-picker`,children:[!c&&(0,$.jsxs)(`div`,{className:`branch-picker-header`,children:[(0,$.jsxs)(`button`,{className:`branch-picker-trigger`,onClick:()=>C(!f),title:e||``,disabled:r,children:[r?(0,$.jsx)(B,{size:14,className:`branch-picker-icon animate-spin`}):(0,$.jsx)(Y,{size:14,className:`branch-picker-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-name`,children:e||d(`ide.scm.noBranch`)})]}),s]}),f&&(0,jt.createPortal)((0,$.jsxs)(`div`,{onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[(0,$.jsx)(`div`,{className:`branch-picker-backdrop`,onClick:()=>C(!1)}),(0,$.jsxs)(`div`,{className:`branch-picker-dropdown`,onKeyDown:D,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:[(0,$.jsx)(`div`,{className:`branch-picker-search`,children:(0,$.jsx)(`input`,{ref:S,className:`branch-picker-input`,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:d(b?`ide.scm.newBranchPlaceholder`:`ide.scm.branchSearchPlaceholder`)})}),!b&&(0,$.jsx)(`div`,{className:`branch-picker-actions`,children:(0,$.jsxs)(`button`,{className:`branch-picker-action`,onClick:k,children:[(0,$.jsx)(X,{size:14}),(0,$.jsx)(`span`,{children:d(`ide.scm.createBranch`)})]})}),b&&(0,$.jsx)(`div`,{className:`branch-picker-actions`,children:(0,$.jsxs)(`button`,{className:`branch-picker-action branch-picker-action-confirm`,onClick:A,disabled:!m.trim(),children:[(0,$.jsx)(X,{size:14}),(0,$.jsx)(`span`,{children:m.trim()?d(`ide.scm.createBranchNamed`,{name:m.trim()}):d(`ide.scm.newBranchPlaceholder`)})]})}),E.length>0&&(0,$.jsx)(Dn,{flatList:E,localCount:w.length,remoteCount:T.length,currentBranch:e,highlightIdx:v,onSelect:O,onHover:y}),n&&E.length===0&&(0,$.jsx)(`div`,{className:`branch-picker-empty`,children:d(`ide.scm.loadingBranches`)}),!n&&E.length===0&&!b&&(0,$.jsx)(`div`,{className:`branch-picker-empty`,children:d(g?`ide.scm.noBranchMatch`:`ide.scm.noBranches`)})]})]}),document.body)]})}var Tn=40,En=24;function Dn({flatList:e,localCount:t,remoteCount:n,currentBranch:r,highlightIdx:i,onSelect:a,onHover:o}){let s=(0,Q.useRef)(null),[c,l]=(0,Q.useState)(0),[u,d]=(0,Q.useState)(300);(0,Q.useEffect)(()=>{let e=s.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e)d(t.contentRect.height)});return t.observe(e),()=>t.disconnect()},[]),(0,Q.useEffect)(()=>{let e=s.current;if(!e)return;let t=i*Tn;t<e.scrollTop?e.scrollTop=t:t+Tn>e.scrollTop+u&&(e.scrollTop=t+Tn-u)},[i,u]);let f=(0,Q.useCallback)(e=>{l(e.target.scrollTop)},[]),p=e.length*Tn+(t>0&&n>0?En:0)+(n>0?En:0),m=Math.max(0,Math.floor(c/Tn)-2),h=Math.min(e.length,Math.ceil((c+u)/Tn)+2),g=[];t>0&&n>0&&m===0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:En},children:`branches`},`label-local`));for(let s=m;s<h;s++){let c=e[s];c&&(s===t&&n>0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:En},children:`remotes`},`label-remote`)),g.push((0,$.jsx)(On,{branch:c,isCurrent:c.name===r,isHighlighted:s===i,dataIdx:s,onSelect:a,onHover:()=>o(s)},c.name)))}return(0,$.jsx)(`div`,{ref:s,className:`branch-picker-list`,onScroll:f,children:(0,$.jsx)(`div`,{style:{height:p,position:`relative`},children:(0,$.jsx)(`div`,{style:{position:`absolute`,top:m*Tn,left:0,right:0},children:g})})})}function On({branch:e,isCurrent:t,isHighlighted:n,dataIdx:r,onSelect:i,onHover:a}){return(0,$.jsxs)(`div`,{className:`branch-picker-item ${n?`highlighted`:``} ${t?`current`:``}`,"data-idx":r,onClick:()=>i(e.name),onMouseEnter:a,title:e.lastCommitMessage?`${e.name}\n${e.lastCommitAuthor} • ${e.lastCommitHash} • ${e.lastCommitMessage}`:e.name,children:[(0,$.jsxs)(`div`,{className:`branch-picker-item-main`,children:[(0,$.jsx)(Y,{size:14,className:`branch-picker-item-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-item-name`,children:e.name}),e.lastCommitDate&&(0,$.jsx)(`span`,{className:`branch-picker-item-date`,children:e.lastCommitDate}),t&&(0,$.jsx)($e,{size:14,className:`branch-picker-item-check`}),e.ahead||e.behind?(0,$.jsxs)(`span`,{className:`branch-picker-item-sync`,children:[e.ahead?`↑${e.ahead}`:``,e.behind?`↓${e.behind}`:``]}):null]}),e.lastCommitMessage&&(0,$.jsxs)(`div`,{className:`branch-picker-item-detail`,children:[(0,$.jsx)(`span`,{className:`branch-picker-item-author`,children:e.lastCommitAuthor}),(0,$.jsx)(`span`,{className:`branch-picker-item-separator`,children:`•`}),(0,$.jsx)(`span`,{className:`branch-picker-item-hash`,children:e.lastCommitHash}),(0,$.jsx)(`span`,{className:`branch-picker-item-separator`,children:`•`}),(0,$.jsx)(`span`,{className:`branch-picker-item-message`,children:e.lastCommitMessage})]})]})}var kn={image:`editor.view.image`,video:`editor.view.video`,svg:`editor.view.svg`,markdown:`editor.view.markdown`,html:`editor.view.html`,pdf:`editor.view.pdf`,binary:`editor.view.binary`};function An({language:e,cursorLine:t,cursorColumn:n,selectedCount:r,selectedLines:i,viewMode:a=`editor`,isDirty:o=!1,saveStatus:s=`idle`,saveError:c,imageInfo:l,zoom:d,extraRight:f}){let{t:p}=u();if(a===`image`||a===`svg`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{}),l&&(0,$.jsxs)(`span`,{className:`editor-statusbar-item`,children:[l.width,` × `,l.height]})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[d!=null&&(0,$.jsxs)(`span`,{className:`editor-statusbar-item`,children:[Math.round(d*100),`%`]}),(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:kn[a]?p(kn[a]):a}),f]})]});if(a!==`editor`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:kn[a]?p(kn[a]):a}),f]})]});let m=p(`editor.cursorPosition`,{line:t,col:n}),h=``;return r&&r>0&&(h=` (${r} ${p(`editor.selected`)})`,i&&i>1&&(h=` (${r} ${p(`editor.selected`)}, ${i} ${p(`editor.lines`)})`)),(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Mn,{isDirty:o,saveStatus:s,saveError:c,translate:p}),(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{}),(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-cursor`,children:[m,h]})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[e&&(0,$.jsx)(`span`,{className:`editor-statusbar-item editor-statusbar-language`,children:e}),f]})]})}function jn(){let{t:e}=u(),t=Ft(e=>e.progress);if(!t)return null;let n=t.totalBytes>0?Math.round(t.loadedBytes/t.totalBytes*100):Math.round(t.completed/t.total*100);return(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-upload`,role:`status`,"aria-live":`polite`,title:t.fileName,children:[(0,$.jsx)(`span`,{className:`editor-status-save-spinner`,"aria-hidden":`true`}),e(`editor.uploadStatus`,{percent:n})]})}function Mn({isDirty:e,saveStatus:t,saveError:n,translate:r}){return t===`saving`?(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-save`,role:`status`,children:[(0,$.jsx)(`span`,{className:`editor-status-save-spinner`,"aria-hidden":`true`}),r(`editor.saving`)]}):t===`error`?(0,$.jsx)(`span`,{className:`editor-statusbar-item editor-statusbar-save editor-statusbar-save-error`,role:`status`,title:n,children:r(`editor.saveFailed`)}):e?(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-save editor-statusbar-save-dirty`,role:`status`,children:[(0,$.jsx)(`span`,{className:`editor-status-save-dot`,"aria-hidden":`true`}),r(`editor.unsaved`)]}):null}function Nn(){let{t:e}=u(),{currentBranch:t,branches:n,branchesLoading:r,branchOperationInProgress:i,repositoryOperationInProgress:a,operationFeedback:o,isGitRepo:s,switchBranch:c,createBranch:l,loadBranches:d,refresh:f,clearOperationMessage:p}=xn(),[m,h]=(0,Q.useState)(!1),g=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{f()},[f]);let _=(0,Q.useCallback)(e=>{g.current={operation:`switchBranch`,target:e},c(e),h(!1)},[c]),v=(0,Q.useCallback)(e=>{g.current={operation:`createBranch`,target:e},l(e),h(!1)},[l]);return(0,Q.useEffect)(()=>{let t=g.current;if(!t||i||!o||o.operation!==t.operation||o.target!==t.target)return;if(g.current=null,o.success){let e=setTimeout(p,3e3);return()=>clearTimeout(e)}let n=t.operation===`switchBranch`?c:l,r=Cn(o.message,t.operation);He.error(e(Sn(o.message,t.operation)),{id:`git-branch-operation-error`,durationMs:0,action:r?{label:e(`ide.scm.feedback.retry`),onClick:()=>(g.current=t,n(t.target),!0)}:void 0})},[i,o,c,l,p,e]),s?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,className:`editor-statusbar-branch`,onClick:e=>{e.stopPropagation(),h(e=>!e)},onPointerDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),"aria-expanded":m,disabled:a,title:t||e(`ide.scm.noBranch`),children:[(0,$.jsx)(Y,{size:12}),(0,$.jsx)(`span`,{children:t||e(`ide.scm.noBranch`)})]}),m&&(0,$.jsx)(wn,{currentBranch:t,branches:n,branchesLoading:r,operationInProgress:a,onSwitch:_,onCreate:v,onLoadBranches:d,defaultOpen:!0,onClose:()=>h(!1)})]}):null}var Pn=`application/x-codebuddy-editor-tab`;function Fn(e,t,n,r){if(n<=0||r<=0)return`center`;let i=Math.max(0,Math.min(1,e/n)),a=Math.max(0,Math.min(1,t/r)),o=Math.min(i,1-i),s=Math.min(a,1-a);return o>.300000001&&s>.300000001?`center`:o<=s?i<.5?`left`:`right`:a<.5?`top`:`bottom`}function In(e){return JSON.stringify(e)}function Ln(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.tabId!=`string`||!t.tabId||typeof t.sourceGroupId!=`string`||!t.sourceGroupId?null:{tabId:t.tabId,sourceGroupId:t.sourceGroupId}}catch{return null}}var Rn=`application/x-codebuddy-terminal-tab`,zn=`bottom-panel`;function Bn(e){return JSON.stringify(e)}function Vn(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.paneId!=`string`||!t.paneId||typeof t.sourceGroupId!=`string`||!t.sourceGroupId?null:{paneId:t.paneId,sourceGroupId:t.sourceGroupId}}catch{return null}}function Hn(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Un({actions:e,onRequestClose:t,tabsOverride:n,activeTabIdOverride:r,groupId:i=`editor-main`,onActivateTab:a,onMoveTab:o}){let{t:s}=u(),c=St(),{tabs:l,activeTabId:d,rootPath:f,setActiveTab:p,closeSavedTabs:m,reorderTabs:h,pinTab:g,unpinTab:_}=Ct(),v=n??l,y=r===void 0?d:r,b=a??p,[x,S]=(0,Q.useState)(null),C=(0,Q.useRef)(null),[w,T]=(0,Q.useState)(null),E=(0,Q.useRef)(-1),D=(0,Q.useRef)(null),[O,k]=(0,Q.useState)(!1),[A,ee]=(0,Q.useState)(!1),M=(0,Q.useMemo)(()=>F(v),[v]),N=(0,Q.useCallback)(()=>{let e=D.current;e&&(k(e.scrollLeft>0),ee(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,Q.useEffect)(()=>{let e=D.current;if(!e)return;N(),e.addEventListener(`scroll`,N,{passive:!0});let t=new ResizeObserver(N);return t.observe(e),()=>{e.removeEventListener(`scroll`,N),t.disconnect()}},[N,v.length]),(0,Q.useEffect)(()=>{if(!y||!D.current)return;let e=D.current.querySelector(`.editor-tab.active`);e&&e.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:Hn()})},[y]);let P=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:-150,behavior:Hn()})},[]),I=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:150,behavior:Hn()})},[]),L=(0,Q.useCallback)(e=>{let t=v[e];t&&(b(t.id),requestAnimationFrame(()=>{(D.current?.querySelectorAll(`[role="tab"]`))?.[e]?.focus()}))},[b,v]),R=(0,Q.useCallback)((e,t)=>{let n=null;e.key===`ArrowLeft`&&(n=(t-1+v.length)%v.length),e.key===`ArrowRight`&&(n=(t+1)%v.length),e.key===`Home`&&(n=0),e.key===`End`&&(n=v.length-1),n!==null&&(e.preventDefault(),L(n))},[L,v.length]),B=(0,Q.useCallback)((e,t)=>{e.preventDefault(),S({x:e.clientX,y:e.clientY,tabId:t})},[]),V=(0,Q.useCallback)(()=>{S(null)},[]),H=(0,Q.useCallback)((e,n)=>{e.button===1&&(e.preventDefault(),t({kind:`single`,id:n}).catch(()=>void 0))},[t]),U=(0,Q.useCallback)((e,t)=>{E.current=t,e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(Pn,In({tabId:v[t].id,sourceGroupId:i})),e.currentTarget instanceof HTMLElement&&e.dataTransfer.setDragImage(e.currentTarget,0,0)},[i,v]),W=(0,Q.useCallback)((e,t)=>{(e.dataTransfer.types.includes(`application/x-codebuddy-editor-tab`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,T(t))},[]),G=(0,Q.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation();let n=Ln(e.dataTransfer.getData(Pn)),r=Vn(e.dataTransfer.getData(Rn)),i=n?.tabId??(r?z(r.paneId):null),a=E.current;i&&o?o(i,t):a>=0&&a!==t&&h(a,t),E.current=-1,T(null)},[o,h]),K=(0,Q.useCallback)(()=>{E.current=-1,T(null)},[]),te=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&Ee(t.path),V()},[v,V]),q=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);if(t&&f){let e=t.path.startsWith(f+`/`)?t.path.slice(f.length+1):t.path;Ee(e)}else t&&Ee(t.path);V()},[v,f,V]),ne=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);if(t){let{selectPath:e,toggleExpand:n,expandedPaths:r}=c.getState(),i=t.path.split(`/`);for(let e=1;e<i.length;e++){let t=i.slice(0,e).join(`/`);t&&!r.has(t)&&n(t)}e(t.path)}V()},[v,V]),re=(0,Q.useCallback)(e=>{t(n?j(v,e):e).catch(()=>void 0),V()},[V,t,v,n]),ie=(0,Q.useCallback)(e=>{let t=v.filter(t=>t.id!==e&&t.isPinned).length;g(e),o?.(e,t),V()},[V,o,g,v]),J=(0,Q.useCallback)(()=>{n?t({kind:`ids`,ids:v.filter(e=>!e.isPinned&&!e.isDirty).map(e=>e.id)}).catch(()=>void 0):m(),V()},[m,V,t,v,n]);if(v.length===0)return null;let ae=x?v.find(e=>e.id===x.tabId):null;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`editor-tabs-wrapper`,children:[O&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":s(`editor.scrollTabsLeft`),onClick:P,children:(0,$.jsx)(Fe,{size:14})}),(0,$.jsx)(`div`,{className:`editor-tabs`,ref:D,role:`tablist`,"aria-label":s(`editor.openEditors`),children:v.map((e,n)=>{let r=null,i=``;e.saveStatus===`saving`?(r=`saving`,i=s(`editor.saving`)):e.saveStatus===`error`?(r=`error`,i=`${s(`editor.saveFailed`)}${e.saveError?`: ${e.saveError}`:``}`):e.isDirty&&(r=`dirty`,i=s(`editor.unsaved`));let a=M.get(e.id),o=i?`${e.path} — ${i}`:e.path,c=i?`${e.name}, ${i}`:e.name;return(0,$.jsxs)(`div`,{className:`editor-tab${e.id===y?` active`:``}${w===n?` drag-indicator`:``}`,onMouseDown:t=>H(t,e.id),onContextMenu:t=>B(t,e.id),title:o,draggable:!0,onDragStart:e=>U(e,n),onDragOver:e=>W(e,n),onDrop:e=>G(e,n),onDragEnd:K,children:[(0,$.jsxs)(`button`,{type:`button`,className:`editor-tab-main`,role:`tab`,tabIndex:e.id===y?0:-1,"aria-selected":e.id===y,"aria-label":c,onClick:()=>b(e.id),onKeyDown:e=>R(e,n),children:[(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`editor-tab-name`,children:e.name}),a&&(0,$.jsx)(`span`,{className:`editor-tab-description`,children:a}),e.isPinned&&(0,$.jsx)(`span`,{className:`pin-icon`,title:s(`editor.pin`),children:(0,$.jsx)(ve,{size:14})}),(0,$.jsxs)(`span`,{className:`editor-tab-state`,children:[r===`saving`&&(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:i,children:(0,$.jsx)(`span`,{className:`tab-save-spinner`,"aria-hidden":`true`})}),r===`error`&&(0,$.jsx)(`span`,{className:`tab-save-indicator tab-save-error`,title:i,"aria-hidden":`true`,children:`!`}),r===`dirty`&&(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:i,children:(0,$.jsx)(`span`,{className:`dirty-dot`,"aria-hidden":`true`})})]})]}),(0,$.jsx)(`button`,{type:`button`,className:`close-btn${r?``:` clean-close`}`,tabIndex:e.id===y?0:-1,"aria-label":s(`editor.closeTabAriaLabel`,{name:e.name}),onClick:()=>{t({kind:`single`,id:e.id}).catch(()=>void 0)},children:(0,$.jsx)(je,{size:12})})]},e.id)})}),A&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":s(`editor.scrollTabsRight`),onClick:I,children:(0,$.jsx)(Z,{size:14})}),e&&(0,$.jsx)(`div`,{className:`editor-tabs-actions`,children:e})]}),x&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:V}),(0,$.jsxs)(`div`,{ref:C,className:`editor-context-menu`,style:{left:x.x,top:x.y},children:[ae?.isPinned?(0,$.jsx)(`button`,{onClick:()=>{_(x.tabId),V()},children:s(`editor.unpin`)}):(0,$.jsx)(`button`,{onClick:()=>ie(x.tabId),children:s(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>te(x.tabId),children:s(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>q(x.tabId),children:s(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:()=>ne(x.tabId),children:s(`editor.revealInExplorer`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`single`,id:x.tabId}),children:s(`editor.close`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`others`,id:x.tabId}),children:s(`editor.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`right`,id:x.tabId}),children:s(`editor.closeToRight`)}),(0,$.jsx)(`button`,{onClick:J,children:s(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`all`}),children:s(`editor.closeAll`)})]})]})]})}var Wn=ne,Gn=S;function Kn({path:e,onImageInfo:t,onZoomChange:n}){let{t:r}=u(),i=(0,Q.useRef)(null),a=(0,Q.useRef)(null),[o,s]=(0,Q.useState)(`fit`),c=pe(Gn(e)),[l,d]=(0,Q.useState)(null),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)({x:0,y:0}),g=(0,Q.useRef)({x:0,y:0,tx:0,ty:0}),_=(0,Q.useCallback)(()=>{if(!i.current||!l)return 1;let e=i.current.clientWidth-40,t=i.current.clientHeight-80;return e<=0||t<=0?1:Math.min(e/l.w,t/l.h,1)},[l]),v=o===`fit`?_():o,y=(0,Q.useCallback)(()=>{let e=a.current;if(!e)return;let n=e.naturalWidth,r=e.naturalHeight;d({w:n,h:r}),t?.({width:n,height:r})},[t]);(0,Q.useEffect)(()=>{n?.(v)},[v,n]);let b=(0,Q.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&(e.preventDefault(),s(t=>{let n=t===`fit`?_():t,r=e.deltaY<0?.1:-.1;return Math.min(5,Math.max(.1,n+r))}))},[_]),x=(0,Q.useCallback)(e=>{o!==`fit`&&(e.preventDefault(),p(!0),g.current={x:e.clientX,y:e.clientY,tx:m.x,ty:m.y})},[o,m]),S=(0,Q.useCallback)(e=>{if(!f)return;let t=e.clientX-g.current.x,n=e.clientY-g.current.y;h({x:g.current.tx+t,y:g.current.ty+n})},[f]),C=(0,Q.useCallback)(()=>{p(!1)},[]);return(0,$.jsxs)(`div`,{ref:i,className:`file-preview-image-container checkerboard`,onWheel:b,onMouseDown:x,onMouseMove:S,onMouseUp:C,onMouseLeave:C,style:{cursor:o===`fit`?`default`:f?`grabbing`:`grab`},children:[c&&(0,$.jsx)(`img`,{ref:a,src:c,alt:e,onLoad:y,className:v>=3?`pixelated`:``,style:{transform:`translate(${m.x}px, ${m.y}px) scale(${v})`,transformOrigin:`center center`,maxWidth:`none`,maxHeight:`none`,userSelect:`none`,pointerEvents:`none`},draggable:!1}),(0,$.jsxs)(`div`,{className:`image-zoom-toolbar`,children:[(0,$.jsx)(`button`,{onClick:()=>s(e=>Math.max(.1,(e===`fit`?_():e)-.1)),title:r(`filePreview.zoomOut`),children:(0,$.jsx)(xe,{size:16})}),(0,$.jsxs)(`span`,{className:`image-zoom-label`,children:[Math.round(v*100),`%`]}),(0,$.jsx)(`button`,{onClick:()=>s(e=>Math.min(5,(e===`fit`?_():e)+.1)),title:r(`filePreview.zoomIn`),children:(0,$.jsx)(X,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(`fit`),h({x:0,y:0})},title:r(`filePreview.fitToWindow`),children:(0,$.jsx)(ue,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(1),h({x:0,y:0})},title:r(`filePreview.actualSize`),children:(0,$.jsx)(ge,{size:16})})]})]})}function qn({path:e,name:t}){let{t:n}=u(),r=pe(Gn(e));return r?(0,$.jsx)(`div`,{className:`file-preview-video-wrap`,children:(0,$.jsx)(`video`,{src:r,className:`file-preview-video`,title:t,controls:!0,playsInline:!0,preload:`metadata`,children:n(`filePreview.videoNotSupported`)})}):null}function Jn({className:e,children:t}){let n=g(e=>e.resolved),r=(e||``).match(/language-(\w+)/),i=String(t).replace(/\n$/,``);return r?(0,$.jsx)(`div`,{className:`relative group my-3`,children:(0,$.jsx)(Wn,{style:n===`dark`?be:rt,language:r[1],PreTag:`div`,customStyle:{margin:0,borderRadius:`8px`,fontSize:`13px`,lineHeight:`1.6`},codeTagProps:{style:{background:`transparent`,textShadow:`none`}},children:i})}):(0,$.jsx)(`code`,{className:`markdown-inline-code`,children:t})}function Yn({content:e}){return(0,$.jsx)(`div`,{className:`file-preview-markdown`,children:(0,$.jsx)(`div`,{className:`file-preview-markdown-content`,children:(0,$.jsx)(m,{remarkPlugins:[p],components:{code:Jn,a:le},children:e})})})}function Xn({content:e,name:t}){return(0,$.jsx)(`iframe`,{srcDoc:e,className:`file-preview-html`,title:t,sandbox:`allow-forms`,referrerPolicy:`no-referrer`})}function Zn({path:e}){let{t}=u(),n=pe(Gn(e));return n?(0,$.jsx)(`div`,{className:`file-preview-pdf-wrap`,children:(0,$.jsx)(`iframe`,{src:n,className:`file-preview-pdf`,title:t(`filePreview.pdfPreview`)})}):null}function Qn({name:e}){let{t}=u();return(0,$.jsxs)(`div`,{className:`file-preview-binary`,children:[(0,$.jsx)(K,{size:48,className:`text-[var(--color-text-tertiary)]`}),(0,$.jsx)(`div`,{className:`mt-4 text-lg font-medium text-[var(--color-text-primary)]`,children:e}),(0,$.jsx)(`div`,{className:`mt-2 text-sm text-[var(--color-text-secondary)]`,children:t(`filePreview.binaryNotSupported`)})]})}function $n({path:e,name:t,content:n,viewMode:r,onImageInfo:i,onZoomChange:a}){switch(r){case`image`:return(0,$.jsx)(Kn,{path:e,onImageInfo:i,onZoomChange:a});case`svg`:return(0,$.jsx)(Kn,{path:e,onImageInfo:i,onZoomChange:a});case`video`:return(0,$.jsx)(qn,{path:e,name:t});case`markdown`:return(0,$.jsx)(Yn,{content:n});case`html`:return(0,$.jsx)(Xn,{content:n,name:t});case`pdf`:return(0,$.jsx)(Zn,{path:e});case`binary`:return(0,$.jsx)(Qn,{name:t});default:return null}}function er(e,t){let n=t.replace(/\\/g,`/`).split(`/`).pop()?.trim();if(!n||n===`.`||n===`..`)throw Error(`Invalid file name`);let r=e.includes(`\\`)&&!e.includes(`/`)?`\\`:`/`,i=e.replace(/[\\/]+$/,``);return e.startsWith(`/`)&&!i?`/${n}`:/^[A-Za-z]:[\\/]*$/.test(e)?`${e.slice(0,2)}${r}${n}`:i?`${i}${r}${n}`:n}function tr(e,t){if(t)return e;let n=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return n===0?e[0]:n===2&&/^[A-Za-z]:/.test(e)?e.slice(0,3):n>0?e.slice(0,n):``}async function nr(e,t,n,r){let i=Array.from(t),a=i.reduce((e,t)=>e+t.size,0),o=0,s=0;for(let t of i)r?.(o,i.length,t.name,s,a),await n(er(e,t.name),t,e=>{r?.(o,i.length,t.name,s+e,a)}),o++,s+=t.size,r?.(o,i.length,t.name,s,a);return o}function rr(e,t=300){let[n,r]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{if(!e){r(!1);return}let n=setTimeout(()=>r(!0),t);return()=>clearTimeout(n)},[e,t]),n}function ir(e){switch(e){case`modified`:return`M`;case`added`:return`A`;case`untracked`:return`U`;case`deleted`:return`D`;case`conflicted`:return`C`;case`renamed`:return`R`;case`copied`:return`C`;default:return``}}function ar(e){return`file-tree-item-${encodeURIComponent(e)}`}function or({node:e,depth:t,gitStatusMap:n,gitIgnoredPaths:r,onToggleExpand:i,onSelect:a,onOpenFile:o,onConfirmRename:s,onCancelRename:c,onContextMenu:l,onDragStart:d,onDrop:f}){let{t:p}=u(),m=St(),{isExpanded:h,isSelected:g,isMultiSelected:_,isRenaming:v,showHiddenFiles:y}=Ct(Ye(t=>({isExpanded:t.expandedPaths.has(e.path),isSelected:t.selectedPath===e.path,isMultiSelected:t.selectedPaths.has(e.path),isRenaming:t.renamingPath===e.path,showHiddenFiles:t.showHiddenFiles}))),b=e.type===`directory`,x=12+t*12,S=n.get(e.path),C=r.has(e.path),T=rr(!!e.isLoading),E=(0,Q.useMemo)(()=>w(e.children,y),[e.children,y]),[D,O]=(0,Q.useState)(e.name),k=(0,Q.useRef)(null),[A,j]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{if(v&&k.current){O(e.name),k.current.focus();let t=e.name.lastIndexOf(`.`);!b&&t>0?k.current.setSelectionRange(0,t):k.current.select()}},[v,e.name,b]);let ee=(0,Q.useCallback)(t=>{v||(a(e.path,{ctrl:t.ctrlKey||t.metaKey,shift:t.shiftKey}),b?i(e.path):!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&o(e.path,e.name))},[v,e.path,b,e.name,a,i,o]),M=(0,Q.useCallback)(()=>{v||b||o(e.path,e.name)},[v,b,e.path,e.name,o]),N=(0,Q.useCallback)(t=>{t.stopPropagation(),t.key===`Enter`?(t.preventDefault(),s(e.path,D)):t.key===`Escape`&&(t.preventDefault(),c())},[e.path,D,s,c]),P=(0,Q.useCallback)(()=>{s(e.path,D)},[e.path,D,s]),F=(0,Q.useCallback)(t=>{t.preventDefault(),l(t,e.path)},[l,e.path]),I=(0,Q.useCallback)(t=>{let n=_?[...m.getState().selectedPaths]:[e.path];t.dataTransfer.effectAllowed=`copyMove`,t.dataTransfer.setData(`text/plain`,JSON.stringify(n)),t.dataTransfer.setData(`application/x-file-paths`,JSON.stringify(n)),d(n)},[m,_,e.path,d]),L=(0,Q.useCallback)(e=>{let t=e.dataTransfer.types.includes(`Files`);(b||t)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=t?`copy`:`move`,j(!0))},[b]),R=(0,Q.useCallback)(()=>{j(!1)},[]),z=(0,Q.useCallback)(t=>{let n=t.dataTransfer.files.length>0;(b||n)&&(t.preventDefault(),t.stopPropagation(),j(!1),f(tr(e.path,b),t))},[b,e.path,f]),V=g||_,H=C?`Git: ignored`:S?`Git: ${S}`:void 0,U=[e.name,e.symlinkTarget===void 0?void 0:p(`editor.symbolicLink`),H].filter(Boolean).join(`, `);return(0,$.jsxs)(`div`,{id:ar(e.path),role:`treeitem`,"aria-level":t+1,"aria-expanded":b?h:void 0,"aria-selected":V,"aria-label":U,"data-path":e.path,title:H?`${e.path} (${H})`:e.path,children:[(0,$.jsxs)(`div`,{className:`file-tree-item ${V?`selected`:``} ${A?`drag-over`:``} ${C?`git-ignored`:``}`,onClick:ee,onDoubleClick:M,onContextMenu:F,draggable:!v,onDragStart:I,onDragOver:L,onDragLeave:R,onDrop:z,children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`file-tree-indent-guide`,style:{left:12+t*12+6}},t)),(0,$.jsx)(`span`,{style:{width:x,flexShrink:0}}),b?T?(0,$.jsx)(B,{size:16,className:`file-tree-chevron animate-spin`}):(0,$.jsx)(Z,{size:16,className:`file-tree-chevron ${h?`expanded`:``}`}):(0,$.jsx)(Ge,{name:e.name,type:e.type,isExpanded:h,size:16}),v?(0,$.jsx)(`input`,{ref:k,className:`file-tree-rename-input`,value:D,onChange:e=>O(e.target.value),onKeyDown:N,onBlur:P,onClick:e=>e.stopPropagation()}):(0,$.jsx)(`span`,{className:`file-tree-item-name`,children:e.name}),S&&!b&&(0,$.jsx)(`span`,{className:`file-tree-git-badge git-status-${S}`,"aria-label":H,title:H,children:ir(S)}),(0,$.jsx)(Be,{entry:e,label:p(`editor.symbolicLink`),className:`ml-1`})]}),b&&h&&(0,$.jsx)(`div`,{role:`group`,children:E.map(e=>(0,$.jsx)(sr,{node:e,depth:t+1,gitStatusMap:n,gitIgnoredPaths:r,onToggleExpand:i,onSelect:a,onOpenFile:o,onConfirmRename:s,onCancelRename:c,onContextMenu:l,onDragStart:d,onDrop:f},e.path))})]})}var sr=(0,Q.memo)(or);function cr(e,t){let n=e?.querySelector(`[data-path="${CSS.escape(t)}"]`);if(!e||!n)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect();i.top<r.top?e.scrollTop-=r.top-i.top:i.bottom>r.bottom&&(e.scrollTop+=i.bottom-r.bottom)}function lr({onDidOpenFile:e}){let{t}=u(),n=r(e=>e.info),{rootPath:i,tree:a,treeLoading:o,treeError:c,expandedPaths:l,selectedPath:d,selectedPaths:f,pendingTreeRevealPath:p,setPendingTreeRevealPath:m,tabs:h,renamingPath:g,setRootPath:_,toggleExpand:v,selectPath:y,openFile:S,refreshTree:C,collapseAll:E,createNewFile:D,createNewFolder:O,startRename:A,startCreateFile:j,startCreateFolder:ee,confirmRename:N,cancelRename:P,deleteSelected:F,moveToDirectory:I,showHiddenFiles:R,toggleShowHiddenFiles:z}=Ct(),H=xn(e=>e.files),[W,K]=(0,Q.useState)(new Set),te=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=++te.current;if(!i||!a){K(new Set);return}let t=L(a);if(t.length===0){K(new Set);return}let n=setTimeout(()=>{Rt(t,i).then(t=>{te.current===e&&K(new Set(t))}).catch(()=>{te.current===e&&K(new Set)})},500);return()=>clearTimeout(n)},[i,a]);let ne=(0,Q.useMemo)(()=>{let e=new Map;if(!H.length||!i)return e;let t={conflicted:6,deleted:5,modified:4,renamed:3,added:2,copied:1,untracked:0};for(let n of H){let r=n.path.startsWith(`/`)?n.path:`${i}/${n.path}`;e.set(r,n.status);let a=r.substring(0,r.lastIndexOf(`/`));for(;a&&a.length>=i.length;){let r=e.get(a);(!r||(t[n.status]??0)>(t[r]??0))&&e.set(a,n.status),a=a.substring(0,a.lastIndexOf(`/`))}}return e},[H,i]),ie=(0,Q.useMemo)(()=>w(a?.children,R),[a?.children,R]),[J,ae]=(0,Q.useState)(!1),[oe,le]=(0,Q.useState)(!1),[ue,de]=(0,Q.useState)(null),fe=Ft(e=>e.setProgress),Y=(0,Q.useRef)(null),pe=(0,Q.useRef)(null),me=(0,Q.useRef)(f);me.current=f;let[X,he]=(0,Q.useState)(null),ge=(0,Q.useRef)([]),_e=(0,Q.useCallback)(e=>{le(!1),_(e)},[_]),ve=(0,Q.useCallback)(async(t,n)=>{await S(t,n),e?.(t,t)},[e,S]),ye=(0,Q.useCallback)((e,t)=>{N(e,t)},[N]),be=(0,Q.useCallback)((e,t)=>{e.preventDefault(),me.current.has(t)||y(t),he({x:e.clientX,y:e.clientY,path:t})},[y]),xe=(0,Q.useCallback)(()=>he(null),[]);(0,Q.useLayoutEffect)(()=>{X&&pe.current&&se(pe.current,X.x,X.y)},[X]);let Se=(0,Q.useCallback)(()=>{X&&(A(X.path),he(null))},[X,A]),Ce=(0,Q.useCallback)((e,t)=>{if(!e)return null;if(e.path===t)return e;if(e.children)for(let n of e.children){let e=Ce(n,t);if(e)return e}return null},[]),we=X?Ce(a,X.path)?.type===`directory`:!1,Te=(0,Q.useCallback)(e=>{let t=e??[...f];if(t.length===0)return;let n=t.some(e=>Ce(a,e)?.type===`directory`),r=h.some(e=>e.isDirty&&t.some(t=>e.path===t||e.path.startsWith(`${t}/`)));if(t.length>1||n||r){de(t);return}F(t).catch(()=>void 0)},[F,Ce,f,h,a]),Oe=(0,Q.useCallback)(()=>{if(!X)return;let e=T(X.path,f);he(null),Te(e)},[X,Te,f]),je=(0,Q.useCallback)(()=>{let e=ue;de(null),e&&F(e).catch(()=>void 0)},[F,ue]),Me=(0,Q.useCallback)(e=>{if(!X)return;let t=Ce(a,X.path)?.type===`directory`?X.path:X.path.substring(0,X.path.lastIndexOf(`/`));if(t){l.has(t)||v(t);let n=`${t}/__new_${e}__`;e===`file`?j(n):ee(n)}he(null)},[X,l,Ce,j,ee,v,a]),Pe=(0,Q.useCallback)(()=>{X&&(Ee(X.path),he(null))},[X]),Fe=(0,Q.useCallback)(()=>{if(X&&i){let e=X.path.startsWith(i+`/`)?X.path.slice(i.length+1):X.path;Ee(e),he(null)}},[X,i]),Ie=(0,Q.useCallback)(()=>{X&&(Ee(X.path.split(`/`).pop()||X.path),he(null))},[X]),Le=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path);e?.type===`file`&&ve(e.path,e.name),he(null)},[X,Ce,ve,a]),Re=(0,Q.useCallback)(()=>{X&&(ce(U(X.path)),he(null))},[X]),ze=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path);if(!e){he(null);return}let n=e.type===`directory`?`${e.name||wt(e.path)}.zip`:e.name||wt(e.path);Dt(e.path,n).catch(()=>{He.error(t(`editor.downloadFailed`))}),he(null)},[X,Ce,t,a]),Be=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path),t=e?tr(e.path,e.type===`directory`):``;t&&(b.getState().mainView===`editor-page`||s()?k.getState().createBottomTerminal(t):(V.getState().addTab(`terminal`,{initialCwd:t}),G.getState().setWorkspaceDockOpen(!0))),he(null)},[X,Ce,a]),Ue=(0,Q.useCallback)(e=>{ge.current=e},[]),We=(0,Q.useCallback)((e,n)=>{let r=Array.from(n.dataTransfer.files);if(r.length>0){ge.current=[];let n=r.reduce((e,t)=>e+t.size,0);fe({completed:0,total:r.length,fileName:r[0]?.name??``,loadedBytes:0,totalBytes:n}),(async()=>{try{let n=await nr(e,r,x,(e,t,n,r,i)=>fe({completed:e,total:t,fileName:n,loadedBytes:r,totalBytes:i}));He.success(t(`editor.uploadComplete`,{count:n}))}catch(e){let n=e instanceof Error?e.message:String(e);He.error(`${t(`editor.uploadFailed`)}: ${n}`)}finally{await C().catch(()=>void 0),fe(null)}})();return}let i=ge.current;ge.current=[],i.length!==0&&I(i,e).catch(e=>{let n=e instanceof Error?e.message:String(e);He.error(`${t(`editor.moveFailed`)}: ${n}`)})},[I,C,t]),Ge=(0,Q.useCallback)(e=>{if(g||!a)return;let t=M(a,l,R);if(t.length===0)return;let n=d?t.indexOf(d):-1,r=d?Ce(a,d):null;function i(e,t=!1){y(e,{shift:t}),requestAnimationFrame(()=>cr(Y.current,e))}switch(e.key){case`ArrowDown`:e.preventDefault(),i(t[n<t.length-1?n+1:0],e.shiftKey);break;case`ArrowUp`:e.preventDefault(),i(t[n>0?n-1:t.length-1],e.shiftKey);break;case`ArrowRight`:if(e.preventDefault(),r?.type!==`directory`)break;if(!l.has(r.path))v(r.path);else{let e=w(r.children,R)[0];e&&i(e.path)}break;case`ArrowLeft`:if(e.preventDefault(),r?.type===`directory`&&l.has(r.path)){v(r.path);break}if(d){let e=d.substring(0,d.lastIndexOf(`/`));t.includes(e)&&i(e)}break;case`Enter`:case` `:e.preventDefault(),r?.type===`directory`?v(r.path):r&&ve(r.path,r.name);break;case`F2`:e.preventDefault(),d&&A(d);break;case`Delete`:case`Backspace`:e.preventDefault(),f.size>0&&Te()}},[a,l,d,f,g,R,Ce,y,v,A,ve,Te]);(0,Q.useLayoutEffect)(()=>{if(!p)return;let e=requestAnimationFrame(()=>{cr(Y.current,p),m(null)});return()=>cancelAnimationFrame(e)},[p,m,a]);let Ke=a?.name||i?.split(`/`).pop()||`WORKSPACE`;return(0,$.jsxs)(`div`,{className:`file-tree`,children:[(0,$.jsx)(`div`,{className:`file-tree-title-bar`,children:(0,$.jsx)(`span`,{className:`file-tree-title-text`,children:t(`editor.explorer`)})}),(0,$.jsxs)(`div`,{className:`file-tree-section-header`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`file-tree-section-toggle`,"aria-expanded":!J,onClick:()=>ae(e=>!e),children:[J?(0,$.jsx)(Z,{size:12,style:{flexShrink:0}}):(0,$.jsx)(Ae,{size:12,style:{flexShrink:0}}),(0,$.jsx)(`span`,{className:`file-tree-section-name`,children:Ke.toUpperCase()})]}),(0,$.jsxs)(`div`,{className:`file-tree-section-actions`,children:[(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:D,title:t(`editor.newFile`),"aria-label":t(`editor.newFile`),children:(0,$.jsx)(dt,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:O,title:t(`editor.newFolder`),"aria-label":t(`editor.newFolder`),children:(0,$.jsx)(De,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>le(!0),title:t(`editor.openFolder`),"aria-label":t(`editor.openFolder`),children:(0,$.jsx)(ke,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>{C().catch(()=>void 0)},title:t(`editor.refresh`),"aria-label":t(`editor.refresh`),children:(0,$.jsx)(q,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:E,title:t(`editor.collapseAll`),"aria-label":t(`editor.collapseAll`),children:(0,$.jsx)(lt,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:z,title:t(R?`editor.hideHiddenFiles`:`editor.showHiddenFiles`),"aria-label":t(R?`editor.hideHiddenFiles`:`editor.showHiddenFiles`),children:R?(0,$.jsx)(Qe,{size:14}):(0,$.jsx)(Ve,{size:14})})]})]}),oe&&(0,$.jsx)(Ne,{initialPath:i||n?.cwd||`/`,onSelect:_e,onClose:()=>le(!1)}),ue&&(0,$.jsx)(re,{title:t(`editor.deleteConfirmTitle`),message:t(`editor.deleteConfirmMessage`,{count:ue.length}),confirmLabel:t(`editor.delete`),danger:!0,onConfirm:je,onCancel:()=>de(null)}),!J&&(0,$.jsxs)(`div`,{className:`file-tree-content`,ref:Y,role:`tree`,"aria-label":t(`editor.fileTreeAriaLabel`),"aria-multiselectable":`true`,"aria-activedescendant":d?ar(d):void 0,tabIndex:0,onKeyDown:Ge,onClick:()=>Y.current?.focus(),onDragOver:e=>{i&&e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:e=>{i&&e.dataTransfer.files.length>0&&(e.preventDefault(),We(i,e))},children:[o&&!a&&(0,$.jsx)(`div`,{className:`file-tree-loading`,children:(0,$.jsx)(B,{size:16,className:`animate-spin`})}),a&&c&&i&&(0,$.jsxs)(`div`,{className:`file-tree-inline-error`,role:`status`,children:[(0,$.jsx)(`span`,{children:t(`editor.loadError`)}),(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(i),children:[(0,$.jsx)(q,{size:12}),t(`editor.refresh`)]})]}),!o&&!a&&c&&i&&(0,$.jsxs)(`div`,{className:`file-tree-empty`,children:[(0,$.jsx)(`span`,{children:t(`editor.loadError`)}),(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(i),children:[(0,$.jsx)(q,{size:12}),t(`editor.refresh`)]}),n?.cwd&&i!==n.cwd&&(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(n.cwd),children:[(0,$.jsx)(pt,{size:12}),t(`editor.backToWorkDir`)]})]}),ie.map(e=>(0,$.jsx)(sr,{node:e,depth:0,gitStatusMap:ne,gitIgnoredPaths:W,onToggleExpand:v,onSelect:y,onOpenFile:ve,onConfirmRename:ye,onCancelRename:P,onContextMenu:be,onDragStart:Ue,onDrop:We},e.path)),ie.length===0&&a?.children&&(0,$.jsx)(`div`,{className:`file-tree-empty`,children:t(`editor.emptyFolder`)})]}),X&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:xe}),(0,$.jsxs)(`div`,{ref:pe,className:`editor-context-menu`,style:{left:X.x,top:X.y},children:[!we&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:Le,children:t(`editor.open`)}),(0,$.jsx)(`button`,{onClick:Re,children:t(`editor.addToChat`)})]}),we&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:()=>Me(`file`),children:t(`editor.newFile`)}),(0,$.jsx)(`button`,{onClick:()=>Me(`folder`),children:t(`editor.newFolder`)})]}),(0,$.jsx)(`button`,{onClick:ze,children:t(`editor.download`)}),(0,$.jsx)(`button`,{onClick:Be,children:t(`editor.openInTerminal`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:Pe,children:t(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:Fe,children:t(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:Ie,children:t(`editor.copyName`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),f.size<=1&&(0,$.jsx)(`button`,{onClick:Se,children:t(`editor.rename`)}),(0,$.jsx)(`button`,{className:`danger`,onClick:Oe,children:f.size>1?`${t(`editor.delete`)} (${f.size})`:t(`editor.delete`)})]})]})]})}function ur(e,t){let n=e.trim();if(!n)return t;let r=n.lastIndexOf(`:`),i=r>=0?n.slice(r+1).trim():``;if(!i||!i.includes(`/`)&&!i.includes(`\\`)&&i!==`~`)return n;let a=i.replace(/\\/g,`/`).replace(/\/+$/,``);return!a||a===`~`?a||t:a.split(`/`).filter(Boolean).pop()||n}function dr(e,t){return t||e>=4}function fr(e,t,n){return t<=0?-1:((e<0?n>0?-1:0:e)+n+t)%t}function pr(e,t){fetch(`/api/v1/pty/${e}/input/send`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify({data:t})}).catch(()=>{})}function mr(){let{t:e}=u(),t=St(),{bottomTerminals:n,activeBottomTerminalId:i,bottomPanelMaximized:a,createBottomTerminal:o,moveBottomTerminal:s,restoreDockTerminalToBottom:c,closeBottomTerminal:l,closeOtherBottomTerminals:d,closeBottomTerminalsToRight:f,closeAllBottomTerminals:p,setActiveBottomTerminal:m,setBottomPanelCollapsed:h,toggleBottomPanelMaximize:g}=k(),_=ee(e=>e.cwd),[v,y]=(0,Q.useState)(null),x=(0,Q.useCallback)((e,t)=>{e.preventDefault(),N(!1),y({x:e.clientX,y:e.clientY,tabId:t})},[]),S=(0,Q.useCallback)(()=>{y(null)},[]),w=b(e=>e.panes),T=(0,Q.useRef)(null),E=(0,Q.useRef)(new Map),D=(0,Q.useRef)(null),O=(0,Q.useRef)(null),[A,j]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(!1),P=n.map(e=>w[e]?.title||``).join(`\0`),F=dr(n.length,A);(0,Q.useEffect)(()=>{let e=setTimeout(()=>{window.dispatchEvent(new Event(`resize`))},60);return()=>clearTimeout(e)},[]);let I=(0,Q.useCallback)(()=>{let e=T.current;e&&j(e.scrollWidth>e.clientWidth+1)},[]);(0,Q.useEffect)(()=>{let e=T.current;if(!e)return;I();let t=new ResizeObserver(I);return t.observe(e),()=>t.disconnect()},[n.length,I,P]),(0,Q.useEffect)(()=>{i&&T.current&&E.current.get(i)?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})},[i]),(0,Q.useEffect)(()=>{if(!M)return;let e=e=>{D.current?.contains(e.target)||N(!1)},t=e=>{e.key===`Escape`&&(N(!1),requestAnimationFrame(()=>O.current?.focus()))};return requestAnimationFrame(()=>{let e=D.current;(e?.querySelector(`[aria-current="page"]`)??e?.querySelector(`[role="menuitem"]`))?.focus()}),document.addEventListener(`pointerdown`,e,!0),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e,!0),document.removeEventListener(`keydown`,t)}},[M]),(0,Q.useEffect)(()=>{F||N(!1)},[F]);let L=(0,Q.useCallback)(()=>{o()},[o]),z=(0,Q.useCallback)((e,t)=>{e.stopPropagation(),l(t)},[l]),B=(0,Q.useCallback)((e,n)=>{c(e,n);let r=C(k.getState().editorDock);r&&!R(r)&&t.getState().setActiveTab(r)},[t,c]),V=(0,Q.useCallback)(()=>{h(!0)},[h]),[H,U]=(0,Q.useState)(!1),[W,G]=(0,Q.useState)(null),K=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=()=>{K.current=0,U(!1),G(null)};return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let te=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),K.current++,(e.dataTransfer.types.includes(`text/plain`)||e.dataTransfer.types.includes(`application/x-file-paths`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&U(!0)},[]),q=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`)?`move`:`copy`},[]),ne=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),K.current--,K.current<=0&&(K.current=0,U(!1),G(null))},[]),re=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),U(!1),K.current=0;let t=Vn(e.dataTransfer.getData(Rn));if(t){t.sourceGroupId===`bottom-panel`?s(t.paneId,n.length):B(t.paneId);return}let a=[],o=e.dataTransfer.getData(`application/x-file-paths`)||e.dataTransfer.getData(`text/plain`);if(o)try{let e=JSON.parse(o);Array.isArray(e)&&(a=e)}catch{a=[o]}if(a.length===0&&e.dataTransfer.files.length>0)for(let t=0;t<e.dataTransfer.files.length;t++){let n=e.dataTransfer.files[t],r=n.path||n.webkitRelativePath||n.name;r&&a.push(r)}if(a.length===0)return;let c=i;if(!c)return;let l=w[c];l?.ptySessionId&&(pr(l.ptySessionId,at(a,r.getState().info?.os)),setTimeout(()=>{document.querySelector(`.ide-bottom-terminal-wrap[style*="flex"] .xterm-helper-textarea`)?.focus()},50))},[i,n.length,s,w,B]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`ide-bottom-panel ${H?`drop-highlight`:``}`,onDragEnter:te,onDragOver:q,onDragLeave:ne,onDrop:re,children:[(0,$.jsxs)(`div`,{className:`ide-bottom-tabs`,children:[(0,$.jsx)(`div`,{className:`ide-bottom-tabs-list`,ref:T,role:`tablist`,"aria-label":e(`ide.terminals`),onDoubleClick:e=>{e.target===e.currentTarget&&L()},children:n.map((t,r)=>{let a=w[t],o=e(`ide.terminalOrdinal`,{index:r+1}),c=a?.title||o,l=ur(c,o),u=t===i;return(0,$.jsxs)(`button`,{ref:e=>{e?E.current.set(t,e):E.current.delete(t)},type:`button`,role:`tab`,"aria-selected":u,tabIndex:u?0:-1,"aria-label":`${o}, ${c}`,className:`ide-bottom-tab ${u?`active`:``}${W===t?` drag-indicator`:``}`,draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(Rn,Bn({paneId:t,sourceGroupId:zn})),e.dataTransfer.setDragImage(e.currentTarget,0,0)},onDragEnd:()=>{K.current=0,U(!1)},onDragOver:e=>{e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,G(t))},onDrop:e=>{let t=Vn(e.dataTransfer.getData(Rn));t&&(e.preventDefault(),e.stopPropagation(),K.current=0,U(!1),G(null),t.sourceGroupId===`bottom-panel`?s(t.paneId,r):B(t.paneId,r))},onClick:()=>m(t),onDoubleClick:()=>g(),onContextMenu:e=>x(e,t),onKeyDown:e=>{let t=null;if(e.key===`ArrowLeft`&&(t=(r-1+n.length)%n.length),e.key===`ArrowRight`&&(t=(r+1)%n.length),e.key===`Home`&&(t=0),e.key===`End`&&(t=n.length-1),t===null)return;e.preventDefault();let i=n[t];m(i),requestAnimationFrame(()=>E.current.get(i)?.focus())},children:[(0,$.jsxs)(`span`,{className:`ide-bottom-tab-index`,"aria-hidden":`true`,children:[`T`,r+1]}),(0,$.jsx)(`span`,{className:`ide-bottom-tab-title`,title:c,children:l}),(0,$.jsx)(`span`,{className:`ide-bottom-tab-close`,onClick:e=>z(e,t),children:(0,$.jsx)(je,{size:14})})]},t)})}),(0,$.jsxs)(`div`,{className:`ide-bottom-tabs-actions`,children:[F&&(0,$.jsxs)(`div`,{ref:D,className:`ide-bottom-overview`,children:[(0,$.jsxs)(`button`,{ref:O,type:`button`,className:`ide-bottom-overview-trigger ${M?`active`:``}`,"aria-haspopup":`menu`,"aria-expanded":M,"aria-label":e(`ide.allTerminalsAriaLabel`,{count:n.length}),title:e(`ide.allTerminals`),onClick:()=>{y(null),N(e=>!e)},children:[(0,$.jsx)(mt,{size:15}),(0,$.jsx)(`span`,{children:n.length})]}),M&&(0,$.jsxs)(`div`,{className:`ide-bottom-overview-menu`,role:`menu`,"aria-label":e(`ide.allTerminals`),onKeyDown:e=>{if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll(`[role="menuitem"]`));if(t.length===0)return;e.preventDefault();let n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:fr(n,t.length,e.key===`ArrowUp`?-1:1)]?.focus()},children:[(0,$.jsxs)(`div`,{className:`ide-bottom-overview-head`,children:[(0,$.jsx)(`span`,{children:e(`ide.allTerminals`)}),(0,$.jsx)(`span`,{children:n.length})]}),(0,$.jsx)(`div`,{className:`ide-bottom-overview-list`,children:n.map((t,n)=>{let r=w[t]?.title||e(`ide.terminalOrdinal`,{index:n+1}),a=t===i;return(0,$.jsxs)(`button`,{type:`button`,role:`menuitem`,"aria-current":a?`page`:void 0,className:`ide-bottom-overview-item ${a?`active`:``}`,title:r,onClick:()=>{m(t),N(!1),requestAnimationFrame(()=>E.current.get(t)?.focus())},children:[(0,$.jsx)(`span`,{className:`ide-bottom-overview-icon`,children:(0,$.jsx)(J,{size:15})}),(0,$.jsxs)(`span`,{className:`ide-bottom-overview-copy`,children:[(0,$.jsx)(`span`,{className:`ide-bottom-overview-name`,children:r}),(0,$.jsx)(`span`,{className:`ide-bottom-overview-meta`,children:e(`ide.terminalOrdinal`,{index:n+1})})]}),a&&(0,$.jsx)($e,{size:14,className:`ide-bottom-overview-check`})]},t)})})]})]}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:L,title:e(`ide.newTerminal`),children:(0,$.jsx)(X,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:g,title:e(a?`ide.restorePanel`:`ide.maximizePanel`),children:a?(0,$.jsx)(it,{size:16}):(0,$.jsx)(ue,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:V,title:e(`ide.hidePanel`),children:(0,$.jsx)(Ae,{size:16})})]})]}),(0,$.jsxs)(`div`,{className:`ide-bottom-content`,children:[n.map(e=>(0,$.jsx)(`div`,{className:`ide-bottom-terminal-wrap`,style:{display:e===i?`flex`:`none`},children:(0,$.jsx)(ot,{paneId:e,initialCwd:w[e]?.initialCwd??_,editorStore:t})},e)),n.length===0&&(0,$.jsx)(`div`,{className:`ide-bottom-empty`,children:(0,$.jsxs)(`button`,{className:`ide-bottom-empty-btn`,onClick:L,children:[(0,$.jsx)(X,{size:16}),(0,$.jsx)(`span`,{children:e(`ide.newTerminal`)})]})})]})]}),v&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:S}),(0,$.jsxs)(`div`,{className:`editor-context-menu`,style:{left:v.x,top:v.y},children:[(0,$.jsx)(`button`,{onClick:()=>{l(v.tabId),S()},children:e(`terminal.close`)}),(0,$.jsx)(`button`,{onClick:()=>{d(v.tabId),S()},children:e(`terminal.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>{f(v.tabId),S()},children:e(`terminal.closeToRight`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>{p(),S()},children:e(`terminal.closeAll`)})]})]})]})}function hr(e){let{direction:t,initialSize:n,minSize:r=120,maxSize:i,collapsible:a=!0,collapseThreshold:o,defaultCollapsed:s=!1,onResize:c,onCollapse:l,onMaximize:u,maximizeThreshold:d=.92,reverse:f=!1,ariaLabel:p,keyboardStep:m=10}=e,[h,g]=(0,Q.useState)(n),[_,v]=(0,Q.useState)(s),[y,b]=(0,Q.useState)(!1),x=(0,Q.useRef)(!1),S=(0,Q.useRef)(null),C=(0,Q.useRef)(n);(0,Q.useEffect)(()=>{!_&&!x.current&&g(n)},[n,_]),(0,Q.useEffect)(()=>{v(s)},[s]);let w=o??r*.6,T=(0,Q.useCallback)(()=>{if(i)return i;let e=S.current;if(!e?.parentElement)return 1/0;let n=e.parentElement.getBoundingClientRect();return(t===`horizontal`?n.width:n.height)*.8},[t,i]),E=(0,Q.useCallback)(e=>{let t=Math.max(r,Math.min(T(),e));g(t),C.current=t,c?.(t)},[r,T,c]),D=(0,Q.useCallback)(()=>{v(e=>{let t=!e;if(t)C.current=h;else{let e=Math.max(r,C.current);g(e),c?.(e)}return l?.(t),t})},[h,r,c,l]),O=(0,Q.useCallback)((e,i,o,s)=>{x.current=!0,b(!0);let p=S.current;if(!p){x.current=!1,b(!1);return}let m=_?0:h,y=T(),E=(t===`horizontal`?p.clientWidth:p.clientHeight)*d,D=!1,O=null;O=Me({pointerId:o,target:s,cursor:t===`horizontal`?`col-resize`:`row-resize`,onMove:(o,s)=>{if(D)return;let d;d=t===`horizontal`?o-e:s-i,f&&(d=-d);let p=m+d;if(a&&p<w){_||(C.current=h>r?h:n,v(!0),l?.(!0));return}if(u&&p>=E){D=!0,u(),O?.();return}_&&p>=r&&(v(!1),l?.(!1));let b=Math.max(r,Math.min(y,p));g(b),c?.(b)},onEnd:()=>{x.current=!1,b(!1)}})},[_,h,t,f,a,w,r,n,T,c,l,u,d]),k=(0,Q.useCallback)(e=>{(e.button===0||e.pointerType!==`mouse`)&&(e.preventDefault(),e.stopPropagation(),O(e.clientX,e.clientY,e.pointerId,e.currentTarget))},[O]),A=(0,Q.useCallback)(e=>{if((e.key===`Enter`||e.key===` `)&&a){e.preventDefault(),D();return}if(e.key===`Home`){e.preventDefault(),_&&(v(!1),l?.(!1)),E(r);return}if(e.key===`End`){e.preventDefault(),_&&(v(!1),l?.(!1));let t=T();Number.isFinite(t)&&E(t);return}let n=0;t===`horizontal`?(e.key===`ArrowLeft`&&(n=-m),e.key===`ArrowRight`&&(n=m)):(e.key===`ArrowUp`&&(n=-m),e.key===`ArrowDown`&&(n=m)),n!==0&&(e.preventDefault(),f&&(n=-n),_&&(v(!1),l?.(!1)),E((_?r:h)+n))},[_,a,t,T,m,r,l,f,E,h,D]),j=[`ide-sash`,t===`horizontal`?`ide-sash-vertical`:`ide-sash-horizontal`,y?`dragging`:``].filter(Boolean).join(` `),ee=T();return{size:_?0:h,collapsed:_,sashProps:{onPointerDown:k,onDoubleClick:D,onKeyDown:A,className:j,role:`separator`,tabIndex:0,"aria-label":p,"aria-orientation":t===`horizontal`?`vertical`:`horizontal`,"aria-valuemin":a?0:r,"aria-valuemax":Math.round(Number.isFinite(ee)?ee:Math.max(r,h)),"aria-valuenow":Math.round(_?0:h)},containerRef:S,setSize:E,toggleCollapse:D,dragging:y}}function gr(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function _r({itemIds:e,editorTabs:t,terminalTitles:n,activeItemId:r,groupId:i,actions:a,onActivate:o,onMoveItem:s,onRequestClose:c,onCloseTerminal:l}){let{t:d}=u(),f=St(),{rootPath:p,pinTab:m,unpinTab:h}=Ct(),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(null),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(!1),w=(0,Q.useMemo)(()=>F(t),[t]),T=(0,Q.useRef)(new Map),E=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{let e=()=>_(null);return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let D=(0,Q.useCallback)(()=>{let e=E.current;e&&(x(e.scrollLeft>0),C(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,Q.useEffect)(()=>{let e=E.current;if(!e)return;D(),e.addEventListener(`scroll`,D,{passive:!0});let t=new ResizeObserver(D);return t.observe(e),()=>{e.removeEventListener(`scroll`,D),t.disconnect()}},[D,e.length]),(0,Q.useEffect)(()=>{r&&E.current&&T.current.get(r)?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:gr()})},[r]);let O=(0,Q.useCallback)(t=>{let n=e[t];n&&(o(n),requestAnimationFrame(()=>T.current.get(n)?.focus()))},[e,o]),k=(0,Q.useCallback)(e=>{c(j(t,e)).catch(()=>void 0),y(null)},[t,c]),A=(0,Q.useCallback)((e,n)=>{let r=t.find(t=>t.id===e);if(r){let e=n&&p&&r.path.startsWith(p+`/`)?r.path.slice(p.length+1):r.path;Ee(e)}y(null)},[t,p]),ee=(0,Q.useCallback)(e=>{let n=t.find(t=>t.id===e);if(n){let{selectPath:e,toggleExpand:t,expandedPaths:r}=f.getState(),i=n.path.split(`/`);for(let e=1;e<i.length;e+=1){let n=i.slice(0,e).join(`/`);n&&!r.has(n)&&t(n)}e(n.path)}y(null)},[f,t]),M=(0,Q.useCallback)(n=>{let r=e.filter(e=>{let r=t.find(t=>t.id===e);return e!==n&&!!r?.isPinned}).length;m(n),s(n,r),y(null)},[t,e,s,m]),N=v?t.find(e=>e.id===v.tabId)??null:null;return e.length===0?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`editor-tabs-wrapper`,children:[b&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsLeft`),onClick:()=>E.current?.scrollBy({left:-150,behavior:gr()}),children:(0,$.jsx)(Fe,{size:14})}),(0,$.jsx)(`div`,{ref:E,className:`editor-tabs`,role:`tablist`,"aria-label":d(`editor.openEditors`),children:e.map((a,u)=>{let f=R(a),p=f?null:t.find(e=>e.id===a)??null;if(!f&&!p)return null;let m=f?n[f]||d(`ide.terminal`):p.name,h=p?w.get(p.id):void 0,v=``;p?.saveStatus===`saving`?v=d(`editor.saving`):p?.saveStatus===`error`?v=d(`editor.saveFailed`)+(p.saveError?`: `+p.saveError:``):p?.isDirty&&(v=d(`editor.unsaved`));let b=f?m:v?p.path+` — `+v:p.path,x=v?m+`, `+v:m,S=!!v,C=a===r;return(0,$.jsxs)(`div`,{className:`editor-tab`+(C?` active`:``)+(g===u?` drag-indicator`:``),title:b,onMouseDown:e=>{e.button===1&&(e.preventDefault(),f?l(f):c({kind:`single`,id:a}).catch(()=>void 0))},onContextMenu:e=>{p&&(e.preventDefault(),y({x:e.clientX,y:e.clientY,tabId:a}))},draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed=`move`,f?e.dataTransfer.setData(Rn,Bn({paneId:f,sourceGroupId:i})):e.dataTransfer.setData(Pn,In({tabId:a,sourceGroupId:i})),e.dataTransfer.setDragImage(e.currentTarget,0,0)},onDragOver:e=>{(e.dataTransfer.types.includes(`application/x-codebuddy-editor-tab`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,_(u))},onDrop:e=>{e.preventDefault(),e.stopPropagation();let t=Ln(e.dataTransfer.getData(Pn)),n=Vn(e.dataTransfer.getData(Rn)),r=t?.tabId??(n?z(n.paneId):null);r&&s(r,u),_(null)},onDragEnd:()=>_(null),children:[(0,$.jsxs)(`button`,{ref:e=>{e?T.current.set(a,e):T.current.delete(a)},type:`button`,className:`editor-tab-main`,role:`tab`,tabIndex:C?0:-1,"aria-selected":C,"aria-label":x,onClick:()=>o(a),onKeyDown:t=>{let n=null;t.key===`ArrowLeft`&&(n=(u-1+e.length)%e.length),t.key===`ArrowRight`&&(n=(u+1)%e.length),t.key===`Home`&&(n=0),t.key===`End`&&(n=e.length-1),n!==null&&(t.preventDefault(),O(n))},children:[f?(0,$.jsx)(J,{size:14}):(0,$.jsx)(Ge,{name:p.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`editor-tab-name`,children:m}),h&&(0,$.jsx)(`span`,{className:`editor-tab-description`,children:h}),p?.isPinned&&(0,$.jsx)(`span`,{className:`pin-icon`,children:(0,$.jsx)(ve,{size:14})}),p&&(p.isDirty||p.saveStatus!==`idle`)&&(0,$.jsx)(`span`,{className:`editor-tab-state`,children:p.saveStatus===`saving`?(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:v,children:(0,$.jsx)(`span`,{className:`tab-save-spinner`,"aria-hidden":`true`})}):p.saveStatus===`error`?(0,$.jsx)(`span`,{className:`tab-save-indicator tab-save-error`,title:v,"aria-hidden":`true`,children:`!`}):(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:v,children:(0,$.jsx)(`span`,{className:`dirty-dot`,"aria-hidden":`true`})})})]}),(0,$.jsx)(`button`,{type:`button`,className:`close-btn`+(S?``:` clean-close`),tabIndex:C?0:-1,"aria-label":d(`editor.closeTabAriaLabel`,{name:m}),onClick:()=>{f?l(f):c({kind:`single`,id:a}).catch(()=>void 0)},children:(0,$.jsx)(je,{size:12})})]},a)})}),S&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsRight`),onClick:()=>E.current?.scrollBy({left:150,behavior:gr()}),children:(0,$.jsx)(Z,{size:14})}),a&&(0,$.jsx)(`div`,{className:`editor-tabs-actions`,children:a})]}),v&&N&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:()=>y(null)}),(0,$.jsxs)(`div`,{className:`editor-context-menu`,style:{left:v.x,top:v.y},onClick:e=>e.stopPropagation(),children:[N.isPinned?(0,$.jsx)(`button`,{onClick:()=>{h(N.id),y(null)},children:d(`editor.unpin`)}):(0,$.jsx)(`button`,{onClick:()=>M(N.id),children:d(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>A(N.id,!1),children:d(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>A(N.id,!0),children:d(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:()=>ee(N.id),children:d(`editor.revealInExplorer`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`single`,id:N.id}),children:d(`editor.close`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`others`,id:N.id}),children:d(`editor.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`right`,id:N.id}),children:d(`editor.closeToRight`)}),(0,$.jsx)(`button`,{onClick:()=>{c({kind:`ids`,ids:t.filter(e=>!e.isPinned&&!e.isDirty).map(e=>e.id)}).catch(()=>void 0),y(null)},children:d(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`all`}),children:d(`editor.closeAll`)})]})]})]})}function vr(e){let t=e.dataTransfer.getData(`application/x-file-paths`)||e.dataTransfer.getData(`text/plain`);if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[t]}catch{return[t]}}function yr({node:e,tabs:t,tabActions:n,activeGroupId:r,onActivateTab:i,onRequestClose:a,onOpenFile:o,renderContent:s}){let c=St(),l=k(e=>e.activateEditorDockTab),u=k(e=>e.moveEditorDockTab),d=k(e=>e.splitEditorDockTab),f=k(e=>e.dockBottomTerminal),p=k(e=>e.closeDockTerminal),m=k(e=>e.dockedTerminals),h=b(e=>e.panes),g=b(e=>e.setActivePaneId),_=ee(e=>e.cwd),[v,y]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{let e=()=>y(null);return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let x=e.group.tabIds.map(e=>t.find(t=>t.id===e)).filter(e=>!!e),S=e.group.tabIds.includes(e.group.activeTabId??``)?e.group.activeTabId:e.group.tabIds[0]??null,w=S?R(S):null,T=w?null:x.find(e=>e.id===S)??x[0]??null,E=e.group.tabIds.map(R).filter(e=>!!e),D=E.length>0,A=Object.fromEntries(E.map(e=>[e,h[e]?.title||``]));(0,Q.useEffect)(()=>{T?.loadStatus===`loading`&&c.getState().loadTab(T.id).catch(()=>void 0)},[T?.id,T?.loadStatus,c]);let j=(0,Q.useCallback)(t=>{l(e.group.id,t);let n=R(t);n?g(n):i(t)},[l,e.group.id,i,g]),M=(0,Q.useCallback)(e=>{p(e);let t=C(k.getState().editorDock);t&&!R(t)&&i(t)},[p,i]),N=(0,Q.useCallback)(async t=>{let n=t.kind===`single`&&t.id===S,r=t.kind===`single`?e.group.tabIds.indexOf(t.id):-1;if(await a(t),!n||t.kind!==`single`||c.getState().tabs.some(e=>e.id===t.id))return;let i=k.getState().editorDock,o=O(i.root,e.group.id);if(i.activeGroupId!==e.group.id||o?.activeTabId!==t.id)return;let s=o.tabIds.filter(e=>e!==t.id),l=s[Math.min(Math.max(r,0),s.length-1)]??null;l&&j(l)},[S,j,c,e.group.tabIds,a]),P=(0,Q.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect();return Fn(e.clientX-t.left,e.clientY-t.top,t.width,t.height)},[]),F=(0,Q.useCallback)(e=>{let t=e.dataTransfer.types,n=t.includes(Pn),r=t.includes(Rn),i=t.includes(`application/x-file-paths`)||t.includes(`text/plain`);if(n||r||i){if(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=n||r?`move`:`copy`,!n&&!r){y(null);return}y(P(e))}},[P]),I=(0,Q.useCallback)(t=>{let n=Vn(t.dataTransfer.getData(Rn));if(n){t.preventDefault(),t.stopPropagation();let r=P(t),i=z(n.paneId);n.sourceGroupId===`bottom-panel`?f(n.paneId,e.group.id,e.group.tabIds.length,r===`center`?void 0:r):r===`center`?u(i,e.group.id,e.group.tabIds.length):d(e.group.id,i,r),y(null);return}let r=Ln(t.dataTransfer.getData(Pn));if(r){t.preventDefault(),t.stopPropagation();let n=P(t);n===`center`?u(r.tabId,e.group.id,e.group.tabIds.length):d(e.group.id,r.tabId,n),i(r.tabId),y(null);return}let a=vr(t);if(a.length>0){t.preventDefault(),t.stopPropagation(),e.group.activeTabId&&l(e.group.id,e.group.activeTabId);let n=t.currentTarget;o(a[0]),requestAnimationFrame(()=>{n.querySelector(`.monaco-editor textarea`)?.focus()})}y(null)},[l,f,P,u,e.group,i,o,d]);return(0,$.jsxs)(`section`,{className:`editor-dock-group`+(e.group.id===r?` active`:``),"data-editor-group":e.group.id,onPointerDown:()=>{S&&j(S)},onFocusCapture:e=>{!e.currentTarget.contains(e.relatedTarget)&&S&&j(S)},onDragEnter:F,onDragOver:F,onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||y(null)},onDrop:I,children:[D?(0,$.jsx)(_r,{itemIds:e.group.tabIds,editorTabs:x,terminalTitles:A,activeItemId:S,groupId:e.group.id,actions:e.group.id===r&&!w?n:void 0,onActivate:j,onMoveItem:(t,n)=>{let r=R(t);r&&!m.includes(r)?f(r,e.group.id,n):u(t,e.group.id,n),r||i(t)},onRequestClose:N,onCloseTerminal:M}):(0,$.jsx)(Un,{actions:e.group.id===r?n:void 0,onRequestClose:N,tabsOverride:x,activeTabIdOverride:T?.id??null,groupId:e.group.id,onActivateTab:j,onMoveTab:(t,n)=>{let r=R(t);r&&!m.includes(r)?f(r,e.group.id,n):u(t,e.group.id,n),r||i(t)}}),(0,$.jsxs)(`div`,{className:`ide-editor-content`,children:[E.map(e=>(0,$.jsx)(`div`,{className:`ide-bottom-terminal-wrap`,style:{display:w===e?`flex`:`none`},children:(0,$.jsx)(ot,{paneId:e,initialCwd:_,editorStore:c})},e)),!w&&s(T)]}),v&&(0,$.jsx)(`div`,{className:`editor-dock-drop-preview `+v,"aria-hidden":`true`})]})}function br({node:e,path:t,...n}){let r=k(e=>e.setEditorDockSplitRatio);return e.type===`group`?(0,$.jsx)(yr,{node:e,path:t,...n}):(0,$.jsxs)(st,{direction:e.direction,ratio:e.ratio,onRatioChange:e=>r(t,e),children:[(0,$.jsx)(br,{node:e.children[0],path:[...t,0],...n}),(0,$.jsx)(br,{node:e.children[1],path:[...t,1],...n})]})}function xr(e){let t=k(e=>e.editorDock);return(0,$.jsx)(`div`,{className:`editor-dock-layout`,children:(0,$.jsx)(br,{...e,node:t.root,activeGroupId:t.activeGroupId,path:[]})})}function Sr(e,t){let n=e.toLowerCase(),r=t.toLowerCase(),i=0,a=0,o=-1;for(let e=0;e<r.length&&i<n.length;e++)r[e]===n[i]&&(a+=e===o+1?2:1,(e===0||r[e-1]===`/`||r[e-1]===`.`)&&(a+=3),o=e,i++);return{match:i===n.length,score:a}}var Cr=20,wr=3;function Tr({isOpen:e,onClose:t,onSelect:n,rootPath:r,showHiddenFiles:i}){let{t:a}=u(),[o,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(0),[d,f]=(0,Q.useState)([]),[p,m]=(0,Q.useState)(!1),h=(0,Q.useRef)(null),g=(0,Q.useRef)(null),_=(0,Q.useRef)(null),y=(0,Q.useId)(),b=(0,Q.useRef)(``),x=(0,Q.useRef)([]),S=(0,Q.useCallback)(async(e,t,n)=>{if(t>wr)return[];try{let r=await v(e),a=[];for(let e of r){if(!i&&I(e.name))continue;let r=n?`${n}/${e.name}`:e.name;if(e.type===`file`&&!N(e.path))a.push({name:e.name,path:e.path,relativePath:r});else if(e.type===`directory`){let n=await S(e.path,t+1,r);a.push(...n)}}return a}catch{return[]}},[i]);(0,Q.useEffect)(()=>{if(!e)return;s(``),l(0),_.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let t=window.setTimeout(()=>h.current?.focus(),0),n=`${r}\0${i?`hidden`:`visible`}`;if(b.current===n&&x.current.length>0)return f(x.current),m(!1),()=>{window.clearTimeout(t),_.current?.focus(),_.current=null};let a=!1;return m(!0),S(r,0,``).then(e=>{a||(b.current=n,x.current=e,f(e),m(!1))}),()=>{a=!0,window.clearTimeout(t),_.current?.focus(),_.current=null}},[e,r,i,S]);let C=(0,Q.useMemo)(()=>{if(!o.trim())return d.slice(0,Cr);let e=[];for(let t of d){let n=Sr(o,t.relativePath);n.match&&e.push({entry:t,score:n.score})}return e.sort((e,t)=>t.score-e.score),e.slice(0,Cr).map(e=>e.entry)},[d,o]);(0,Q.useEffect)(()=>{l(0)},[C.length,o]);let w=(0,Q.useCallback)(e=>{switch(e.key){case`Tab`:e.preventDefault(),h.current?.focus();break;case`ArrowDown`:e.preventDefault(),l(e=>(e+1)%Math.max(C.length,1));break;case`ArrowUp`:e.preventDefault(),l(e=>(e-1+C.length)%Math.max(C.length,1));break;case`Enter`:e.preventDefault(),C[c]&&n(C[c].path);break;case`Escape`:e.preventDefault(),t()}},[C,c,n,t]);if((0,Q.useEffect)(()=>{(g.current?.children[c])?.scrollIntoView({block:`nearest`})},[c]),!e)return null;let T=C[c]?`${y}-option-${c}`:void 0;return(0,$.jsx)(`div`,{className:`quick-open-overlay`,onClick:t,children:(0,$.jsxs)(`div`,{className:`quick-open-dialog`,role:`dialog`,"aria-modal":`true`,"aria-label":a(`editor.quickOpen`),onClick:e=>e.stopPropagation(),onKeyDown:w,children:[(0,$.jsx)(`input`,{ref:h,className:`quick-open-input`,type:`text`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":`true`,"aria-controls":y,"aria-activedescendant":T,value:o,onChange:e=>s(e.target.value),placeholder:a(`editor.quickOpenPlaceholder`)}),(0,$.jsx)(`div`,{className:`quick-open-list`,ref:g,id:y,role:`listbox`,"aria-busy":p,children:p?(0,$.jsx)(`div`,{className:`quick-open-empty`,role:`status`,children:a(`editor.quickOpenLoading`)}):C.length===0?(0,$.jsx)(`div`,{className:`quick-open-empty`,role:`status`,children:a(`editor.quickOpenEmpty`)}):C.map((e,t)=>(0,$.jsxs)(`div`,{id:`${y}-option-${t}`,role:`option`,"aria-selected":t===c,className:`quick-open-item${t===c?` active`:``}`,onClick:()=>n(e.path),onMouseEnter:()=>l(t),children:[(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`quick-open-item-name`,children:e.name}),(0,$.jsx)(`span`,{className:`quick-open-item-path`,children:e.relativePath})]},e.path))})]})})}function Er({gitFileCount:e=0}){let{t}=u(),n=k(e=>e.activePanel),r=k(e=>e.sidePanelCollapsed),i=k(e=>e.toggleActivePanel),a=k(e=>e.bottomPanelCollapsed),o=k(e=>e.toggleBottomPanel),s=G(e=>e.isOpen),c=G(e=>e.toggle),l=(0,Q.useCallback)(e=>n===e&&!r,[n,r]);return(0,$.jsxs)(`div`,{className:`ide-activity-bar`,children:[(0,$.jsxs)(`div`,{className:`ide-activity-bar-top`,children:[(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`explorer`)?`active`:``}`,onClick:()=>i(`explorer`),title:t(`ide.explorer`),"aria-label":t(`ide.explorer`),"aria-pressed":l(`explorer`),children:(0,$.jsx)(ye,{size:22,strokeWidth:1.5})}),(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`search`)?`active`:``}`,onClick:()=>i(`search`),title:t(`ide.search`),"aria-label":t(`ide.search`),"aria-pressed":l(`search`),children:(0,$.jsx)(ae,{size:22,strokeWidth:1.5})}),(0,$.jsxs)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`source-control`)?`active`:``}`,onClick:()=>i(`source-control`),title:t(`ide.sourceControl`),"aria-label":t(`ide.sourceControl`),"aria-pressed":l(`source-control`),children:[(0,$.jsx)(Y,{size:22,strokeWidth:1.5}),e>0&&(0,$.jsx)(`span`,{className:`ide-activity-badge`,children:e>99?`99+`:e})]})]}),(0,$.jsxs)(`div`,{className:`ide-activity-bar-bottom`,children:[(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--utility ${a?``:`active`}`,onClick:o,title:t(`ide.terminal`),"aria-label":t(`ide.terminal`),"aria-pressed":!a,children:(0,$.jsx)(ht,{size:22,strokeWidth:1.5})}),(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--utility ${s?`active`:``}`,onClick:c,title:t(`sidebar.toggle`),"aria-label":t(`sidebar.toggle`),"aria-pressed":s,children:(0,$.jsx)(fe,{size:22,strokeWidth:1.5})})]})]})}function Dr(){try{let e=localStorage.getItem(`cbc_search_prefs`);if(e)return{...Or,...JSON.parse(e)}}catch{}return Or}var Or={viewMode:`tree`,caseSensitive:!1,isRegex:!1,wholeWord:!1,query:``,includePattern:``,excludePattern:``,useDefaultExcludes:!0};function kr(e){try{localStorage.setItem(`cbc_search_prefs`,JSON.stringify(e))}catch{}}function Ar(e){return{viewMode:e.viewMode,caseSensitive:e.caseSensitive,isRegex:e.isRegex,wholeWord:e.wholeWord,query:e.query,includePattern:e.includePattern,excludePattern:e.excludePattern,useDefaultExcludes:e.useDefaultExcludes}}var jr=Dr(),Mr,Nr=0;function Pr(){Nr+=1,Mr?.abort(),Mr=void 0}var Fr={searching:!1,results:[],totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0};function Ir(e){let t=[],n=``,r=0,i=0,a=!1;for(let o of e){if(a){n+=o,a=!1;continue}if(o===`\\`){n+=o,a=!0;continue}o===`{`&&(r+=1),o===`}`&&(r=Math.max(0,r-1)),o===`[`&&(i+=1),o===`]`&&(i=Math.max(0,i-1)),o===`,`&&r===0&&i===0?(n.trim()&&t.push(n.trim()),n=``):n+=o}return n.trim()&&t.push(n.trim()),t}var Lr=l((e,t)=>({query:jr.query,isRegex:jr.isRegex,caseSensitive:jr.caseSensitive,wholeWord:jr.wholeWord,includePattern:jr.includePattern,excludePattern:jr.excludePattern,useDefaultExcludes:jr.useDefaultExcludes,viewMode:jr.viewMode,results:[],searching:!1,totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0,setQuery:n=>{Pr(),e({query:n,...Fr}),kr(Ar({...t(),query:n}))},search:async()=>{let{query:n,isRegex:r,caseSensitive:i,wholeWord:a,includePattern:o,excludePattern:s,useDefaultExcludes:c}=t(),l=n.trim();if(!l){Mr?.abort(),e({...Fr});return}Mr?.abort();let u=new AbortController;Mr=u;let f=++Nr,p=D();e({searching:!0,error:null,results:[],totalMatches:0,fileCount:0,limitHit:!1,incomplete:!1,incompleteReason:void 0});try{let t=await fetch(`/api/v1/fs/search-content`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},signal:u.signal,body:JSON.stringify({query:l,cwd:p||void 0,isRegex:r,caseSensitive:i,wholeWord:a,includeGlobs:Ir(o),excludeGlobs:Ir(s),useIgnoreFiles:c,maxResults:500})});if(f!==Nr)return;if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error?.message||`HTTP ${t.status}`)}let n=await t.json();if(f!==Nr||u.signal.aborted)return;let m=n.data??n,h=m.results||[],g=new Map;for(let e of h){let t=g.get(e.path);t?t.push(e):g.set(e.path,[e])}let _=Array.from(g,([e,t])=>({path:e,matches:t}));e({results:_,totalMatches:h.length,fileCount:_.length,limitHit:!!m.limitHit,incomplete:!!m.incomplete,incompleteReason:m.incompleteReason,searching:!1})}catch(t){if(f!==Nr||u.signal.aborted)return;e({searching:!1,error:t instanceof Error?t.message:`Search failed`})}finally{Mr===u&&(Mr=void 0)}},cancelSearch:()=>{Pr(),e({searching:!1})},invalidateSearch:()=>{Pr(),e(Fr)},toggleRegex:()=>{Pr(),e(e=>({isRegex:!e.isRegex,...Fr})),kr(Ar(t()))},toggleCaseSensitive:()=>{Pr(),e(e=>({caseSensitive:!e.caseSensitive,...Fr})),kr(Ar(t()))},toggleWholeWord:()=>{Pr(),e(e=>({wholeWord:!e.wholeWord,...Fr})),kr(Ar(t()))},setIncludePattern:n=>{Pr(),e({includePattern:n,...Fr}),kr(Ar({...t(),includePattern:n}))},setExcludePattern:n=>{Pr(),e({excludePattern:n,...Fr}),kr(Ar({...t(),excludePattern:n}))},toggleUseDefaultExcludes:()=>{Pr(),e(e=>({useDefaultExcludes:!e.useDefaultExcludes,...Fr})),kr(Ar(t()))},setViewMode:n=>{e({viewMode:n}),kr(Ar(t()))},clear:()=>{Pr(),e({query:``,includePattern:``,excludePattern:``,...Fr}),kr(Ar(t()))}}));function Rr(e){let t={name:``,fullPath:``,isDir:!0,children:[],matchCount:0},n=new Map([[``,t]]);for(let r of e){let e=r.path.split(`/`).filter(Boolean),i=t;for(let t=0;t<e.length-1;t+=1){let r=e.slice(0,t+1).join(`/`),a=n.get(r);a||(a={name:e[t],fullPath:r,isDir:!0,children:[],matchCount:0},n.set(r,a),i.children.push(a)),i=a}let a=e.at(-1);a&&i.children.push({name:a,fullPath:r.path,isDir:!1,children:[],matches:r.matches,matchCount:r.matches.length})}let r=e=>{if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return r({...t,name:e.name?`${e.name}/${t.name}`:t.name})}let t=e.children.map(r);return{...e,children:t,matchCount:e.isDir?t.reduce((e,t)=>e+t.matchCount,0):e.matchCount}};return t.children.map(r)}function zr(e,t){let n=[],r=e=>{if(n.push(e.fullPath),t.has(e.fullPath)){if(e.isDir){e.children.forEach(r);return}e.matches?.forEach((t,r)=>n.push(`${e.fullPath}:${t.line}:${r}`))}};return e.forEach(r),n}function Br(e,t){let n=[];for(let r of e)n.push(r.path),t.has(r.path)&&r.matches.forEach((e,t)=>n.push(`${r.path}:${e.line}:${t}`));return n}function Vr(e){let t=new Set;for(let n of e){t.add(n.path);let e=n.path.split(`/`);for(let n=1;n<e.length;n+=1)t.add(e.slice(0,n).join(`/`))}return t}function Hr(e,t,n){if(!t)return[];let r=[];if(n.isRegex)return[];let i=n.caseSensitive?e:e.toLocaleLowerCase(),a=n.caseSensitive?t:t.toLocaleLowerCase(),o=0;for(;r.length<10;){let t=i.indexOf(a,o);if(t<0)break;let s=t+a.length,c=t===0?``:e[t-1],l=s===e.length?``:e[s];(!n.wholeWord||!/[\p{L}\p{N}_]/u.test(c)&&!/[\p{L}\p{N}_]/u.test(l))&&r.push({start:t,end:s}),o=Math.max(s,t+1)}return r}function Ur(e,t,n){if(e.length===0)return{type:`none`};let r=Math.max(0,Math.min(t,e.length-1)),i=e[r];if(n===`ArrowDown`)return{type:`focus`,index:Math.min(e.length-1,r+1)};if(n===`ArrowUp`)return{type:`focus`,index:Math.max(0,r-1)};if(n===`Home`)return{type:`focus`,index:0};if(n===`End`)return{type:`focus`,index:e.length-1};if(n===`ArrowRight`&&i.expandable)return i.expanded?{type:`focus`,index:Math.min(e.length-1,r+1)}:{type:`toggle`};if(n===`ArrowLeft`){if(i.expandable&&i.expanded)return{type:`toggle`};let t=i.parentId?e.findIndex(e=>e.id===i.parentId):-1;return t>=0?{type:`focus`,index:t}:{type:`none`}}return{type:`none`}}var Wr=300;function Gr(){let{t:e}=u(),{query:t,isRegex:n,caseSensitive:r,wholeWord:i,includePattern:a,excludePattern:o,useDefaultExcludes:s,viewMode:c,results:l,searching:d,totalMatches:f,fileCount:p,error:m,limitHit:h,incomplete:g,incompleteReason:_,setQuery:v,search:y,cancelSearch:b,invalidateSearch:x,toggleRegex:S,toggleCaseSensitive:C,toggleWholeWord:w,setIncludePattern:T,setExcludePattern:E,toggleUseDefaultExcludes:D,setViewMode:O,clear:k}=Lr(),{openFile:A}=Ct(),j=ee(e=>e.cwd),M=(0,Q.useRef)(null),N=(0,Q.useRef)(),[P,F]=(0,Q.useState)(new Set),[I,L]=(0,Q.useState)(!0),[R,z]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{M.current?.focus()},[]),(0,Q.useEffect)(()=>()=>b(),[b]),(0,Q.useEffect)(()=>{if(N.current&&clearTimeout(N.current),x(),t.trim())return N.current=setTimeout(()=>{y().catch(()=>{})},Wr),()=>{N.current&&clearTimeout(N.current)}},[t,n,r,i,a,o,s,j,y,x]);let V=(0,Q.useMemo)(()=>Vr(l),[l]);(0,Q.useEffect)(()=>{let e=new Set(V);for(let t of l)t.matches.length>10&&e.delete(t.path);F(e),z(null)},[V,l]);let H=(0,Q.useMemo)(()=>Rr(l),[l]),U=(0,Q.useMemo)(()=>c===`tree`?zr(H,P):Br(l,P),[P,l,H,c]),W=R&&U.includes(R)?R:null;(0,Q.useEffect)(()=>{R&&!W&&z(null)},[W,R]);let G=V.size>0&&Array.from(V).every(e=>P.has(e)),K=(0,Q.useCallback)(()=>{N.current&&clearTimeout(N.current),y().catch(()=>{})},[y]),te=(0,Q.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),K()),e.key===`Escape`&&(d?b():(k(),M.current?.focus()))},[b,k,K,d]),ne=(0,Q.useCallback)(e=>{F(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),re=(0,Q.useCallback)(()=>{F(new Set)},[]),ie=(0,Q.useCallback)(()=>{F(new Set(V))},[V]),J=(0,Q.useCallback)((e,n)=>{A(e,void 0,n?{line:n,query:t.trim()}:void 0)},[A,t]),se=(0,Q.useCallback)(()=>{k(),M.current?.focus()},[k]),ce=(0,Q.useCallback)(e=>{let t=Array.from(e.currentTarget.querySelectorAll(`[data-search-row]`));if(t.length===0)return;let n=e.target instanceof HTMLElement?e.target.closest(`[data-search-row]`):null,r=Math.max(0,n?t.indexOf(n):0),i=Ur(t.map(e=>({id:e.dataset.rowId??``,parentId:e.dataset.parentId,expandable:e.dataset.expandable===`true`,expanded:e.getAttribute(`aria-expanded`)===`true`})),r,e.key);if(i.type===`none`)return;if(e.preventDefault(),i.type===`toggle`){n?.click();return}let a=t[i.index];z(a.dataset.rowId??null),a.focus()},[]),le=(0,Q.useMemo)(()=>({isRegex:n,caseSensitive:r,wholeWord:i}),[n,r,i]);return(0,$.jsxs)(`div`,{className:`search-panel`,children:[(0,$.jsxs)(`div`,{className:`scm-header search-header`,children:[(0,$.jsx)(`span`,{className:`scm-header-title`,children:e(`ide.search.title`)}),(0,$.jsxs)(`div`,{className:`search-header-actions`,children:[(0,$.jsx)(Kr,{label:e(`ide.search.refresh`),disabled:!t.trim(),onClick:K,children:(0,$.jsx)(q,{size:15,className:d?`animate-spin`:``})}),(0,$.jsx)(Kr,{label:e(`ide.search.clear`),disabled:!t&&f===0,onClick:se,children:(0,$.jsx)(je,{size:16})}),(0,$.jsx)(Kr,{label:e(`ide.search.toggleFilters`),active:I,onClick:()=>L(e=>!e),children:(0,$.jsx)(Te,{size:15})}),(0,$.jsx)(Kr,{label:e(c===`tree`?`ide.listView`:`ide.treeView`),onClick:()=>O(c===`tree`?`list`:`tree`),children:c===`tree`?(0,$.jsx)(mt,{size:15}):(0,$.jsx)(_t,{size:15})}),(0,$.jsx)(Kr,{label:e(G?`editor.collapseAll`:`editor.expandAll`),disabled:f===0,onClick:G?re:ie,children:G?(0,$.jsx)(ft,{size:15}):(0,$.jsx)(vt,{size:15})})]})]}),(0,$.jsxs)(`div`,{className:`search-input-section`,children:[(0,$.jsxs)(`div`,{className:`search-primary-row`,children:[(0,$.jsx)(`button`,{type:`button`,className:`search-details-toggle`,onClick:()=>L(e=>!e),"aria-expanded":I,"aria-label":e(`ide.search.toggleFilters`),children:I?(0,$.jsx)(Ae,{size:16}):(0,$.jsx)(Z,{size:16})}),(0,$.jsxs)(`div`,{className:`search-field search-field--primary`,children:[(0,$.jsx)(`input`,{ref:M,className:`search-field-input`,value:t,onChange:e=>v(e.target.value),onKeyDown:te,placeholder:e(`ide.search.placeholder`),"aria-label":e(`ide.search.placeholder`),spellCheck:!1}),(0,$.jsxs)(`div`,{className:`search-field-actions`,children:[(0,$.jsx)(qr,{active:r,label:e(`ide.search.matchCase`),onClick:C,children:(0,$.jsx)(ct,{size:15})}),(0,$.jsx)(qr,{active:i,label:e(`ide.search.wholeWord`),onClick:w,children:(0,$.jsx)(yt,{size:15})}),(0,$.jsx)(qr,{active:n,label:e(`ide.search.regex`),onClick:S,children:(0,$.jsx)(gt,{size:15})})]})]})]}),I&&(0,$.jsxs)(`div`,{className:`search-details`,children:[(0,$.jsxs)(`label`,{className:`search-filter-section`,children:[(0,$.jsx)(`span`,{className:`search-filter-label`,children:e(`ide.search.filesToInclude`)}),(0,$.jsx)(`span`,{className:`search-field`,children:(0,$.jsx)(`input`,{className:`search-field-input`,value:a,onChange:e=>T(e.target.value),onKeyDown:te,placeholder:e(`ide.search.includePlaceholder`),spellCheck:!1})})]}),(0,$.jsxs)(`label`,{className:`search-filter-section`,children:[(0,$.jsx)(`span`,{className:`search-filter-label`,children:e(`ide.search.filesToExclude`)}),(0,$.jsxs)(`span`,{className:`search-field`,children:[(0,$.jsx)(`input`,{className:`search-field-input`,value:o,onChange:e=>E(e.target.value),onKeyDown:te,placeholder:e(`ide.search.excludePlaceholder`),spellCheck:!1}),(0,$.jsx)(`span`,{className:`search-field-actions`,children:(0,$.jsx)(qr,{active:s,label:e(`ide.search.useExcludeSettings`),onClick:D,children:(0,$.jsx)(oe,{size:15})})})]})]})]})]}),(d||f>0||g||m)&&(0,$.jsxs)(`div`,{className:`search-status-bar`,role:`status`,"aria-live":`polite`,children:[d&&(0,$.jsxs)(`div`,{className:`search-status`,children:[(0,$.jsx)(B,{size:14,className:`animate-spin`}),(0,$.jsx)(`span`,{children:e(`ide.search.searching`)})]}),!d&&(f>0||g)&&(0,$.jsxs)(`div`,{className:`search-status`,title:h?e(`ide.search.limitReached`,{count:f}):void 0,children:[f>0&&(0,$.jsx)(`span`,{children:e(`ide.search.results`,{count:h?`${f}+`:f,files:p})}),g&&(0,$.jsx)(`span`,{className:`search-partial-warning`,children:e(_===`timeout`?`ide.search.partialTimedOut`:`ide.search.partialError`)})]}),m&&(0,$.jsx)(`div`,{className:`search-status search-error`,role:`alert`,children:m.includes(`timed out`)?e(`ide.search.timedOut`):e(`ide.search.failed`)}),d&&(0,$.jsx)(`button`,{type:`button`,className:`scm-icon-btn`,onClick:b,title:e(`ide.search.cancel`),"aria-label":e(`ide.search.cancel`),children:(0,$.jsx)(Ce,{size:11,fill:`currentColor`})})]}),(0,$.jsxs)(`div`,{className:`search-results`,role:`tree`,"aria-label":e(`ide.search.resultsLabel`),"aria-busy":d,onKeyDown:ce,children:[c===`tree`&&H.map((e,n)=>(0,$.jsx)(Jr,{node:e,depth:0,parentId:void 0,isFirst:n===0,focusedRowId:W,setFocusedRowId:z,expandedPaths:P,onToggle:ne,onFileClick:J,query:t,highlightOptions:le},e.fullPath)),c===`list`&&l.map(e=>(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,role:`treeitem`,"aria-level":1,"aria-expanded":P.has(e.path),"data-search-row":!0,"data-row-id":e.path,"data-expandable":`true`,tabIndex:W===e.path||!W&&e===l[0]?0:-1,className:`search-tree-file`,style:{paddingLeft:`6px`},onFocus:()=>z(e.path),onClick:()=>ne(e.path),title:e.path,children:[P.has(e.path)?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ge,{name:e.path.split(`/`).pop()||``,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.path.split(`/`).pop()}),(0,$.jsx)(`span`,{className:`search-list-filepath`,children:e.path}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matches.length})]}),P.has(e.path)&&(0,$.jsx)(Yr,{matches:e.matches,filePath:e.path,parentId:e.path,level:2,indent:26,query:t,highlightOptions:le,focusedRowId:W,setFocusedRowId:z,onFileClick:J})]},e.path)),!d&&t&&f===0&&!g&&!m&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)(ae,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:e(`ide.search.noResults`)})]})]})]})}function Kr({label:e,active:t,disabled:n=!1,onClick:r,children:i}){return(0,$.jsx)(`button`,{type:`button`,className:`scm-icon-btn ${t?`active`:``}`,onClick:r,disabled:n,title:e,"aria-label":e,"aria-pressed":t,children:i})}function qr({active:e,label:t,onClick:n,children:r}){return(0,$.jsx)(`button`,{type:`button`,className:`search-field-btn ${e?`active`:``}`,onClick:n,title:t,"aria-label":t,"aria-pressed":e,children:r})}function Jr({node:e,depth:t,parentId:n,isFirst:r,focusedRowId:i,setFocusedRowId:a,expandedPaths:o,onToggle:s,onFileClick:c,query:l,highlightOptions:u}){let d=o.has(e.fullPath),f=t*14+6,p={role:`treeitem`,"aria-level":t+1,"data-search-row":!0,"data-row-id":e.fullPath,"data-parent-id":n,"data-expandable":`true`,tabIndex:i===e.fullPath||!i&&r?0:-1,onFocus:()=>a(e.fullPath)};return e.isDir?(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,...p,"aria-expanded":d,className:`search-tree-dir`,style:{paddingLeft:`${f}px`},onClick:()=>s(e.fullPath),title:e.fullPath,children:[d?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Oe,{size:14,className:`scm-tree-folder-icon`}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.name}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matchCount})]}),d&&(0,$.jsx)(`div`,{role:`group`,children:e.children.map(n=>(0,$.jsx)(Jr,{node:n,depth:t+1,parentId:e.fullPath,isFirst:!1,focusedRowId:i,setFocusedRowId:a,expandedPaths:o,onToggle:s,onFileClick:c,query:l,highlightOptions:u},n.fullPath))})]}):(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,...p,"aria-expanded":d,className:`search-tree-file`,style:{paddingLeft:`${f}px`},onClick:()=>s(e.fullPath),title:e.fullPath,children:[d?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.name}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matchCount})]}),d&&e.matches&&(0,$.jsx)(Yr,{matches:e.matches,filePath:e.fullPath,parentId:e.fullPath,level:t+2,indent:f+20,query:l,highlightOptions:u,focusedRowId:i,setFocusedRowId:a,onFileClick:c})]})}function Yr({matches:e,filePath:t,parentId:n,level:r,indent:i,query:a,highlightOptions:o,focusedRowId:s,setFocusedRowId:c,onFileClick:l}){return(0,$.jsx)(`div`,{className:`search-tree-matches`,role:`group`,children:e.map((e,u)=>{let d=`${t}:${e.line}:${u}`;return(0,$.jsxs)(`button`,{type:`button`,role:`treeitem`,"aria-level":r,"data-search-row":!0,"data-row-id":d,"data-parent-id":n,tabIndex:s===d?0:-1,className:`search-tree-match`,style:{paddingLeft:`${i}px`},onFocus:()=>c(d),onClick:()=>l(t,e.line),title:`${t}:${e.line}`,children:[(0,$.jsx)(`span`,{className:`search-match-line`,children:e.line}),(0,$.jsx)(Xr,{text:e.text,query:a,options:o,ranges:e.matchRanges})]},d)})})}function Xr({text:e,query:t,options:n,ranges:r}){let i=r??Hr(e,t,n);if(i.length===0)return(0,$.jsx)(`span`,{className:`search-match-text`,children:e});let a=[],o=0;for(let t of i)t.start>o&&a.push((0,$.jsx)(`span`,{children:e.slice(o,t.start)},`text-${o}`)),a.push((0,$.jsx)(`mark`,{className:`search-highlight`,children:e.slice(t.start,t.end)},`match-${t.start}`)),o=t.end;return o<e.length&&a.push((0,$.jsx)(`span`,{children:e.slice(o)},`text-${o}`)),(0,$.jsx)(`span`,{className:`search-match-text`,children:a})}function Zr(e,t,n,r=!1,i){let a=H(e,t??n),o=N(a);return{editorPath:a,mode:o&&(r||i===`deleted`)?`unavailable`:o?`preview`:`diff`}}function Qr(e,t){let n={name:``,path:``,isDir:!0,children:[]};for(let r of e){let e=t(r).split(`/`),i=n;for(let t=0;t<e.length;t++){let n=e[t],a=t===e.length-1,o=e.slice(0,t+1).join(`/`);if(a)i.children.push({name:n,path:o,isDir:!1,children:[],data:r});else{let e=i.children.find(e=>e.isDir&&e.name===n);e||(e={name:n,path:o,isDir:!0,children:[]},i.children.push(e)),i=e}}}return n.children.map($r)}function $r(e){if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return $r({...t,name:`${e.name}/${t.name}`})}return{...e,children:e.children.map($r)}}var ei={modified:{label:`M`,color:`var(--color-accent-yellow)`},added:{label:`A`,color:`var(--color-accent-green)`},deleted:{label:`D`,color:`var(--color-accent-red)`},renamed:{label:`R`,color:`var(--color-accent-blue)`},copied:{label:`C`,color:`var(--color-accent-blue)`},untracked:{label:`U`,color:`var(--color-accent-green)`},conflicted:{label:`!`,color:`var(--color-accent-red)`}};function ti({file:e,onStage:t,onUnstage:n,onDiscard:r,onOpenFile:i}){let{t:a}=u(),o=(0,Q.useCallback)(t=>{t.stopPropagation(),Ee(e.path)},[e.path]);return(0,$.jsxs)(`div`,{className:`scm-file-actions`,children:[(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:o,title:a(`ide.scm.copyPath`),children:(0,$.jsx)(We,{size:13})}),i&&e.status!==`deleted`&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),i(e.path)},title:a(`ide.scm.openFile`),children:(0,$.jsx)(qe,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),r(e.path)},title:a(`ide.scm.discard`),children:(0,$.jsx)(et,{size:13})}),t&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:n=>{n.stopPropagation(),t(e.path)},title:a(`ide.scm.stage`),children:(0,$.jsx)(X,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),n(e.path)},title:a(`ide.scm.unstage`),children:(0,$.jsx)(xe,{size:13})})]})}function ni({files:e,sectionTitle:t,sectionCount:n,sectionActions:r,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c}){let[l,u]=(0,Q.useState)(!0);return(0,$.jsxs)(`div`,{className:`scm-file-list`,children:[t&&(0,$.jsxs)(`div`,{className:`scm-tree-section-root`,onClick:()=>u(e=>!e),children:[l?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{className:`scm-tree-section-title`,children:t}),n!==void 0&&(0,$.jsx)(`span`,{className:`scm-section-count`,children:n}),r&&(0,$.jsx)(`div`,{className:`scm-file-actions`,children:r})]}),(!t||l)&&e.map(e=>{let t=ei[e.status]||{label:`?`,color:`var(--color-text-tertiary)`},n=e.path.split(`/`).pop()||e.path,r=e.path.includes(`/`)?e.path.substring(0,e.path.lastIndexOf(`/`)):``;return(0,$.jsxs)(`div`,{className:`scm-file-item`,onClick:()=>s?.(e),children:[(0,$.jsx)(Ge,{name:n,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:n}),r&&(0,$.jsx)(`span`,{className:`scm-file-path-desc`,children:r}),(0,$.jsx)(ti,{file:e,onStage:i,onUnstage:a,onDiscard:o,onOpenFile:c}),(0,$.jsx)(`span`,{className:`scm-file-status`,style:{color:t.color},children:t.label})]},`${e.path}-${e.staged}`)})]})}function ri({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let{t:s}=u(),[c,l]=(0,Q.useState)(!0);function d(e){if(!e.isDir)return null;let t=ai(e);return t.length===0?null:t.some(e=>e.status===`modified`)?`var(--color-accent-yellow)`:t.some(e=>e.status===`untracked`||e.status===`added`)?`var(--color-accent-green)`:`var(--color-text-tertiary)`}let f=d(e),p=ai(e),m=(0,Q.useCallback)(e=>{e.stopPropagation(),n&&p.forEach(e=>n(e.path))},[n,p]),h=(0,Q.useCallback)(e=>{e.stopPropagation(),i&&p.forEach(e=>i(e.path))},[i,p]),g=(0,Q.useCallback)(e=>{e.stopPropagation(),r&&p.forEach(e=>r(e.path))},[r,p]),_=t*16+4;return(0,$.jsxs)(`div`,{className:`scm-tree-group`,children:[(0,$.jsxs)(`div`,{className:`scm-tree-dir`,style:{paddingLeft:`${_}px`},onClick:()=>l(e=>!e),children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`scm-tree-indent-guide`,style:{left:`${t*16+12}px`}},t)),c?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Oe,{size:14,className:`scm-tree-folder-icon`}),(0,$.jsx)(`span`,{className:`scm-tree-dir-name`,children:e.name}),(0,$.jsxs)(`div`,{className:`scm-file-actions`,children:[i&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:h,title:s(`ide.scm.discardAll`),children:(0,$.jsx)(et,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:m,title:s(`ide.scm.stageAll`),children:(0,$.jsx)(X,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:g,title:s(`ide.scm.unstageAll`),children:(0,$.jsx)(xe,{size:13})})]}),f&&(0,$.jsx)(`span`,{className:`scm-tree-dir-dot`,style:{background:f}})]}),c&&e.children.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path):(0,$.jsx)(ii,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path))]})}function ii({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let s=e.data,c=ei[s.status]||{label:`?`,color:`var(--color-text-tertiary)`};return(0,$.jsxs)(`div`,{className:`scm-file-item`,style:{paddingLeft:`${t*16+20}px`},onClick:()=>a?.(s),children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`scm-tree-indent-guide`,style:{left:`${t*16+12}px`}},t)),(0,$.jsx)(Ge,{name:e.name,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:e.name}),(0,$.jsx)(ti,{file:s,onStage:n,onUnstage:r,onDiscard:i,onOpenFile:o}),(0,$.jsx)(`span`,{className:`scm-file-status`,style:{color:c.color},children:c.label})]})}function ai(e){return e.isDir?e.children.flatMap(ai):e.data?[e.data]:[]}function oi({files:e,sectionTitle:t,sectionCount:n,sectionActions:r,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c}){let[l,u]=(0,Q.useState)(!0),d=Qr(e,e=>e.path);return t?(0,$.jsxs)(`div`,{className:`scm-file-list scm-tree-view`,children:[(0,$.jsxs)(`div`,{className:`scm-tree-section-root`,onClick:()=>u(e=>!e),children:[l?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{className:`scm-tree-section-title`,children:t}),n!==void 0&&(0,$.jsx)(`span`,{className:`scm-section-count`,children:n}),r&&(0,$.jsx)(`div`,{className:`scm-file-actions`,children:r})]}),l&&d.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(ii,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))]}):(0,$.jsx)(`div`,{className:`scm-file-list scm-tree-view`,children:d.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(ii,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))})}function si(e){return e.viewMode===`tree`?(0,$.jsx)(oi,{...e}):(0,$.jsx)(ni,{...e})}var ci=[`var(--color-accent-green)`,`var(--color-accent-blue)`,`var(--color-accent-yellow)`,`var(--color-accent-purple)`,`var(--color-accent-red)`];function li(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString()}catch{return e}}function ui(){let{t:e}=u(),[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)([]),[a,o]=(0,Q.useState)(!1),s=(0,Q.useCallback)(async()=>{o(!0);try{let e=await Yt(30);i(e)}catch{}o(!1)},[]);return(0,Q.useEffect)(()=>{t&&r.length===0&&!a&&s()},[t,r.length,a,s]),(0,$.jsxs)(`div`,{className:`scm-graph`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>n(e=>!e),children:[t?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:e(`ide.scm.graph`)}),t&&(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:e=>{e.stopPropagation(),s()},title:e(`ide.refresh`),children:(0,$.jsx)(q,{size:12,className:a?`animate-spin`:``})})]}),t&&(0,$.jsxs)(`div`,{className:`scm-graph-list`,children:[a&&r.length===0&&(0,$.jsx)(`div`,{className:`scm-graph-loading`,children:(0,$.jsx)(B,{size:14,className:`animate-spin`})}),r.map((e,t)=>(0,$.jsxs)(`div`,{className:`scm-graph-entry`,title:`${e.hash}\n${e.author}\n${e.date}`,children:[(0,$.jsx)(`span`,{className:`scm-graph-dot`,style:{background:ci[t%ci.length]}}),(0,$.jsx)(`span`,{className:`scm-graph-msg`,children:e.message}),(0,$.jsx)(`span`,{className:`scm-graph-time`,children:li(e.date)})]},e.hash))]})]})}function di({onDidOpenFile:e}={}){let{t}=u(),n=St(),{isGitRepo:r,repositoryRoot:i,loading:a,files:o,currentBranch:s,ahead:c,behind:l,pushing:d,pulling:f,repositoryOperationInProgress:p,branches:m,branchesLoading:h,operationFeedback:g,refresh:_,loadBranches:v,stageFile:y,unstageFile:b,stageAll:x,unstageAll:S,discardFile:C,discardAll:w,push:T,pull:E,switchBranch:D,createBranch:O,clearOperationMessage:A}=xn(),j=Ct(e=>e.openFile),M=ee(e=>e.cwd),N=k(e=>e.scmViewMode),P=k(e=>e.setScmViewMode),[F,I]=(0,Q.useState)(!0),[L,R]=(0,Q.useState)(!0);(0,Q.useEffect)(()=>{_(),xn.getState().startWatching()},[_]),(0,Q.useEffect)(()=>{if(g?.success){let e=setTimeout(A,3e3);return()=>clearTimeout(e)}},[g,A]);let z=D,V=g?.operation===`switchBranch`||g?.operation===`createBranch`,H=(0,Q.useCallback)(()=>{if(g)switch(g.operation){case`switchBranch`:g.target&&D(g.target);break;case`createBranch`:g.target&&O(g.target);break;case`push`:T();break;case`pull`:E()}},[g,D,O,T,E]),U=(0,Q.useCallback)(async r=>{let{editorPath:a,mode:o}=Zr(r.path,i,M,r.staged,r.status);if(k.getState().bottomPanelMaximized&&k.setState({bottomPanelMaximized:!1}),o===`unavailable`){He.warn(t(`ide.scm.binaryRevisionPreviewUnavailable`));return}try{let t=a;if(o===`preview`)await n.getState().openFile(a);else{let e=await Ht(r.path,r.staged);n.getState().openDiffTab(a,{oldText:e.oldText,newText:e.newText,staged:r.staged}),t=`diff://${a}@${r.staged?`staged`:`unstaged`}`}e?.(a,t)}catch{}},[n,e,i,t,M]),W=(0,Q.useCallback)(async t=>{let{editorPath:n}=Zr(t,i,M);await j(n),e?.(n,n)},[n,e,j,i,M]),G=o.filter(e=>e.staged),K=o.filter(e=>!e.staged);return r?(0,$.jsxs)(`div`,{className:`scm-panel`,children:[(0,$.jsxs)(`div`,{className:`scm-header`,children:[(0,$.jsx)(`span`,{className:`scm-header-title`,children:t(`ide.scm.title`)}),(0,$.jsxs)(`div`,{className:`scm-header-actions`,children:[(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`list`?`active`:``}`,onClick:()=>P(`list`),title:t(`ide.listView`),children:(0,$.jsx)(mt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`tree`?`active`:``}`,onClick:()=>P(`tree`),title:t(`ide.treeView`),children:(0,$.jsx)(_t,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(q,{size:14,className:a?`animate-spin`:``})})]})]}),(0,$.jsxs)(`div`,{className:`scm-scroll`,children:[(0,$.jsxs)(`div`,{className:`scm-section`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>I(e=>!e),children:[F?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.repositories`)})]}),F&&(0,$.jsx)(wn,{currentBranch:s,branches:m,branchesLoading:h,operationInProgress:p,onSwitch:z,onCreate:O,onLoadBranches:v,actions:(0,$.jsxs)($.Fragment,{children:[(c>0||l>0)&&(0,$.jsxs)(`span`,{className:`scm-branch-sync`,children:[c>0&&(0,$.jsxs)(`span`,{children:[`↑`,c]}),l>0&&(0,$.jsxs)(`span`,{children:[`↓`,l]})]}),(0,$.jsxs)(`div`,{className:`scm-branch-actions`,children:[(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:E,disabled:p,title:t(`ide.scm.pull`),children:f?(0,$.jsx)(B,{size:14,className:`animate-spin`}):(0,$.jsx)(we,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:T,disabled:p,title:t(`ide.scm.push`),children:d?(0,$.jsx)(B,{size:14,className:`animate-spin`}):(0,$.jsx)(ie,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(q,{size:12,className:a?`animate-spin`:``})})]})]})}),g&&V&&(0,$.jsx)(fi,{feedback:g,onRetry:H,onClose:A})]}),(0,$.jsxs)(`div`,{className:`scm-section`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>R(e=>!e),children:[L?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.changes`)}),(0,$.jsx)(`span`,{className:`scm-section-count`,children:o.length})]}),g&&!V&&(0,$.jsx)(fi,{feedback:g,onRetry:H,onClose:A}),L&&(0,$.jsxs)($.Fragment,{children:[G.length>0&&(0,$.jsx)(si,{files:G,viewMode:N,sectionTitle:t(`ide.scm.stagedChanges`),sectionCount:G.length,sectionActions:(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>S(),disabled:p,title:t(`ide.scm.unstageAll`),children:(0,$.jsx)(xe,{size:13})}),onUnstage:p?void 0:b,onSelect:U,onOpenFile:W}),K.length>0&&(0,$.jsx)(si,{files:K,viewMode:N,sectionTitle:t(`ide.scm.changes`),sectionCount:K.length,sectionActions:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>w(),disabled:p,title:t(`ide.scm.discardAll`),children:(0,$.jsx)(et,{size:13})}),(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>x(),disabled:p,title:t(`ide.scm.stageAll`),children:(0,$.jsx)(X,{size:13})})]}),onStage:p?void 0:y,onDiscard:p?void 0:C,onSelect:U,onOpenFile:W}),o.length===0&&!a&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)($e,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:t(`ide.scm.noChanges`)})]})]})]}),(0,$.jsx)(ui,{})]})]}):(0,$.jsxs)(`div`,{className:`scm-panel`,children:[(0,$.jsx)(`div`,{className:`scm-header`,children:(0,$.jsx)(`span`,{className:`scm-header-title`,children:t(`ide.scm.title`)})}),(0,$.jsxs)(`div`,{className:`ide-panel-placeholder`,children:[(0,$.jsx)(Y,{size:32,strokeWidth:1,style:{opacity:.2}}),(0,$.jsx)(`div`,{className:`ide-panel-placeholder-text`,children:t(`ide.scm.notGitRepo`)})]})]})}function fi({feedback:e,onRetry:t,onClose:n}){let{t:r}=u(),i,a=!e.success;if(e.success)switch(e.operation){case`switchBranch`:i=r(`ide.scm.feedback.switched`,{name:e.target||``});break;case`createBranch`:i=r(`ide.scm.feedback.created`,{name:e.target||``});break;case`push`:i=r(`ide.scm.feedback.pushed`);break;case`pull`:i=r(`ide.scm.feedback.pulled`);break;default:i=r(`ide.scm.feedback.completed`)}else i=r(Sn(e.message,e.operation)),a=Cn(e.message,e.operation);return(0,$.jsxs)(`div`,{className:`scm-operation-notice ${e.success?`success`:`error`}`,role:e.success?`status`:`alert`,children:[(0,$.jsx)(`div`,{className:`scm-operation-notice-icon`,children:e.success?(0,$.jsx)(Pe,{size:16}):(0,$.jsx)(Ke,{size:16})}),(0,$.jsxs)(`div`,{className:`scm-operation-notice-content`,children:[(0,$.jsx)(`strong`,{children:e.success?r(`ide.scm.feedback.success`):r(`ide.scm.feedback.failed`)}),(0,$.jsx)(`span`,{children:i}),!e.success&&e.message&&(0,$.jsxs)(`details`,{className:`scm-operation-details`,children:[(0,$.jsx)(`summary`,{children:r(`ide.scm.feedback.details`)}),(0,$.jsx)(`pre`,{children:e.message})]}),!e.success&&a&&(0,$.jsxs)(`button`,{className:`scm-operation-retry`,onClick:t,children:[(0,$.jsx)(ze,{size:12}),r(`ide.scm.feedback.retry`)]})]}),(0,$.jsx)(`button`,{className:`scm-operation-close`,onClick:n,title:r(`common.close`),children:(0,$.jsx)(je,{size:14})})]})}function pi({activePanel:e,onMenuClick:t}){return(0,$.jsxs)(`div`,{className:`ide-side-panel-content`,children:[e===`explorer`&&(0,$.jsx)(lr,{onMenuClick:t}),e===`search`&&(0,$.jsx)(Gr,{}),e===`source-control`&&(0,$.jsx)(di,{})]})}var mi=640;function hi({onMenuClick:e,tabs:t,activeTab:n,tabActions:r,cursorInfo:i,imageInfo:a,previewZoom:o,isSourceMode:s,isSourceModeForTab:c,quickOpenVisible:l,setQuickOpenVisible:d,onContentChange:f,onSave:p,onActivateTab:m,onRequestClose:h,onCursorChange:g,onImageInfo:_,onZoomChange:v,hideActivityBar:y=!1}){let{t:b}=u(),x=(0,Q.useRef)(null),[S,C]=(0,Q.useState)(!1),[w,T]=(0,Q.useState)(`explorer`),{rootPath:E,openFile:D,revealInTree:O,loadTab:A,showHiddenFiles:j}=Ct(),ee=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),M=y&&ee?.kind===`editor`&&!ee.filePath;(0,Q.useLayoutEffect)(()=>{let e=x.current;if(!y||!e){C(!1);return}let t=e=>C(e<=mi);t(e.getBoundingClientRect().width);let n=new ResizeObserver(e=>{let n=e[0];n&&t(n.contentRect.width)});return n.observe(e),()=>n.disconnect()},[y]);let{activePanel:N,sidePanelWidth:P,sidePanelCollapsed:F,setSidePanelWidth:I,setSidePanelCollapsed:L,bottomPanelHeight:R,bottomPanelCollapsed:z,bottomPanelMaximized:B,setBottomPanelHeight:H,setBottomPanelCollapsed:U,toggleBottomPanel:W,toggleBottomPanelMaximize:G}=k(),K=hr({direction:`horizontal`,initialSize:P,minSize:160,maxSize:600,collapsible:!0,defaultCollapsed:F,onResize:I,onCollapse:L,ariaLabel:b(`ide.resizeSidePanel`)}),q=hr({direction:`vertical`,initialSize:R,minSize:140,maxSize:typeof window<`u`?Math.max(300,window.innerHeight-80):500,collapsible:!0,defaultCollapsed:z,reverse:!0,onResize:H,onCollapse:U,onMaximize:G,maximizeThreshold:.85,ariaLabel:b(`ide.resizeBottomPanel`)}),ne=xn(e=>e.files.length);(0,Q.useEffect)(()=>(xn.getState().refresh(),xn.getState().startWatching(),()=>{xn.getState().stopWatching()}),[]);let re=typeof navigator<`u`&&navigator.platform.includes(`Mac`),ie=(e=n)=>M?(0,$.jsx)(gi,{t:b}):e?e.loadStatus===`ready`?e.viewMode===`diff`&&e.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(te,{path:e.path,oldText:e.diffData.oldText,newText:e.diffData.newText})}):e.viewMode===`editor`||c(e.id)?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:e.path,content:e.content,language:e.language,onContentChange:t=>f(e.id,t),onSave:()=>p(e.id),minimap:!S,onCursorChange:(t,n,r,i)=>g(e.id,t,n,r,i)})}):(0,$.jsx)($n,{path:e.path,name:e.name,content:e.content,viewMode:e.viewMode,onImageInfo:t=>_(e.id,t),onZoomChange:t=>v(e.id,t)}):(0,$.jsx)(Pt,{tab:e,onRetry:()=>A(e.id)}):y?(0,$.jsx)(gi,{t:b}):(0,$.jsx)(_i,{isMac:re,t:b}),ae=l&&E&&(0,$.jsx)(Tr,{isOpen:l,onClose:()=>d(!1),onSelect:e=>{D(e),d(!1)},rootPath:E,showHiddenFiles:j}),oe=y?`explorer`:N??`explorer`;(0,Q.useEffect)(()=>{y&&S&&T(M||!n?`explorer`:`editor`)},[n?.path,S,ee?.id,M,y]);let se=S&&w===`explorer`,ce=y?S?se:!K.collapsed:!(!N||K.collapsed),le=!S||!se,ue=!q.collapsed,de=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{if(!y)return;let e=n?.path??(M?`__open__`:null);e&&de.current!==e&&(de.current=e,F&&L(!1))},[n?.path,M,y,L,F]),(0,$.jsxs)(`div`,{className:`ide-layout`,ref:x,children:[ae,(0,$.jsxs)(`div`,{className:`ide-layout-row`,ref:K.containerRef,children:[!y&&(0,$.jsx)(Er,{gitFileCount:ne}),ce&&(0,$.jsxs)(`div`,{className:`ide-side-panel`,style:{width:S?`100%`:K.size},children:[(0,$.jsx)(pi,{activePanel:oe,onMenuClick:e}),!S&&(0,$.jsx)(`div`,{...K.sashProps})]}),(0,$.jsxs)(`div`,{className:`ide-main-area`,ref:q.containerRef,style:{display:le?`flex`:`none`},children:[!B&&(0,$.jsx)(`div`,{className:`ide-editor-area`,style:{flex:ue?void 0:1,height:ue?`calc(100% - ${q.size}px)`:`100%`},children:y?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[S&&n&&!M&&(0,$.jsx)(`button`,{type:`button`,className:`ide-dock-terminal-btn`,onClick:()=>T(`explorer`),title:b(`dock.pickFromTree`),"aria-label":b(`dock.pickFromTree`),children:(0,$.jsx)(ke,{size:14})}),M||!n||!E?(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}):(0,$.jsx)(At,{filePath:n.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),(0,$.jsx)(`button`,{type:`button`,className:`ide-dock-terminal-btn${z?``:` on`}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>W(),title:b(`ide.toggleTerminal`),"aria-label":b(`ide.toggleTerminal`),"aria-pressed":!z,children:(0,$.jsx)(J,{size:14})})]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:ie()})]}):(0,$.jsx)(xr,{tabs:t,tabActions:r,onActivateTab:m,onRequestClose:h,onOpenFile:e=>{D(e).catch(()=>void 0)},renderContent:e=>(0,$.jsxs)($.Fragment,{children:[e&&E&&(0,$.jsx)(At,{filePath:e.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),ie(e)]})})}),ue&&(0,$.jsxs)($.Fragment,{children:[!B&&(0,$.jsx)(`div`,{...q.sashProps}),(0,$.jsx)(`div`,{className:`ide-bottom-panel-wrap`,style:{height:B?`100%`:q.size},children:(0,$.jsx)(mr,{})})]})]})]}),(0,$.jsx)(`div`,{className:`ide-statusbar-drag-zone`,onPointerDown:q.sashProps.onPointerDown,onDoubleClick:q.sashProps.onDoubleClick,children:(0,$.jsx)(An,{language:n?.language||``,cursorLine:i.line,cursorColumn:i.col,selectedCount:i.selectedChars,selectedLines:i.selectedLines,viewMode:n?s?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:a,zoom:o,extraRight:y?(0,$.jsxs)(`button`,{type:`button`,className:`editor-statusbar-item clickable${z?``:` is-active`}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>W(),title:b(`ide.toggleTerminal`),"aria-label":b(`ide.toggleTerminal`),"aria-pressed":!z,children:[(0,$.jsx)(J,{size:12}),(0,$.jsx)(`span`,{children:b(`ide.terminal`)})]}):void 0})})]})}function gi({t:e}){return(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(ke,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:e(`dock.openFile`)}),(0,$.jsx)(`p`,{children:e(`dock.pickFromTree`)})]})}function _i({isMac:e,t}){let n=(0,Q.useRef)(null),[r,i]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{let e=n.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e)i(t.contentRect.height<300)});return t.observe(e),()=>t.disconnect()},[]),(0,$.jsxs)(`div`,{className:`editor-empty`,ref:n,children:[(0,$.jsx)(`div`,{className:`ide-empty-icon`,children:(0,$.jsx)(`img`,{src:Ue,alt:`CodeBuddy`,width:`64`,height:`64`,style:{opacity:.15,filter:`grayscale(1)`}})}),!r&&(0,$.jsxs)(`div`,{className:`editor-empty-shortcuts`,children:[(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌘`:`Ctrl`,`+P`]}),(0,$.jsx)(`span`,{children:t(`editor.quickOpen`)})]}),(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌘`:`Ctrl`,`+B`]}),(0,$.jsx)(`span`,{children:t(`ide.toggleSidebar`)})]}),(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌃`:`Ctrl`,"+`"]}),(0,$.jsx)(`span`,{children:t(`ide.toggleTerminal`)})]})]})]})}function vi(){let{t:e}=u(),t=k(e=>e.activeMobilePanel),n=k(e=>e.setActiveMobilePanel),r=xn(e=>e.files.length),i=[{id:`explorer`,icon:(0,$.jsx)(ye,{size:20,strokeWidth:1.5}),label:e(`ide.explorer`)},{id:`search`,icon:(0,$.jsx)(ae,{size:20,strokeWidth:1.5}),label:e(`ide.search`)},{id:`source-control`,icon:(0,$.jsx)(Y,{size:20,strokeWidth:1.5}),label:e(`ide.sourceControl`),badge:r},{id:`terminal`,icon:(0,$.jsx)(J,{size:20,strokeWidth:1.5}),label:e(`ide.terminal`)}];return(0,$.jsx)(`div`,{className:`mobile-tab-bar`,children:i.map(e=>(0,$.jsxs)(`button`,{className:`mobile-tab-bar-btn ${t===e.id?`active`:``}`,onClick:()=>n(e.id),children:[(0,$.jsxs)(`span`,{className:`mobile-tab-bar-icon`,children:[e.icon,e.badge!=null&&e.badge>0&&(0,$.jsx)(`span`,{className:`mobile-tab-bar-badge`,children:e.badge>99?`99+`:e.badge})]}),(0,$.jsx)(`span`,{className:`mobile-tab-bar-label`,children:e.label})]},e.id))})}var yi=1e3,bi={line:1,col:1,selectedChars:0,selectedLines:0};function xi(e){return`editor-save:${e}`}function Si({editorStore:e=E,...t}){return(0,$.jsx)(xt,{store:e,children:(0,$.jsx)(Ci,{...t})})}function Ci({onMenuClick:e,isVisible:n=!0,hideActivityBar:r=!1}){let{t:i,resolved:a}=u(),o=St(),{tabs:s,activeTabId:l,rootPath:d,tree:f,treeLoading:p,treeError:m,openFile:h,loadTab:g,updateTabContent:_,saveTab:v,requestCloseTabs:b,discardTabs:x,revealInTree:S,pendingReveal:w,showHiddenFiles:T,setActiveTab:E}=Ct(),[D,O]=(0,Q.useState)(!1),[j]=(0,Q.useState)(()=>Ot(yi)),M=k(e=>e.toggleBottomPanel),N=k(e=>e.editorDock),P=k(e=>e.closeDockTerminal),F=k(e=>e.syncEditorDockTabs),I=ee(e=>e.cwd),L=Re(),[z,B]=(0,Q.useState)(!1),H=(0,Q.useRef)(!1),U=(0,Q.useRef)(null),W=(0,Q.useRef)(null),G=(0,Q.useRef)(null),K=L?z:n;(0,Q.useEffect)(()=>{let e=o.getState();e.setTreeVisible(K),K&&(!d&&I&&!t().has(`path`)?e.setRootPath(I).catch(()=>void 0):d&&!f&&!p&&!m&&e.setRootPath(d).catch(()=>void 0))},[o,d,f,m,p,K,I]),(0,Q.useEffect)(()=>()=>{o.getState().setTreeVisible(!1)},[o]);let q=(0,Q.useCallback)(()=>{H.current||(W.current=document.activeElement instanceof HTMLElement?document.activeElement:null,H.current=!0,B(!0))},[]),ne=(0,Q.useCallback)(()=>{H.current=!1,B(!1),requestAnimationFrame(()=>{W.current?.focus(),W.current=null})},[]);(0,Q.useEffect)(()=>{U.current&&(U.current.inert=!z)},[z,L]);let ie=(0,Q.useRef)(``);(0,Q.useEffect)(()=>{let e=async()=>{if(!n)return;let e=t(),r=e.get(`path`);if(!r)return;let i=e.get(`line`),a=e.get(`col`),s=e.get(`endLine`),l=e.get(`endCol`),u=`${r}:${i}:${a}:${s}:${l}`;if(u===ie.current)return;ie.current=u;let d=o.getState();if(!d.rootPath){let t=e.get(`folder`)||new URLSearchParams(window.location.search).get(`folder`);t&&await d.setRootPath(t)}let f=await y(r),p=o.getState().rootPath;if(f===`directory`)p&&(r===p||r.startsWith(p+`/`))?d.revealInTree(r):(await o.getState().setRootPath(r),c.getState().setFolder(r));else{if(!p){let e=r.substring(0,r.lastIndexOf(`/`));e&&await o.getState().setRootPath(e)}let e=i?parseInt(i,10):void 0,t=e?{line:e,col:a?parseInt(a,10):1,endLine:s?parseInt(s,10):void 0,endCol:l?parseInt(l,10):void 0,query:``}:void 0,n=o.getState();n.openFile(r,void 0,t),n.revealInTree(r)}};e();let r=()=>e();return window.addEventListener(`hashchange`,r),()=>window.removeEventListener(`hashchange`,r)},[n]),(0,Q.useEffect)(()=>{L||(H.current=!1,B(!1))},[L]),(0,Q.useEffect)(()=>{L&&l&&q()},[L,l,s.length,q]),(0,Q.useEffect)(()=>{L&&w&&l&&q()},[L,w,l,q]),(0,Q.useEffect)(()=>{if(!l)return;let e=o.getState().tabs.find(e=>e.id===l);e&&S(e.path)},[l,S]);let J=s.find(e=>e.id===l)||null,ae=s.map(e=>e.id).join(`\0`),oe=C(N),se=!!(oe&&R(oe)),ce=(0,Q.useRef)(l),le=(0,Q.useRef)(s.length>0);(0,Q.useEffect)(()=>{if(r||L)return;if(ae)le.current=!0;else if(!le.current)return;let e=ce.current!==l;ce.current=l;let t=G.current,n=!!(t&&t.tabKey!==ae),i=!!(n&&t?.itemId===oe);n&&(G.current=null),F(ae?ae.split(`\0`):[],se&&(!e||i)?void 0:l)},[l,se,N,ae,r,L,F]),(0,Q.useEffect)(()=>{s.length===0||s.some(e=>e.id===l)||E(s[0].id)},[l,E,s]);let ue=V(e=>e.quickOpenNonce),de=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),fe=(0,Q.useCallback)((e,t)=>{let n=o.getState().tabs.find(e=>e.id===t);V.getState().ensureFileTab(e,n?.name??wt(e),t)},[o]),Y=(0,Q.useRef)(null),pe=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{r&&ue!==pe.current&&(pe.current=ue,ue>0&&O(!0))},[r,ue]);let me=i(`editor.saveFailed`),X=i(`app.retry`),he=i(`editor.overwrite`),ge=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{let e=ge.current,t=new Set,n=Je.getState().removeToast;for(let n of s){if(n.saveStatus!==`error`)continue;t.add(n.id);let r=`${a}:${n.saveError??``}`;e.get(n.id)!==r&&(e.set(n.id,r),He.error(`${me}${n.saveError?`: ${n.saveError}`:``}`,{id:xi(n.id),durationMs:0,action:{label:n.externalChange?he:X,onClick:()=>o.getState().saveTab(n.id,{forceExternal:!0})}}))}for(let r of e.keys())t.has(r)||(n(xi(r)),e.delete(r))},[he,a,X,me,s]),(0,Q.useEffect)(()=>()=>{let e=ge.current,t=Je.getState().removeToast;for(let n of e.keys())t(xi(n));e.clear()},[]);let _e=(0,Q.useCallback)((e,t)=>{_(e,t),j.schedule(e,()=>{let t=o.getState(),n=t.tabs.find(t=>t.id===e);n?.loadStatus===`ready`&&n.isDirty&&t.saveTab(e).catch(()=>!1)})},[j,o,_]);(0,Q.useEffect)(()=>()=>{j.dispose();let e=o.getState();e.tabs.filter(e=>e.isDirty&&!e.externalChange).forEach(t=>{e.saveTab(t.id).catch(()=>!1)})},[j,o]),(0,Q.useEffect)(()=>{let e=e=>{o.getState().tabs.some(e=>e.isDirty||e.saveStatus===`saving`)&&(e.preventDefault(),e.returnValue=``)};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let[ve,ye]=(0,Q.useState)(null),be=(0,Q.useCallback)(async e=>{let t=o.getState().tabs,n=A(t,e),r=C(k.getState().editorDock);r&&R(r)&&(G.current={itemId:r,tabKey:t.map(e=>e.id).join(`\0`)}),n.forEach(e=>j.cancel(e));let i=await b(e);i.closed&&G.current?.tabKey===o.getState().tabs.map(e=>e.id).join(`\0`)&&(G.current=null),ye(i.closed?null:i)},[j,o,b]);(0,Q.useEffect)(()=>{if(!n)return;let e=e=>{if(e.defaultPrevented||!n)return;if(r){let t=Y.current,n=e.target;if(!t||!(n instanceof Node)||!t.contains(n))return}let t=e.metaKey||e.ctrlKey;if(t&&e.key===`p`&&!e.shiftKey&&(e.preventDefault(),O(!0)),t&&e.key===`w`&&!e.shiftKey){e.preventDefault();let t=r?null:C(k.getState().editorDock),n=t?R(t):null;if(n){P(n);let e=C(k.getState().editorDock);e&&!R(e)&&E(e)}else l&&be({kind:`single`,id:l}).catch(()=>void 0)}if(t&&e.key===`b`&&!e.shiftKey){if(r)return;e.preventDefault();let t=k.getState();t.setSidePanelCollapsed(!t.sidePanelCollapsed)}t&&e.key==="`"&&(e.preventDefault(),M())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[l,P,be,r,n,E,M]);let xe=(0,Q.useCallback)(e=>{j.cancel(e),v(e,{forceExternal:!0}).catch(()=>!1)},[j,v]),[Se,Ce]=(0,Q.useState)({}),we=(0,Q.useCallback)((e,t,n,r,i)=>{Ce(a=>({...a,[e]:{line:t,col:n,selectedChars:r,selectedLines:i}}))},[]),Te=J?Se[J.id]??bi:bi,[Ee,De]=(0,Q.useState)({}),[Oe,Ae]=(0,Q.useState)({}),je=(0,Q.useCallback)((e,t)=>{De(n=>({...n,[e]:t}))},[]),Me=(0,Q.useCallback)((e,t)=>{Ae(n=>({...n,[e]:t}))},[]),Ne=J?Ee[J.id]??null:null,Pe=J?Oe[J.id]??1:1,[Fe,Z]=(0,Q.useState)(new Set),Le=(0,Q.useCallback)(e=>{let t=o.getState().tabs.find(t=>t.id===e);return!(!t||t.viewMode!==`markdown`&&t.viewMode!==`html`||Fe.has(e))},[o,Fe]),ze=J?.viewMode===`markdown`||J?.viewMode===`html`,Be=!!(J&&Le(J.id)),Ve=(0,Q.useCallback)(()=>{l&&Z(e=>{let t=new Set(e);return t.has(l)?t.delete(l):t.add(l),t})},[l]),Ue=null;ze&&(Ue=Be?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ve,title:i(`editor.preview`),"aria-label":i(`editor.preview`),children:(0,$.jsx)(nt,{size:16})}):(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ve,title:i(`editor.source`),"aria-label":i(`editor.source`),children:(0,$.jsx)(Xe,{size:16})}));let We=(0,Q.useCallback)(()=>{let e=new URLSearchParams(window.location.search);e.set(`standalone`,`1`),window.open(`#/editor?${e.toString()}`,`_blank`,`noopener,noreferrer`)},[]),Ge=(0,Q.useCallback)(()=>{if(!J)return;let e=J.name||wt(J.path);if(J.viewMode===`editor`||J.viewMode===`markdown`||J.viewMode===`html`){Et(e,J.content??``);return}Dt(J.path,e).catch(()=>{He.error(i(`editor.downloadFailed`))})},[J,i]),Ke=(0,$.jsxs)($.Fragment,{children:[Ue,J?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ge,title:i(`editor.download`),"aria-label":i(`editor.download`),children:(0,$.jsx)(Ie,{size:16})}):null,(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.openInNewWindow`),"aria-label":i(`editor.openInNewWindow`),children:(0,$.jsx)(qe,{size:16})})]}),Ye=(0,Q.useCallback)(()=>{ve&&(ve.targetIds.forEach(e=>j.cancel(e)),x(ve.targetIds),ye(null))},[j,x,ve]),Ze=(0,Q.useCallback)(()=>{G.current=null,ye(null)},[]),Qe=ve?(0,$.jsx)(re,{title:i(`editor.closeSaveFailedTitle`,{count:ve.failedTabIds.length}),message:i(`editor.closeSaveFailedMessage`,{count:ve.failedTabIds.length}),confirmLabel:i(`editor.discardAndClose`),danger:!0,onConfirm:Ye,onCancel:Ze}):null,$e=k(e=>e.activeMobilePanel),et=k(e=>e.createBottomTerminal),rt=k(e=>e.bottomTerminals);if((0,Q.useEffect)(()=>{L&&$e===`terminal`&&rt.length===0&&et()},[L,$e,rt.length,et]),L){let t=D&&d&&(0,$.jsx)(Tr,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T}),n=null;return J&&(n=J.loadStatus===`ready`?J.viewMode===`editor`||Be?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:J.path,content:J.content,language:J.language,onContentChange:e=>_e(J.id,e),onSave:()=>xe(J.id),minimap:!1,onCursorChange:(e,t,n,r)=>we(J.id,e,t,n,r)})}):(0,$.jsx)($n,{path:J.path,name:J.name,content:J.content,viewMode:J.viewMode,onImageInfo:e=>je(J.id,e),onZoomChange:e=>Me(J.id,e)}):(0,$.jsx)(Pt,{tab:J,onRetry:()=>g(J.id)})),(0,$.jsxs)(`div`,{className:`editor-view editor-view-mobile`,ref:Y,children:[t,Qe,(0,$.jsxs)(`div`,{className:`mobile-panel-content`,children:[$e===`explorer`&&(0,$.jsx)(`div`,{className:`editor-sidebar editor-sidebar-mobile`,children:(0,$.jsx)(lr,{onMenuClick:e})}),$e===`search`&&(0,$.jsx)(Gr,{}),$e===`source-control`&&(0,$.jsx)(di,{}),$e===`terminal`&&(0,$.jsx)(`div`,{className:`mobile-terminal-panel`,children:(0,$.jsx)(mr,{})})]}),(0,$.jsx)(`div`,{ref:U,className:`editor-mobile-panel ${z?`open`:``}`,"aria-hidden":!z,children:(0,$.jsxs)(`div`,{className:`editor-main`,children:[(0,$.jsxs)(`div`,{className:`editor-mobile-header`,children:[(0,$.jsx)(`button`,{className:`editor-mobile-back`,onClick:ne,"aria-label":i(`editor.mobileBack`),children:(0,$.jsx)(tt,{size:18})}),(0,$.jsx)(`div`,{className:`editor-mobile-tabs-wrap`,children:(0,$.jsx)(Un,{actions:Ke,onRequestClose:be})})]}),n,J&&(0,$.jsx)(An,{language:J.language,cursorLine:Te.line,cursorColumn:Te.col,selectedCount:Te.selectedChars,selectedLines:Te.selectedLines,viewMode:Be?`editor`:J.viewMode,isDirty:J.isDirty,saveStatus:J.saveStatus,saveError:J.saveError,imageInfo:Ne,zoom:Pe})]})}),!z&&$e===`explorer`&&(0,$.jsx)(An,{language:``,cursorLine:1,cursorColumn:1}),(0,$.jsx)(vi,{})]})}if(r){let t=D&&d&&(0,$.jsx)(Tr,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T});if(de?.kind===`explorer`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(lr,{onMenuClick:e,onDidOpenFile:fe})}),(0,$.jsx)(An,{language:``,cursorLine:1,cursorColumn:1})]});if(de?.kind===`search`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(Gr,{})})]});if(de?.kind===`scm`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(di,{onDidOpenFile:fe})})]});let n=de?.kind===`editor`&&de.editorTabId&&J?.id===de.editorTabId?J:null,r;if(!de?.filePath)r=(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(ke,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:i(`dock.openFile`)}),(0,$.jsx)(`p`,{children:i(`dock.pickFromTree`)})]});else if(!n||n.loadStatus!==`ready`){let e=n??s.find(e=>e.id===de.editorTabId)??null;r=e?(0,$.jsx)(Pt,{tab:e,onRetry:()=>g(e.id)}):(0,$.jsx)(`div`,{className:`dock-open-file-empty`,children:(0,$.jsx)(`p`,{children:i(`editor.loading`)})})}else r=n.viewMode===`diff`&&n.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(te,{path:n.path,oldText:n.diffData.oldText,newText:n.diffData.newText})}):n.viewMode===`editor`||Be?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:n.path,content:n.content,language:n.language,onContentChange:e=>_e(n.id,e),onSave:()=>xe(n.id),minimap:!1,onCursorChange:(e,t,r,i)=>we(n.id,e,t,r,i)})}):(0,$.jsx)($n,{path:n.path,name:n.name,content:n.content,viewMode:n.viewMode,onImageInfo:e=>je(n.id,e),onZoomChange:e=>Me(n.id,e)});return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsxs)(`div`,{className:`ide-layout ide-atomic-editor`,children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[n&&d?(0,$.jsx)(At,{filePath:n.path,rootPath:d,onSegmentClick:S,onOpenFile:h}):(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}),Ke]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:r}),(0,$.jsx)(An,{language:n?.language||``,cursorLine:Te.line,cursorColumn:Te.col,selectedCount:Te.selectedChars,selectedLines:Te.selectedLines,viewMode:n?Be?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:Ne,zoom:Pe})]})]})}return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[Qe,(0,$.jsx)(hi,{onMenuClick:e,tabs:s,activeTab:se?null:J,tabActions:Ke,cursorInfo:Te,imageInfo:Ne,previewZoom:Pe,isSourceMode:Be,isSourceModeForTab:Le,quickOpenVisible:D,setQuickOpenVisible:O,onContentChange:_e,onSave:xe,onActivateTab:E,onRequestClose:be,onCursorChange:we,onImageInfo:je,onZoomChange:Me,hideActivityBar:r})]})}export{Si as EditorView};
1
+ import{i as e}from"./rolldown-runtime-Dd_uD5pT.js";import{W as t,_ as n,c as r,ct as i,i as a,ot as o,q as s,s as c,st as l,t as u,tt as d}from"./use-i18n-pIrmaYmw.js";import{l as f,n as p,o as m,u as h}from"./markdown-DCKhnxE9.js";import{t as g}from"./theme-store-Cvh0uW_P.js";import{n as _}from"./vendor-D7d5DZKE.js";import{c as v,f as y,i as b,p as x,s as S}from"./terminal-store-CCHDZeLq.js";import{_ as C,a as w,c as T,d as E,f as D,g as O,h as k,i as A,l as j,m as ee,n as M,o as N,p as P,r as F,s as I,t as L,v as R,y as z}from"./editor-store-BVy4DJoP.js";import{t as B}from"./loader-circle-CbX-mRDA.js";import{t as V}from"./workspace-dock-store-DnFjd3tC.js";import{i as H,m as U,t as W}from"./composer-selection-ulujmy_S.js";import{t as G}from"./sidebar-store-bTJzulZp.js";import{$t as K,A as te,At as q,B as ne,C as re,Cn as ie,Ct as J,Dt as ae,Et as oe,F as se,G as ce,H as le,Ht as ue,I as de,It as fe,Jt as Y,L as pe,M as me,Mt as X,N as he,Ot as ge,P as _e,Pt as ve,Qt as ye,R as be,Rt as xe,S as Se,St as Ce,Tn as we,Tt as Te,W as Ee,Xt as De,Yt as Oe,Zt as ke,_n as Ae,_t as je,c as Me,f as Ne,fn as Pe,gn as Fe,hn as Z,in as Ie,j as Le,k as Re,kt as ze,m as Be,nn as Ve,nt as He,o as Ue,on as We,p as Ge,pn as Ke,rn as qe,rt as Je,s as Ye,sn as Xe,st as Ze,tn as Qe,vn as $e,vt as et,wn as tt,xn as nt,z as rt,zt as it}from"./index-CcT-vg3O.js";import{r as at,t as ot}from"./TerminalPaneView-ALwEzbwH.js";import{t as st}from"./SplitContainer-BpAMtGSs.js";var ct=a(`case-sensitive`,[[`path`,{d:`m2 16 4.039-9.69a.5.5 0 0 1 .923 0L11 16`,key:`d5nyq2`}],[`path`,{d:`M22 9v7`,key:`pvm9v3`}],[`path`,{d:`M3.304 13h6.392`,key:`1q3zxz`}],[`circle`,{cx:`18.5`,cy:`12.5`,r:`3.5`,key:`z97x68`}]]),lt=a(`copy-minus`,[[`line`,{x1:`12`,x2:`18`,y1:`15`,y2:`15`,key:`1nscbv`}],[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`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`}]]),ut=a(`file-exclamation-point`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),dt=a(`file-plus`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M9 15h6`,key:`cctwl0`}],[`path`,{d:`M12 18v-6`,key:`17g6i2`}]]),ft=a(`fold-vertical`,[[`path`,{d:`M12 22v-6`,key:`6o8u61`}],[`path`,{d:`M12 8V2`,key:`1wkif3`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}],[`path`,{d:`m15 19-3-3-3 3`,key:`e37ymu`}],[`path`,{d:`m15 5-3 3-3-3`,key:`19d6lf`}]]),pt=a(`house`,[[`path`,{d:`M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8`,key:`5wwlr5`}],[`path`,{d:`M3 10a2 2 0 0 1 .709-1.528l7-6a2 2 0 0 1 2.582 0l7 6A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z`,key:`r6nss1`}]]),mt=a(`list`,[[`path`,{d:`M3 5h.01`,key:`18ugdj`}],[`path`,{d:`M3 12h.01`,key:`nlz23k`}],[`path`,{d:`M3 19h.01`,key:`noohij`}],[`path`,{d:`M8 5h13`,key:`1pao27`}],[`path`,{d:`M8 12h13`,key:`1za7za`}],[`path`,{d:`M8 19h13`,key:`m83p4d`}]]),ht=a(`panel-bottom`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),gt=a(`regex`,[[`path`,{d:`M17 3v10`,key:`15fgeh`}],[`path`,{d:`m12.67 5.5 8.66 5`,key:`1gpheq`}],[`path`,{d:`m12.67 10.5 8.66-5`,key:`1dkfa6`}],[`path`,{d:`M9 17a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v2a2 2 0 0 0 2 2h2a2 2 0 0 0 2-2v-2z`,key:`swwfx4`}]]),_t=a(`tree-pine`,[[`path`,{d:`m17 14 3 3.3a1 1 0 0 1-.7 1.7H4.7a1 1 0 0 1-.7-1.7L7 14h-.3a1 1 0 0 1-.7-1.7L9 9h-.2A1 1 0 0 1 8 7.3L12 3l4 4.3a1 1 0 0 1-.8 1.7H15l3 3.3a1 1 0 0 1-.7 1.7H17Z`,key:`cpyugq`}],[`path`,{d:`M12 22v-3`,key:`kmzjlo`}]]),vt=a(`unfold-vertical`,[[`path`,{d:`M12 22v-6`,key:`6o8u61`}],[`path`,{d:`M12 8V2`,key:`1wkif3`}],[`path`,{d:`M4 12H2`,key:`rhcxmi`}],[`path`,{d:`M10 12H8`,key:`s88cx1`}],[`path`,{d:`M16 12h-2`,key:`10asgb`}],[`path`,{d:`M22 12h-2`,key:`14jgyd`}],[`path`,{d:`m15 19-3 3-3-3`,key:`11eu04`}],[`path`,{d:`m15 5-3-3-3 3`,key:`itvq4r`}]]),yt=a(`whole-word`,[[`circle`,{cx:`7`,cy:`12`,r:`3`,key:`12clwm`}],[`path`,{d:`M10 9v6`,key:`17i7lo`}],[`circle`,{cx:`17`,cy:`12`,r:`3`,key:`gl7c2s`}],[`path`,{d:`M14 7v8`,key:`dl84cr`}],[`path`,{d:`M22 17v1c0 .5-.5 1-1 1H3c-.5 0-1-.5-1-1v-1`,key:`lt2kga`}]]),Q=e(h(),1),$=f(),bt=(0,Q.createContext)(E);function xt({store:e,children:t}){return(0,$.jsx)(bt.Provider,{value:e,children:t})}function St(){return(0,Q.useContext)(bt)}function Ct(e){let t=St();return i(t,e??(e=>e))}function wt(e){let t=e.split(`/`).pop();return t&&t.trim()?t:e}function Tt(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)}function Et(e,t){Tt(e,new Blob([t],{type:`text/plain;charset=utf-8`}))}async function Dt(e,t){let n=await fetch(S(e),{headers:d()});if(!n.ok)throw Error(`HTTP ${n.status}`);Tt(t,await n.blob())}function Ot(e){let t=new Map;function n(e){let n=t.get(e);n!==void 0&&(clearTimeout(n),t.delete(e))}function r(r,i){n(r);let a=setTimeout(()=>{t.get(r)===a&&(t.delete(r),i())},e);t.set(r,a)}function i(){for(let e of t.values())clearTimeout(e);t.clear()}return{schedule:r,cancel:n,dispose:i}}function kt(e){return[...e].sort((e,t)=>e.type===`directory`&&t.type!==`directory`?-1:e.type!==`directory`&&t.type===`directory`?1:e.name.localeCompare(t.name,void 0,{numeric:!0,sensitivity:`base`}))}function At({filePath:e,rootPath:t,onSegmentClick:n,onOpenFile:r}){let{t:i}=u(),a=(e.startsWith(t)?e.slice(t.length).replace(/^\//,``):e).split(`/`).filter(Boolean),[o,s]=(0,Q.useState)(null),[c,l]=(0,Q.useState)([]),[d,f]=(0,Q.useState)(!1),[p,m]=(0,Q.useState)(-1),h=(0,Q.useRef)(null),g=(0,Q.useRef)(null),_=(0,Q.useCallback)(async(e,t)=>{let n=t.getBoundingClientRect();s({dirPath:e,anchorRect:n}),f(!0),l([]),m(-1);try{let t=await v(e);l(kt(t.map(e=>({name:e.name,path:e.path,type:e.type,symlinkTarget:e.symlinkTarget}))))}catch{l([])}f(!1)},[]),y=(0,Q.useCallback)(()=>{s(null),l([]),m(-1)},[]),b=(0,Q.useCallback)(e=>{e.type===`directory`?(n(e.path),y()):(r(e.path),y())},[n,r,y]);(0,Q.useEffect)(()=>{if(!o)return;let e=e=>{if(e.key===`Escape`){e.preventDefault(),y();return}e.key===`ArrowDown`?(e.preventDefault(),m(e=>e<c.length-1?e+1:0)):e.key===`ArrowUp`?(e.preventDefault(),m(e=>e>0?e-1:c.length-1)):e.key===`Enter`&&p>=0&&p<c.length&&(e.preventDefault(),b(c[p]))};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o,c,p,y,b]),(0,Q.useEffect)(()=>{p>=0&&g.current&&g.current.querySelectorAll(`.breadcrumb-dropdown-item`)[p]?.scrollIntoView({block:`nearest`})},[p]);let x=(0,Q.useCallback)((e,t)=>{e.stopPropagation();let n=e.currentTarget;o&&o.dirPath===t?y():_(t,n)},[o,_,y]),S=(0,Q.useCallback)((e,t)=>{e.stopPropagation();let n=e.currentTarget;o&&o.dirPath===t?y():_(t,n)},[o,_,y]);return(0,$.jsxs)(`div`,{className:`editor-breadcrumbs`,children:[(0,$.jsx)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:(0,$.jsx)(`span`,{className:`editor-breadcrumb-segment ${a.length===0?`active`:``}`,onClick:e=>x(e,t),children:(0,$.jsx)(`span`,{children:t.split(`/`).pop()||t})})}),a.map((e,n)=>{let r=n===a.length-1,i=t+`/`+a.slice(0,n+1).join(`/`),s=n===0?t:t+`/`+a.slice(0,n).join(`/`);return(0,$.jsxs)(`span`,{style:{display:`inline-flex`,alignItems:`center`},children:[(0,$.jsx)(`span`,{className:`editor-breadcrumb-separator`,children:(0,$.jsx)(Z,{size:10})}),(0,$.jsxs)(`span`,{className:`editor-breadcrumb-segment ${r?`active`:``} ${o?.dirPath===(r?s:i)?`dropdown-open`:``}`,onClick:e=>r?S(e,s):x(e,i),children:[r&&(0,$.jsx)(Ge,{name:e,type:`file`,size:14}),(0,$.jsx)(`span`,{style:r?{fontWeight:500}:void 0,children:e})]})]},i)}),o&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-overlay`,onClick:y}),(0,$.jsx)(`div`,{ref:h,className:`breadcrumb-dropdown`,style:{left:Math.min(o.anchorRect.left,window.innerWidth-260),top:o.anchorRect.bottom+2},children:d?(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-loading`,children:(0,$.jsx)(B,{size:14,className:`animate-spin`})}):c.length===0?(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-empty`,children:`Empty`}):(0,$.jsx)(`div`,{className:`breadcrumb-dropdown-list`,ref:g,children:c.map((t,n)=>{let r=t.path===e;return(0,$.jsxs)(`div`,{className:`breadcrumb-dropdown-item ${r?`current`:``} ${n===p?`highlighted`:``}`,onClick:()=>b(t),children:[t.type===`directory`?(0,$.jsx)(Z,{size:12,style:{flexShrink:0,opacity:.5}}):(0,$.jsx)(Ge,{name:t.name,type:t.type,size:16}),(0,$.jsx)(`span`,{className:`breadcrumb-dropdown-item-name`,children:t.name}),(0,$.jsx)(Be,{entry:t,label:i(`editor.symbolicLink`),className:`ml-auto order-10`})]},t.path)})})})]})]})}var jt=_();function Mt(e,t,n){let r=n.getState().pendingReveal;if(!r||r.path!==t)return!1;n.getState().setPendingReveal(null);let{line:i,col:a,endLine:o,endCol:s,query:c}=r,l=e.getModel();if(!l)return!1;let u=a&&a>0?a:1;if(o&&o>=i){let t=Math.min(o,l.getLineCount()),n={startLineNumber:Math.min(i,t),startColumn:u,endLineNumber:t,endColumn:s&&s>0?s:l.getLineMaxColumn(t)};e.setSelection(n),e.revealRangeInCenter(n)}else e.revealLineInCenter(i),e.setPosition({lineNumber:i,column:u});if(e.focus(),c){let t=l.findMatches(c,!1,!1,!1,null,!0);if(t.length>0){let n=t.find(e=>e.range.startLineNumber>=i)||t[0];e.setSelection(n.range),e.revealRangeInCenter(n.range);let r=t.map(e=>({range:e.range,options:{className:`search-find-match`,overviewRuler:{color:`#d7ba7d`,position:1}}})),a=e.deltaDecorations([],r);setTimeout(()=>{try{e.deltaDecorations(a,[])}catch{}},5e3)}}return!0}function Nt({path:e,content:t,language:n,onContentChange:r,onSave:i,minimap:a=!0,onCursorChange:o}){let{t:s}=u(),c=St(),{resolved:l}=g(),d=(0,Q.useRef)(null),f=(0,Q.useRef)(o);f.current=o;let p=l===`dark`?`cbc-dark`:`cbc-light`,[m,h]=(0,Q.useState)(()=>typeof window<`u`&&window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);(0,Q.useEffect)(()=>{let e=window.matchMedia(`(prefers-reduced-motion: reduce)`),t=()=>h(e.matches);return e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let[_,v]=(0,Q.useState)(!1),[y,b]=(0,Q.useState)(null),x=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{let e=!1;return Le().then(()=>{e||v(!0)}),()=>{e=!0}},[]),(0,Q.useEffect)(()=>{if(y)return he({onClose:()=>b(null),isInside:e=>_e(e,x.current)})},[y]),(0,Q.useLayoutEffect)(()=>{y&&x.current&&se(x.current,y.x+4,y.y+4)},[y]);let S=(0,$.jsxs)(`div`,{className:`flex items-center justify-center h-full gap-2`,style:{color:`var(--color-text-tertiary)`},children:[(0,$.jsx)(B,{size:16,className:`animate-spin`}),(0,$.jsx)(`span`,{style:{fontSize:13},children:s(`editor.loading`)})]}),C=(0,Q.useCallback)((e,t)=>{d.current=e,t.editor.defineTheme(`cbc-dark`,{base:`vs-dark`,inherit:!0,rules:[],colors:{"editor.background":`#121314`}}),t.editor.defineTheme(`cbc-light`,{base:`vs`,inherit:!0,rules:[],colors:{"editor.background":`#ffffff`}}),t.editor.setTheme(p),e.addCommand(t.KeyMod.CtrlCmd|t.KeyCode.KeyS,()=>{i()});let n=()=>{let t=f.current;if(!t)return;let n=e.getPosition(),r=e.getSelection();if(!n)return;let i=0,a=0;if(r&&!r.isEmpty()){let t=e.getModel();t&&(i=t.getValueInRange(r).length,a=Math.abs(r.endLineNumber-r.startLineNumber)+1)}t(n.lineNumber,n.column,i,a)};e.onDidChangeCursorPosition(n),e.onDidChangeCursorSelection(n),n()},[p,i]),w=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation();let t=d.current?.getSelection();b({x:e.clientX,y:e.clientY,hasSelection:!(!t||t.isEmpty())})},[]),T=(0,Q.useCallback)(()=>b(null),[]),E=(0,Q.useCallback)(()=>{let t=d.current,n=t?.getSelection();T(),t&&n&&!n.isEmpty()&&ce(W(e,{startLineNumber:n.startLineNumber,startColumn:n.startColumn,endLineNumber:n.endLineNumber,endColumn:n.endColumn}))},[T,e]),D=(0,Q.useCallback)(e=>{let t=d.current;T(),t&&(t.focus(),t.trigger(`keyboard`,e,void 0))},[T]),O=(0,Q.useCallback)(async()=>{let e=d.current;if(T(),e){e.focus();try{let t=await navigator.clipboard.readText();if(t){e.trigger(`keyboard`,`type`,{text:t});return}}catch{}e.trigger(`keyboard`,`editor.action.clipboardPasteAction`,void 0)}},[T]),k=(0,Q.useCallback)(e=>{e!==void 0&&r(e)},[r]),A=Ct(e=>e.pendingReveal);return(0,Q.useEffect)(()=>{if(!A||A.path!==e)return;if(d.current){Mt(d.current,e,c);return}let t=0,n=setInterval(()=>{t++,d.current?(Mt(d.current,e,c),clearInterval(n)):t>=50&&clearInterval(n)},50);return()=>clearInterval(n)},[e,A]),_?(0,$.jsxs)(`div`,{className:`h-full`,onContextMenu:w,children:[(0,$.jsx)(de,{path:me(e),height:`100%`,language:n,theme:p,value:t,onChange:k,onMount:C,loading:S,options:{fontSize:13,fontFamily:`'Menlo', 'Monaco', 'Consolas', 'Courier New', monospace`,lineHeight:20,minimap:{enabled:a,maxColumn:80},scrollBeyondLastLine:!1,automaticLayout:!0,wordWrap:`off`,tabSize:4,insertSpaces:!0,renderWhitespace:`selection`,bracketPairColorization:{enabled:!0},padding:{top:8},smoothScrolling:!m,cursorBlinking:m?`solid`:`smooth`,cursorSmoothCaretAnimation:m?`off`:`on`,fixedOverflowWidgets:!0,contextmenu:!1}},e),y&&(0,jt.createPortal)((0,$.jsxs)(`div`,{ref:x,className:`editor-context-menu`,role:`menu`,style:{left:y.x,top:y.y},onPointerDown:e=>e.stopPropagation(),onContextMenu:e=>e.preventDefault(),children:[y.hasSelection&&(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:E,children:s(`editor.addToChat`)}),y.hasSelection&&(0,$.jsx)(`div`,{className:`editor-context-separator`,role:`separator`}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!y.hasSelection,onClick:()=>D(`editor.action.clipboardCutAction`),children:s(`editor.cut`)}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,disabled:!y.hasSelection,onClick:()=>D(`editor.action.clipboardCopyAction`),children:s(`editor.copy`)}),(0,$.jsx)(`button`,{type:`button`,role:`menuitem`,onClick:()=>{O().catch(()=>void 0)},children:s(`editor.paste`)})]}),document.body)]}):S}function Pt({tab:e,onRetry:t}){let{t:n}=u();return e.loadStatus===`ready`?null:e.loadStatus===`loading`?(0,$.jsxs)(`div`,{className:`editor-content-state`,role:`status`,"aria-live":`polite`,children:[(0,$.jsx)(`span`,{className:`editor-state-spinner`,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.loadingFile`)})]}):e.loadStatus===`too-large`?(0,$.jsxs)(`div`,{className:`editor-content-state`,role:`status`,children:[(0,$.jsx)(ut,{className:`editor-content-state-icon`,size:24,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.fileTooLarge`)})]}):(0,$.jsxs)(`div`,{className:`editor-content-state editor-content-state-error`,role:`alert`,children:[(0,$.jsx)(Ke,{className:`editor-content-state-icon`,size:24,"aria-hidden":`true`}),(0,$.jsx)(`span`,{children:n(`editor.loadError`)}),e.loadError&&(0,$.jsx)(`span`,{className:`editor-content-state-reason`,children:e.loadError}),(0,$.jsx)(`button`,{type:`button`,className:`editor-content-state-retry`,onClick:()=>{Promise.resolve(t()).catch(()=>void 0)},children:n(`editor.retryLoad`)})]})}var Ft=l(e=>({progress:null,setProgress:t=>e({progress:t})}));async function It(e,t,n=!0){let r=D(),i={...r?{cwd:r}:{},...t},a=await o(`/api/v1/git/${e}`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify(i)},n?void 0:{maxRetries:0});if(!a.ok){let e=await a.json().catch(()=>({error:{message:a.statusText}}));throw Error(e.error?.message||`Git API error: ${a.status}`)}let s=await a.json();return s.data??s}async function Lt(){return It(`status`)}async function Rt(e,t){return(await It(`check-ignore`,{paths:e,cwd:t})).paths}async function zt(e){await It(`stage`,{paths:e},!1)}async function Bt(e){await It(`unstage`,{paths:e},!1)}async function Vt(e){return It(`commit`,{message:e},!1)}async function Ht(e,t){return It(`diff`,{path:e,staged:t})}async function Ut(e,t){await It(`discard`,{paths:e,useTrash:t},!1)}async function Wt(){return(await It(`branches`)).branches}async function Gt(e){return It(`branch/switch`,{name:e},!1)}async function Kt(e,t=!0){return It(`branch/create`,{name:e,checkout:t},!1)}async function qt(){return It(`push`,void 0,!1)}async function Jt(){return It(`pull`,void 0,!1)}async function Yt(e){return(await It(`log`,{limit:e})).entries}var Xt=3e3,Zt=15e3,Qt=3e4;function $t(e){return e.hidden?null:e.pushLive?Qt:e.focused?Xt:Zt}function en(e){return typeof document>`u`?{hidden:!1,focused:!0,pushLive:e}:{hidden:document.visibilityState===`hidden`,focused:typeof document.hasFocus!=`function`||document.hasFocus(),pushLive:e}}function tn(e,t){return t?!e||typeof e!=`object`?!1:e.repositoryRoot===t:!0}var nn=null,rn=null,an=!1,on=!1,sn=`app:git`,cn=!1,ln=!1,un=null;function dn(){return cn&&ln}function fn(){return en(dn())}function pn(){nn&&=(clearTimeout(nn),null)}function mn(){if(pn(),!an)return;let e=$t(fn());e!==null&&(nn=setTimeout(()=>{nn=null,xn.getState().refresh().finally(mn)},e))}function hn(e=!1){an&&(pn(),$t(fn())!==null&&xn.getState().refresh(e).finally(mn))}function gn(){if(un)return;let e=Ze(),t=n(null),r=()=>{let n=e.getStatus(t)===`ready`&&e.isStreamAligned(t,sn);n!==cn&&(cn=n,n?hn(!0):mn())},i=e.onAppEvent(e=>{e.baseUrl===t&&e.frame.streamId===sn&&e.frame.event.event===`changed`&&tn(e.frame.event.data,xn.getState().repositoryRoot)&&hn(!0)}),a=e.onAck(e=>{e.baseUrl===t&&r()}),o=e.onStatusChange(e=>{e===t&&r()});e.subscribeAppStream(t,sn),un=()=>{i(),a(),o(),e.unsubscribeAppStream(t,sn),cn=!1}}function _n(){hn()}function vn(){on||typeof window>`u`||typeof document>`u`||(document.addEventListener(`visibilitychange`,_n),window.addEventListener(`focus`,_n),window.addEventListener(`blur`,mn),on=!0)}function yn(){on&&=(document.removeEventListener(`visibilitychange`,_n),window.removeEventListener(`focus`,_n),window.removeEventListener(`blur`,mn),!1)}async function bn(){try{let e=await o(`/api/v1/info`,{headers:d()});if(e.ok){let t=await e.json();return(t.data??t).cwd||void 0}}catch{}}var xn=l((e,t)=>({isGitRepo:!1,repositoryRoot:null,loading:!1,error:null,files:[],currentBranch:null,ahead:0,behind:0,remote:null,branches:[],branchesLoading:!1,branchOperationInProgress:!1,repositoryOperationInProgress:!1,selectedFile:null,selectedFileStaged:!1,diffResult:null,diffLoading:!1,commitMessage:``,committing:!1,pushing:!1,pulling:!1,operationFeedback:null,refresh:async(n=!1)=>{if(rn&&(await rn,!n))return;let r=(async()=>{t().files.length===0&&!t().isGitRepo&&e({loading:!0,error:null});try{let t=await Lt();ln=t.pushUpdates===!0,e({isGitRepo:t.isGitRepo,repositoryRoot:t.repositoryRoot,files:t.files,currentBranch:t.branch,ahead:t.ahead,behind:t.behind,remote:t.remote,loading:!1})}catch(t){e({loading:!1,error:t.message})}})();rn=r;try{await r}finally{rn===r&&(rn=null)}},loadBranches:async()=>{e({branchesLoading:!0});try{e({branches:await Wt(),branchesLoading:!1})}catch{e({branchesLoading:!1})}},stageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await zt([n]),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`stage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},unstageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Bt([n]),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`unstage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},stageAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>!e.staged).map(e=>e.path);if(n.length!==0){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await zt(n),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`stage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},unstageAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>e.staged).map(e=>e.path);if(n.length!==0){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Bt(n),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`unstage`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},discardFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Ut([n],!0),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`discard`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},discardAll:async()=>{if(t().repositoryOperationInProgress)return;let n=t().files.filter(e=>!e.staged);if(n.length===0)return;let r=n.filter(e=>e.status!==`untracked`),i=n.filter(e=>e.status===`untracked`);e({repositoryOperationInProgress:!0,operationFeedback:null});try{r.length>0&&await Ut(r.map(e=>e.path)),i.length>0&&await Ut(i.map(e=>e.path),!0),await t().refresh(!0)}catch(t){e({operationFeedback:{operation:`discard`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}},commit:async()=>{let n=t().commitMessage.trim();if(n&&!t().repositoryOperationInProgress){e({committing:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Vt(n);e({committing:!1,commitMessage:r.success?``:t().commitMessage,operationFeedback:{operation:`commit`,success:r.success,message:r.message}}),await t().refresh(!0)}catch(t){e({committing:!1,operationFeedback:{operation:`commit`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},push:async()=>{if(!t().repositoryOperationInProgress){e({pushing:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let n=await qt();e({pushing:!1,operationFeedback:{operation:`push`,success:n.success,message:n.message}}),await t().refresh(!0)}catch(t){e({pushing:!1,operationFeedback:{operation:`push`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},pull:async()=>{if(!t().repositoryOperationInProgress){e({pulling:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let n=await Jt();e({pulling:!1,operationFeedback:{operation:`pull`,success:n.success,message:n.message}}),await t().refresh(!0)}catch(t){e({pulling:!1,operationFeedback:{operation:`pull`,success:!1,message:t.message}})}finally{e({repositoryOperationInProgress:!1})}}},switchBranch:async n=>{if(!(t().repositoryOperationInProgress||n===t().currentBranch)){e({branchOperationInProgress:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Gt(n);e({operationFeedback:{operation:`switchBranch`,success:r.success,message:r.message,target:n}}),await t().refresh(!0),r.success&&await t().loadBranches()}catch(t){e({operationFeedback:{operation:`switchBranch`,success:!1,message:t.message,target:n}})}finally{e({branchOperationInProgress:!1,repositoryOperationInProgress:!1})}}},createBranch:async n=>{if(!t().repositoryOperationInProgress){e({branchOperationInProgress:!0,repositoryOperationInProgress:!0,operationFeedback:null});try{let r=await Kt(n);e({operationFeedback:{operation:`createBranch`,success:r.success,message:r.message,target:n}}),await t().refresh(!0),await t().loadBranches()}catch(t){e({operationFeedback:{operation:`createBranch`,success:!1,message:t.message,target:n}})}finally{e({branchOperationInProgress:!1,repositoryOperationInProgress:!1})}}},selectFile:async(n,r)=>{if(t().selectedFile===n&&t().selectedFileStaged===r){e({selectedFile:null,diffResult:null,selectedFileStaged:!1});return}e({selectedFile:n,selectedFileStaged:r,diffLoading:!0,diffResult:null});try{e({diffResult:await Ht(n,r),diffLoading:!1})}catch{e({diffLoading:!1})}},clearSelection:()=>e({selectedFile:null,diffResult:null,selectedFileStaged:!1}),setCommitMessage:t=>e({commitMessage:t}),clearOperationMessage:()=>e({operationFeedback:null}),startWatching:async()=>{if(an)return;let e=D();e||=await bn(),e&&(an=!0,vn(),gn(),mn())},stopWatching:async()=>{an=!1,yn(),un?.(),un=null,pn()}}));P(async()=>{let e=xn.getState();await e.stopWatching(),e.refresh(),await e.startWatching()});function Sn(e,t){let n=e.toLowerCase();return/repository is busy|index\.lock|another git process|could not lock|unable to create.*\.lock/.test(n)?`ide.scm.error.busy`:/untracked working tree files.*overwritten/s.test(n)?`ide.scm.error.untrackedFiles`:/local changes.*overwritten|would be overwritten by (?:checkout|merge)/s.test(n)?`ide.scm.error.localChanges`:/resolve your current index first|unmerged files|you need to resolve your current index/.test(n)?`ide.scm.error.conflicts`:[`switchBranch`,`createBranch`].includes(t)&&/pathspec.*did not match|not a commit|unknown revision/.test(n)?`ide.scm.error.branchNotFound`:t===`switchBranch`?`ide.scm.error.switchFailed`:`ide.scm.error.operationFailed`}function Cn(e,t){if(![`switchBranch`,`createBranch`,`push`,`pull`].includes(t))return!1;let n=Sn(e,t);return n===`ide.scm.error.busy`||n===`ide.scm.error.switchFailed`||n===`ide.scm.error.operationFailed`}function wn({currentBranch:e,branches:t,branchesLoading:n,operationInProgress:r,onSwitch:i,onCreate:a,onLoadBranches:o,actions:s,defaultOpen:c,onClose:l}){let{t:d}=u(),[f,p]=(0,Q.useState)(c??!1),[m,h]=(0,Q.useState)(``),[g,_]=(0,Q.useState)(``),[v,y]=(0,Q.useState)(0),[b,x]=(0,Q.useState)(!1),S=(0,Q.useRef)(null),C=(0,Q.useCallback)(e=>{p(e),e||l?.()},[l]);(0,Q.useEffect)(()=>{let e=setTimeout(()=>_(m),100);return()=>clearTimeout(e)},[m]),(0,Q.useEffect)(()=>{f&&o()},[f,o]),(0,Q.useEffect)(()=>{f?setTimeout(()=>S.current?.focus(),0):(h(``),_(``),y(0),x(!1))},[f]);let{localBranches:w,remoteBranches:T,flatList:E}=(0,Q.useMemo)(()=>{let e;if(g){let n=[];for(let e of t){let t=Se(g,e.name);t.match&&n.push({...e,_score:t.score})}n.sort((e,t)=>t._score-e._score),e=n}else e=t;let n=e.filter(e=>!e.isRemote),r=e.filter(e=>e.isRemote);return{localBranches:n,remoteBranches:r,flatList:[...n,...r]}},[t,g]);(0,Q.useEffect)(()=>{y(0)},[m]);let D=(0,Q.useCallback)(e=>{r||(e.key===`Escape`?C(!1):e.key===`ArrowDown`?(e.preventDefault(),y(e=>Math.min(e+1,E.length-1))):e.key===`ArrowUp`?(e.preventDefault(),y(e=>Math.max(e-1,0))):e.key===`Enter`&&(e.preventDefault(),b?m.trim()&&(a(m.trim()),C(!1)):E[v]?(i(E[v].name),C(!1)):m.trim()&&E.length===0&&(a(m.trim()),C(!1))))},[E,v,b,m,i,a,r]),O=(0,Q.useCallback)(t=>{r||t===e||(i(t),C(!1))},[e,i,r]),k=(0,Q.useCallback)(()=>{x(!0),setTimeout(()=>S.current?.focus(),0)},[]),A=(0,Q.useCallback)(()=>{m.trim()&&(a(m.trim()),C(!1))},[m,a]);return(0,$.jsxs)(`div`,{className:`branch-picker`,children:[!c&&(0,$.jsxs)(`div`,{className:`branch-picker-header`,children:[(0,$.jsxs)(`button`,{className:`branch-picker-trigger`,onClick:()=>C(!f),title:e||``,disabled:r,children:[r?(0,$.jsx)(B,{size:14,className:`branch-picker-icon animate-spin`}):(0,$.jsx)(Y,{size:14,className:`branch-picker-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-name`,children:e||d(`ide.scm.noBranch`)})]}),s]}),f&&(0,jt.createPortal)((0,$.jsxs)(`div`,{onPointerDown:e=>e.stopPropagation(),onDoubleClick:e=>e.stopPropagation(),children:[(0,$.jsx)(`div`,{className:`branch-picker-backdrop`,onClick:()=>C(!1)}),(0,$.jsxs)(`div`,{className:`branch-picker-dropdown`,onKeyDown:D,onMouseDown:e=>e.stopPropagation(),onClick:e=>e.stopPropagation(),children:[(0,$.jsx)(`div`,{className:`branch-picker-search`,children:(0,$.jsx)(`input`,{ref:S,className:`branch-picker-input`,type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:d(b?`ide.scm.newBranchPlaceholder`:`ide.scm.branchSearchPlaceholder`)})}),!b&&(0,$.jsx)(`div`,{className:`branch-picker-actions`,children:(0,$.jsxs)(`button`,{className:`branch-picker-action`,onClick:k,children:[(0,$.jsx)(X,{size:14}),(0,$.jsx)(`span`,{children:d(`ide.scm.createBranch`)})]})}),b&&(0,$.jsx)(`div`,{className:`branch-picker-actions`,children:(0,$.jsxs)(`button`,{className:`branch-picker-action branch-picker-action-confirm`,onClick:A,disabled:!m.trim(),children:[(0,$.jsx)(X,{size:14}),(0,$.jsx)(`span`,{children:m.trim()?d(`ide.scm.createBranchNamed`,{name:m.trim()}):d(`ide.scm.newBranchPlaceholder`)})]})}),E.length>0&&(0,$.jsx)(Dn,{flatList:E,localCount:w.length,remoteCount:T.length,currentBranch:e,highlightIdx:v,onSelect:O,onHover:y}),n&&E.length===0&&(0,$.jsx)(`div`,{className:`branch-picker-empty`,children:d(`ide.scm.loadingBranches`)}),!n&&E.length===0&&!b&&(0,$.jsx)(`div`,{className:`branch-picker-empty`,children:d(g?`ide.scm.noBranchMatch`:`ide.scm.noBranches`)})]})]}),document.body)]})}var Tn=40,En=24;function Dn({flatList:e,localCount:t,remoteCount:n,currentBranch:r,highlightIdx:i,onSelect:a,onHover:o}){let s=(0,Q.useRef)(null),[c,l]=(0,Q.useState)(0),[u,d]=(0,Q.useState)(300);(0,Q.useEffect)(()=>{let e=s.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e)d(t.contentRect.height)});return t.observe(e),()=>t.disconnect()},[]),(0,Q.useEffect)(()=>{let e=s.current;if(!e)return;let t=i*Tn;t<e.scrollTop?e.scrollTop=t:t+Tn>e.scrollTop+u&&(e.scrollTop=t+Tn-u)},[i,u]);let f=(0,Q.useCallback)(e=>{l(e.target.scrollTop)},[]),p=e.length*Tn+(t>0&&n>0?En:0)+(n>0?En:0),m=Math.max(0,Math.floor(c/Tn)-2),h=Math.min(e.length,Math.ceil((c+u)/Tn)+2),g=[];t>0&&n>0&&m===0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:En},children:`branches`},`label-local`));for(let s=m;s<h;s++){let c=e[s];c&&(s===t&&n>0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:En},children:`remotes`},`label-remote`)),g.push((0,$.jsx)(On,{branch:c,isCurrent:c.name===r,isHighlighted:s===i,dataIdx:s,onSelect:a,onHover:()=>o(s)},c.name)))}return(0,$.jsx)(`div`,{ref:s,className:`branch-picker-list`,onScroll:f,children:(0,$.jsx)(`div`,{style:{height:p,position:`relative`},children:(0,$.jsx)(`div`,{style:{position:`absolute`,top:m*Tn,left:0,right:0},children:g})})})}function On({branch:e,isCurrent:t,isHighlighted:n,dataIdx:r,onSelect:i,onHover:a}){return(0,$.jsxs)(`div`,{className:`branch-picker-item ${n?`highlighted`:``} ${t?`current`:``}`,"data-idx":r,onClick:()=>i(e.name),onMouseEnter:a,title:e.lastCommitMessage?`${e.name}\n${e.lastCommitAuthor} • ${e.lastCommitHash} • ${e.lastCommitMessage}`:e.name,children:[(0,$.jsxs)(`div`,{className:`branch-picker-item-main`,children:[(0,$.jsx)(Y,{size:14,className:`branch-picker-item-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-item-name`,children:e.name}),e.lastCommitDate&&(0,$.jsx)(`span`,{className:`branch-picker-item-date`,children:e.lastCommitDate}),t&&(0,$.jsx)($e,{size:14,className:`branch-picker-item-check`}),e.ahead||e.behind?(0,$.jsxs)(`span`,{className:`branch-picker-item-sync`,children:[e.ahead?`↑${e.ahead}`:``,e.behind?`↓${e.behind}`:``]}):null]}),e.lastCommitMessage&&(0,$.jsxs)(`div`,{className:`branch-picker-item-detail`,children:[(0,$.jsx)(`span`,{className:`branch-picker-item-author`,children:e.lastCommitAuthor}),(0,$.jsx)(`span`,{className:`branch-picker-item-separator`,children:`•`}),(0,$.jsx)(`span`,{className:`branch-picker-item-hash`,children:e.lastCommitHash}),(0,$.jsx)(`span`,{className:`branch-picker-item-separator`,children:`•`}),(0,$.jsx)(`span`,{className:`branch-picker-item-message`,children:e.lastCommitMessage})]})]})}var kn={image:`editor.view.image`,video:`editor.view.video`,svg:`editor.view.svg`,markdown:`editor.view.markdown`,html:`editor.view.html`,pdf:`editor.view.pdf`,binary:`editor.view.binary`};function An({language:e,cursorLine:t,cursorColumn:n,selectedCount:r,selectedLines:i,viewMode:a=`editor`,isDirty:o=!1,saveStatus:s=`idle`,saveError:c,imageInfo:l,zoom:d,extraRight:f}){let{t:p}=u();if(a===`image`||a===`svg`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{}),l&&(0,$.jsxs)(`span`,{className:`editor-statusbar-item`,children:[l.width,` × `,l.height]})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[d!=null&&(0,$.jsxs)(`span`,{className:`editor-statusbar-item`,children:[Math.round(d*100),`%`]}),(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:kn[a]?p(kn[a]):a}),f]})]});if(a!==`editor`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:kn[a]?p(kn[a]):a}),f]})]});let m=p(`editor.cursorPosition`,{line:t,col:n}),h=``;return r&&r>0&&(h=` (${r} ${p(`editor.selected`)})`,i&&i>1&&(h=` (${r} ${p(`editor.selected`)}, ${i} ${p(`editor.lines`)})`)),(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Mn,{isDirty:o,saveStatus:s,saveError:c,translate:p}),(0,$.jsx)(Nn,{}),(0,$.jsx)(jn,{}),(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-cursor`,children:[m,h]})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[e&&(0,$.jsx)(`span`,{className:`editor-statusbar-item editor-statusbar-language`,children:e}),f]})]})}function jn(){let{t:e}=u(),t=Ft(e=>e.progress);if(!t)return null;let n=t.totalBytes>0?Math.round(t.loadedBytes/t.totalBytes*100):Math.round(t.completed/t.total*100);return(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-upload`,role:`status`,"aria-live":`polite`,title:t.fileName,children:[(0,$.jsx)(`span`,{className:`editor-status-save-spinner`,"aria-hidden":`true`}),e(`editor.uploadStatus`,{percent:n})]})}function Mn({isDirty:e,saveStatus:t,saveError:n,translate:r}){return t===`saving`?(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-save`,role:`status`,children:[(0,$.jsx)(`span`,{className:`editor-status-save-spinner`,"aria-hidden":`true`}),r(`editor.saving`)]}):t===`error`?(0,$.jsx)(`span`,{className:`editor-statusbar-item editor-statusbar-save editor-statusbar-save-error`,role:`status`,title:n,children:r(`editor.saveFailed`)}):e?(0,$.jsxs)(`span`,{className:`editor-statusbar-item editor-statusbar-save editor-statusbar-save-dirty`,role:`status`,children:[(0,$.jsx)(`span`,{className:`editor-status-save-dot`,"aria-hidden":`true`}),r(`editor.unsaved`)]}):null}function Nn(){let{t:e}=u(),{currentBranch:t,branches:n,branchesLoading:r,branchOperationInProgress:i,repositoryOperationInProgress:a,operationFeedback:o,isGitRepo:s,switchBranch:c,createBranch:l,loadBranches:d,refresh:f,clearOperationMessage:p}=xn(),[m,h]=(0,Q.useState)(!1),g=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{f()},[f]);let _=(0,Q.useCallback)(e=>{g.current={operation:`switchBranch`,target:e},c(e),h(!1)},[c]),v=(0,Q.useCallback)(e=>{g.current={operation:`createBranch`,target:e},l(e),h(!1)},[l]);return(0,Q.useEffect)(()=>{let t=g.current;if(!t||i||!o||o.operation!==t.operation||o.target!==t.target)return;if(g.current=null,o.success){let e=setTimeout(p,3e3);return()=>clearTimeout(e)}let n=t.operation===`switchBranch`?c:l,r=Cn(o.message,t.operation);He.error(e(Sn(o.message,t.operation)),{id:`git-branch-operation-error`,durationMs:0,action:r?{label:e(`ide.scm.feedback.retry`),onClick:()=>(g.current=t,n(t.target),!0)}:void 0})},[i,o,c,l,p,e]),s?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`button`,{type:`button`,className:`editor-statusbar-branch`,onClick:e=>{e.stopPropagation(),h(e=>!e)},onPointerDown:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),"aria-expanded":m,disabled:a,title:t||e(`ide.scm.noBranch`),children:[(0,$.jsx)(Y,{size:12}),(0,$.jsx)(`span`,{children:t||e(`ide.scm.noBranch`)})]}),m&&(0,$.jsx)(wn,{currentBranch:t,branches:n,branchesLoading:r,operationInProgress:a,onSwitch:_,onCreate:v,onLoadBranches:d,defaultOpen:!0,onClose:()=>h(!1)})]}):null}var Pn=`application/x-codebuddy-editor-tab`;function Fn(e,t,n,r){if(n<=0||r<=0)return`center`;let i=Math.max(0,Math.min(1,e/n)),a=Math.max(0,Math.min(1,t/r)),o=Math.min(i,1-i),s=Math.min(a,1-a);return o>.300000001&&s>.300000001?`center`:o<=s?i<.5?`left`:`right`:a<.5?`top`:`bottom`}function In(e){return JSON.stringify(e)}function Ln(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.tabId!=`string`||!t.tabId||typeof t.sourceGroupId!=`string`||!t.sourceGroupId?null:{tabId:t.tabId,sourceGroupId:t.sourceGroupId}}catch{return null}}var Rn=`application/x-codebuddy-terminal-tab`,zn=`bottom-panel`;function Bn(e){return JSON.stringify(e)}function Vn(e){if(!e)return null;try{let t=JSON.parse(e);return typeof t.paneId!=`string`||!t.paneId||typeof t.sourceGroupId!=`string`||!t.sourceGroupId?null:{paneId:t.paneId,sourceGroupId:t.sourceGroupId}}catch{return null}}function Hn(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Un({actions:e,onRequestClose:t,tabsOverride:n,activeTabIdOverride:r,groupId:i=`editor-main`,onActivateTab:a,onMoveTab:o}){let{t:s}=u(),c=St(),{tabs:l,activeTabId:d,rootPath:f,setActiveTab:p,closeSavedTabs:m,reorderTabs:h,pinTab:g,unpinTab:_}=Ct(),v=n??l,y=r===void 0?d:r,b=a??p,[x,S]=(0,Q.useState)(null),C=(0,Q.useRef)(null),[w,T]=(0,Q.useState)(null),E=(0,Q.useRef)(-1),D=(0,Q.useRef)(null),[O,k]=(0,Q.useState)(!1),[A,ee]=(0,Q.useState)(!1),M=(0,Q.useMemo)(()=>F(v),[v]),N=(0,Q.useCallback)(()=>{let e=D.current;e&&(k(e.scrollLeft>0),ee(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,Q.useEffect)(()=>{let e=D.current;if(!e)return;N(),e.addEventListener(`scroll`,N,{passive:!0});let t=new ResizeObserver(N);return t.observe(e),()=>{e.removeEventListener(`scroll`,N),t.disconnect()}},[N,v.length]),(0,Q.useEffect)(()=>{if(!y||!D.current)return;let e=D.current.querySelector(`.editor-tab.active`);e&&e.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:Hn()})},[y]);let P=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:-150,behavior:Hn()})},[]),I=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:150,behavior:Hn()})},[]),L=(0,Q.useCallback)(e=>{let t=v[e];t&&(b(t.id),requestAnimationFrame(()=>{(D.current?.querySelectorAll(`[role="tab"]`))?.[e]?.focus()}))},[b,v]),R=(0,Q.useCallback)((e,t)=>{let n=null;e.key===`ArrowLeft`&&(n=(t-1+v.length)%v.length),e.key===`ArrowRight`&&(n=(t+1)%v.length),e.key===`Home`&&(n=0),e.key===`End`&&(n=v.length-1),n!==null&&(e.preventDefault(),L(n))},[L,v.length]),B=(0,Q.useCallback)((e,t)=>{e.preventDefault(),S({x:e.clientX,y:e.clientY,tabId:t})},[]),V=(0,Q.useCallback)(()=>{S(null)},[]),H=(0,Q.useCallback)((e,n)=>{e.button===1&&(e.preventDefault(),t({kind:`single`,id:n}).catch(()=>void 0))},[t]),U=(0,Q.useCallback)((e,t)=>{E.current=t,e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(Pn,In({tabId:v[t].id,sourceGroupId:i})),e.currentTarget instanceof HTMLElement&&e.dataTransfer.setDragImage(e.currentTarget,0,0)},[i,v]),W=(0,Q.useCallback)((e,t)=>{(e.dataTransfer.types.includes(`application/x-codebuddy-editor-tab`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,T(t))},[]),G=(0,Q.useCallback)((e,t)=>{e.preventDefault(),e.stopPropagation();let n=Ln(e.dataTransfer.getData(Pn)),r=Vn(e.dataTransfer.getData(Rn)),i=n?.tabId??(r?z(r.paneId):null),a=E.current;i&&o?o(i,t):a>=0&&a!==t&&h(a,t),E.current=-1,T(null)},[o,h]),K=(0,Q.useCallback)(()=>{E.current=-1,T(null)},[]),te=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&Ee(t.path),V()},[v,V]),q=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);if(t&&f){let e=t.path.startsWith(f+`/`)?t.path.slice(f.length+1):t.path;Ee(e)}else t&&Ee(t.path);V()},[v,f,V]),ne=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);if(t){let{selectPath:e,toggleExpand:n,expandedPaths:r}=c.getState(),i=t.path.split(`/`);for(let e=1;e<i.length;e++){let t=i.slice(0,e).join(`/`);t&&!r.has(t)&&n(t)}e(t.path)}V()},[v,V]),re=(0,Q.useCallback)(e=>{t(n?j(v,e):e).catch(()=>void 0),V()},[V,t,v,n]),ie=(0,Q.useCallback)(e=>{let t=v.filter(t=>t.id!==e&&t.isPinned).length;g(e),o?.(e,t),V()},[V,o,g,v]),J=(0,Q.useCallback)(()=>{n?t({kind:`ids`,ids:v.filter(e=>!e.isPinned&&!e.isDirty).map(e=>e.id)}).catch(()=>void 0):m(),V()},[m,V,t,v,n]);if(v.length===0)return null;let ae=x?v.find(e=>e.id===x.tabId):null;return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`editor-tabs-wrapper`,children:[O&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":s(`editor.scrollTabsLeft`),onClick:P,children:(0,$.jsx)(Fe,{size:14})}),(0,$.jsx)(`div`,{className:`editor-tabs`,ref:D,role:`tablist`,"aria-label":s(`editor.openEditors`),children:v.map((e,n)=>{let r=null,i=``;e.saveStatus===`saving`?(r=`saving`,i=s(`editor.saving`)):e.saveStatus===`error`?(r=`error`,i=`${s(`editor.saveFailed`)}${e.saveError?`: ${e.saveError}`:``}`):e.isDirty&&(r=`dirty`,i=s(`editor.unsaved`));let a=M.get(e.id),o=i?`${e.path} — ${i}`:e.path,c=i?`${e.name}, ${i}`:e.name;return(0,$.jsxs)(`div`,{className:`editor-tab${e.id===y?` active`:``}${w===n?` drag-indicator`:``}`,onMouseDown:t=>H(t,e.id),onContextMenu:t=>B(t,e.id),title:o,draggable:!0,onDragStart:e=>U(e,n),onDragOver:e=>W(e,n),onDrop:e=>G(e,n),onDragEnd:K,children:[(0,$.jsxs)(`button`,{type:`button`,className:`editor-tab-main`,role:`tab`,tabIndex:e.id===y?0:-1,"aria-selected":e.id===y,"aria-label":c,onClick:()=>b(e.id),onKeyDown:e=>R(e,n),children:[(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`editor-tab-name`,children:e.name}),a&&(0,$.jsx)(`span`,{className:`editor-tab-description`,children:a}),e.isPinned&&(0,$.jsx)(`span`,{className:`pin-icon`,title:s(`editor.pin`),children:(0,$.jsx)(ve,{size:14})}),(0,$.jsxs)(`span`,{className:`editor-tab-state`,children:[r===`saving`&&(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:i,children:(0,$.jsx)(`span`,{className:`tab-save-spinner`,"aria-hidden":`true`})}),r===`error`&&(0,$.jsx)(`span`,{className:`tab-save-indicator tab-save-error`,title:i,"aria-hidden":`true`,children:`!`}),r===`dirty`&&(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:i,children:(0,$.jsx)(`span`,{className:`dirty-dot`,"aria-hidden":`true`})})]})]}),(0,$.jsx)(`button`,{type:`button`,className:`close-btn${r?``:` clean-close`}`,tabIndex:e.id===y?0:-1,"aria-label":s(`editor.closeTabAriaLabel`,{name:e.name}),onClick:()=>{t({kind:`single`,id:e.id}).catch(()=>void 0)},children:(0,$.jsx)(je,{size:12})})]},e.id)})}),A&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":s(`editor.scrollTabsRight`),onClick:I,children:(0,$.jsx)(Z,{size:14})}),e&&(0,$.jsx)(`div`,{className:`editor-tabs-actions`,children:e})]}),x&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:V}),(0,$.jsxs)(`div`,{ref:C,className:`editor-context-menu`,style:{left:x.x,top:x.y},children:[ae?.isPinned?(0,$.jsx)(`button`,{onClick:()=>{_(x.tabId),V()},children:s(`editor.unpin`)}):(0,$.jsx)(`button`,{onClick:()=>ie(x.tabId),children:s(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>te(x.tabId),children:s(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>q(x.tabId),children:s(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:()=>ne(x.tabId),children:s(`editor.revealInExplorer`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`single`,id:x.tabId}),children:s(`editor.close`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`others`,id:x.tabId}),children:s(`editor.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`right`,id:x.tabId}),children:s(`editor.closeToRight`)}),(0,$.jsx)(`button`,{onClick:J,children:s(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`all`}),children:s(`editor.closeAll`)})]})]})]})}var Wn=ne,Gn=S;function Kn({path:e,onImageInfo:t,onZoomChange:n}){let{t:r}=u(),i=(0,Q.useRef)(null),a=(0,Q.useRef)(null),[o,s]=(0,Q.useState)(`fit`),c=pe(Gn(e)),[l,d]=(0,Q.useState)(null),[f,p]=(0,Q.useState)(!1),[m,h]=(0,Q.useState)({x:0,y:0}),g=(0,Q.useRef)({x:0,y:0,tx:0,ty:0}),_=(0,Q.useCallback)(()=>{if(!i.current||!l)return 1;let e=i.current.clientWidth-40,t=i.current.clientHeight-80;return e<=0||t<=0?1:Math.min(e/l.w,t/l.h,1)},[l]),v=o===`fit`?_():o,y=(0,Q.useCallback)(()=>{let e=a.current;if(!e)return;let n=e.naturalWidth,r=e.naturalHeight;d({w:n,h:r}),t?.({width:n,height:r})},[t]);(0,Q.useEffect)(()=>{n?.(v)},[v,n]);let b=(0,Q.useCallback)(e=>{(e.ctrlKey||e.metaKey)&&(e.preventDefault(),s(t=>{let n=t===`fit`?_():t,r=e.deltaY<0?.1:-.1;return Math.min(5,Math.max(.1,n+r))}))},[_]),x=(0,Q.useCallback)(e=>{o!==`fit`&&(e.preventDefault(),p(!0),g.current={x:e.clientX,y:e.clientY,tx:m.x,ty:m.y})},[o,m]),S=(0,Q.useCallback)(e=>{if(!f)return;let t=e.clientX-g.current.x,n=e.clientY-g.current.y;h({x:g.current.tx+t,y:g.current.ty+n})},[f]),C=(0,Q.useCallback)(()=>{p(!1)},[]);return(0,$.jsxs)(`div`,{ref:i,className:`file-preview-image-container checkerboard`,onWheel:b,onMouseDown:x,onMouseMove:S,onMouseUp:C,onMouseLeave:C,style:{cursor:o===`fit`?`default`:f?`grabbing`:`grab`},children:[c&&(0,$.jsx)(`img`,{ref:a,src:c,alt:e,onLoad:y,className:v>=3?`pixelated`:``,style:{transform:`translate(${m.x}px, ${m.y}px) scale(${v})`,transformOrigin:`center center`,maxWidth:`none`,maxHeight:`none`,userSelect:`none`,pointerEvents:`none`},draggable:!1}),(0,$.jsxs)(`div`,{className:`image-zoom-toolbar`,children:[(0,$.jsx)(`button`,{onClick:()=>s(e=>Math.max(.1,(e===`fit`?_():e)-.1)),title:r(`filePreview.zoomOut`),children:(0,$.jsx)(xe,{size:16})}),(0,$.jsxs)(`span`,{className:`image-zoom-label`,children:[Math.round(v*100),`%`]}),(0,$.jsx)(`button`,{onClick:()=>s(e=>Math.min(5,(e===`fit`?_():e)+.1)),title:r(`filePreview.zoomIn`),children:(0,$.jsx)(X,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(`fit`),h({x:0,y:0})},title:r(`filePreview.fitToWindow`),children:(0,$.jsx)(ue,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(1),h({x:0,y:0})},title:r(`filePreview.actualSize`),children:(0,$.jsx)(ge,{size:16})})]})]})}function qn({path:e,name:t}){let{t:n}=u(),r=pe(Gn(e));return r?(0,$.jsx)(`div`,{className:`file-preview-video-wrap`,children:(0,$.jsx)(`video`,{src:r,className:`file-preview-video`,title:t,controls:!0,playsInline:!0,preload:`metadata`,children:n(`filePreview.videoNotSupported`)})}):null}function Jn({className:e,children:t}){let n=g(e=>e.resolved),r=(e||``).match(/language-(\w+)/),i=String(t).replace(/\n$/,``);return r?(0,$.jsx)(`div`,{className:`relative group my-3`,children:(0,$.jsx)(Wn,{style:n===`dark`?be:rt,language:r[1],PreTag:`div`,customStyle:{margin:0,borderRadius:`8px`,fontSize:`13px`,lineHeight:`1.6`},codeTagProps:{style:{background:`transparent`,textShadow:`none`}},children:i})}):(0,$.jsx)(`code`,{className:`markdown-inline-code`,children:t})}function Yn({content:e}){return(0,$.jsx)(`div`,{className:`file-preview-markdown`,children:(0,$.jsx)(`div`,{className:`file-preview-markdown-content`,children:(0,$.jsx)(m,{remarkPlugins:[p],components:{code:Jn,a:le},children:e})})})}function Xn({content:e,name:t}){return(0,$.jsx)(`iframe`,{srcDoc:e,className:`file-preview-html`,title:t,sandbox:`allow-forms`,referrerPolicy:`no-referrer`})}function Zn({path:e}){let{t}=u(),n=pe(Gn(e));return n?(0,$.jsx)(`div`,{className:`file-preview-pdf-wrap`,children:(0,$.jsx)(`iframe`,{src:n,className:`file-preview-pdf`,title:t(`filePreview.pdfPreview`)})}):null}function Qn({name:e}){let{t}=u();return(0,$.jsxs)(`div`,{className:`file-preview-binary`,children:[(0,$.jsx)(K,{size:48,className:`text-[var(--color-text-tertiary)]`}),(0,$.jsx)(`div`,{className:`mt-4 text-lg font-medium text-[var(--color-text-primary)]`,children:e}),(0,$.jsx)(`div`,{className:`mt-2 text-sm text-[var(--color-text-secondary)]`,children:t(`filePreview.binaryNotSupported`)})]})}function $n({path:e,name:t,content:n,viewMode:r,onImageInfo:i,onZoomChange:a}){switch(r){case`image`:return(0,$.jsx)(Kn,{path:e,onImageInfo:i,onZoomChange:a});case`svg`:return(0,$.jsx)(Kn,{path:e,onImageInfo:i,onZoomChange:a});case`video`:return(0,$.jsx)(qn,{path:e,name:t});case`markdown`:return(0,$.jsx)(Yn,{content:n});case`html`:return(0,$.jsx)(Xn,{content:n,name:t});case`pdf`:return(0,$.jsx)(Zn,{path:e});case`binary`:return(0,$.jsx)(Qn,{name:t});default:return null}}function er(e,t){let n=t.replace(/\\/g,`/`).split(`/`).pop()?.trim();if(!n||n===`.`||n===`..`)throw Error(`Invalid file name`);let r=e.includes(`\\`)&&!e.includes(`/`)?`\\`:`/`,i=e.replace(/[\\/]+$/,``);return e.startsWith(`/`)&&!i?`/${n}`:/^[A-Za-z]:[\\/]*$/.test(e)?`${e.slice(0,2)}${r}${n}`:i?`${i}${r}${n}`:n}function tr(e,t){if(t)return e;let n=Math.max(e.lastIndexOf(`/`),e.lastIndexOf(`\\`));return n===0?e[0]:n===2&&/^[A-Za-z]:/.test(e)?e.slice(0,3):n>0?e.slice(0,n):``}async function nr(e,t,n,r){let i=Array.from(t),a=i.reduce((e,t)=>e+t.size,0),o=0,s=0;for(let t of i)r?.(o,i.length,t.name,s,a),await n(er(e,t.name),t,e=>{r?.(o,i.length,t.name,s+e,a)}),o++,s+=t.size,r?.(o,i.length,t.name,s,a);return o}function rr(e,t=300){let[n,r]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{if(!e){r(!1);return}let n=setTimeout(()=>r(!0),t);return()=>clearTimeout(n)},[e,t]),n}function ir(e){switch(e){case`modified`:return`M`;case`added`:return`A`;case`untracked`:return`U`;case`deleted`:return`D`;case`conflicted`:return`C`;case`renamed`:return`R`;case`copied`:return`C`;default:return``}}function ar(e){return`file-tree-item-${encodeURIComponent(e)}`}function or({node:e,depth:t,gitStatusMap:n,gitIgnoredPaths:r,onToggleExpand:i,onSelect:a,onOpenFile:o,onConfirmRename:s,onCancelRename:c,onContextMenu:l,onDragStart:d,onDrop:f}){let{t:p}=u(),m=St(),{isExpanded:h,isSelected:g,isMultiSelected:_,isRenaming:v,showHiddenFiles:y}=Ct(Ye(t=>({isExpanded:t.expandedPaths.has(e.path),isSelected:t.selectedPath===e.path,isMultiSelected:t.selectedPaths.has(e.path),isRenaming:t.renamingPath===e.path,showHiddenFiles:t.showHiddenFiles}))),b=e.type===`directory`,x=12+t*12,S=n.get(e.path),C=r.has(e.path),T=rr(!!e.isLoading),E=(0,Q.useMemo)(()=>w(e.children,y),[e.children,y]),[D,O]=(0,Q.useState)(e.name),k=(0,Q.useRef)(null),[A,j]=(0,Q.useState)(!1);(0,Q.useEffect)(()=>{if(v&&k.current){O(e.name),k.current.focus();let t=e.name.lastIndexOf(`.`);!b&&t>0?k.current.setSelectionRange(0,t):k.current.select()}},[v,e.name,b]);let ee=(0,Q.useCallback)(t=>{v||(a(e.path,{ctrl:t.ctrlKey||t.metaKey,shift:t.shiftKey}),b?i(e.path):!t.ctrlKey&&!t.metaKey&&!t.shiftKey&&o(e.path,e.name))},[v,e.path,b,e.name,a,i,o]),M=(0,Q.useCallback)(()=>{v||b||o(e.path,e.name)},[v,b,e.path,e.name,o]),N=(0,Q.useCallback)(t=>{t.stopPropagation(),t.key===`Enter`?(t.preventDefault(),s(e.path,D)):t.key===`Escape`&&(t.preventDefault(),c())},[e.path,D,s,c]),P=(0,Q.useCallback)(()=>{s(e.path,D)},[e.path,D,s]),F=(0,Q.useCallback)(t=>{t.preventDefault(),l(t,e.path)},[l,e.path]),I=(0,Q.useCallback)(t=>{let n=_?[...m.getState().selectedPaths]:[e.path];t.dataTransfer.effectAllowed=`copyMove`,t.dataTransfer.setData(`text/plain`,JSON.stringify(n)),t.dataTransfer.setData(`application/x-file-paths`,JSON.stringify(n)),d(n)},[m,_,e.path,d]),L=(0,Q.useCallback)(e=>{let t=e.dataTransfer.types.includes(`Files`);(b||t)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=t?`copy`:`move`,j(!0))},[b]),R=(0,Q.useCallback)(()=>{j(!1)},[]),z=(0,Q.useCallback)(t=>{let n=t.dataTransfer.files.length>0;(b||n)&&(t.preventDefault(),t.stopPropagation(),j(!1),f(tr(e.path,b),t))},[b,e.path,f]),V=g||_,H=C?`Git: ignored`:S?`Git: ${S}`:void 0,U=[e.name,e.symlinkTarget===void 0?void 0:p(`editor.symbolicLink`),H].filter(Boolean).join(`, `);return(0,$.jsxs)(`div`,{id:ar(e.path),role:`treeitem`,"aria-level":t+1,"aria-expanded":b?h:void 0,"aria-selected":V,"aria-label":U,"data-path":e.path,title:H?`${e.path} (${H})`:e.path,children:[(0,$.jsxs)(`div`,{className:`file-tree-item ${V?`selected`:``} ${A?`drag-over`:``} ${C?`git-ignored`:``}`,onClick:ee,onDoubleClick:M,onContextMenu:F,draggable:!v,onDragStart:I,onDragOver:L,onDragLeave:R,onDrop:z,children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`file-tree-indent-guide`,style:{left:12+t*12+6}},t)),(0,$.jsx)(`span`,{style:{width:x,flexShrink:0}}),b?T?(0,$.jsx)(B,{size:16,className:`file-tree-chevron animate-spin`}):(0,$.jsx)(Z,{size:16,className:`file-tree-chevron ${h?`expanded`:``}`}):(0,$.jsx)(Ge,{name:e.name,type:e.type,isExpanded:h,size:16}),v?(0,$.jsx)(`input`,{ref:k,className:`file-tree-rename-input`,value:D,onChange:e=>O(e.target.value),onKeyDown:N,onBlur:P,onClick:e=>e.stopPropagation()}):(0,$.jsx)(`span`,{className:`file-tree-item-name`,children:e.name}),S&&!b&&(0,$.jsx)(`span`,{className:`file-tree-git-badge git-status-${S}`,"aria-label":H,title:H,children:ir(S)}),(0,$.jsx)(Be,{entry:e,label:p(`editor.symbolicLink`),className:`ml-1`})]}),b&&h&&(0,$.jsx)(`div`,{role:`group`,children:E.map(e=>(0,$.jsx)(sr,{node:e,depth:t+1,gitStatusMap:n,gitIgnoredPaths:r,onToggleExpand:i,onSelect:a,onOpenFile:o,onConfirmRename:s,onCancelRename:c,onContextMenu:l,onDragStart:d,onDrop:f},e.path))})]})}var sr=(0,Q.memo)(or);function cr(e,t){let n=e?.querySelector(`[data-path="${CSS.escape(t)}"]`);if(!e||!n)return;let r=e.getBoundingClientRect(),i=n.getBoundingClientRect();i.top<r.top?e.scrollTop-=r.top-i.top:i.bottom>r.bottom&&(e.scrollTop+=i.bottom-r.bottom)}function lr({onDidOpenFile:e}){let{t}=u(),n=r(e=>e.info),{rootPath:i,tree:a,treeLoading:o,treeError:c,expandedPaths:l,selectedPath:d,selectedPaths:f,pendingTreeRevealPath:p,setPendingTreeRevealPath:m,tabs:h,renamingPath:g,setRootPath:_,toggleExpand:v,selectPath:y,openFile:S,refreshTree:C,collapseAll:E,createNewFile:D,createNewFolder:O,startRename:A,startCreateFile:j,startCreateFolder:ee,confirmRename:N,cancelRename:P,deleteSelected:F,moveToDirectory:I,showHiddenFiles:R,toggleShowHiddenFiles:z}=Ct(),H=xn(e=>e.files),[W,K]=(0,Q.useState)(new Set),te=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=++te.current;if(!i||!a){K(new Set);return}let t=L(a);if(t.length===0){K(new Set);return}let n=setTimeout(()=>{Rt(t,i).then(t=>{te.current===e&&K(new Set(t))}).catch(()=>{te.current===e&&K(new Set)})},500);return()=>clearTimeout(n)},[i,a]);let ne=(0,Q.useMemo)(()=>{let e=new Map;if(!H.length||!i)return e;let t={conflicted:6,deleted:5,modified:4,renamed:3,added:2,copied:1,untracked:0};for(let n of H){let r=n.path.startsWith(`/`)?n.path:`${i}/${n.path}`;e.set(r,n.status);let a=r.substring(0,r.lastIndexOf(`/`));for(;a&&a.length>=i.length;){let r=e.get(a);(!r||(t[n.status]??0)>(t[r]??0))&&e.set(a,n.status),a=a.substring(0,a.lastIndexOf(`/`))}}return e},[H,i]),ie=(0,Q.useMemo)(()=>w(a?.children,R),[a?.children,R]),[J,ae]=(0,Q.useState)(!1),[oe,le]=(0,Q.useState)(!1),[ue,de]=(0,Q.useState)(null),fe=Ft(e=>e.setProgress),Y=(0,Q.useRef)(null),pe=(0,Q.useRef)(null),me=(0,Q.useRef)(f);me.current=f;let[X,he]=(0,Q.useState)(null),ge=(0,Q.useRef)([]),_e=(0,Q.useCallback)(e=>{le(!1),_(e)},[_]),ve=(0,Q.useCallback)(async(t,n)=>{await S(t,n),e?.(t,t)},[e,S]),ye=(0,Q.useCallback)((e,t)=>{N(e,t)},[N]),be=(0,Q.useCallback)((e,t)=>{e.preventDefault(),me.current.has(t)||y(t),he({x:e.clientX,y:e.clientY,path:t})},[y]),xe=(0,Q.useCallback)(()=>he(null),[]);(0,Q.useLayoutEffect)(()=>{X&&pe.current&&se(pe.current,X.x,X.y)},[X]);let Se=(0,Q.useCallback)(()=>{X&&(A(X.path),he(null))},[X,A]),Ce=(0,Q.useCallback)((e,t)=>{if(!e)return null;if(e.path===t)return e;if(e.children)for(let n of e.children){let e=Ce(n,t);if(e)return e}return null},[]),we=X?Ce(a,X.path)?.type===`directory`:!1,Te=(0,Q.useCallback)(e=>{let t=e??[...f];if(t.length===0)return;let n=t.some(e=>Ce(a,e)?.type===`directory`),r=h.some(e=>e.isDirty&&t.some(t=>e.path===t||e.path.startsWith(`${t}/`)));if(t.length>1||n||r){de(t);return}F(t).catch(()=>void 0)},[F,Ce,f,h,a]),Oe=(0,Q.useCallback)(()=>{if(!X)return;let e=T(X.path,f);he(null),Te(e)},[X,Te,f]),je=(0,Q.useCallback)(()=>{let e=ue;de(null),e&&F(e).catch(()=>void 0)},[F,ue]),Me=(0,Q.useCallback)(e=>{if(!X)return;let t=Ce(a,X.path)?.type===`directory`?X.path:X.path.substring(0,X.path.lastIndexOf(`/`));if(t){l.has(t)||v(t);let n=`${t}/__new_${e}__`;e===`file`?j(n):ee(n)}he(null)},[X,l,Ce,j,ee,v,a]),Pe=(0,Q.useCallback)(()=>{X&&(Ee(X.path),he(null))},[X]),Fe=(0,Q.useCallback)(()=>{if(X&&i){let e=X.path.startsWith(i+`/`)?X.path.slice(i.length+1):X.path;Ee(e),he(null)}},[X,i]),Ie=(0,Q.useCallback)(()=>{X&&(Ee(X.path.split(`/`).pop()||X.path),he(null))},[X]),Le=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path);e?.type===`file`&&ve(e.path,e.name),he(null)},[X,Ce,ve,a]),Re=(0,Q.useCallback)(()=>{X&&(ce(U(X.path)),he(null))},[X]),ze=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path);if(!e){he(null);return}let n=e.type===`directory`?`${e.name||wt(e.path)}.zip`:e.name||wt(e.path);Dt(e.path,n).catch(()=>{He.error(t(`editor.downloadFailed`))}),he(null)},[X,Ce,t,a]),Be=(0,Q.useCallback)(()=>{if(!X)return;let e=Ce(a,X.path),t=e?tr(e.path,e.type===`directory`):``;t&&(b.getState().mainView===`editor-page`||s()?k.getState().createBottomTerminal(t):(V.getState().addTab(`terminal`,{initialCwd:t}),G.getState().setWorkspaceDockOpen(!0))),he(null)},[X,Ce,a]),Ue=(0,Q.useCallback)(e=>{ge.current=e},[]),We=(0,Q.useCallback)((e,n)=>{let r=Array.from(n.dataTransfer.files);if(r.length>0){ge.current=[];let n=r.reduce((e,t)=>e+t.size,0);fe({completed:0,total:r.length,fileName:r[0]?.name??``,loadedBytes:0,totalBytes:n}),(async()=>{try{let n=await nr(e,r,x,(e,t,n,r,i)=>fe({completed:e,total:t,fileName:n,loadedBytes:r,totalBytes:i}));He.success(t(`editor.uploadComplete`,{count:n}))}catch(e){let n=e instanceof Error?e.message:String(e);He.error(`${t(`editor.uploadFailed`)}: ${n}`)}finally{await C().catch(()=>void 0),fe(null)}})();return}let i=ge.current;ge.current=[],i.length!==0&&I(i,e).catch(e=>{let n=e instanceof Error?e.message:String(e);He.error(`${t(`editor.moveFailed`)}: ${n}`)})},[I,C,t]),Ge=(0,Q.useCallback)(e=>{if(g||!a)return;let t=M(a,l,R);if(t.length===0)return;let n=d?t.indexOf(d):-1,r=d?Ce(a,d):null;function i(e,t=!1){y(e,{shift:t}),requestAnimationFrame(()=>cr(Y.current,e))}switch(e.key){case`ArrowDown`:e.preventDefault(),i(t[n<t.length-1?n+1:0],e.shiftKey);break;case`ArrowUp`:e.preventDefault(),i(t[n>0?n-1:t.length-1],e.shiftKey);break;case`ArrowRight`:if(e.preventDefault(),r?.type!==`directory`)break;if(!l.has(r.path))v(r.path);else{let e=w(r.children,R)[0];e&&i(e.path)}break;case`ArrowLeft`:if(e.preventDefault(),r?.type===`directory`&&l.has(r.path)){v(r.path);break}if(d){let e=d.substring(0,d.lastIndexOf(`/`));t.includes(e)&&i(e)}break;case`Enter`:case` `:e.preventDefault(),r?.type===`directory`?v(r.path):r&&ve(r.path,r.name);break;case`F2`:e.preventDefault(),d&&A(d);break;case`Delete`:case`Backspace`:e.preventDefault(),f.size>0&&Te()}},[a,l,d,f,g,R,Ce,y,v,A,ve,Te]);(0,Q.useLayoutEffect)(()=>{if(!p)return;let e=requestAnimationFrame(()=>{cr(Y.current,p),m(null)});return()=>cancelAnimationFrame(e)},[p,m,a]);let Ke=a?.name||i?.split(`/`).pop()||`WORKSPACE`;return(0,$.jsxs)(`div`,{className:`file-tree`,children:[(0,$.jsx)(`div`,{className:`file-tree-title-bar`,children:(0,$.jsx)(`span`,{className:`file-tree-title-text`,children:t(`editor.explorer`)})}),(0,$.jsxs)(`div`,{className:`file-tree-section-header`,children:[(0,$.jsxs)(`button`,{type:`button`,className:`file-tree-section-toggle`,"aria-expanded":!J,onClick:()=>ae(e=>!e),children:[J?(0,$.jsx)(Z,{size:12,style:{flexShrink:0}}):(0,$.jsx)(Ae,{size:12,style:{flexShrink:0}}),(0,$.jsx)(`span`,{className:`file-tree-section-name`,children:Ke.toUpperCase()})]}),(0,$.jsxs)(`div`,{className:`file-tree-section-actions`,children:[(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:D,title:t(`editor.newFile`),"aria-label":t(`editor.newFile`),children:(0,$.jsx)(dt,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:O,title:t(`editor.newFolder`),"aria-label":t(`editor.newFolder`),children:(0,$.jsx)(De,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>le(!0),title:t(`editor.openFolder`),"aria-label":t(`editor.openFolder`),children:(0,$.jsx)(ke,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>{C().catch(()=>void 0)},title:t(`editor.refresh`),"aria-label":t(`editor.refresh`),children:(0,$.jsx)(q,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:E,title:t(`editor.collapseAll`),"aria-label":t(`editor.collapseAll`),children:(0,$.jsx)(lt,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:z,title:t(R?`editor.hideHiddenFiles`:`editor.showHiddenFiles`),"aria-label":t(R?`editor.hideHiddenFiles`:`editor.showHiddenFiles`),children:R?(0,$.jsx)(Qe,{size:14}):(0,$.jsx)(Ve,{size:14})})]})]}),oe&&(0,$.jsx)(Ne,{initialPath:i||n?.cwd||`/`,onSelect:_e,onClose:()=>le(!1)}),ue&&(0,$.jsx)(re,{title:t(`editor.deleteConfirmTitle`),message:t(`editor.deleteConfirmMessage`,{count:ue.length}),confirmLabel:t(`editor.delete`),danger:!0,onConfirm:je,onCancel:()=>de(null)}),!J&&(0,$.jsxs)(`div`,{className:`file-tree-content`,ref:Y,role:`tree`,"aria-label":t(`editor.fileTreeAriaLabel`),"aria-multiselectable":`true`,"aria-activedescendant":d?ar(d):void 0,tabIndex:0,onKeyDown:Ge,onClick:()=>Y.current?.focus(),onDragOver:e=>{i&&e.dataTransfer.types.includes(`Files`)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`)},onDrop:e=>{i&&e.dataTransfer.files.length>0&&(e.preventDefault(),We(i,e))},children:[o&&!a&&(0,$.jsx)(`div`,{className:`file-tree-loading`,children:(0,$.jsx)(B,{size:16,className:`animate-spin`})}),a&&c&&i&&(0,$.jsxs)(`div`,{className:`file-tree-inline-error`,role:`status`,children:[(0,$.jsx)(`span`,{children:t(`editor.loadError`)}),(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(i),children:[(0,$.jsx)(q,{size:12}),t(`editor.refresh`)]})]}),!o&&!a&&c&&i&&(0,$.jsxs)(`div`,{className:`file-tree-empty`,children:[(0,$.jsx)(`span`,{children:t(`editor.loadError`)}),(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(i),children:[(0,$.jsx)(q,{size:12}),t(`editor.refresh`)]}),n?.cwd&&i!==n.cwd&&(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(n.cwd),children:[(0,$.jsx)(pt,{size:12}),t(`editor.backToWorkDir`)]})]}),ie.map(e=>(0,$.jsx)(sr,{node:e,depth:0,gitStatusMap:ne,gitIgnoredPaths:W,onToggleExpand:v,onSelect:y,onOpenFile:ve,onConfirmRename:ye,onCancelRename:P,onContextMenu:be,onDragStart:Ue,onDrop:We},e.path)),ie.length===0&&a?.children&&(0,$.jsx)(`div`,{className:`file-tree-empty`,children:t(`editor.emptyFolder`)})]}),X&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:xe}),(0,$.jsxs)(`div`,{ref:pe,className:`editor-context-menu`,style:{left:X.x,top:X.y},children:[!we&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:Le,children:t(`editor.open`)}),(0,$.jsx)(`button`,{onClick:Re,children:t(`editor.addToChat`)})]}),we&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:()=>Me(`file`),children:t(`editor.newFile`)}),(0,$.jsx)(`button`,{onClick:()=>Me(`folder`),children:t(`editor.newFolder`)})]}),(0,$.jsx)(`button`,{onClick:ze,children:t(`editor.download`)}),(0,$.jsx)(`button`,{onClick:Be,children:t(`editor.openInTerminal`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:Pe,children:t(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:Fe,children:t(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:Ie,children:t(`editor.copyName`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),f.size<=1&&(0,$.jsx)(`button`,{onClick:Se,children:t(`editor.rename`)}),(0,$.jsx)(`button`,{className:`danger`,onClick:Oe,children:f.size>1?`${t(`editor.delete`)} (${f.size})`:t(`editor.delete`)})]})]})]})}function ur(e,t){let n=e.trim();if(!n)return t;let r=n.lastIndexOf(`:`),i=r>=0?n.slice(r+1).trim():``;if(!i||!i.includes(`/`)&&!i.includes(`\\`)&&i!==`~`)return n;let a=i.replace(/\\/g,`/`).replace(/\/+$/,``);return!a||a===`~`?a||t:a.split(`/`).filter(Boolean).pop()||n}function dr(e,t){return t||e>=4}function fr(e,t,n){return t<=0?-1:((e<0?n>0?-1:0:e)+n+t)%t}function pr(e,t){fetch(`/api/v1/pty/${e}/input/send`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify({data:t})}).catch(()=>{})}function mr(){let{t:e}=u(),t=St(),{bottomTerminals:n,activeBottomTerminalId:i,bottomPanelMaximized:a,createBottomTerminal:o,moveBottomTerminal:s,restoreDockTerminalToBottom:c,closeBottomTerminal:l,closeOtherBottomTerminals:d,closeBottomTerminalsToRight:f,closeAllBottomTerminals:p,setActiveBottomTerminal:m,setBottomPanelCollapsed:h,toggleBottomPanelMaximize:g}=k(),_=ee(e=>e.cwd),[v,y]=(0,Q.useState)(null),x=(0,Q.useCallback)((e,t)=>{e.preventDefault(),N(!1),y({x:e.clientX,y:e.clientY,tabId:t})},[]),S=(0,Q.useCallback)(()=>{y(null)},[]),w=b(e=>e.panes),T=(0,Q.useRef)(null),E=(0,Q.useRef)(new Map),D=(0,Q.useRef)(null),O=(0,Q.useRef)(null),[A,j]=(0,Q.useState)(!1),[M,N]=(0,Q.useState)(!1),P=n.map(e=>w[e]?.title||``).join(`\0`),F=dr(n.length,A);(0,Q.useEffect)(()=>{let e=setTimeout(()=>{window.dispatchEvent(new Event(`resize`))},60);return()=>clearTimeout(e)},[]);let I=(0,Q.useCallback)(()=>{let e=T.current;e&&j(e.scrollWidth>e.clientWidth+1)},[]);(0,Q.useEffect)(()=>{let e=T.current;if(!e)return;I();let t=new ResizeObserver(I);return t.observe(e),()=>t.disconnect()},[n.length,I,P]),(0,Q.useEffect)(()=>{i&&T.current&&E.current.get(i)?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`})},[i]),(0,Q.useEffect)(()=>{if(!M)return;let e=e=>{D.current?.contains(e.target)||N(!1)},t=e=>{e.key===`Escape`&&(N(!1),requestAnimationFrame(()=>O.current?.focus()))};return requestAnimationFrame(()=>{let e=D.current;(e?.querySelector(`[aria-current="page"]`)??e?.querySelector(`[role="menuitem"]`))?.focus()}),document.addEventListener(`pointerdown`,e,!0),document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`pointerdown`,e,!0),document.removeEventListener(`keydown`,t)}},[M]),(0,Q.useEffect)(()=>{F||N(!1)},[F]);let L=(0,Q.useCallback)(()=>{o()},[o]),z=(0,Q.useCallback)((e,t)=>{e.stopPropagation(),l(t)},[l]),B=(0,Q.useCallback)((e,n)=>{c(e,n);let r=C(k.getState().editorDock);r&&!R(r)&&t.getState().setActiveTab(r)},[t,c]),V=(0,Q.useCallback)(()=>{h(!0)},[h]),[H,U]=(0,Q.useState)(!1),[W,G]=(0,Q.useState)(null),K=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=()=>{K.current=0,U(!1),G(null)};return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let te=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),K.current++,(e.dataTransfer.types.includes(`text/plain`)||e.dataTransfer.types.includes(`application/x-file-paths`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&U(!0)},[]),q=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`)?`move`:`copy`},[]),ne=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),K.current--,K.current<=0&&(K.current=0,U(!1),G(null))},[]),re=(0,Q.useCallback)(e=>{e.preventDefault(),e.stopPropagation(),U(!1),K.current=0;let t=Vn(e.dataTransfer.getData(Rn));if(t){t.sourceGroupId===`bottom-panel`?s(t.paneId,n.length):B(t.paneId);return}let a=[],o=e.dataTransfer.getData(`application/x-file-paths`)||e.dataTransfer.getData(`text/plain`);if(o)try{let e=JSON.parse(o);Array.isArray(e)&&(a=e)}catch{a=[o]}if(a.length===0&&e.dataTransfer.files.length>0)for(let t=0;t<e.dataTransfer.files.length;t++){let n=e.dataTransfer.files[t],r=n.path||n.webkitRelativePath||n.name;r&&a.push(r)}if(a.length===0)return;let c=i;if(!c)return;let l=w[c];l?.ptySessionId&&(pr(l.ptySessionId,at(a,r.getState().info?.os)),setTimeout(()=>{document.querySelector(`.ide-bottom-terminal-wrap[style*="flex"] .xterm-helper-textarea`)?.focus()},50))},[i,n.length,s,w,B]);return(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`ide-bottom-panel ${H?`drop-highlight`:``}`,onDragEnter:te,onDragOver:q,onDragLeave:ne,onDrop:re,children:[(0,$.jsxs)(`div`,{className:`ide-bottom-tabs`,children:[(0,$.jsx)(`div`,{className:`ide-bottom-tabs-list`,ref:T,role:`tablist`,"aria-label":e(`ide.terminals`),onDoubleClick:e=>{e.target===e.currentTarget&&L()},children:n.map((t,r)=>{let a=w[t],o=e(`ide.terminalOrdinal`,{index:r+1}),c=a?.title||o,l=ur(c,o),u=t===i;return(0,$.jsxs)(`button`,{ref:e=>{e?E.current.set(t,e):E.current.delete(t)},type:`button`,role:`tab`,"aria-selected":u,tabIndex:u?0:-1,"aria-label":`${o}, ${c}`,className:`ide-bottom-tab ${u?`active`:``}${W===t?` drag-indicator`:``}`,draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(Rn,Bn({paneId:t,sourceGroupId:zn})),e.dataTransfer.setDragImage(e.currentTarget,0,0)},onDragEnd:()=>{K.current=0,U(!1)},onDragOver:e=>{e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`)&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,G(t))},onDrop:e=>{let t=Vn(e.dataTransfer.getData(Rn));t&&(e.preventDefault(),e.stopPropagation(),K.current=0,U(!1),G(null),t.sourceGroupId===`bottom-panel`?s(t.paneId,r):B(t.paneId,r))},onClick:()=>m(t),onDoubleClick:()=>g(),onContextMenu:e=>x(e,t),onKeyDown:e=>{let t=null;if(e.key===`ArrowLeft`&&(t=(r-1+n.length)%n.length),e.key===`ArrowRight`&&(t=(r+1)%n.length),e.key===`Home`&&(t=0),e.key===`End`&&(t=n.length-1),t===null)return;e.preventDefault();let i=n[t];m(i),requestAnimationFrame(()=>E.current.get(i)?.focus())},children:[(0,$.jsxs)(`span`,{className:`ide-bottom-tab-index`,"aria-hidden":`true`,children:[`T`,r+1]}),(0,$.jsx)(`span`,{className:`ide-bottom-tab-title`,title:c,children:l}),(0,$.jsx)(`span`,{className:`ide-bottom-tab-close`,onClick:e=>z(e,t),children:(0,$.jsx)(je,{size:14})})]},t)})}),(0,$.jsxs)(`div`,{className:`ide-bottom-tabs-actions`,children:[F&&(0,$.jsxs)(`div`,{ref:D,className:`ide-bottom-overview`,children:[(0,$.jsxs)(`button`,{ref:O,type:`button`,className:`ide-bottom-overview-trigger ${M?`active`:``}`,"aria-haspopup":`menu`,"aria-expanded":M,"aria-label":e(`ide.allTerminalsAriaLabel`,{count:n.length}),title:e(`ide.allTerminals`),onClick:()=>{y(null),N(e=>!e)},children:[(0,$.jsx)(mt,{size:15}),(0,$.jsx)(`span`,{children:n.length})]}),M&&(0,$.jsxs)(`div`,{className:`ide-bottom-overview-menu`,role:`menu`,"aria-label":e(`ide.allTerminals`),onKeyDown:e=>{if(![`ArrowDown`,`ArrowUp`,`Home`,`End`].includes(e.key))return;let t=Array.from(e.currentTarget.querySelectorAll(`[role="menuitem"]`));if(t.length===0)return;e.preventDefault();let n=t.indexOf(document.activeElement);t[e.key===`Home`?0:e.key===`End`?t.length-1:fr(n,t.length,e.key===`ArrowUp`?-1:1)]?.focus()},children:[(0,$.jsxs)(`div`,{className:`ide-bottom-overview-head`,children:[(0,$.jsx)(`span`,{children:e(`ide.allTerminals`)}),(0,$.jsx)(`span`,{children:n.length})]}),(0,$.jsx)(`div`,{className:`ide-bottom-overview-list`,children:n.map((t,n)=>{let r=w[t]?.title||e(`ide.terminalOrdinal`,{index:n+1}),a=t===i;return(0,$.jsxs)(`button`,{type:`button`,role:`menuitem`,"aria-current":a?`page`:void 0,className:`ide-bottom-overview-item ${a?`active`:``}`,title:r,onClick:()=>{m(t),N(!1),requestAnimationFrame(()=>E.current.get(t)?.focus())},children:[(0,$.jsx)(`span`,{className:`ide-bottom-overview-icon`,children:(0,$.jsx)(J,{size:15})}),(0,$.jsxs)(`span`,{className:`ide-bottom-overview-copy`,children:[(0,$.jsx)(`span`,{className:`ide-bottom-overview-name`,children:r}),(0,$.jsx)(`span`,{className:`ide-bottom-overview-meta`,children:e(`ide.terminalOrdinal`,{index:n+1})})]}),a&&(0,$.jsx)($e,{size:14,className:`ide-bottom-overview-check`})]},t)})})]})]}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:L,title:e(`ide.newTerminal`),children:(0,$.jsx)(X,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:g,title:e(a?`ide.restorePanel`:`ide.maximizePanel`),children:a?(0,$.jsx)(it,{size:16}):(0,$.jsx)(ue,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:V,title:e(`ide.hidePanel`),children:(0,$.jsx)(Ae,{size:16})})]})]}),(0,$.jsxs)(`div`,{className:`ide-bottom-content`,children:[n.map(e=>(0,$.jsx)(`div`,{className:`ide-bottom-terminal-wrap`,style:{display:e===i?`flex`:`none`},children:(0,$.jsx)(ot,{paneId:e,initialCwd:w[e]?.initialCwd??_,editorStore:t})},e)),n.length===0&&(0,$.jsx)(`div`,{className:`ide-bottom-empty`,children:(0,$.jsxs)(`button`,{className:`ide-bottom-empty-btn`,onClick:L,children:[(0,$.jsx)(X,{size:16}),(0,$.jsx)(`span`,{children:e(`ide.newTerminal`)})]})})]})]}),v&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:S}),(0,$.jsxs)(`div`,{className:`editor-context-menu`,style:{left:v.x,top:v.y},children:[(0,$.jsx)(`button`,{onClick:()=>{l(v.tabId),S()},children:e(`terminal.close`)}),(0,$.jsx)(`button`,{onClick:()=>{d(v.tabId),S()},children:e(`terminal.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>{f(v.tabId),S()},children:e(`terminal.closeToRight`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>{p(),S()},children:e(`terminal.closeAll`)})]})]})]})}function hr(e){let{direction:t,initialSize:n,minSize:r=120,maxSize:i,collapsible:a=!0,collapseThreshold:o,defaultCollapsed:s=!1,onResize:c,onCollapse:l,onMaximize:u,maximizeThreshold:d=.92,reverse:f=!1,ariaLabel:p,keyboardStep:m=10}=e,[h,g]=(0,Q.useState)(n),[_,v]=(0,Q.useState)(s),[y,b]=(0,Q.useState)(!1),x=(0,Q.useRef)(!1),S=(0,Q.useRef)(null),C=(0,Q.useRef)(n);(0,Q.useEffect)(()=>{!_&&!x.current&&g(n)},[n,_]),(0,Q.useEffect)(()=>{v(s)},[s]);let w=o??r*.6,T=(0,Q.useCallback)(()=>{if(i)return i;let e=S.current;if(!e?.parentElement)return 1/0;let n=e.parentElement.getBoundingClientRect();return(t===`horizontal`?n.width:n.height)*.8},[t,i]),E=(0,Q.useCallback)(e=>{let t=Math.max(r,Math.min(T(),e));g(t),C.current=t,c?.(t)},[r,T,c]),D=(0,Q.useCallback)(()=>{v(e=>{let t=!e;if(t)C.current=h;else{let e=Math.max(r,C.current);g(e),c?.(e)}return l?.(t),t})},[h,r,c,l]),O=(0,Q.useCallback)((e,i,o,s)=>{x.current=!0,b(!0);let p=S.current;if(!p){x.current=!1,b(!1);return}let m=_?0:h,y=T(),E=(t===`horizontal`?p.clientWidth:p.clientHeight)*d,D=!1,O=null;O=Me({pointerId:o,target:s,cursor:t===`horizontal`?`col-resize`:`row-resize`,onMove:(o,s)=>{if(D)return;let d;d=t===`horizontal`?o-e:s-i,f&&(d=-d);let p=m+d;if(a&&p<w){_||(C.current=h>r?h:n,v(!0),l?.(!0));return}if(u&&p>=E){D=!0,u(),O?.();return}_&&p>=r&&(v(!1),l?.(!1));let b=Math.max(r,Math.min(y,p));g(b),c?.(b)},onEnd:()=>{x.current=!1,b(!1)}})},[_,h,t,f,a,w,r,n,T,c,l,u,d]),k=(0,Q.useCallback)(e=>{(e.button===0||e.pointerType!==`mouse`)&&(e.preventDefault(),e.stopPropagation(),O(e.clientX,e.clientY,e.pointerId,e.currentTarget))},[O]),A=(0,Q.useCallback)(e=>{if((e.key===`Enter`||e.key===` `)&&a){e.preventDefault(),D();return}if(e.key===`Home`){e.preventDefault(),_&&(v(!1),l?.(!1)),E(r);return}if(e.key===`End`){e.preventDefault(),_&&(v(!1),l?.(!1));let t=T();Number.isFinite(t)&&E(t);return}let n=0;t===`horizontal`?(e.key===`ArrowLeft`&&(n=-m),e.key===`ArrowRight`&&(n=m)):(e.key===`ArrowUp`&&(n=-m),e.key===`ArrowDown`&&(n=m)),n!==0&&(e.preventDefault(),f&&(n=-n),_&&(v(!1),l?.(!1)),E((_?r:h)+n))},[_,a,t,T,m,r,l,f,E,h,D]),j=[`ide-sash`,t===`horizontal`?`ide-sash-vertical`:`ide-sash-horizontal`,y?`dragging`:``].filter(Boolean).join(` `),ee=T();return{size:_?0:h,collapsed:_,sashProps:{onPointerDown:k,onDoubleClick:D,onKeyDown:A,className:j,role:`separator`,tabIndex:0,"aria-label":p,"aria-orientation":t===`horizontal`?`vertical`:`horizontal`,"aria-valuemin":a?0:r,"aria-valuemax":Math.round(Number.isFinite(ee)?ee:Math.max(r,h)),"aria-valuenow":Math.round(_?0:h)},containerRef:S,setSize:E,toggleCollapse:D,dragging:y}}function gr(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function _r({itemIds:e,editorTabs:t,terminalTitles:n,activeItemId:r,groupId:i,actions:a,onActivate:o,onMoveItem:s,onRequestClose:c,onCloseTerminal:l}){let{t:d}=u(),f=St(),{rootPath:p,pinTab:m,unpinTab:h}=Ct(),[g,_]=(0,Q.useState)(null),[v,y]=(0,Q.useState)(null),[b,x]=(0,Q.useState)(!1),[S,C]=(0,Q.useState)(!1),w=(0,Q.useMemo)(()=>F(t),[t]),T=(0,Q.useRef)(new Map),E=(0,Q.useRef)(null);(0,Q.useEffect)(()=>{let e=()=>_(null);return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let D=(0,Q.useCallback)(()=>{let e=E.current;e&&(x(e.scrollLeft>0),C(e.scrollLeft+e.clientWidth<e.scrollWidth-1))},[]);(0,Q.useEffect)(()=>{let e=E.current;if(!e)return;D(),e.addEventListener(`scroll`,D,{passive:!0});let t=new ResizeObserver(D);return t.observe(e),()=>{e.removeEventListener(`scroll`,D),t.disconnect()}},[D,e.length]),(0,Q.useEffect)(()=>{r&&E.current&&T.current.get(r)?.scrollIntoView({block:`nearest`,inline:`nearest`,behavior:gr()})},[r]);let O=(0,Q.useCallback)(t=>{let n=e[t];n&&(o(n),requestAnimationFrame(()=>T.current.get(n)?.focus()))},[e,o]),k=(0,Q.useCallback)(e=>{c(j(t,e)).catch(()=>void 0),y(null)},[t,c]),A=(0,Q.useCallback)((e,n)=>{let r=t.find(t=>t.id===e);if(r){let e=n&&p&&r.path.startsWith(p+`/`)?r.path.slice(p.length+1):r.path;Ee(e)}y(null)},[t,p]),ee=(0,Q.useCallback)(e=>{let n=t.find(t=>t.id===e);if(n){let{selectPath:e,toggleExpand:t,expandedPaths:r}=f.getState(),i=n.path.split(`/`);for(let e=1;e<i.length;e+=1){let n=i.slice(0,e).join(`/`);n&&!r.has(n)&&t(n)}e(n.path)}y(null)},[f,t]),M=(0,Q.useCallback)(n=>{let r=e.filter(e=>{let r=t.find(t=>t.id===e);return e!==n&&!!r?.isPinned}).length;m(n),s(n,r),y(null)},[t,e,s,m]),N=v?t.find(e=>e.id===v.tabId)??null:null;return e.length===0?null:(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`editor-tabs-wrapper`,children:[b&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsLeft`),onClick:()=>E.current?.scrollBy({left:-150,behavior:gr()}),children:(0,$.jsx)(Fe,{size:14})}),(0,$.jsx)(`div`,{ref:E,className:`editor-tabs`,role:`tablist`,"aria-label":d(`editor.openEditors`),children:e.map((a,u)=>{let f=R(a),p=f?null:t.find(e=>e.id===a)??null;if(!f&&!p)return null;let m=f?n[f]||d(`ide.terminal`):p.name,h=p?w.get(p.id):void 0,v=``;p?.saveStatus===`saving`?v=d(`editor.saving`):p?.saveStatus===`error`?v=d(`editor.saveFailed`)+(p.saveError?`: `+p.saveError:``):p?.isDirty&&(v=d(`editor.unsaved`));let b=f?m:v?p.path+` — `+v:p.path,x=v?m+`, `+v:m,S=!!v,C=a===r;return(0,$.jsxs)(`div`,{className:`editor-tab`+(C?` active`:``)+(g===u?` drag-indicator`:``),title:b,onMouseDown:e=>{e.button===1&&(e.preventDefault(),f?l(f):c({kind:`single`,id:a}).catch(()=>void 0))},onContextMenu:e=>{p&&(e.preventDefault(),y({x:e.clientX,y:e.clientY,tabId:a}))},draggable:!0,onDragStart:e=>{e.dataTransfer.effectAllowed=`move`,f?e.dataTransfer.setData(Rn,Bn({paneId:f,sourceGroupId:i})):e.dataTransfer.setData(Pn,In({tabId:a,sourceGroupId:i})),e.dataTransfer.setDragImage(e.currentTarget,0,0)},onDragOver:e=>{(e.dataTransfer.types.includes(`application/x-codebuddy-editor-tab`)||e.dataTransfer.types.includes(`application/x-codebuddy-terminal-tab`))&&(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=`move`,_(u))},onDrop:e=>{e.preventDefault(),e.stopPropagation();let t=Ln(e.dataTransfer.getData(Pn)),n=Vn(e.dataTransfer.getData(Rn)),r=t?.tabId??(n?z(n.paneId):null);r&&s(r,u),_(null)},onDragEnd:()=>_(null),children:[(0,$.jsxs)(`button`,{ref:e=>{e?T.current.set(a,e):T.current.delete(a)},type:`button`,className:`editor-tab-main`,role:`tab`,tabIndex:C?0:-1,"aria-selected":C,"aria-label":x,onClick:()=>o(a),onKeyDown:t=>{let n=null;t.key===`ArrowLeft`&&(n=(u-1+e.length)%e.length),t.key===`ArrowRight`&&(n=(u+1)%e.length),t.key===`Home`&&(n=0),t.key===`End`&&(n=e.length-1),n!==null&&(t.preventDefault(),O(n))},children:[f?(0,$.jsx)(J,{size:14}):(0,$.jsx)(Ge,{name:p.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`editor-tab-name`,children:m}),h&&(0,$.jsx)(`span`,{className:`editor-tab-description`,children:h}),p?.isPinned&&(0,$.jsx)(`span`,{className:`pin-icon`,children:(0,$.jsx)(ve,{size:14})}),p&&(p.isDirty||p.saveStatus!==`idle`)&&(0,$.jsx)(`span`,{className:`editor-tab-state`,children:p.saveStatus===`saving`?(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:v,children:(0,$.jsx)(`span`,{className:`tab-save-spinner`,"aria-hidden":`true`})}):p.saveStatus===`error`?(0,$.jsx)(`span`,{className:`tab-save-indicator tab-save-error`,title:v,"aria-hidden":`true`,children:`!`}):(0,$.jsx)(`span`,{className:`tab-save-indicator`,title:v,children:(0,$.jsx)(`span`,{className:`dirty-dot`,"aria-hidden":`true`})})})]}),(0,$.jsx)(`button`,{type:`button`,className:`close-btn`+(S?``:` clean-close`),tabIndex:C?0:-1,"aria-label":d(`editor.closeTabAriaLabel`,{name:m}),onClick:()=>{f?l(f):c({kind:`single`,id:a}).catch(()=>void 0)},children:(0,$.jsx)(je,{size:12})})]},a)})}),S&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsRight`),onClick:()=>E.current?.scrollBy({left:150,behavior:gr()}),children:(0,$.jsx)(Z,{size:14})}),a&&(0,$.jsx)(`div`,{className:`editor-tabs-actions`,children:a})]}),v&&N&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:()=>y(null)}),(0,$.jsxs)(`div`,{className:`editor-context-menu`,style:{left:v.x,top:v.y},onClick:e=>e.stopPropagation(),children:[N.isPinned?(0,$.jsx)(`button`,{onClick:()=>{h(N.id),y(null)},children:d(`editor.unpin`)}):(0,$.jsx)(`button`,{onClick:()=>M(N.id),children:d(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>A(N.id,!1),children:d(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>A(N.id,!0),children:d(`editor.copyRelativePath`)}),(0,$.jsx)(`button`,{onClick:()=>ee(N.id),children:d(`editor.revealInExplorer`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`single`,id:N.id}),children:d(`editor.close`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`others`,id:N.id}),children:d(`editor.closeOthers`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`right`,id:N.id}),children:d(`editor.closeToRight`)}),(0,$.jsx)(`button`,{onClick:()=>{c({kind:`ids`,ids:t.filter(e=>!e.isPinned&&!e.isDirty).map(e=>e.id)}).catch(()=>void 0),y(null)},children:d(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>k({kind:`all`}),children:d(`editor.closeAll`)})]})]})]})}function vr(e){let t=e.dataTransfer.getData(`application/x-file-paths`)||e.dataTransfer.getData(`text/plain`);if(!t)return[];try{let e=JSON.parse(t);return Array.isArray(e)?e.filter(e=>typeof e==`string`):[t]}catch{return[t]}}function yr({node:e,tabs:t,tabActions:n,activeGroupId:r,onActivateTab:i,onRequestClose:a,onOpenFile:o,renderContent:s}){let c=St(),l=k(e=>e.activateEditorDockTab),u=k(e=>e.moveEditorDockTab),d=k(e=>e.splitEditorDockTab),f=k(e=>e.dockBottomTerminal),p=k(e=>e.closeDockTerminal),m=k(e=>e.dockedTerminals),h=b(e=>e.panes),g=b(e=>e.setActivePaneId),_=ee(e=>e.cwd),[v,y]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{let e=()=>y(null);return document.addEventListener(`dragend`,e),document.addEventListener(`drop`,e,!0),()=>{document.removeEventListener(`dragend`,e),document.removeEventListener(`drop`,e,!0)}},[]);let x=e.group.tabIds.map(e=>t.find(t=>t.id===e)).filter(e=>!!e),S=e.group.tabIds.includes(e.group.activeTabId??``)?e.group.activeTabId:e.group.tabIds[0]??null,w=S?R(S):null,T=w?null:x.find(e=>e.id===S)??x[0]??null,E=e.group.tabIds.map(R).filter(e=>!!e),D=E.length>0,A=Object.fromEntries(E.map(e=>[e,h[e]?.title||``]));(0,Q.useEffect)(()=>{T?.loadStatus===`loading`&&c.getState().loadTab(T.id).catch(()=>void 0)},[T?.id,T?.loadStatus,c]);let j=(0,Q.useCallback)(t=>{l(e.group.id,t);let n=R(t);n?g(n):i(t)},[l,e.group.id,i,g]),M=(0,Q.useCallback)(e=>{p(e);let t=C(k.getState().editorDock);t&&!R(t)&&i(t)},[p,i]),N=(0,Q.useCallback)(async t=>{let n=t.kind===`single`&&t.id===S,r=t.kind===`single`?e.group.tabIds.indexOf(t.id):-1;if(await a(t),!n||t.kind!==`single`||c.getState().tabs.some(e=>e.id===t.id))return;let i=k.getState().editorDock,o=O(i.root,e.group.id);if(i.activeGroupId!==e.group.id||o?.activeTabId!==t.id)return;let s=o.tabIds.filter(e=>e!==t.id),l=s[Math.min(Math.max(r,0),s.length-1)]??null;l&&j(l)},[S,j,c,e.group.tabIds,a]),P=(0,Q.useCallback)(e=>{let t=e.currentTarget.getBoundingClientRect();return Fn(e.clientX-t.left,e.clientY-t.top,t.width,t.height)},[]),F=(0,Q.useCallback)(e=>{let t=e.dataTransfer.types,n=t.includes(Pn),r=t.includes(Rn),i=t.includes(`application/x-file-paths`)||t.includes(`text/plain`);if(n||r||i){if(e.preventDefault(),e.stopPropagation(),e.dataTransfer.dropEffect=n||r?`move`:`copy`,!n&&!r){y(null);return}y(P(e))}},[P]),I=(0,Q.useCallback)(t=>{let n=Vn(t.dataTransfer.getData(Rn));if(n){t.preventDefault(),t.stopPropagation();let r=P(t),i=z(n.paneId);n.sourceGroupId===`bottom-panel`?f(n.paneId,e.group.id,e.group.tabIds.length,r===`center`?void 0:r):r===`center`?u(i,e.group.id,e.group.tabIds.length):d(e.group.id,i,r),y(null);return}let r=Ln(t.dataTransfer.getData(Pn));if(r){t.preventDefault(),t.stopPropagation();let n=P(t);n===`center`?u(r.tabId,e.group.id,e.group.tabIds.length):d(e.group.id,r.tabId,n),i(r.tabId),y(null);return}let a=vr(t);if(a.length>0){t.preventDefault(),t.stopPropagation(),e.group.activeTabId&&l(e.group.id,e.group.activeTabId);let n=t.currentTarget;o(a[0]),requestAnimationFrame(()=>{n.querySelector(`.monaco-editor textarea`)?.focus()})}y(null)},[l,f,P,u,e.group,i,o,d]);return(0,$.jsxs)(`section`,{className:`editor-dock-group`+(e.group.id===r?` active`:``),"data-editor-group":e.group.id,onPointerDown:()=>{S&&j(S)},onFocusCapture:e=>{!e.currentTarget.contains(e.relatedTarget)&&S&&j(S)},onDragEnter:F,onDragOver:F,onDragLeave:e=>{e.currentTarget.contains(e.relatedTarget)||y(null)},onDrop:I,children:[D?(0,$.jsx)(_r,{itemIds:e.group.tabIds,editorTabs:x,terminalTitles:A,activeItemId:S,groupId:e.group.id,actions:e.group.id===r&&!w?n:void 0,onActivate:j,onMoveItem:(t,n)=>{let r=R(t);r&&!m.includes(r)?f(r,e.group.id,n):u(t,e.group.id,n),r||i(t)},onRequestClose:N,onCloseTerminal:M}):(0,$.jsx)(Un,{actions:e.group.id===r?n:void 0,onRequestClose:N,tabsOverride:x,activeTabIdOverride:T?.id??null,groupId:e.group.id,onActivateTab:j,onMoveTab:(t,n)=>{let r=R(t);r&&!m.includes(r)?f(r,e.group.id,n):u(t,e.group.id,n),r||i(t)}}),(0,$.jsxs)(`div`,{className:`ide-editor-content`,children:[E.map(e=>(0,$.jsx)(`div`,{className:`ide-bottom-terminal-wrap`,style:{display:w===e?`flex`:`none`},children:(0,$.jsx)(ot,{paneId:e,initialCwd:_,editorStore:c})},e)),!w&&s(T)]}),v&&(0,$.jsx)(`div`,{className:`editor-dock-drop-preview `+v,"aria-hidden":`true`})]})}function br({node:e,path:t,...n}){let r=k(e=>e.setEditorDockSplitRatio);return e.type===`group`?(0,$.jsx)(yr,{node:e,path:t,...n}):(0,$.jsxs)(st,{direction:e.direction,ratio:e.ratio,onRatioChange:e=>r(t,e),children:[(0,$.jsx)(br,{node:e.children[0],path:[...t,0],...n}),(0,$.jsx)(br,{node:e.children[1],path:[...t,1],...n})]})}function xr(e){let t=k(e=>e.editorDock);return(0,$.jsx)(`div`,{className:`editor-dock-layout`,children:(0,$.jsx)(br,{...e,node:t.root,activeGroupId:t.activeGroupId,path:[]})})}function Sr(e,t){let n=e.toLowerCase(),r=t.toLowerCase(),i=0,a=0,o=-1;for(let e=0;e<r.length&&i<n.length;e++)r[e]===n[i]&&(a+=e===o+1?2:1,(e===0||r[e-1]===`/`||r[e-1]===`.`)&&(a+=3),o=e,i++);return{match:i===n.length,score:a}}var Cr=20,wr=3;function Tr({isOpen:e,onClose:t,onSelect:n,rootPath:r,showHiddenFiles:i}){let{t:a}=u(),[o,s]=(0,Q.useState)(``),[c,l]=(0,Q.useState)(0),[d,f]=(0,Q.useState)([]),[p,m]=(0,Q.useState)(!1),h=(0,Q.useRef)(null),g=(0,Q.useRef)(null),_=(0,Q.useRef)(null),y=(0,Q.useId)(),b=(0,Q.useRef)(``),x=(0,Q.useRef)([]),S=(0,Q.useCallback)(async(e,t,n)=>{if(t>wr)return[];try{let r=await v(e),a=[];for(let e of r){if(!i&&I(e.name))continue;let r=n?`${n}/${e.name}`:e.name;if(e.type===`file`&&!N(e.path))a.push({name:e.name,path:e.path,relativePath:r});else if(e.type===`directory`){let n=await S(e.path,t+1,r);a.push(...n)}}return a}catch{return[]}},[i]);(0,Q.useEffect)(()=>{if(!e)return;s(``),l(0),_.current=document.activeElement instanceof HTMLElement?document.activeElement:null;let t=window.setTimeout(()=>h.current?.focus(),0),n=`${r}\0${i?`hidden`:`visible`}`;if(b.current===n&&x.current.length>0)return f(x.current),m(!1),()=>{window.clearTimeout(t),_.current?.focus(),_.current=null};let a=!1;return m(!0),S(r,0,``).then(e=>{a||(b.current=n,x.current=e,f(e),m(!1))}),()=>{a=!0,window.clearTimeout(t),_.current?.focus(),_.current=null}},[e,r,i,S]);let C=(0,Q.useMemo)(()=>{if(!o.trim())return d.slice(0,Cr);let e=[];for(let t of d){let n=Sr(o,t.relativePath);n.match&&e.push({entry:t,score:n.score})}return e.sort((e,t)=>t.score-e.score),e.slice(0,Cr).map(e=>e.entry)},[d,o]);(0,Q.useEffect)(()=>{l(0)},[C.length,o]);let w=(0,Q.useCallback)(e=>{switch(e.key){case`Tab`:e.preventDefault(),h.current?.focus();break;case`ArrowDown`:e.preventDefault(),l(e=>(e+1)%Math.max(C.length,1));break;case`ArrowUp`:e.preventDefault(),l(e=>(e-1+C.length)%Math.max(C.length,1));break;case`Enter`:e.preventDefault(),C[c]&&n(C[c].path);break;case`Escape`:e.preventDefault(),t()}},[C,c,n,t]);if((0,Q.useEffect)(()=>{(g.current?.children[c])?.scrollIntoView({block:`nearest`})},[c]),!e)return null;let T=C[c]?`${y}-option-${c}`:void 0;return(0,$.jsx)(`div`,{className:`quick-open-overlay`,onClick:t,children:(0,$.jsxs)(`div`,{className:`quick-open-dialog`,role:`dialog`,"aria-modal":`true`,"aria-label":a(`editor.quickOpen`),onClick:e=>e.stopPropagation(),onKeyDown:w,children:[(0,$.jsx)(`input`,{ref:h,className:`quick-open-input`,type:`text`,role:`combobox`,"aria-autocomplete":`list`,"aria-expanded":`true`,"aria-controls":y,"aria-activedescendant":T,value:o,onChange:e=>s(e.target.value),placeholder:a(`editor.quickOpenPlaceholder`)}),(0,$.jsx)(`div`,{className:`quick-open-list`,ref:g,id:y,role:`listbox`,"aria-busy":p,children:p?(0,$.jsx)(`div`,{className:`quick-open-empty`,role:`status`,children:a(`editor.quickOpenLoading`)}):C.length===0?(0,$.jsx)(`div`,{className:`quick-open-empty`,role:`status`,children:a(`editor.quickOpenEmpty`)}):C.map((e,t)=>(0,$.jsxs)(`div`,{id:`${y}-option-${t}`,role:`option`,"aria-selected":t===c,className:`quick-open-item${t===c?` active`:``}`,onClick:()=>n(e.path),onMouseEnter:()=>l(t),children:[(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`quick-open-item-name`,children:e.name}),(0,$.jsx)(`span`,{className:`quick-open-item-path`,children:e.relativePath})]},e.path))})]})})}function Er({gitFileCount:e=0}){let{t}=u(),n=k(e=>e.activePanel),r=k(e=>e.sidePanelCollapsed),i=k(e=>e.toggleActivePanel),a=k(e=>e.bottomPanelCollapsed),o=k(e=>e.toggleBottomPanel),s=G(e=>e.isOpen),c=G(e=>e.toggle),l=(0,Q.useCallback)(e=>n===e&&!r,[n,r]);return(0,$.jsxs)(`div`,{className:`ide-activity-bar`,children:[(0,$.jsxs)(`div`,{className:`ide-activity-bar-top`,children:[(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`explorer`)?`active`:``}`,onClick:()=>i(`explorer`),title:t(`ide.explorer`),"aria-label":t(`ide.explorer`),"aria-pressed":l(`explorer`),children:(0,$.jsx)(ye,{size:22,strokeWidth:1.5})}),(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`search`)?`active`:``}`,onClick:()=>i(`search`),title:t(`ide.search`),"aria-label":t(`ide.search`),"aria-pressed":l(`search`),children:(0,$.jsx)(ae,{size:22,strokeWidth:1.5})}),(0,$.jsxs)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--nav ${l(`source-control`)?`active`:``}`,onClick:()=>i(`source-control`),title:t(`ide.sourceControl`),"aria-label":t(`ide.sourceControl`),"aria-pressed":l(`source-control`),children:[(0,$.jsx)(Y,{size:22,strokeWidth:1.5}),e>0&&(0,$.jsx)(`span`,{className:`ide-activity-badge`,children:e>99?`99+`:e})]})]}),(0,$.jsxs)(`div`,{className:`ide-activity-bar-bottom`,children:[(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--utility ${a?``:`active`}`,onClick:o,title:t(`ide.terminal`),"aria-label":t(`ide.terminal`),"aria-pressed":!a,children:(0,$.jsx)(ht,{size:22,strokeWidth:1.5})}),(0,$.jsx)(`button`,{type:`button`,className:`ide-activity-btn ide-activity-btn--utility ${s?`active`:``}`,onClick:c,title:t(`sidebar.toggle`),"aria-label":t(`sidebar.toggle`),"aria-pressed":s,children:(0,$.jsx)(fe,{size:22,strokeWidth:1.5})})]})]})}function Dr(){try{let e=localStorage.getItem(`cbc_search_prefs`);if(e)return{...Or,...JSON.parse(e)}}catch{}return Or}var Or={viewMode:`tree`,caseSensitive:!1,isRegex:!1,wholeWord:!1,query:``,includePattern:``,excludePattern:``,useDefaultExcludes:!0};function kr(e){try{localStorage.setItem(`cbc_search_prefs`,JSON.stringify(e))}catch{}}function Ar(e){return{viewMode:e.viewMode,caseSensitive:e.caseSensitive,isRegex:e.isRegex,wholeWord:e.wholeWord,query:e.query,includePattern:e.includePattern,excludePattern:e.excludePattern,useDefaultExcludes:e.useDefaultExcludes}}var jr=Dr(),Mr,Nr=0;function Pr(){Nr+=1,Mr?.abort(),Mr=void 0}var Fr={searching:!1,results:[],totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0};function Ir(e){let t=[],n=``,r=0,i=0,a=!1;for(let o of e){if(a){n+=o,a=!1;continue}if(o===`\\`){n+=o,a=!0;continue}o===`{`&&(r+=1),o===`}`&&(r=Math.max(0,r-1)),o===`[`&&(i+=1),o===`]`&&(i=Math.max(0,i-1)),o===`,`&&r===0&&i===0?(n.trim()&&t.push(n.trim()),n=``):n+=o}return n.trim()&&t.push(n.trim()),t}var Lr=l((e,t)=>({query:jr.query,isRegex:jr.isRegex,caseSensitive:jr.caseSensitive,wholeWord:jr.wholeWord,includePattern:jr.includePattern,excludePattern:jr.excludePattern,useDefaultExcludes:jr.useDefaultExcludes,viewMode:jr.viewMode,results:[],searching:!1,totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0,setQuery:n=>{Pr(),e({query:n,...Fr}),kr(Ar({...t(),query:n}))},search:async()=>{let{query:n,isRegex:r,caseSensitive:i,wholeWord:a,includePattern:o,excludePattern:s,useDefaultExcludes:c}=t(),l=n.trim();if(!l){Mr?.abort(),e({...Fr});return}Mr?.abort();let u=new AbortController;Mr=u;let f=++Nr,p=D();e({searching:!0,error:null,results:[],totalMatches:0,fileCount:0,limitHit:!1,incomplete:!1,incompleteReason:void 0});try{let t=await fetch(`/api/v1/fs/search-content`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},signal:u.signal,body:JSON.stringify({query:l,cwd:p||void 0,isRegex:r,caseSensitive:i,wholeWord:a,includeGlobs:Ir(o),excludeGlobs:Ir(s),useIgnoreFiles:c,maxResults:500})});if(f!==Nr)return;if(!t.ok){let e=await t.json().catch(()=>null);throw Error(e?.error?.message||`HTTP ${t.status}`)}let n=await t.json();if(f!==Nr||u.signal.aborted)return;let m=n.data??n,h=m.results||[],g=new Map;for(let e of h){let t=g.get(e.path);t?t.push(e):g.set(e.path,[e])}let _=Array.from(g,([e,t])=>({path:e,matches:t}));e({results:_,totalMatches:h.length,fileCount:_.length,limitHit:!!m.limitHit,incomplete:!!m.incomplete,incompleteReason:m.incompleteReason,searching:!1})}catch(t){if(f!==Nr||u.signal.aborted)return;e({searching:!1,error:t instanceof Error?t.message:`Search failed`})}finally{Mr===u&&(Mr=void 0)}},cancelSearch:()=>{Pr(),e({searching:!1})},invalidateSearch:()=>{Pr(),e(Fr)},toggleRegex:()=>{Pr(),e(e=>({isRegex:!e.isRegex,...Fr})),kr(Ar(t()))},toggleCaseSensitive:()=>{Pr(),e(e=>({caseSensitive:!e.caseSensitive,...Fr})),kr(Ar(t()))},toggleWholeWord:()=>{Pr(),e(e=>({wholeWord:!e.wholeWord,...Fr})),kr(Ar(t()))},setIncludePattern:n=>{Pr(),e({includePattern:n,...Fr}),kr(Ar({...t(),includePattern:n}))},setExcludePattern:n=>{Pr(),e({excludePattern:n,...Fr}),kr(Ar({...t(),excludePattern:n}))},toggleUseDefaultExcludes:()=>{Pr(),e(e=>({useDefaultExcludes:!e.useDefaultExcludes,...Fr})),kr(Ar(t()))},setViewMode:n=>{e({viewMode:n}),kr(Ar(t()))},clear:()=>{Pr(),e({query:``,includePattern:``,excludePattern:``,...Fr}),kr(Ar(t()))}}));function Rr(e){let t={name:``,fullPath:``,isDir:!0,children:[],matchCount:0},n=new Map([[``,t]]);for(let r of e){let e=r.path.split(`/`).filter(Boolean),i=t;for(let t=0;t<e.length-1;t+=1){let r=e.slice(0,t+1).join(`/`),a=n.get(r);a||(a={name:e[t],fullPath:r,isDir:!0,children:[],matchCount:0},n.set(r,a),i.children.push(a)),i=a}let a=e.at(-1);a&&i.children.push({name:a,fullPath:r.path,isDir:!1,children:[],matches:r.matches,matchCount:r.matches.length})}let r=e=>{if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return r({...t,name:e.name?`${e.name}/${t.name}`:t.name})}let t=e.children.map(r);return{...e,children:t,matchCount:e.isDir?t.reduce((e,t)=>e+t.matchCount,0):e.matchCount}};return t.children.map(r)}function zr(e,t){let n=[],r=e=>{if(n.push(e.fullPath),t.has(e.fullPath)){if(e.isDir){e.children.forEach(r);return}e.matches?.forEach((t,r)=>n.push(`${e.fullPath}:${t.line}:${r}`))}};return e.forEach(r),n}function Br(e,t){let n=[];for(let r of e)n.push(r.path),t.has(r.path)&&r.matches.forEach((e,t)=>n.push(`${r.path}:${e.line}:${t}`));return n}function Vr(e){let t=new Set;for(let n of e){t.add(n.path);let e=n.path.split(`/`);for(let n=1;n<e.length;n+=1)t.add(e.slice(0,n).join(`/`))}return t}function Hr(e,t,n){if(!t)return[];let r=[];if(n.isRegex)return[];let i=n.caseSensitive?e:e.toLocaleLowerCase(),a=n.caseSensitive?t:t.toLocaleLowerCase(),o=0;for(;r.length<10;){let t=i.indexOf(a,o);if(t<0)break;let s=t+a.length,c=t===0?``:e[t-1],l=s===e.length?``:e[s];(!n.wholeWord||!/[\p{L}\p{N}_]/u.test(c)&&!/[\p{L}\p{N}_]/u.test(l))&&r.push({start:t,end:s}),o=Math.max(s,t+1)}return r}function Ur(e,t,n){if(e.length===0)return{type:`none`};let r=Math.max(0,Math.min(t,e.length-1)),i=e[r];if(n===`ArrowDown`)return{type:`focus`,index:Math.min(e.length-1,r+1)};if(n===`ArrowUp`)return{type:`focus`,index:Math.max(0,r-1)};if(n===`Home`)return{type:`focus`,index:0};if(n===`End`)return{type:`focus`,index:e.length-1};if(n===`ArrowRight`&&i.expandable)return i.expanded?{type:`focus`,index:Math.min(e.length-1,r+1)}:{type:`toggle`};if(n===`ArrowLeft`){if(i.expandable&&i.expanded)return{type:`toggle`};let t=i.parentId?e.findIndex(e=>e.id===i.parentId):-1;return t>=0?{type:`focus`,index:t}:{type:`none`}}return{type:`none`}}var Wr=300;function Gr(){let{t:e}=u(),{query:t,isRegex:n,caseSensitive:r,wholeWord:i,includePattern:a,excludePattern:o,useDefaultExcludes:s,viewMode:c,results:l,searching:d,totalMatches:f,fileCount:p,error:m,limitHit:h,incomplete:g,incompleteReason:_,setQuery:v,search:y,cancelSearch:b,invalidateSearch:x,toggleRegex:S,toggleCaseSensitive:C,toggleWholeWord:w,setIncludePattern:T,setExcludePattern:E,toggleUseDefaultExcludes:D,setViewMode:O,clear:k}=Lr(),{openFile:A}=Ct(),j=ee(e=>e.cwd),M=(0,Q.useRef)(null),N=(0,Q.useRef)(),[P,F]=(0,Q.useState)(new Set),[I,L]=(0,Q.useState)(!0),[R,z]=(0,Q.useState)(null);(0,Q.useEffect)(()=>{M.current?.focus()},[]),(0,Q.useEffect)(()=>()=>b(),[b]),(0,Q.useEffect)(()=>{if(N.current&&clearTimeout(N.current),x(),t.trim())return N.current=setTimeout(()=>{y().catch(()=>{})},Wr),()=>{N.current&&clearTimeout(N.current)}},[t,n,r,i,a,o,s,j,y,x]);let V=(0,Q.useMemo)(()=>Vr(l),[l]);(0,Q.useEffect)(()=>{let e=new Set(V);for(let t of l)t.matches.length>10&&e.delete(t.path);F(e),z(null)},[V,l]);let H=(0,Q.useMemo)(()=>Rr(l),[l]),U=(0,Q.useMemo)(()=>c===`tree`?zr(H,P):Br(l,P),[P,l,H,c]),W=R&&U.includes(R)?R:null;(0,Q.useEffect)(()=>{R&&!W&&z(null)},[W,R]);let G=V.size>0&&Array.from(V).every(e=>P.has(e)),K=(0,Q.useCallback)(()=>{N.current&&clearTimeout(N.current),y().catch(()=>{})},[y]),te=(0,Q.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),K()),e.key===`Escape`&&(d?b():(k(),M.current?.focus()))},[b,k,K,d]),ne=(0,Q.useCallback)(e=>{F(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),re=(0,Q.useCallback)(()=>{F(new Set)},[]),ie=(0,Q.useCallback)(()=>{F(new Set(V))},[V]),J=(0,Q.useCallback)((e,n)=>{A(e,void 0,n?{line:n,query:t.trim()}:void 0)},[A,t]),se=(0,Q.useCallback)(()=>{k(),M.current?.focus()},[k]),ce=(0,Q.useCallback)(e=>{let t=Array.from(e.currentTarget.querySelectorAll(`[data-search-row]`));if(t.length===0)return;let n=e.target instanceof HTMLElement?e.target.closest(`[data-search-row]`):null,r=Math.max(0,n?t.indexOf(n):0),i=Ur(t.map(e=>({id:e.dataset.rowId??``,parentId:e.dataset.parentId,expandable:e.dataset.expandable===`true`,expanded:e.getAttribute(`aria-expanded`)===`true`})),r,e.key);if(i.type===`none`)return;if(e.preventDefault(),i.type===`toggle`){n?.click();return}let a=t[i.index];z(a.dataset.rowId??null),a.focus()},[]),le=(0,Q.useMemo)(()=>({isRegex:n,caseSensitive:r,wholeWord:i}),[n,r,i]);return(0,$.jsxs)(`div`,{className:`search-panel`,children:[(0,$.jsxs)(`div`,{className:`scm-header search-header`,children:[(0,$.jsx)(`span`,{className:`scm-header-title`,children:e(`ide.search.title`)}),(0,$.jsxs)(`div`,{className:`search-header-actions`,children:[(0,$.jsx)(Kr,{label:e(`ide.search.refresh`),disabled:!t.trim(),onClick:K,children:(0,$.jsx)(q,{size:15,className:d?`animate-spin`:``})}),(0,$.jsx)(Kr,{label:e(`ide.search.clear`),disabled:!t&&f===0,onClick:se,children:(0,$.jsx)(je,{size:16})}),(0,$.jsx)(Kr,{label:e(`ide.search.toggleFilters`),active:I,onClick:()=>L(e=>!e),children:(0,$.jsx)(Te,{size:15})}),(0,$.jsx)(Kr,{label:e(c===`tree`?`ide.listView`:`ide.treeView`),onClick:()=>O(c===`tree`?`list`:`tree`),children:c===`tree`?(0,$.jsx)(mt,{size:15}):(0,$.jsx)(_t,{size:15})}),(0,$.jsx)(Kr,{label:e(G?`editor.collapseAll`:`editor.expandAll`),disabled:f===0,onClick:G?re:ie,children:G?(0,$.jsx)(ft,{size:15}):(0,$.jsx)(vt,{size:15})})]})]}),(0,$.jsxs)(`div`,{className:`search-input-section`,children:[(0,$.jsxs)(`div`,{className:`search-primary-row`,children:[(0,$.jsx)(`button`,{type:`button`,className:`search-details-toggle`,onClick:()=>L(e=>!e),"aria-expanded":I,"aria-label":e(`ide.search.toggleFilters`),children:I?(0,$.jsx)(Ae,{size:16}):(0,$.jsx)(Z,{size:16})}),(0,$.jsxs)(`div`,{className:`search-field search-field--primary`,children:[(0,$.jsx)(`input`,{ref:M,className:`search-field-input`,value:t,onChange:e=>v(e.target.value),onKeyDown:te,placeholder:e(`ide.search.placeholder`),"aria-label":e(`ide.search.placeholder`),spellCheck:!1}),(0,$.jsxs)(`div`,{className:`search-field-actions`,children:[(0,$.jsx)(qr,{active:r,label:e(`ide.search.matchCase`),onClick:C,children:(0,$.jsx)(ct,{size:15})}),(0,$.jsx)(qr,{active:i,label:e(`ide.search.wholeWord`),onClick:w,children:(0,$.jsx)(yt,{size:15})}),(0,$.jsx)(qr,{active:n,label:e(`ide.search.regex`),onClick:S,children:(0,$.jsx)(gt,{size:15})})]})]})]}),I&&(0,$.jsxs)(`div`,{className:`search-details`,children:[(0,$.jsxs)(`label`,{className:`search-filter-section`,children:[(0,$.jsx)(`span`,{className:`search-filter-label`,children:e(`ide.search.filesToInclude`)}),(0,$.jsx)(`span`,{className:`search-field`,children:(0,$.jsx)(`input`,{className:`search-field-input`,value:a,onChange:e=>T(e.target.value),onKeyDown:te,placeholder:e(`ide.search.includePlaceholder`),spellCheck:!1})})]}),(0,$.jsxs)(`label`,{className:`search-filter-section`,children:[(0,$.jsx)(`span`,{className:`search-filter-label`,children:e(`ide.search.filesToExclude`)}),(0,$.jsxs)(`span`,{className:`search-field`,children:[(0,$.jsx)(`input`,{className:`search-field-input`,value:o,onChange:e=>E(e.target.value),onKeyDown:te,placeholder:e(`ide.search.excludePlaceholder`),spellCheck:!1}),(0,$.jsx)(`span`,{className:`search-field-actions`,children:(0,$.jsx)(qr,{active:s,label:e(`ide.search.useExcludeSettings`),onClick:D,children:(0,$.jsx)(oe,{size:15})})})]})]})]})]}),(d||f>0||g||m)&&(0,$.jsxs)(`div`,{className:`search-status-bar`,role:`status`,"aria-live":`polite`,children:[d&&(0,$.jsxs)(`div`,{className:`search-status`,children:[(0,$.jsx)(B,{size:14,className:`animate-spin`}),(0,$.jsx)(`span`,{children:e(`ide.search.searching`)})]}),!d&&(f>0||g)&&(0,$.jsxs)(`div`,{className:`search-status`,title:h?e(`ide.search.limitReached`,{count:f}):void 0,children:[f>0&&(0,$.jsx)(`span`,{children:e(`ide.search.results`,{count:h?`${f}+`:f,files:p})}),g&&(0,$.jsx)(`span`,{className:`search-partial-warning`,children:e(_===`timeout`?`ide.search.partialTimedOut`:`ide.search.partialError`)})]}),m&&(0,$.jsx)(`div`,{className:`search-status search-error`,role:`alert`,children:m.includes(`timed out`)?e(`ide.search.timedOut`):e(`ide.search.failed`)}),d&&(0,$.jsx)(`button`,{type:`button`,className:`scm-icon-btn`,onClick:b,title:e(`ide.search.cancel`),"aria-label":e(`ide.search.cancel`),children:(0,$.jsx)(Ce,{size:11,fill:`currentColor`})})]}),(0,$.jsxs)(`div`,{className:`search-results`,role:`tree`,"aria-label":e(`ide.search.resultsLabel`),"aria-busy":d,onKeyDown:ce,children:[c===`tree`&&H.map((e,n)=>(0,$.jsx)(Jr,{node:e,depth:0,parentId:void 0,isFirst:n===0,focusedRowId:W,setFocusedRowId:z,expandedPaths:P,onToggle:ne,onFileClick:J,query:t,highlightOptions:le},e.fullPath)),c===`list`&&l.map(e=>(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,role:`treeitem`,"aria-level":1,"aria-expanded":P.has(e.path),"data-search-row":!0,"data-row-id":e.path,"data-expandable":`true`,tabIndex:W===e.path||!W&&e===l[0]?0:-1,className:`search-tree-file`,style:{paddingLeft:`6px`},onFocus:()=>z(e.path),onClick:()=>ne(e.path),title:e.path,children:[P.has(e.path)?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ge,{name:e.path.split(`/`).pop()||``,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.path.split(`/`).pop()}),(0,$.jsx)(`span`,{className:`search-list-filepath`,children:e.path}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matches.length})]}),P.has(e.path)&&(0,$.jsx)(Yr,{matches:e.matches,filePath:e.path,parentId:e.path,level:2,indent:26,query:t,highlightOptions:le,focusedRowId:W,setFocusedRowId:z,onFileClick:J})]},e.path)),!d&&t&&f===0&&!g&&!m&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)(ae,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:e(`ide.search.noResults`)})]})]})]})}function Kr({label:e,active:t,disabled:n=!1,onClick:r,children:i}){return(0,$.jsx)(`button`,{type:`button`,className:`scm-icon-btn ${t?`active`:``}`,onClick:r,disabled:n,title:e,"aria-label":e,"aria-pressed":t,children:i})}function qr({active:e,label:t,onClick:n,children:r}){return(0,$.jsx)(`button`,{type:`button`,className:`search-field-btn ${e?`active`:``}`,onClick:n,title:t,"aria-label":t,"aria-pressed":e,children:r})}function Jr({node:e,depth:t,parentId:n,isFirst:r,focusedRowId:i,setFocusedRowId:a,expandedPaths:o,onToggle:s,onFileClick:c,query:l,highlightOptions:u}){let d=o.has(e.fullPath),f=t*14+6,p={role:`treeitem`,"aria-level":t+1,"data-search-row":!0,"data-row-id":e.fullPath,"data-parent-id":n,"data-expandable":`true`,tabIndex:i===e.fullPath||!i&&r?0:-1,onFocus:()=>a(e.fullPath)};return e.isDir?(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,...p,"aria-expanded":d,className:`search-tree-dir`,style:{paddingLeft:`${f}px`},onClick:()=>s(e.fullPath),title:e.fullPath,children:[d?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Oe,{size:14,className:`scm-tree-folder-icon`}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.name}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matchCount})]}),d&&(0,$.jsx)(`div`,{role:`group`,children:e.children.map(n=>(0,$.jsx)(Jr,{node:n,depth:t+1,parentId:e.fullPath,isFirst:!1,focusedRowId:i,setFocusedRowId:a,expandedPaths:o,onToggle:s,onFileClick:c,query:l,highlightOptions:u},n.fullPath))})]}):(0,$.jsxs)(`div`,{className:`search-tree-group`,children:[(0,$.jsxs)(`button`,{type:`button`,...p,"aria-expanded":d,className:`search-tree-file`,style:{paddingLeft:`${f}px`},onClick:()=>s(e.fullPath),title:e.fullPath,children:[d?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ge,{name:e.name,type:`file`,size:14}),(0,$.jsx)(`span`,{className:`search-tree-name`,children:e.name}),(0,$.jsx)(`span`,{className:`search-tree-badge`,children:e.matchCount})]}),d&&e.matches&&(0,$.jsx)(Yr,{matches:e.matches,filePath:e.fullPath,parentId:e.fullPath,level:t+2,indent:f+20,query:l,highlightOptions:u,focusedRowId:i,setFocusedRowId:a,onFileClick:c})]})}function Yr({matches:e,filePath:t,parentId:n,level:r,indent:i,query:a,highlightOptions:o,focusedRowId:s,setFocusedRowId:c,onFileClick:l}){return(0,$.jsx)(`div`,{className:`search-tree-matches`,role:`group`,children:e.map((e,u)=>{let d=`${t}:${e.line}:${u}`;return(0,$.jsxs)(`button`,{type:`button`,role:`treeitem`,"aria-level":r,"data-search-row":!0,"data-row-id":d,"data-parent-id":n,tabIndex:s===d?0:-1,className:`search-tree-match`,style:{paddingLeft:`${i}px`},onFocus:()=>c(d),onClick:()=>l(t,e.line),title:`${t}:${e.line}`,children:[(0,$.jsx)(`span`,{className:`search-match-line`,children:e.line}),(0,$.jsx)(Xr,{text:e.text,query:a,options:o,ranges:e.matchRanges})]},d)})})}function Xr({text:e,query:t,options:n,ranges:r}){let i=r??Hr(e,t,n);if(i.length===0)return(0,$.jsx)(`span`,{className:`search-match-text`,children:e});let a=[],o=0;for(let t of i)t.start>o&&a.push((0,$.jsx)(`span`,{children:e.slice(o,t.start)},`text-${o}`)),a.push((0,$.jsx)(`mark`,{className:`search-highlight`,children:e.slice(t.start,t.end)},`match-${t.start}`)),o=t.end;return o<e.length&&a.push((0,$.jsx)(`span`,{children:e.slice(o)},`text-${o}`)),(0,$.jsx)(`span`,{className:`search-match-text`,children:a})}function Zr(e,t,n,r=!1,i){let a=H(e,t??n),o=N(a);return{editorPath:a,mode:o&&(r||i===`deleted`)?`unavailable`:o?`preview`:`diff`}}function Qr(e,t){let n={name:``,path:``,isDir:!0,children:[]};for(let r of e){let e=t(r).split(`/`),i=n;for(let t=0;t<e.length;t++){let n=e[t],a=t===e.length-1,o=e.slice(0,t+1).join(`/`);if(a)i.children.push({name:n,path:o,isDir:!1,children:[],data:r});else{let e=i.children.find(e=>e.isDir&&e.name===n);e||(e={name:n,path:o,isDir:!0,children:[]},i.children.push(e)),i=e}}}return n.children.map($r)}function $r(e){if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return $r({...t,name:`${e.name}/${t.name}`})}return{...e,children:e.children.map($r)}}var ei={modified:{label:`M`,color:`var(--color-accent-yellow)`},added:{label:`A`,color:`var(--color-accent-green)`},deleted:{label:`D`,color:`var(--color-accent-red)`},renamed:{label:`R`,color:`var(--color-accent-blue)`},copied:{label:`C`,color:`var(--color-accent-blue)`},untracked:{label:`U`,color:`var(--color-accent-green)`},conflicted:{label:`!`,color:`var(--color-accent-red)`}};function ti({file:e,onStage:t,onUnstage:n,onDiscard:r,onOpenFile:i}){let{t:a}=u(),o=(0,Q.useCallback)(t=>{t.stopPropagation(),Ee(e.path)},[e.path]);return(0,$.jsxs)(`div`,{className:`scm-file-actions`,children:[(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:o,title:a(`ide.scm.copyPath`),children:(0,$.jsx)(We,{size:13})}),i&&e.status!==`deleted`&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),i(e.path)},title:a(`ide.scm.openFile`),children:(0,$.jsx)(qe,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),r(e.path)},title:a(`ide.scm.discard`),children:(0,$.jsx)(et,{size:13})}),t&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:n=>{n.stopPropagation(),t(e.path)},title:a(`ide.scm.stage`),children:(0,$.jsx)(X,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:t=>{t.stopPropagation(),n(e.path)},title:a(`ide.scm.unstage`),children:(0,$.jsx)(xe,{size:13})})]})}function ni({files:e,sectionTitle:t,sectionCount:n,sectionActions:r,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c}){let[l,u]=(0,Q.useState)(!0);return(0,$.jsxs)(`div`,{className:`scm-file-list`,children:[t&&(0,$.jsxs)(`div`,{className:`scm-tree-section-root`,onClick:()=>u(e=>!e),children:[l?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{className:`scm-tree-section-title`,children:t}),n!==void 0&&(0,$.jsx)(`span`,{className:`scm-section-count`,children:n}),r&&(0,$.jsx)(`div`,{className:`scm-file-actions`,children:r})]}),(!t||l)&&e.map(e=>{let t=ei[e.status]||{label:`?`,color:`var(--color-text-tertiary)`},n=e.path.split(`/`).pop()||e.path,r=e.path.includes(`/`)?e.path.substring(0,e.path.lastIndexOf(`/`)):``;return(0,$.jsxs)(`div`,{className:`scm-file-item`,onClick:()=>s?.(e),children:[(0,$.jsx)(Ge,{name:n,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:n}),r&&(0,$.jsx)(`span`,{className:`scm-file-path-desc`,children:r}),(0,$.jsx)(ti,{file:e,onStage:i,onUnstage:a,onDiscard:o,onOpenFile:c}),(0,$.jsx)(`span`,{className:`scm-file-status`,style:{color:t.color},children:t.label})]},`${e.path}-${e.staged}`)})]})}function ri({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let{t:s}=u(),[c,l]=(0,Q.useState)(!0);function d(e){if(!e.isDir)return null;let t=ai(e);return t.length===0?null:t.some(e=>e.status===`modified`)?`var(--color-accent-yellow)`:t.some(e=>e.status===`untracked`||e.status===`added`)?`var(--color-accent-green)`:`var(--color-text-tertiary)`}let f=d(e),p=ai(e),m=(0,Q.useCallback)(e=>{e.stopPropagation(),n&&p.forEach(e=>n(e.path))},[n,p]),h=(0,Q.useCallback)(e=>{e.stopPropagation(),i&&p.forEach(e=>i(e.path))},[i,p]),g=(0,Q.useCallback)(e=>{e.stopPropagation(),r&&p.forEach(e=>r(e.path))},[r,p]),_=t*16+4;return(0,$.jsxs)(`div`,{className:`scm-tree-group`,children:[(0,$.jsxs)(`div`,{className:`scm-tree-dir`,style:{paddingLeft:`${_}px`},onClick:()=>l(e=>!e),children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`scm-tree-indent-guide`,style:{left:`${t*16+12}px`}},t)),c?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Oe,{size:14,className:`scm-tree-folder-icon`}),(0,$.jsx)(`span`,{className:`scm-tree-dir-name`,children:e.name}),(0,$.jsxs)(`div`,{className:`scm-file-actions`,children:[i&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:h,title:s(`ide.scm.discardAll`),children:(0,$.jsx)(et,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:m,title:s(`ide.scm.stageAll`),children:(0,$.jsx)(X,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:g,title:s(`ide.scm.unstageAll`),children:(0,$.jsx)(xe,{size:13})})]}),f&&(0,$.jsx)(`span`,{className:`scm-tree-dir-dot`,style:{background:f}})]}),c&&e.children.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path):(0,$.jsx)(ii,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path))]})}function ii({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let s=e.data,c=ei[s.status]||{label:`?`,color:`var(--color-text-tertiary)`};return(0,$.jsxs)(`div`,{className:`scm-file-item`,style:{paddingLeft:`${t*16+20}px`},onClick:()=>a?.(s),children:[Array.from({length:t},(e,t)=>(0,$.jsx)(`span`,{className:`scm-tree-indent-guide`,style:{left:`${t*16+12}px`}},t)),(0,$.jsx)(Ge,{name:e.name,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:e.name}),(0,$.jsx)(ti,{file:s,onStage:n,onUnstage:r,onDiscard:i,onOpenFile:o}),(0,$.jsx)(`span`,{className:`scm-file-status`,style:{color:c.color},children:c.label})]})}function ai(e){return e.isDir?e.children.flatMap(ai):e.data?[e.data]:[]}function oi({files:e,sectionTitle:t,sectionCount:n,sectionActions:r,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c}){let[l,u]=(0,Q.useState)(!0),d=Qr(e,e=>e.path);return t?(0,$.jsxs)(`div`,{className:`scm-file-list scm-tree-view`,children:[(0,$.jsxs)(`div`,{className:`scm-tree-section-root`,onClick:()=>u(e=>!e),children:[l?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{className:`scm-tree-section-title`,children:t}),n!==void 0&&(0,$.jsx)(`span`,{className:`scm-section-count`,children:n}),r&&(0,$.jsx)(`div`,{className:`scm-file-actions`,children:r})]}),l&&d.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(ii,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))]}):(0,$.jsx)(`div`,{className:`scm-file-list scm-tree-view`,children:d.map(e=>e.isDir?(0,$.jsx)(ri,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(ii,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))})}function si(e){return e.viewMode===`tree`?(0,$.jsx)(oi,{...e}):(0,$.jsx)(ni,{...e})}var ci=[`var(--color-accent-green)`,`var(--color-accent-blue)`,`var(--color-accent-yellow)`,`var(--color-accent-purple)`,`var(--color-accent-red)`];function li(e){try{let t=new Date(e),n=new Date().getTime()-t.getTime(),r=Math.floor(n/6e4);if(r<60)return`${r}m ago`;let i=Math.floor(r/60);if(i<24)return`${i}h ago`;let a=Math.floor(i/24);return a<7?`${a}d ago`:t.toLocaleDateString()}catch{return e}}function ui(){let{t:e}=u(),[t,n]=(0,Q.useState)(!1),[r,i]=(0,Q.useState)([]),[a,o]=(0,Q.useState)(!1),s=(0,Q.useCallback)(async()=>{o(!0);try{let e=await Yt(30);i(e)}catch{}o(!1)},[]);return(0,Q.useEffect)(()=>{t&&r.length===0&&!a&&s()},[t,r.length,a,s]),(0,$.jsxs)(`div`,{className:`scm-graph`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>n(e=>!e),children:[t?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:e(`ide.scm.graph`)}),t&&(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:e=>{e.stopPropagation(),s()},title:e(`ide.refresh`),children:(0,$.jsx)(q,{size:12,className:a?`animate-spin`:``})})]}),t&&(0,$.jsxs)(`div`,{className:`scm-graph-list`,children:[a&&r.length===0&&(0,$.jsx)(`div`,{className:`scm-graph-loading`,children:(0,$.jsx)(B,{size:14,className:`animate-spin`})}),r.map((e,t)=>(0,$.jsxs)(`div`,{className:`scm-graph-entry`,title:`${e.hash}\n${e.author}\n${e.date}`,children:[(0,$.jsx)(`span`,{className:`scm-graph-dot`,style:{background:ci[t%ci.length]}}),(0,$.jsx)(`span`,{className:`scm-graph-msg`,children:e.message}),(0,$.jsx)(`span`,{className:`scm-graph-time`,children:li(e.date)})]},e.hash))]})]})}function di({onDidOpenFile:e}={}){let{t}=u(),n=St(),{isGitRepo:r,repositoryRoot:i,loading:a,files:o,currentBranch:s,ahead:c,behind:l,pushing:d,pulling:f,repositoryOperationInProgress:p,branches:m,branchesLoading:h,operationFeedback:g,refresh:_,loadBranches:v,stageFile:y,unstageFile:b,stageAll:x,unstageAll:S,discardFile:C,discardAll:w,push:T,pull:E,switchBranch:D,createBranch:O,clearOperationMessage:A}=xn(),j=Ct(e=>e.openFile),M=ee(e=>e.cwd),N=k(e=>e.scmViewMode),P=k(e=>e.setScmViewMode),[F,I]=(0,Q.useState)(!0),[L,R]=(0,Q.useState)(!0);(0,Q.useEffect)(()=>{_(),xn.getState().startWatching()},[_]),(0,Q.useEffect)(()=>{if(g?.success){let e=setTimeout(A,3e3);return()=>clearTimeout(e)}},[g,A]);let z=D,V=g?.operation===`switchBranch`||g?.operation===`createBranch`,H=(0,Q.useCallback)(()=>{if(g)switch(g.operation){case`switchBranch`:g.target&&D(g.target);break;case`createBranch`:g.target&&O(g.target);break;case`push`:T();break;case`pull`:E()}},[g,D,O,T,E]),U=(0,Q.useCallback)(async r=>{let{editorPath:a,mode:o}=Zr(r.path,i,M,r.staged,r.status);if(k.getState().bottomPanelMaximized&&k.setState({bottomPanelMaximized:!1}),o===`unavailable`){He.warn(t(`ide.scm.binaryRevisionPreviewUnavailable`));return}try{let t=a;if(o===`preview`)await n.getState().openFile(a);else{let e=await Ht(r.path,r.staged);n.getState().openDiffTab(a,{oldText:e.oldText,newText:e.newText,staged:r.staged}),t=`diff://${a}@${r.staged?`staged`:`unstaged`}`}e?.(a,t)}catch{}},[n,e,i,t,M]),W=(0,Q.useCallback)(async t=>{let{editorPath:n}=Zr(t,i,M);await j(n),e?.(n,n)},[n,e,j,i,M]),G=o.filter(e=>e.staged),K=o.filter(e=>!e.staged);return r?(0,$.jsxs)(`div`,{className:`scm-panel`,children:[(0,$.jsxs)(`div`,{className:`scm-header`,children:[(0,$.jsx)(`span`,{className:`scm-header-title`,children:t(`ide.scm.title`)}),(0,$.jsxs)(`div`,{className:`scm-header-actions`,children:[(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`list`?`active`:``}`,onClick:()=>P(`list`),title:t(`ide.listView`),children:(0,$.jsx)(mt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`tree`?`active`:``}`,onClick:()=>P(`tree`),title:t(`ide.treeView`),children:(0,$.jsx)(_t,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(q,{size:14,className:a?`animate-spin`:``})})]})]}),(0,$.jsxs)(`div`,{className:`scm-scroll`,children:[(0,$.jsxs)(`div`,{className:`scm-section`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>I(e=>!e),children:[F?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.repositories`)})]}),F&&(0,$.jsx)(wn,{currentBranch:s,branches:m,branchesLoading:h,operationInProgress:p,onSwitch:z,onCreate:O,onLoadBranches:v,actions:(0,$.jsxs)($.Fragment,{children:[(c>0||l>0)&&(0,$.jsxs)(`span`,{className:`scm-branch-sync`,children:[c>0&&(0,$.jsxs)(`span`,{children:[`↑`,c]}),l>0&&(0,$.jsxs)(`span`,{children:[`↓`,l]})]}),(0,$.jsxs)(`div`,{className:`scm-branch-actions`,children:[(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:E,disabled:p,title:t(`ide.scm.pull`),children:f?(0,$.jsx)(B,{size:14,className:`animate-spin`}):(0,$.jsx)(we,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:T,disabled:p,title:t(`ide.scm.push`),children:d?(0,$.jsx)(B,{size:14,className:`animate-spin`}):(0,$.jsx)(ie,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(q,{size:12,className:a?`animate-spin`:``})})]})]})}),g&&V&&(0,$.jsx)(fi,{feedback:g,onRetry:H,onClose:A})]}),(0,$.jsxs)(`div`,{className:`scm-section`,children:[(0,$.jsxs)(`button`,{className:`scm-section-header`,onClick:()=>R(e=>!e),children:[L?(0,$.jsx)(Ae,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.changes`)}),(0,$.jsx)(`span`,{className:`scm-section-count`,children:o.length})]}),g&&!V&&(0,$.jsx)(fi,{feedback:g,onRetry:H,onClose:A}),L&&(0,$.jsxs)($.Fragment,{children:[G.length>0&&(0,$.jsx)(si,{files:G,viewMode:N,sectionTitle:t(`ide.scm.stagedChanges`),sectionCount:G.length,sectionActions:(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>S(),disabled:p,title:t(`ide.scm.unstageAll`),children:(0,$.jsx)(xe,{size:13})}),onUnstage:p?void 0:b,onSelect:U,onOpenFile:W}),K.length>0&&(0,$.jsx)(si,{files:K,viewMode:N,sectionTitle:t(`ide.scm.changes`),sectionCount:K.length,sectionActions:(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>w(),disabled:p,title:t(`ide.scm.discardAll`),children:(0,$.jsx)(et,{size:13})}),(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>x(),disabled:p,title:t(`ide.scm.stageAll`),children:(0,$.jsx)(X,{size:13})})]}),onStage:p?void 0:y,onDiscard:p?void 0:C,onSelect:U,onOpenFile:W}),o.length===0&&!a&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)($e,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:t(`ide.scm.noChanges`)})]})]})]}),(0,$.jsx)(ui,{})]})]}):(0,$.jsxs)(`div`,{className:`scm-panel`,children:[(0,$.jsx)(`div`,{className:`scm-header`,children:(0,$.jsx)(`span`,{className:`scm-header-title`,children:t(`ide.scm.title`)})}),(0,$.jsxs)(`div`,{className:`ide-panel-placeholder`,children:[(0,$.jsx)(Y,{size:32,strokeWidth:1,style:{opacity:.2}}),(0,$.jsx)(`div`,{className:`ide-panel-placeholder-text`,children:t(`ide.scm.notGitRepo`)})]})]})}function fi({feedback:e,onRetry:t,onClose:n}){let{t:r}=u(),i,a=!e.success;if(e.success)switch(e.operation){case`switchBranch`:i=r(`ide.scm.feedback.switched`,{name:e.target||``});break;case`createBranch`:i=r(`ide.scm.feedback.created`,{name:e.target||``});break;case`push`:i=r(`ide.scm.feedback.pushed`);break;case`pull`:i=r(`ide.scm.feedback.pulled`);break;default:i=r(`ide.scm.feedback.completed`)}else i=r(Sn(e.message,e.operation)),a=Cn(e.message,e.operation);return(0,$.jsxs)(`div`,{className:`scm-operation-notice ${e.success?`success`:`error`}`,role:e.success?`status`:`alert`,children:[(0,$.jsx)(`div`,{className:`scm-operation-notice-icon`,children:e.success?(0,$.jsx)(Pe,{size:16}):(0,$.jsx)(Ke,{size:16})}),(0,$.jsxs)(`div`,{className:`scm-operation-notice-content`,children:[(0,$.jsx)(`strong`,{children:e.success?r(`ide.scm.feedback.success`):r(`ide.scm.feedback.failed`)}),(0,$.jsx)(`span`,{children:i}),!e.success&&e.message&&(0,$.jsxs)(`details`,{className:`scm-operation-details`,children:[(0,$.jsx)(`summary`,{children:r(`ide.scm.feedback.details`)}),(0,$.jsx)(`pre`,{children:e.message})]}),!e.success&&a&&(0,$.jsxs)(`button`,{className:`scm-operation-retry`,onClick:t,children:[(0,$.jsx)(ze,{size:12}),r(`ide.scm.feedback.retry`)]})]}),(0,$.jsx)(`button`,{className:`scm-operation-close`,onClick:n,title:r(`common.close`),children:(0,$.jsx)(je,{size:14})})]})}function pi({activePanel:e,onMenuClick:t}){return(0,$.jsxs)(`div`,{className:`ide-side-panel-content`,children:[e===`explorer`&&(0,$.jsx)(lr,{onMenuClick:t}),e===`search`&&(0,$.jsx)(Gr,{}),e===`source-control`&&(0,$.jsx)(di,{})]})}var mi=640;function hi({onMenuClick:e,tabs:t,activeTab:n,tabActions:r,cursorInfo:i,imageInfo:a,previewZoom:o,isSourceMode:s,isSourceModeForTab:c,quickOpenVisible:l,setQuickOpenVisible:d,onContentChange:f,onSave:p,onActivateTab:m,onRequestClose:h,onCursorChange:g,onImageInfo:_,onZoomChange:v,hideActivityBar:y=!1}){let{t:b}=u(),x=(0,Q.useRef)(null),[S,C]=(0,Q.useState)(!1),[w,T]=(0,Q.useState)(`explorer`),{rootPath:E,openFile:D,revealInTree:O,loadTab:A,showHiddenFiles:j}=Ct(),ee=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),M=y&&ee?.kind===`editor`&&!ee.filePath;(0,Q.useLayoutEffect)(()=>{let e=x.current;if(!y||!e){C(!1);return}let t=e=>C(e<=mi);t(e.getBoundingClientRect().width);let n=new ResizeObserver(e=>{let n=e[0];n&&t(n.contentRect.width)});return n.observe(e),()=>n.disconnect()},[y]);let{activePanel:N,sidePanelWidth:P,sidePanelCollapsed:F,setSidePanelWidth:I,setSidePanelCollapsed:L,bottomPanelHeight:R,bottomPanelCollapsed:z,bottomPanelMaximized:B,setBottomPanelHeight:H,setBottomPanelCollapsed:U,toggleBottomPanel:W,toggleBottomPanelMaximize:G}=k(),K=hr({direction:`horizontal`,initialSize:P,minSize:160,maxSize:600,collapsible:!0,defaultCollapsed:F,onResize:I,onCollapse:L,ariaLabel:b(`ide.resizeSidePanel`)}),q=hr({direction:`vertical`,initialSize:R,minSize:140,maxSize:typeof window<`u`?Math.max(300,window.innerHeight-80):500,collapsible:!0,defaultCollapsed:z,reverse:!0,onResize:H,onCollapse:U,onMaximize:G,maximizeThreshold:.85,ariaLabel:b(`ide.resizeBottomPanel`)}),ne=xn(e=>e.files.length);(0,Q.useEffect)(()=>(xn.getState().refresh(),xn.getState().startWatching(),()=>{xn.getState().stopWatching()}),[]);let re=typeof navigator<`u`&&navigator.platform.includes(`Mac`),ie=(e=n)=>M?(0,$.jsx)(gi,{t:b}):e?e.loadStatus===`ready`?e.viewMode===`diff`&&e.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(te,{path:e.path,oldText:e.diffData.oldText,newText:e.diffData.newText})}):e.viewMode===`editor`||c(e.id)?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:e.path,content:e.content,language:e.language,onContentChange:t=>f(e.id,t),onSave:()=>p(e.id),minimap:!S,onCursorChange:(t,n,r,i)=>g(e.id,t,n,r,i)})}):(0,$.jsx)($n,{path:e.path,name:e.name,content:e.content,viewMode:e.viewMode,onImageInfo:t=>_(e.id,t),onZoomChange:t=>v(e.id,t)}):(0,$.jsx)(Pt,{tab:e,onRetry:()=>A(e.id)}):y?(0,$.jsx)(gi,{t:b}):(0,$.jsx)(_i,{isMac:re,t:b}),ae=l&&E&&(0,$.jsx)(Tr,{isOpen:l,onClose:()=>d(!1),onSelect:e=>{D(e),d(!1)},rootPath:E,showHiddenFiles:j}),oe=y?`explorer`:N??`explorer`;(0,Q.useEffect)(()=>{y&&S&&T(M||!n?`explorer`:`editor`)},[n?.path,S,ee?.id,M,y]);let se=S&&w===`explorer`,ce=y?S?se:!K.collapsed:!(!N||K.collapsed),le=!S||!se,ue=!q.collapsed,de=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{if(!y)return;let e=n?.path??(M?`__open__`:null);e&&de.current!==e&&(de.current=e,F&&L(!1))},[n?.path,M,y,L,F]),(0,$.jsxs)(`div`,{className:`ide-layout`,ref:x,children:[ae,(0,$.jsxs)(`div`,{className:`ide-layout-row`,ref:K.containerRef,children:[!y&&(0,$.jsx)(Er,{gitFileCount:ne}),ce&&(0,$.jsxs)(`div`,{className:`ide-side-panel`,style:{width:S?`100%`:K.size},children:[(0,$.jsx)(pi,{activePanel:oe,onMenuClick:e}),!S&&(0,$.jsx)(`div`,{...K.sashProps})]}),(0,$.jsxs)(`div`,{className:`ide-main-area`,ref:q.containerRef,style:{display:le?`flex`:`none`},children:[!B&&(0,$.jsx)(`div`,{className:`ide-editor-area`,style:{flex:ue?void 0:1,height:ue?`calc(100% - ${q.size}px)`:`100%`},children:y?(0,$.jsxs)($.Fragment,{children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[S&&n&&!M&&(0,$.jsx)(`button`,{type:`button`,className:`ide-dock-terminal-btn`,onClick:()=>T(`explorer`),title:b(`dock.pickFromTree`),"aria-label":b(`dock.pickFromTree`),children:(0,$.jsx)(ke,{size:14})}),M||!n||!E?(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}):(0,$.jsx)(At,{filePath:n.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),(0,$.jsx)(`button`,{type:`button`,className:`ide-dock-terminal-btn${z?``:` on`}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>W(),title:b(`ide.toggleTerminal`),"aria-label":b(`ide.toggleTerminal`),"aria-pressed":!z,children:(0,$.jsx)(J,{size:14})})]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:ie()})]}):(0,$.jsx)(xr,{tabs:t,tabActions:r,onActivateTab:m,onRequestClose:h,onOpenFile:e=>{D(e).catch(()=>void 0)},renderContent:e=>(0,$.jsxs)($.Fragment,{children:[e&&E&&(0,$.jsx)(At,{filePath:e.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),ie(e)]})})}),ue&&(0,$.jsxs)($.Fragment,{children:[!B&&(0,$.jsx)(`div`,{...q.sashProps}),(0,$.jsx)(`div`,{className:`ide-bottom-panel-wrap`,style:{height:B?`100%`:q.size},children:(0,$.jsx)(mr,{})})]})]})]}),(0,$.jsx)(`div`,{className:`ide-statusbar-drag-zone`,onPointerDown:q.sashProps.onPointerDown,onDoubleClick:q.sashProps.onDoubleClick,children:(0,$.jsx)(An,{language:n?.language||``,cursorLine:i.line,cursorColumn:i.col,selectedCount:i.selectedChars,selectedLines:i.selectedLines,viewMode:n?s?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:a,zoom:o,extraRight:y?(0,$.jsxs)(`button`,{type:`button`,className:`editor-statusbar-item clickable${z?``:` is-active`}`,onPointerDown:e=>e.stopPropagation(),onClick:()=>W(),title:b(`ide.toggleTerminal`),"aria-label":b(`ide.toggleTerminal`),"aria-pressed":!z,children:[(0,$.jsx)(J,{size:12}),(0,$.jsx)(`span`,{children:b(`ide.terminal`)})]}):void 0})})]})}function gi({t:e}){return(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(ke,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:e(`dock.openFile`)}),(0,$.jsx)(`p`,{children:e(`dock.pickFromTree`)})]})}function _i({isMac:e,t}){let n=(0,Q.useRef)(null),[r,i]=(0,Q.useState)(!1);return(0,Q.useEffect)(()=>{let e=n.current;if(!e)return;let t=new ResizeObserver(e=>{for(let t of e)i(t.contentRect.height<300)});return t.observe(e),()=>t.disconnect()},[]),(0,$.jsxs)(`div`,{className:`editor-empty`,ref:n,children:[(0,$.jsx)(`div`,{className:`ide-empty-icon`,children:(0,$.jsx)(`img`,{src:Ue,alt:`CodeBuddy`,width:`64`,height:`64`,style:{opacity:.15,filter:`grayscale(1)`}})}),!r&&(0,$.jsxs)(`div`,{className:`editor-empty-shortcuts`,children:[(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌘`:`Ctrl`,`+P`]}),(0,$.jsx)(`span`,{children:t(`editor.quickOpen`)})]}),(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌘`:`Ctrl`,`+B`]}),(0,$.jsx)(`span`,{children:t(`ide.toggleSidebar`)})]}),(0,$.jsxs)(`div`,{className:`editor-empty-hint`,children:[(0,$.jsxs)(`kbd`,{children:[e?`⌃`:`Ctrl`,"+`"]}),(0,$.jsx)(`span`,{children:t(`ide.toggleTerminal`)})]})]})]})}function vi(){let{t:e}=u(),t=k(e=>e.activeMobilePanel),n=k(e=>e.setActiveMobilePanel),r=xn(e=>e.files.length),i=[{id:`explorer`,icon:(0,$.jsx)(ye,{size:20,strokeWidth:1.5}),label:e(`ide.explorer`)},{id:`search`,icon:(0,$.jsx)(ae,{size:20,strokeWidth:1.5}),label:e(`ide.search`)},{id:`source-control`,icon:(0,$.jsx)(Y,{size:20,strokeWidth:1.5}),label:e(`ide.sourceControl`),badge:r},{id:`terminal`,icon:(0,$.jsx)(J,{size:20,strokeWidth:1.5}),label:e(`ide.terminal`)}];return(0,$.jsx)(`div`,{className:`mobile-tab-bar`,children:i.map(e=>(0,$.jsxs)(`button`,{className:`mobile-tab-bar-btn ${t===e.id?`active`:``}`,onClick:()=>n(e.id),children:[(0,$.jsxs)(`span`,{className:`mobile-tab-bar-icon`,children:[e.icon,e.badge!=null&&e.badge>0&&(0,$.jsx)(`span`,{className:`mobile-tab-bar-badge`,children:e.badge>99?`99+`:e.badge})]}),(0,$.jsx)(`span`,{className:`mobile-tab-bar-label`,children:e.label})]},e.id))})}var yi=1e3,bi={line:1,col:1,selectedChars:0,selectedLines:0};function xi(e){return`editor-save:${e}`}function Si({editorStore:e=E,...t}){return(0,$.jsx)(xt,{store:e,children:(0,$.jsx)(Ci,{...t})})}function Ci({onMenuClick:e,isVisible:n=!0,hideActivityBar:r=!1}){let{t:i,resolved:a}=u(),o=St(),{tabs:s,activeTabId:l,rootPath:d,tree:f,treeLoading:p,treeError:m,openFile:h,loadTab:g,updateTabContent:_,saveTab:v,requestCloseTabs:b,discardTabs:x,revealInTree:S,pendingReveal:w,showHiddenFiles:T,setActiveTab:E}=Ct(),[D,O]=(0,Q.useState)(!1),[j]=(0,Q.useState)(()=>Ot(yi)),M=k(e=>e.toggleBottomPanel),N=k(e=>e.editorDock),P=k(e=>e.closeDockTerminal),F=k(e=>e.syncEditorDockTabs),I=ee(e=>e.cwd),L=Re(),[z,B]=(0,Q.useState)(!1),H=(0,Q.useRef)(!1),U=(0,Q.useRef)(null),W=(0,Q.useRef)(null),G=(0,Q.useRef)(null),K=L?z:n;(0,Q.useEffect)(()=>{let e=o.getState();e.setTreeVisible(K),K&&(!d&&I&&!t().has(`path`)?e.setRootPath(I).catch(()=>void 0):d&&!f&&!p&&!m&&e.setRootPath(d).catch(()=>void 0))},[o,d,f,m,p,K,I]),(0,Q.useEffect)(()=>()=>{o.getState().setTreeVisible(!1)},[o]);let q=(0,Q.useCallback)(()=>{H.current||(W.current=document.activeElement instanceof HTMLElement?document.activeElement:null,H.current=!0,B(!0))},[]),ne=(0,Q.useCallback)(()=>{H.current=!1,B(!1),requestAnimationFrame(()=>{W.current?.focus(),W.current=null})},[]);(0,Q.useEffect)(()=>{U.current&&(U.current.inert=!z)},[z,L]);let ie=(0,Q.useRef)(``);(0,Q.useEffect)(()=>{let e=async()=>{if(!n)return;let e=t(),r=e.get(`path`);if(!r)return;let i=e.get(`line`),a=e.get(`col`),s=e.get(`endLine`),l=e.get(`endCol`),u=`${r}:${i}:${a}:${s}:${l}`;if(u===ie.current)return;ie.current=u;let d=o.getState();if(!d.rootPath){let t=e.get(`folder`)||new URLSearchParams(window.location.search).get(`folder`);t&&await d.setRootPath(t)}let f=await y(r),p=o.getState().rootPath;if(f===`directory`)p&&(r===p||r.startsWith(p+`/`))?d.revealInTree(r):(await o.getState().setRootPath(r),c.getState().setFolder(r));else{if(!p){let e=r.substring(0,r.lastIndexOf(`/`));e&&await o.getState().setRootPath(e)}let e=i?parseInt(i,10):void 0,t=e?{line:e,col:a?parseInt(a,10):1,endLine:s?parseInt(s,10):void 0,endCol:l?parseInt(l,10):void 0,query:``}:void 0,n=o.getState();n.openFile(r,void 0,t),n.revealInTree(r)}};e();let r=()=>e();return window.addEventListener(`hashchange`,r),()=>window.removeEventListener(`hashchange`,r)},[n]),(0,Q.useEffect)(()=>{L||(H.current=!1,B(!1))},[L]),(0,Q.useEffect)(()=>{L&&l&&q()},[L,l,s.length,q]),(0,Q.useEffect)(()=>{L&&w&&l&&q()},[L,w,l,q]),(0,Q.useEffect)(()=>{if(!l)return;let e=o.getState().tabs.find(e=>e.id===l);e&&S(e.path)},[l,S]);let J=s.find(e=>e.id===l)||null,ae=s.map(e=>e.id).join(`\0`),oe=C(N),se=!!(oe&&R(oe)),ce=(0,Q.useRef)(l),le=(0,Q.useRef)(s.length>0);(0,Q.useEffect)(()=>{if(r||L)return;if(ae)le.current=!0;else if(!le.current)return;let e=ce.current!==l;ce.current=l;let t=G.current,n=!!(t&&t.tabKey!==ae),i=!!(n&&t?.itemId===oe);n&&(G.current=null),F(ae?ae.split(`\0`):[],se&&(!e||i)?void 0:l)},[l,se,N,ae,r,L,F]),(0,Q.useEffect)(()=>{s.length===0||s.some(e=>e.id===l)||E(s[0].id)},[l,E,s]);let ue=V(e=>e.quickOpenNonce),de=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),fe=(0,Q.useCallback)((e,t)=>{let n=o.getState().tabs.find(e=>e.id===t);V.getState().ensureFileTab(e,n?.name??wt(e),t)},[o]),Y=(0,Q.useRef)(null),pe=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{r&&ue!==pe.current&&(pe.current=ue,ue>0&&O(!0))},[r,ue]);let me=i(`editor.saveFailed`),X=i(`app.retry`),he=i(`editor.overwrite`),ge=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{let e=ge.current,t=new Set,n=Je.getState().removeToast;for(let n of s){if(n.saveStatus!==`error`)continue;t.add(n.id);let r=`${a}:${n.saveError??``}`;e.get(n.id)!==r&&(e.set(n.id,r),He.error(`${me}${n.saveError?`: ${n.saveError}`:``}`,{id:xi(n.id),durationMs:0,action:{label:n.externalChange?he:X,onClick:()=>o.getState().saveTab(n.id,{forceExternal:!0})}}))}for(let r of e.keys())t.has(r)||(n(xi(r)),e.delete(r))},[he,a,X,me,s]),(0,Q.useEffect)(()=>()=>{let e=ge.current,t=Je.getState().removeToast;for(let n of e.keys())t(xi(n));e.clear()},[]);let _e=(0,Q.useCallback)((e,t)=>{_(e,t),j.schedule(e,()=>{let t=o.getState(),n=t.tabs.find(t=>t.id===e);n?.loadStatus===`ready`&&n.isDirty&&t.saveTab(e).catch(()=>!1)})},[j,o,_]);(0,Q.useEffect)(()=>()=>{j.dispose();let e=o.getState();e.tabs.filter(e=>e.isDirty&&!e.externalChange).forEach(t=>{e.saveTab(t.id).catch(()=>!1)})},[j,o]),(0,Q.useEffect)(()=>{let e=e=>{o.getState().tabs.some(e=>e.isDirty||e.saveStatus===`saving`)&&(e.preventDefault(),e.returnValue=``)};return window.addEventListener(`beforeunload`,e),()=>window.removeEventListener(`beforeunload`,e)},[]);let[ve,ye]=(0,Q.useState)(null),be=(0,Q.useCallback)(async e=>{let t=o.getState().tabs,n=A(t,e),r=C(k.getState().editorDock);r&&R(r)&&(G.current={itemId:r,tabKey:t.map(e=>e.id).join(`\0`)}),n.forEach(e=>j.cancel(e));let i=await b(e);i.closed&&G.current?.tabKey===o.getState().tabs.map(e=>e.id).join(`\0`)&&(G.current=null),ye(i.closed?null:i)},[j,o,b]);(0,Q.useEffect)(()=>{if(!n)return;let e=e=>{if(e.defaultPrevented||!n)return;if(r){let t=Y.current,n=e.target;if(!t||!(n instanceof Node)||!t.contains(n))return}let t=e.metaKey||e.ctrlKey;if(t&&e.key===`p`&&!e.shiftKey&&(e.preventDefault(),O(!0)),t&&e.key===`w`&&!e.shiftKey){e.preventDefault();let t=r?null:C(k.getState().editorDock),n=t?R(t):null;if(n){P(n);let e=C(k.getState().editorDock);e&&!R(e)&&E(e)}else l&&be({kind:`single`,id:l}).catch(()=>void 0)}if(t&&e.key===`b`&&!e.shiftKey){if(r)return;e.preventDefault();let t=k.getState();t.setSidePanelCollapsed(!t.sidePanelCollapsed)}t&&e.key==="`"&&(e.preventDefault(),M())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[l,P,be,r,n,E,M]);let xe=(0,Q.useCallback)(e=>{j.cancel(e),v(e,{forceExternal:!0}).catch(()=>!1)},[j,v]),[Se,Ce]=(0,Q.useState)({}),we=(0,Q.useCallback)((e,t,n,r,i)=>{Ce(a=>({...a,[e]:{line:t,col:n,selectedChars:r,selectedLines:i}}))},[]),Te=J?Se[J.id]??bi:bi,[Ee,De]=(0,Q.useState)({}),[Oe,Ae]=(0,Q.useState)({}),je=(0,Q.useCallback)((e,t)=>{De(n=>({...n,[e]:t}))},[]),Me=(0,Q.useCallback)((e,t)=>{Ae(n=>({...n,[e]:t}))},[]),Ne=J?Ee[J.id]??null:null,Pe=J?Oe[J.id]??1:1,[Fe,Z]=(0,Q.useState)(new Set),Le=(0,Q.useCallback)(e=>{let t=o.getState().tabs.find(t=>t.id===e);return!(!t||t.viewMode!==`markdown`&&t.viewMode!==`html`||Fe.has(e))},[o,Fe]),ze=J?.viewMode===`markdown`||J?.viewMode===`html`,Be=!!(J&&Le(J.id)),Ve=(0,Q.useCallback)(()=>{l&&Z(e=>{let t=new Set(e);return t.has(l)?t.delete(l):t.add(l),t})},[l]),Ue=null;ze&&(Ue=Be?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ve,title:i(`editor.preview`),"aria-label":i(`editor.preview`),children:(0,$.jsx)(nt,{size:16})}):(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ve,title:i(`editor.source`),"aria-label":i(`editor.source`),children:(0,$.jsx)(Xe,{size:16})}));let We=(0,Q.useCallback)(()=>{let e=new URLSearchParams(window.location.search);e.set(`standalone`,`1`),window.open(`#/editor?${e.toString()}`,`_blank`,`noopener,noreferrer`)},[]),Ge=(0,Q.useCallback)(()=>{if(!J)return;let e=J.name||wt(J.path);if(J.viewMode===`editor`||J.viewMode===`markdown`||J.viewMode===`html`){Et(e,J.content??``);return}Dt(J.path,e).catch(()=>{He.error(i(`editor.downloadFailed`))})},[J,i]),Ke=(0,$.jsxs)($.Fragment,{children:[Ue,J?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Ge,title:i(`editor.download`),"aria-label":i(`editor.download`),children:(0,$.jsx)(Ie,{size:16})}):null,(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.openInNewWindow`),"aria-label":i(`editor.openInNewWindow`),children:(0,$.jsx)(qe,{size:16})})]}),Ye=(0,Q.useCallback)(()=>{ve&&(ve.targetIds.forEach(e=>j.cancel(e)),x(ve.targetIds),ye(null))},[j,x,ve]),Ze=(0,Q.useCallback)(()=>{G.current=null,ye(null)},[]),Qe=ve?(0,$.jsx)(re,{title:i(`editor.closeSaveFailedTitle`,{count:ve.failedTabIds.length}),message:i(`editor.closeSaveFailedMessage`,{count:ve.failedTabIds.length}),confirmLabel:i(`editor.discardAndClose`),danger:!0,onConfirm:Ye,onCancel:Ze}):null,$e=k(e=>e.activeMobilePanel),et=k(e=>e.createBottomTerminal),rt=k(e=>e.bottomTerminals);if((0,Q.useEffect)(()=>{L&&$e===`terminal`&&rt.length===0&&et()},[L,$e,rt.length,et]),L){let t=D&&d&&(0,$.jsx)(Tr,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T}),n=null;return J&&(n=J.loadStatus===`ready`?J.viewMode===`editor`||Be?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:J.path,content:J.content,language:J.language,onContentChange:e=>_e(J.id,e),onSave:()=>xe(J.id),minimap:!1,onCursorChange:(e,t,n,r)=>we(J.id,e,t,n,r)})}):(0,$.jsx)($n,{path:J.path,name:J.name,content:J.content,viewMode:J.viewMode,onImageInfo:e=>je(J.id,e),onZoomChange:e=>Me(J.id,e)}):(0,$.jsx)(Pt,{tab:J,onRetry:()=>g(J.id)})),(0,$.jsxs)(`div`,{className:`editor-view editor-view-mobile`,ref:Y,children:[t,Qe,(0,$.jsxs)(`div`,{className:`mobile-panel-content`,children:[$e===`explorer`&&(0,$.jsx)(`div`,{className:`editor-sidebar editor-sidebar-mobile`,children:(0,$.jsx)(lr,{onMenuClick:e})}),$e===`search`&&(0,$.jsx)(Gr,{}),$e===`source-control`&&(0,$.jsx)(di,{}),$e===`terminal`&&(0,$.jsx)(`div`,{className:`mobile-terminal-panel`,children:(0,$.jsx)(mr,{})})]}),(0,$.jsx)(`div`,{ref:U,className:`editor-mobile-panel ${z?`open`:``}`,"aria-hidden":!z,children:(0,$.jsxs)(`div`,{className:`editor-main`,children:[(0,$.jsxs)(`div`,{className:`editor-mobile-header`,children:[(0,$.jsx)(`button`,{className:`editor-mobile-back`,onClick:ne,"aria-label":i(`editor.mobileBack`),children:(0,$.jsx)(tt,{size:18})}),(0,$.jsx)(`div`,{className:`editor-mobile-tabs-wrap`,children:(0,$.jsx)(Un,{actions:Ke,onRequestClose:be})})]}),n,J&&(0,$.jsx)(An,{language:J.language,cursorLine:Te.line,cursorColumn:Te.col,selectedCount:Te.selectedChars,selectedLines:Te.selectedLines,viewMode:Be?`editor`:J.viewMode,isDirty:J.isDirty,saveStatus:J.saveStatus,saveError:J.saveError,imageInfo:Ne,zoom:Pe})]})}),!z&&$e===`explorer`&&(0,$.jsx)(An,{language:``,cursorLine:1,cursorColumn:1}),(0,$.jsx)(vi,{})]})}if(r){let t=D&&d&&(0,$.jsx)(Tr,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T});if(de?.kind===`explorer`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(lr,{onMenuClick:e,onDidOpenFile:fe})}),(0,$.jsx)(An,{language:``,cursorLine:1,cursorColumn:1})]});if(de?.kind===`search`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(Gr,{})})]});if(de?.kind===`scm`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(di,{onDidOpenFile:fe})})]});let n=de?.kind===`editor`&&de.editorTabId&&J?.id===de.editorTabId?J:null,r;if(!de?.filePath)r=(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(ke,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:i(`dock.openFile`)}),(0,$.jsx)(`p`,{children:i(`dock.pickFromTree`)})]});else if(!n||n.loadStatus!==`ready`){let e=n??s.find(e=>e.id===de.editorTabId)??null;r=e?(0,$.jsx)(Pt,{tab:e,onRetry:()=>g(e.id)}):(0,$.jsx)(`div`,{className:`dock-open-file-empty`,children:(0,$.jsx)(`p`,{children:i(`editor.loading`)})})}else r=n.viewMode===`diff`&&n.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(te,{path:n.path,oldText:n.diffData.oldText,newText:n.diffData.newText})}):n.viewMode===`editor`||Be?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Nt,{path:n.path,content:n.content,language:n.language,onContentChange:e=>_e(n.id,e),onSave:()=>xe(n.id),minimap:!1,onCursorChange:(e,t,r,i)=>we(n.id,e,t,r,i)})}):(0,$.jsx)($n,{path:n.path,name:n.name,content:n.content,viewMode:n.viewMode,onImageInfo:e=>je(n.id,e),onZoomChange:e=>Me(n.id,e)});return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[t,Qe,(0,$.jsxs)(`div`,{className:`ide-layout ide-atomic-editor`,children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[n&&d?(0,$.jsx)(At,{filePath:n.path,rootPath:d,onSegmentClick:S,onOpenFile:h}):(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}),Ke]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:r}),(0,$.jsx)(An,{language:n?.language||``,cursorLine:Te.line,cursorColumn:Te.col,selectedCount:Te.selectedChars,selectedLines:Te.selectedLines,viewMode:n?Be?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:Ne,zoom:Pe})]})]})}return(0,$.jsxs)(`div`,{className:`editor-view`,ref:Y,children:[Qe,(0,$.jsx)(hi,{onMenuClick:e,tabs:s,activeTab:se?null:J,tabActions:Ke,cursorInfo:Te,imageInfo:Ne,previewZoom:Pe,isSourceMode:Be,isSourceModeForTab:Le,quickOpenVisible:D,setQuickOpenVisible:O,onContentChange:_e,onSave:xe,onActivateTab:E,onRequestClose:be,onCursorChange:we,onImageInfo:je,onZoomChange:Me,hideActivityBar:r})]})}export{Si as EditorView};