@tencent-ai/agent-sdk 0.3.269 → 0.3.270

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 (145) hide show
  1. package/cli/CHANGELOG.md +21 -0
  2. package/cli/dist/codebuddy-headless.js +111 -108
  3. package/cli/dist/codebuddy-lite-wb.mjs +143 -140
  4. package/cli/dist/web-ui/assets/{CanvasPaneStandaloneView-AFymTrqt.js → CanvasPaneStandaloneView-CDO7isWn.js} +1 -1
  5. package/cli/dist/web-ui/assets/{CanvasView-CoxUIOeY.js → CanvasView-DJNkeBGK.js} +1 -1
  6. package/cli/dist/web-ui/assets/{ChangesView-CTnio3qy.js → ChangesView-fCuIktEK.js} +1 -1
  7. package/cli/dist/web-ui/assets/{DocsView-DfGq3q0Y.js → DocsView-B79hLvzs.js} +1 -1
  8. package/cli/dist/web-ui/assets/{EditorView-CYw2oZg1.js → EditorView-7YnlryBL.js} +1 -1
  9. package/cli/dist/web-ui/assets/{KeybindingsView-D6w9QUh3.js → KeybindingsView-CIDkpkAb.js} +1 -1
  10. package/cli/dist/web-ui/assets/{LogsView-CP5xbyy4.js → LogsView-Bcv52scT.js} +1 -1
  11. package/cli/dist/web-ui/assets/{MetricsView-C2c14t7O.js → MetricsView-DUSiPsda.js} +1 -1
  12. package/cli/dist/web-ui/assets/{PluginsView-BSEje_UM.js → PluginsView-BTOCj9co.js} +1 -1
  13. package/cli/dist/web-ui/assets/{RemoteControlView-2f1ZwMQ5.js → RemoteControlView-YqmY0vro.js} +1 -1
  14. package/cli/dist/web-ui/assets/{SettingsView-tOHto0ek.js → SettingsView-D2wIPOBw.js} +1 -1
  15. package/cli/dist/web-ui/assets/{SplitContainer-q9iSME5N.js → SplitContainer-DlEN5H4s.js} +1 -1
  16. package/cli/dist/web-ui/assets/{StatsView-BVIL7ys1.js → StatsView-C7iB42TQ.js} +1 -1
  17. package/cli/dist/web-ui/assets/{TasksView-BuNGf8H8.js → TasksView-CKm5dh4d.js} +1 -1
  18. package/cli/dist/web-ui/assets/{TerminalPaneView-IZXBrZd0.js → TerminalPaneView-Cs-7CKCw.js} +1 -1
  19. package/cli/dist/web-ui/assets/{TracesView-BagVLm59.js → TracesView-4MhXOs0J.js} +1 -1
  20. package/cli/dist/web-ui/assets/{WorkersView-CFhFpbFC.js → WorkersView-B5SyD2xB.js} +1 -1
  21. package/cli/dist/web-ui/assets/{abnfDiagram-O67JEVCF-BbyhIfaI.js → abnfDiagram-O67JEVCF-luL6Qe5x.js} +1 -1
  22. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-CVyCykh_.js +1 -0
  23. package/cli/dist/web-ui/assets/{architectureDiagram-NJMV4G6O-DxDD6eVt.js → architectureDiagram-NJMV4G6O-CXZjweyd.js} +1 -1
  24. package/cli/dist/web-ui/assets/{blockDiagram-BEXU5L5S-DTRa2Tb9.js → blockDiagram-BEXU5L5S-DceMcN-6.js} +1 -1
  25. package/cli/dist/web-ui/assets/{c4Diagram-YGBWAQC7--r-yED_M.js → c4Diagram-YGBWAQC7-Chr6hcY4.js} +1 -1
  26. package/cli/dist/web-ui/assets/{canvas-store-BpQ38Vml.js → canvas-store-CLGZ388s.js} +1 -1
  27. package/cli/dist/web-ui/assets/channel-pxcszUh2.js +1 -0
  28. package/cli/dist/web-ui/assets/{chunk-3FUC2YCW-CrLNasJM.js → chunk-3FUC2YCW-BRXxiofJ.js} +1 -1
  29. package/cli/dist/web-ui/assets/{chunk-5DYCD2WN-BvGB0nx-.js → chunk-5DYCD2WN-BJidDn4j.js} +1 -1
  30. package/cli/dist/web-ui/assets/{chunk-742MDFTN-BTBNbBjA.js → chunk-742MDFTN-D8PKsc6_.js} +1 -1
  31. package/cli/dist/web-ui/assets/{chunk-7INBJB4K-CnYo9mzQ.js → chunk-7INBJB4K-0OOQXMSm.js} +1 -1
  32. package/cli/dist/web-ui/assets/{chunk-7M6MHVWA-ChPc3AIy.js → chunk-7M6MHVWA-CinmEwpu.js} +1 -1
  33. package/cli/dist/web-ui/assets/{chunk-7PRAP22T-BWJP0sRU.js → chunk-7PRAP22T-D0WpyU-H.js} +1 -1
  34. package/cli/dist/web-ui/assets/{chunk-GTNCS2PH-BWIt5JBZ.js → chunk-GTNCS2PH-NNZzPISm.js} +1 -1
  35. package/cli/dist/web-ui/assets/{chunk-GWA4HPMP-DPP9EzOc.js → chunk-GWA4HPMP-CVQtrfg2.js} +1 -1
  36. package/cli/dist/web-ui/assets/{chunk-MBY4JIJT-WW7QGbUd.js → chunk-MBY4JIJT-B2Fs2skV.js} +1 -1
  37. package/cli/dist/web-ui/assets/{chunk-NETBCI7D-DvHPTWgP.js → chunk-NETBCI7D-DS15Lcf7.js} +1 -1
  38. package/cli/dist/web-ui/assets/{chunk-O7XYJQB3-DNIHMsy6.js → chunk-O7XYJQB3-irIWVhcH.js} +1 -1
  39. package/cli/dist/web-ui/assets/{chunk-UA2S7LBM-FmyRAjon.js → chunk-UA2S7LBM-DHv_5vdC.js} +1 -1
  40. package/cli/dist/web-ui/assets/{chunk-WEXAMYUT-DPGJtaXE.js → chunk-WEXAMYUT-DTnPpX3o.js} +1 -1
  41. package/cli/dist/web-ui/assets/{chunk-Z7XXMR3K-xCwg-Yew.js → chunk-Z7XXMR3K-CL6QEwjv.js} +1 -1
  42. package/cli/dist/web-ui/assets/{chunk-ZIGJFQKS-C33Iz6Fl.js → chunk-ZIGJFQKS-D-9hFu_x.js} +1 -1
  43. package/cli/dist/web-ui/assets/{classDiagram-v2-NBCMYWYE-CYRZjfMU.js → classDiagram-v2-NBCMYWYE-BGpw8OWR.js} +1 -1
  44. package/cli/dist/web-ui/assets/{cssMode-ClDS6DMb.js → cssMode-DYH1pn7V.js} +1 -1
  45. package/cli/dist/web-ui/assets/{cynefin-OW5HDTMX-BZMPI_-L.js → cynefin-OW5HDTMX-BwDHcOb3.js} +1 -1
  46. package/cli/dist/web-ui/assets/{cynefinDiagram-VND7K2PF-xv7006O3.js → cynefinDiagram-VND7K2PF-C04bh7p8.js} +1 -1
  47. package/cli/dist/web-ui/assets/{dagre-6A5THRUB-BaA5Prow.js → dagre-6A5THRUB-Dea8s6xE.js} +1 -1
  48. package/cli/dist/web-ui/assets/{diagram-22UHCM2B-CLPFfA4R.js → diagram-22UHCM2B-DJVauquX.js} +1 -1
  49. package/cli/dist/web-ui/assets/{diagram-3UASUU5V-DX9eVGvg.js → diagram-3UASUU5V-C7-A4v72.js} +1 -1
  50. package/cli/dist/web-ui/assets/{diagram-ATOU4E4O-C6tAUS3M.js → diagram-ATOU4E4O-7B6YBDOj.js} +1 -1
  51. package/cli/dist/web-ui/assets/{diagram-CDSNMT55-C4bjVjgp.js → diagram-CDSNMT55-DMAwoRXf.js} +1 -1
  52. package/cli/dist/web-ui/assets/{diagram-MLGK6HIB--R4pb2v7.js → diagram-MLGK6HIB-CNB_vlIZ.js} +1 -1
  53. package/cli/dist/web-ui/assets/{diagram-MPIPVDR6-DBZrcvRV.js → diagram-MPIPVDR6-hyhLuNp3.js} +1 -1
  54. package/cli/dist/web-ui/assets/{ebnfDiagram-ZINNZB2B-guH8XqK5.js → ebnfDiagram-ZINNZB2B-CJWaxsG5.js} +1 -1
  55. package/cli/dist/web-ui/assets/{editor-store-B581kWHa.js → editor-store-BxjPLrr9.js} +1 -1
  56. package/cli/dist/web-ui/assets/{editor.main-BDJb4JDA.js → editor.main-Czm6gHJH.js} +2 -2
  57. package/cli/dist/web-ui/assets/{elk-276RUBZZ-CeiKMULj.js → elk-276RUBZZ-D5Y00SxR.js} +1 -1
  58. package/cli/dist/web-ui/assets/{erDiagram-OPXOYQCR-sBAqBzrO.js → erDiagram-OPXOYQCR-BmYHBZJv.js} +1 -1
  59. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-D5vLpI9F.js +1 -0
  60. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-Cf58WNhf.js +1 -0
  61. package/cli/dist/web-ui/assets/{ganttDiagram-FUAMR5RP-C6_HpREX.js → ganttDiagram-FUAMR5RP-DbhB40jH.js} +1 -1
  62. package/cli/dist/web-ui/assets/{gitGraph-4MIJSDKK-BXoSq3Gg.js → gitGraph-4MIJSDKK-mjDyHNS1.js} +1 -1
  63. package/cli/dist/web-ui/assets/{gitGraphDiagram-X574FWY7-CGtaH2jU.js → gitGraphDiagram-X574FWY7-D7jHGUGu.js} +1 -1
  64. package/cli/dist/web-ui/assets/{htmlMode-D5olfuMo.js → htmlMode-BSBNaQvK.js} +1 -1
  65. package/cli/dist/web-ui/assets/{index-ClsikMuk.js → index-BtMp20L0.js} +6 -6
  66. package/cli/dist/web-ui/assets/{info-A6RAGUB7-DEwLfJ7B.js → info-A6RAGUB7-yf2Iyt5X.js} +1 -1
  67. package/cli/dist/web-ui/assets/{infoDiagram-VRGFBTTK-DCSOdK6X.js → infoDiagram-VRGFBTTK-CmWWZT96.js} +1 -1
  68. package/cli/dist/web-ui/assets/{ishikawaDiagram-OU5B5YK6-BseHnvYw.js → ishikawaDiagram-OU5B5YK6-NcOpKVNl.js} +1 -1
  69. package/cli/dist/web-ui/assets/{journeyDiagram-ZHPQQLJL-BRxQJTqW.js → journeyDiagram-ZHPQQLJL-dY4w9tp1.js} +1 -1
  70. package/cli/dist/web-ui/assets/{jsonMode-Cg5YHEwQ.js → jsonMode-BUaimt20.js} +1 -1
  71. package/cli/dist/web-ui/assets/{kanban-definition-PNTS6WVX-KI9YMfJk.js → kanban-definition-PNTS6WVX-BctMsDJJ.js} +1 -1
  72. package/cli/dist/web-ui/assets/{line-DprNiO-0.js → line-BYkTAP3U.js} +1 -1
  73. package/cli/dist/web-ui/assets/loader-circle-wVK1RLLa.js +1 -0
  74. package/cli/dist/web-ui/assets/{mermaid-parser.core-GTP4u3FU.js → mermaid-parser.core-BLRTQ_8m.js} +3 -3
  75. package/cli/dist/web-ui/assets/{mermaid.core-CNUJl-CG.js → mermaid.core-DGYOOYu5.js} +4 -4
  76. package/cli/dist/web-ui/assets/{mindmap-definition-NLK3R4M7-C2PcP9ry.js → mindmap-definition-NLK3R4M7-DtFEhmgs.js} +1 -1
  77. package/cli/dist/web-ui/assets/{packet-AYTQ26CC-CZLuLwvG.js → packet-AYTQ26CC-DG8Ws-Q6.js} +1 -1
  78. package/cli/dist/web-ui/assets/{pegDiagram-GJSIUBJH-Bm2hR9le.js → pegDiagram-GJSIUBJH-C1B_R8sV.js} +1 -1
  79. package/cli/dist/web-ui/assets/{pie-WAS4IAKB-CRzoh5ox.js → pie-WAS4IAKB-WpUKIR_Y.js} +1 -1
  80. package/cli/dist/web-ui/assets/{pieDiagram-5QR66LMP-CTJ2r9nd.js → pieDiagram-5QR66LMP-C7VoNMU4.js} +1 -1
  81. package/cli/dist/web-ui/assets/power-BNRlQx4o.js +1 -0
  82. package/cli/dist/web-ui/assets/{quadrantDiagram-O4NWA36T-CTKetN5z.js → quadrantDiagram-O4NWA36T-CXYTQ4y2.js} +1 -1
  83. package/cli/dist/web-ui/assets/{radar-RG4KPBEZ-DXjTvI5t.js → radar-RG4KPBEZ-C3VHLzXv.js} +1 -1
  84. package/cli/dist/web-ui/assets/{railroad-74A4TZTK-BDdQn4Gc.js → railroad-74A4TZTK-Py_5hLH_.js} +1 -1
  85. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-CqoDhjmj.js +1 -0
  86. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-DUWdDy3z.js +1 -0
  87. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-Co6yi1zs.js +1 -0
  88. package/cli/dist/web-ui/assets/{railroadDiagram-XR7U4H2S-B_YntG1t.js → railroadDiagram-XR7U4H2S-5OEyONOk.js} +1 -1
  89. package/cli/dist/web-ui/assets/{requirementDiagram-PLB6GJNP-CDjL2cNi.js → requirementDiagram-PLB6GJNP-DUJYTLHd.js} +1 -1
  90. package/cli/dist/web-ui/assets/{sankeyDiagram-IPEJSGJF-qXJEVvf1.js → sankeyDiagram-IPEJSGJF-Bedevch2.js} +1 -1
  91. package/cli/dist/web-ui/assets/{sequenceDiagram-PO4LG4MO-l-r7gLpE.js → sequenceDiagram-PO4LG4MO-pgraPAoD.js} +1 -1
  92. package/cli/dist/web-ui/assets/{server-O9q4QgxP.js → server-Ccbyj1qh.js} +1 -1
  93. package/cli/dist/web-ui/assets/{sidebar-store-BI5HJsXT.js → sidebar-store-Rkdixr53.js} +1 -1
  94. package/cli/dist/web-ui/assets/{stateDiagram-v2-GCMORJYK-IswgvzFJ.js → stateDiagram-v2-GCMORJYK-DALpfmXP.js} +1 -1
  95. package/cli/dist/web-ui/assets/{swimlanes-2SLR337P-JwNdJjRm.js → swimlanes-2SLR337P-DYo2RgRV.js} +1 -1
  96. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-Dxiovvmi.js +8 -0
  97. package/cli/dist/web-ui/assets/{terminal-store-DxSL6lew.js → terminal-store-DOTQJFag.js} +1 -1
  98. package/cli/dist/web-ui/assets/{theme-store-B-x3NJPZ.js → theme-store-7kL2_Dih.js} +1 -1
  99. package/cli/dist/web-ui/assets/{timeline-definition-EJHVYXUP-DZbLKd2p.js → timeline-definition-EJHVYXUP-teGYk-dY.js} +1 -1
  100. package/cli/dist/web-ui/assets/{timer-CPkvO7Hr.js → timer-DsflRbuo.js} +1 -1
  101. package/cli/dist/web-ui/assets/{treeView-Q6P3EWNA-ClDx_xC6.js → treeView-Q6P3EWNA-DsuuN89d.js} +1 -1
  102. package/cli/dist/web-ui/assets/{treemap-WGGIJYW6-RDLtBb4P.js → treemap-WGGIJYW6-BqqhgGGn.js} +1 -1
  103. package/cli/dist/web-ui/assets/{triangle-alert-RxeG6BcU.js → triangle-alert-BL4rmdOu.js} +1 -1
  104. package/cli/dist/web-ui/assets/{tsMode-D4E8Qd-x.js → tsMode-B6SPhuNF.js} +1 -1
  105. package/cli/dist/web-ui/assets/{use-i18n-BCKBlfpd.js → use-i18n-BvJYl_9l.js} +1 -1
  106. package/cli/dist/web-ui/assets/{usecaseDiagram-POWQR4AR-DEfQU35o.js → usecaseDiagram-POWQR4AR-2sD6xPnt.js} +1 -1
  107. package/cli/dist/web-ui/assets/{vennDiagram-UO4OBE2U-C4yxYnjL.js → vennDiagram-UO4OBE2U-DHLn-BEs.js} +1 -1
  108. package/cli/dist/web-ui/assets/{wardley-WFR3VGLG-wNwnrEey.js → wardley-WFR3VGLG-BD5dMb6v.js} +1 -1
  109. package/cli/dist/web-ui/assets/{wardleyDiagram-VNRHLVJA-nrPZlF5q.js → wardleyDiagram-VNRHLVJA-6V8TM6o7.js} +1 -1
  110. package/cli/dist/web-ui/assets/{workspace-dock-store-5JIgHIqh.js → workspace-dock-store-D1kqgYR-.js} +1 -1
  111. package/cli/dist/web-ui/assets/{xychartDiagram-PMCCYNJV-BXJAFZRI.js → xychartDiagram-PMCCYNJV-B5wGEmv3.js} +1 -1
  112. package/cli/dist/web-ui/assets/{zap-JdzyzkaE.js → zap-u2SXZ7au.js} +1 -1
  113. package/cli/dist/web-ui/index.html +9 -9
  114. package/cli/dist/web-ui/sw.js +1 -1
  115. package/cli/dist-server/2701.codebuddy.js +2 -2
  116. package/cli/dist-server/3080.codebuddy.js +1 -1
  117. package/cli/dist-server/3163.codebuddy.js +1 -1
  118. package/cli/dist-server/codebuddy.js +41 -39
  119. package/cli/dist-server/types/node/agent-task/agent-task.d.ts +1 -0
  120. package/cli/dist-server/types/node/permission/brokered-sandbox/host-service.d.ts +1 -0
  121. package/cli/dist-server/types/node/permission/sandbox-orchestrator.d.ts +2 -1
  122. package/cli/dist-server/types/node/server/formats/acp/acp-trace-context.d.ts +2 -0
  123. package/cli/dist-server/types/node/server/types.d.ts +8 -1
  124. package/cli/dist-server/types/node/utils/clipboard-utils.d.ts +1 -1
  125. package/cli/dist-server/types/node/utils/image-preparation-guard.d.ts +5 -1
  126. package/cli/dist-server/types/node/utils/request-scene.d.ts +5 -0
  127. package/cli/dist-server/types/vendor/cbc-core/node/utils/history-utils.d.ts +33 -8
  128. package/cli/dist-server/types/vendor/cbc-core/node/utils/input-item-utils.d.ts +27 -0
  129. package/cli/package.json +4 -4
  130. package/cli/product.cloudhosted.json +2 -2
  131. package/cli/product.internal.json +2 -2
  132. package/cli/product.ioa.json +2 -2
  133. package/cli/product.json +2 -2
  134. package/cli/product.selfhosted.json +2 -2
  135. package/package.json +1 -1
  136. package/cli/dist/web-ui/assets/architecture-7GRP2DOG-CHYM9JTs.js +0 -1
  137. package/cli/dist/web-ui/assets/channel-DtDG5p59.js +0 -1
  138. package/cli/dist/web-ui/assets/eventmodeling-NTZA5JFV-PAdtPpRo.js +0 -1
  139. package/cli/dist/web-ui/assets/flowDiagram-KWPJA3E3-EJkyCIxy.js +0 -1
  140. package/cli/dist/web-ui/assets/loader-circle-1kyJNWeb.js +0 -1
  141. package/cli/dist/web-ui/assets/power-CbA3xFVD.js +0 -1
  142. package/cli/dist/web-ui/assets/railroad-abnf-HS5TGJTU-C9Q7Ymc5.js +0 -1
  143. package/cli/dist/web-ui/assets/railroad-ebnf-LZEXJU2U-Bg_FzoOI.js +0 -1
  144. package/cli/dist/web-ui/assets/railroad-peg-WCYAUIDC-cvFGmoWK.js +0 -1
  145. package/cli/dist/web-ui/assets/swimlanesDiagram-TC7HE7FX-Bopn2-Vs.js +0 -8
@@ -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-BCKBlfpd.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-B-x3NJPZ.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-DxSL6lew.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-B581kWHa.js";import{t as B}from"./loader-circle-1kyJNWeb.js";import{t as V}from"./workspace-dock-store-5JIgHIqh.js";import{i as H,m as U,t as W}from"./composer-selection-ulujmy_S.js";import{t as G}from"./sidebar-store-BI5HJsXT.js";import{A as K,Cn as q,Dt as te,Et as ne,F as re,Ft as J,I as ie,Jt as ae,L as oe,Lt as se,M as ce,N as le,Nt as ue,O as de,Ot as Y,P as fe,Qt as pe,R as me,Rt as he,S as ge,Sn as _e,St as ve,Tt as ye,U as be,V as xe,Vt as Se,W as Ce,Xt as we,Yt as Te,Zt as X,_n as Ee,_t as De,an as Oe,bn as ke,d as Ae,dn as je,en as Me,f as Ne,fn as Pe,gn as Fe,gt as Ie,hn as Le,j as Re,jt as ze,k as Be,kt as Ve,mn as Z,nn as He,nt as Ue,o as We,on as Ge,ot as Ke,p as qe,qt as Je,rn as Ye,s as Xe,tn as Ze,tt as Qe,wn as $e,wt as et,x as tt,xt as nt,z as rt}from"./index-ClsikMuk.js";import{r as it,t as at}from"./TerminalPaneView-IZXBrZd0.js";import{t as ot}from"./SplitContainer-q9iSME5N.js";var st=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`}]]),ct=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`}]]),lt=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`}]]),ut=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`}]]),dt=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`}]]),ft=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`}]]),pt=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`}]]),mt=a(`panel-bottom`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),ht=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`}]]),gt=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`}]]),_t=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`}]]),vt=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(),yt=(0,Q.createContext)(E);function bt({store:e,children:t}){return(0,$.jsx)(yt.Provider,{value:e,children:t})}function xt(){return(0,Q.useContext)(yt)}function St(e){let t=xt();return i(t,e??(e=>e))}function Ct(e){let t=e.split(`/`).pop();return t&&t.trim()?t:e}function wt(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)}function Tt(e,t){wt(e,new Blob([t],{type:`text/plain;charset=utf-8`}))}async function Et(e,t){let n=await fetch(S(e),{headers:d()});if(!n.ok)throw Error(`HTTP ${n.status}`);wt(t,await n.blob())}function Dt(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 Ot(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 kt({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(Ot(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)(Ne,{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)(Ne,{name:t.name,type:t.type,size:16}),(0,$.jsx)(`span`,{className:`breadcrumb-dropdown-item-name`,children:t.name}),(0,$.jsx)(qe,{entry:t,label:i(`editor.symbolicLink`),className:`ml-auto order-10`})]},t.path)})})})]})]})}var At=_();function jt(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 Mt({path:e,content:t,language:n,onContentChange:r,onSave:i,minimap:a=!0,onCursorChange:o}){let{t:s}=u(),c=xt(),{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 K().then(()=>{e||v(!0)}),()=>{e=!0}},[]),(0,Q.useEffect)(()=>{if(y)return ce({onClose:()=>b(null),isInside:e=>le(e,x.current)})},[y]),(0,Q.useLayoutEffect)(()=>{y&&x.current&&fe(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=St(e=>e.pendingReveal);return(0,Q.useEffect)(()=>{if(!A||A.path!==e)return;if(d.current){jt(d.current,e,c);return}let t=0,n=setInterval(()=>{t++,d.current?(jt(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)(re,{path:Re(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,At.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 Nt({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)(lt,{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)(Pe,{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 Pt=l(e=>({progress:null,setProgress:t=>e({progress:t})}));async function Ft(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 It(){return Ft(`status`)}async function Lt(e,t){return(await Ft(`check-ignore`,{paths:e,cwd:t})).paths}async function Rt(e){await Ft(`stage`,{paths:e},!1)}async function zt(e){await Ft(`unstage`,{paths:e},!1)}async function Bt(e){return Ft(`commit`,{message:e},!1)}async function Vt(e,t){return Ft(`diff`,{path:e,staged:t})}async function Ht(e,t){await Ft(`discard`,{paths:e,useTrash:t},!1)}async function Ut(){return(await Ft(`branches`)).branches}async function Wt(e){return Ft(`branch/switch`,{name:e},!1)}async function Gt(e,t=!0){return Ft(`branch/create`,{name:e,checkout:t},!1)}async function Kt(){return Ft(`push`,void 0,!1)}async function qt(){return Ft(`pull`,void 0,!1)}async function Jt(e){return(await Ft(`log`,{limit:e})).entries}var Yt=3e3,Xt=15e3,Zt=3e4;function Qt(e){return e.hidden?null:e.pushLive?Zt:e.focused?Yt:Xt}function $t(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 en(e,t){return t?!e||typeof e!=`object`?!1:e.repositoryRoot===t:!0}var tn=null,nn=null,rn=!1,an=!1,on=`app:git`,sn=!1,cn=!1,ln=null;function un(){return sn&&cn}function dn(){return $t(un())}function fn(){tn&&=(clearTimeout(tn),null)}function pn(){if(fn(),!rn)return;let e=Qt(dn());e!==null&&(tn=setTimeout(()=>{tn=null,bn.getState().refresh().finally(pn)},e))}function mn(e=!1){rn&&(fn(),Qt(dn())!==null&&bn.getState().refresh(e).finally(pn))}function hn(){if(ln)return;let e=Ke(),t=n(null),r=()=>{let n=e.getStatus(t)===`ready`&&e.isStreamAligned(t,on);n!==sn&&(sn=n,n?mn(!0):pn())},i=e.onAppEvent(e=>{e.baseUrl===t&&e.frame.streamId===on&&e.frame.event.event===`changed`&&en(e.frame.event.data,bn.getState().repositoryRoot)&&mn(!0)}),a=e.onAck(e=>{e.baseUrl===t&&r()}),o=e.onStatusChange(e=>{e===t&&r()});e.subscribeAppStream(t,on),ln=()=>{i(),a(),o(),e.unsubscribeAppStream(t,on),sn=!1}}function gn(){mn()}function _n(){an||typeof window>`u`||typeof document>`u`||(document.addEventListener(`visibilitychange`,gn),window.addEventListener(`focus`,gn),window.addEventListener(`blur`,pn),an=!0)}function vn(){an&&=(document.removeEventListener(`visibilitychange`,gn),window.removeEventListener(`focus`,gn),window.removeEventListener(`blur`,pn),!1)}async function yn(){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 bn=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(nn&&(await nn,!n))return;let r=(async()=>{t().files.length===0&&!t().isGitRepo&&e({loading:!0,error:null});try{let t=await It();cn=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})}})();nn=r;try{await r}finally{nn===r&&(nn=null)}},loadBranches:async()=>{e({branchesLoading:!0});try{e({branches:await Ut(),branchesLoading:!1})}catch{e({branchesLoading:!1})}},stageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Rt([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 zt([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 Rt(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 zt(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 Ht([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 Ht(r.map(e=>e.path)),i.length>0&&await Ht(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 Bt(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 Kt();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 qt();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 Wt(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 Gt(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 Vt(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(rn)return;let e=D();e||=await yn(),e&&(rn=!0,_n(),hn(),pn())},stopWatching:async()=>{rn=!1,vn(),ln?.(),ln=null,fn()}}));P(async()=>{let e=bn.getState();await e.stopWatching(),e.refresh(),await e.startWatching()});function xn(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 Sn(e,t){if(![`switchBranch`,`createBranch`,`push`,`pull`].includes(t))return!1;let n=xn(e,t);return n===`ide.scm.error.busy`||n===`ide.scm.error.switchFailed`||n===`ide.scm.error.operationFailed`}function Cn({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=tt(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)(Je,{size:14,className:`branch-picker-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-name`,children:e||d(`ide.scm.noBranch`)})]}),s]}),f&&(0,At.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)(ze,{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)(ze,{size:14}),(0,$.jsx)(`span`,{children:m.trim()?d(`ide.scm.createBranchNamed`,{name:m.trim()}):d(`ide.scm.newBranchPlaceholder`)})]})}),E.length>0&&(0,$.jsx)(En,{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 wn=40,Tn=24;function En({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*wn;t<e.scrollTop?e.scrollTop=t:t+wn>e.scrollTop+u&&(e.scrollTop=t+wn-u)},[i,u]);let f=(0,Q.useCallback)(e=>{l(e.target.scrollTop)},[]),p=e.length*wn+(t>0&&n>0?Tn:0)+(n>0?Tn:0),m=Math.max(0,Math.floor(c/wn)-2),h=Math.min(e.length,Math.ceil((c+u)/wn)+2),g=[];t>0&&n>0&&m===0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:Tn},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:Tn},children:`remotes`},`label-remote`)),g.push((0,$.jsx)(Dn,{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*wn,left:0,right:0},children:g})})})}function Dn({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)(Je,{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)(Ee,{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 On={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 kn({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)(Mn,{}),(0,$.jsx)(An,{}),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:On[a]?p(On[a]):a}),f]})]});if(a!==`editor`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Mn,{}),(0,$.jsx)(An,{})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:On[a]?p(On[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)(jn,{isDirty:o,saveStatus:s,saveError:c,translate:p}),(0,$.jsx)(Mn,{}),(0,$.jsx)(An,{}),(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 An(){let{t:e}=u(),t=Pt(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 jn({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 Mn(){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}=bn(),[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=Sn(o.message,t.operation);Qe.error(e(xn(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)(Je,{size:12}),(0,$.jsx)(`span`,{children:t||e(`ide.scm.noBranch`)})]}),m&&(0,$.jsx)(Cn,{currentBranch:t,branches:n,branchesLoading:r,operationInProgress:a,onSwitch:_,onCreate:v,onLoadBranches:d,defaultOpen:!0,onClose:()=>h(!1)})]}):null}var Nn=`application/x-codebuddy-editor-tab`;function Pn(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 Fn(e){return JSON.stringify(e)}function In(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 Ln=`application/x-codebuddy-terminal-tab`,Rn=`bottom-panel`;function zn(e){return JSON.stringify(e)}function Bn(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 Vn(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Hn({actions:e,onRequestClose:t,tabsOverride:n,activeTabIdOverride:r,groupId:i=`editor-main`,onActivateTab:a,onMoveTab:o}){let{t:s}=u(),c=xt(),{tabs:l,activeTabId:d,rootPath:f,setActiveTab:p,closeSavedTabs:m,reorderTabs:h,pinTab:g,unpinTab:_}=St(),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:Vn()})},[y]);let P=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:-150,behavior:Vn()})},[]),I=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:150,behavior:Vn()})},[]),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(Nn,Fn({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=In(e.dataTransfer.getData(Nn)),r=Bn(e.dataTransfer.getData(Ln)),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)},[]),q=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&be(t.path),V()},[v,V]),te=(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;be(e)}else t&&be(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]),J=(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]),ie=(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)(Le,{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)(Ne,{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)(ue,{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)(Ie,{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:()=>J(x.tabId),children:s(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>q(x.tabId),children:s(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>te(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:ie,children:s(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`all`}),children:s(`editor.closeAll`)})]})]})]})}var Un=rt,Wn=S;function Gn({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=ie(Wn(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)(se,{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)(ze,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(`fit`),h({x:0,y:0})},title:r(`filePreview.fitToWindow`),children:(0,$.jsx)(Se,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(1),h({x:0,y:0})},title:r(`filePreview.actualSize`),children:(0,$.jsx)(te,{size:16})})]})]})}function Kn({path:e,name:t}){let{t:n}=u(),r=ie(Wn(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 qn({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)(Un,{style:n===`dark`?oe:me,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 Jn({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:qn,a:xe},children:e})})})}function Yn({content:e,name:t}){return(0,$.jsx)(`iframe`,{srcDoc:e,className:`file-preview-html`,title:t,sandbox:`allow-forms`,referrerPolicy:`no-referrer`})}function Xn({path:e}){let{t}=u(),n=ie(Wn(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 Zn({name:e}){let{t}=u();return(0,$.jsxs)(`div`,{className:`file-preview-binary`,children:[(0,$.jsx)(pe,{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 Qn({path:e,name:t,content:n,viewMode:r,onImageInfo:i,onZoomChange:a}){switch(r){case`image`:return(0,$.jsx)(Gn,{path:e,onImageInfo:i,onZoomChange:a});case`svg`:return(0,$.jsx)(Gn,{path:e,onImageInfo:i,onZoomChange:a});case`video`:return(0,$.jsx)(Kn,{path:e,name:t});case`markdown`:return(0,$.jsx)(Jn,{content:n});case`html`:return(0,$.jsx)(Yn,{content:n,name:t});case`pdf`:return(0,$.jsx)(Xn,{path:e});case`binary`:return(0,$.jsx)(Zn,{name:t});default:return null}}function $n(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 er(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 tr(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($n(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}var nr=e=>Symbol.iterator in e,rr=e=>`entries`in e,ir=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},ar=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function or(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:nr(e)&&nr(t)?rr(e)&&rr(t)?ir(e,t):ar(e,t):ir({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function sr(e){let t=Q.useRef(void 0);return n=>{let r=e(n);return or(t.current,r)?t.current:t.current=r}}function cr(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 lr(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 ur(e){return`file-tree-item-${encodeURIComponent(e)}`}function dr({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=xt(),{isExpanded:h,isSelected:g,isMultiSelected:_,isRenaming:v,showHiddenFiles:y}=St(sr(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=cr(!!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(er(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:ur(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)(Ne,{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:lr(S)}),(0,$.jsx)(qe,{entry:e,label:p(`editor.symbolicLink`),className:`ml-1`})]}),b&&h&&(0,$.jsx)(`div`,{role:`group`,children:E.map(e=>(0,$.jsx)(fr,{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 fr=(0,Q.memo)(dr);function pr(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 mr({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}=St(),H=bn(e=>e.files),[W,K]=(0,Q.useState)(new Set),q=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=++q.current;if(!i||!a){K(new Set);return}let t=L(a);if(t.length===0){K(new Set);return}let n=setTimeout(()=>{Lt(t,i).then(t=>{q.current===e&&K(new Set(t))}).catch(()=>{q.current===e&&K(new Set)})},500);return()=>clearTimeout(n)},[i,a]);let te=(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]),ne=(0,Q.useMemo)(()=>w(a?.children,R),[a?.children,R]),[re,J]=(0,Q.useState)(!1),[ie,ae]=(0,Q.useState)(!1),[oe,se]=(0,Q.useState)(null),ce=Pt(e=>e.setProgress),le=(0,Q.useRef)(null),ue=(0,Q.useRef)(null),de=(0,Q.useRef)(f);de.current=f;let[Y,pe]=(0,Q.useState)(null),me=(0,Q.useRef)([]),he=(0,Q.useCallback)(e=>{ae(!1),_(e)},[_]),_e=(0,Q.useCallback)(async(t,n)=>{await S(t,n),e?.(t,t)},[e,S]),ve=(0,Q.useCallback)((e,t)=>{N(e,t)},[N]),ye=(0,Q.useCallback)((e,t)=>{e.preventDefault(),de.current.has(t)||y(t),pe({x:e.clientX,y:e.clientY,path:t})},[y]),xe=(0,Q.useCallback)(()=>pe(null),[]);(0,Q.useLayoutEffect)(()=>{Y&&ue.current&&fe(ue.current,Y.x,Y.y)},[Y]);let Se=(0,Q.useCallback)(()=>{Y&&(A(Y.path),pe(null))},[Y,A]),X=(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=X(n,t);if(e)return e}return null},[]),Ee=Y?X(a,Y.path)?.type===`directory`:!1,De=(0,Q.useCallback)(e=>{let t=e??[...f];if(t.length===0)return;let n=t.some(e=>X(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){se(t);return}F(t).catch(()=>void 0)},[F,X,f,h,a]),Oe=(0,Q.useCallback)(()=>{if(!Y)return;let e=T(Y.path,f);pe(null),De(e)},[Y,De,f]),ke=(0,Q.useCallback)(()=>{let e=oe;se(null),e&&F(e).catch(()=>void 0)},[F,oe]),je=(0,Q.useCallback)(e=>{if(!Y)return;let t=X(a,Y.path)?.type===`directory`?Y.path:Y.path.substring(0,Y.path.lastIndexOf(`/`));if(t){l.has(t)||v(t);let n=`${t}/__new_${e}__`;e===`file`?j(n):ee(n)}pe(null)},[Y,l,X,j,ee,v,a]),Ne=(0,Q.useCallback)(()=>{Y&&(be(Y.path),pe(null))},[Y]),Pe=(0,Q.useCallback)(()=>{if(Y&&i){let e=Y.path.startsWith(i+`/`)?Y.path.slice(i.length+1):Y.path;be(e),pe(null)}},[Y,i]),Ie=(0,Q.useCallback)(()=>{Y&&(be(Y.path.split(`/`).pop()||Y.path),pe(null))},[Y]),Le=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path);e?.type===`file`&&_e(e.path,e.name),pe(null)},[Y,X,_e,a]),Re=(0,Q.useCallback)(()=>{Y&&(Ce(U(Y.path)),pe(null))},[Y]),ze=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path);if(!e){pe(null);return}let n=e.type===`directory`?`${e.name||Ct(e.path)}.zip`:e.name||Ct(e.path);Et(e.path,n).catch(()=>{Qe.error(t(`editor.downloadFailed`))}),pe(null)},[Y,X,t,a]),Be=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path),t=e?er(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))),pe(null)},[Y,X,a]),He=(0,Q.useCallback)(e=>{me.current=e},[]),Ue=(0,Q.useCallback)((e,n)=>{let r=Array.from(n.dataTransfer.files);if(r.length>0){me.current=[];let n=r.reduce((e,t)=>e+t.size,0);ce({completed:0,total:r.length,fileName:r[0]?.name??``,loadedBytes:0,totalBytes:n}),(async()=>{try{let n=await tr(e,r,x,(e,t,n,r,i)=>ce({completed:e,total:t,fileName:n,loadedBytes:r,totalBytes:i}));Qe.success(t(`editor.uploadComplete`,{count:n}))}catch(e){let n=e instanceof Error?e.message:String(e);Qe.error(`${t(`editor.uploadFailed`)}: ${n}`)}finally{await C().catch(()=>void 0),ce(null)}})();return}let i=me.current;me.current=[],i.length!==0&&I(i,e).catch(e=>{let n=e instanceof Error?e.message:String(e);Qe.error(`${t(`editor.moveFailed`)}: ${n}`)})},[I,C,t]),We=(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?X(a,d):null;function i(e,t=!1){y(e,{shift:t}),requestAnimationFrame(()=>pr(le.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&&_e(r.path,r.name);break;case`F2`:e.preventDefault(),d&&A(d);break;case`Delete`:case`Backspace`:e.preventDefault(),f.size>0&&De()}},[a,l,d,f,g,R,X,y,v,A,_e,De]);(0,Q.useLayoutEffect)(()=>{if(!p)return;let e=requestAnimationFrame(()=>{pr(le.current,p),m(null)});return()=>cancelAnimationFrame(e)},[p,m,a]);let Ge=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":!re,onClick:()=>J(e=>!e),children:[re?(0,$.jsx)(Z,{size:12,style:{flexShrink:0}}):(0,$.jsx)(Fe,{size:12,style:{flexShrink:0}}),(0,$.jsx)(`span`,{className:`file-tree-section-name`,children:Ge.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)(ut,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:O,title:t(`editor.newFolder`),"aria-label":t(`editor.newFolder`),children:(0,$.jsx)(Te,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>ae(!0),title:t(`editor.openFolder`),"aria-label":t(`editor.openFolder`),children:(0,$.jsx)(we,{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)(Ve,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:E,title:t(`editor.collapseAll`),"aria-label":t(`editor.collapseAll`),children:(0,$.jsx)(ct,{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)(Me,{size:14}):(0,$.jsx)(Ze,{size:14})})]})]}),ie&&(0,$.jsx)(Ae,{initialPath:i||n?.cwd||`/`,onSelect:he,onClose:()=>ae(!1)}),oe&&(0,$.jsx)(ge,{title:t(`editor.deleteConfirmTitle`),message:t(`editor.deleteConfirmMessage`,{count:oe.length}),confirmLabel:t(`editor.delete`),danger:!0,onConfirm:ke,onCancel:()=>se(null)}),!re&&(0,$.jsxs)(`div`,{className:`file-tree-content`,ref:le,role:`tree`,"aria-label":t(`editor.fileTreeAriaLabel`),"aria-multiselectable":`true`,"aria-activedescendant":d?ur(d):void 0,tabIndex:0,onKeyDown:We,onClick:()=>le.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(),Ue(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)(Ve,{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)(Ve,{size:12}),t(`editor.refresh`)]}),n?.cwd&&i!==n.cwd&&(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(n.cwd),children:[(0,$.jsx)(ft,{size:12}),t(`editor.backToWorkDir`)]})]}),ne.map(e=>(0,$.jsx)(fr,{node:e,depth:0,gitStatusMap:te,gitIgnoredPaths:W,onToggleExpand:v,onSelect:y,onOpenFile:_e,onConfirmRename:ve,onCancelRename:P,onContextMenu:ye,onDragStart:He,onDrop:Ue},e.path)),ne.length===0&&a?.children&&(0,$.jsx)(`div`,{className:`file-tree-empty`,children:t(`editor.emptyFolder`)})]}),Y&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:xe}),(0,$.jsxs)(`div`,{ref:ue,className:`editor-context-menu`,style:{left:Y.x,top:Y.y},children:[!Ee&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:Le,children:t(`editor.open`)}),(0,$.jsx)(`button`,{onClick:Re,children:t(`editor.addToChat`)})]}),Ee&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:()=>je(`file`),children:t(`editor.newFile`)}),(0,$.jsx)(`button`,{onClick:()=>je(`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:Ne,children:t(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:Pe,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 hr(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 gr(e,t){return t||e>=4}function _r(e,t,n){return t<=0?-1:((e<0?n>0?-1:0:e)+n+t)%t}function vr(e,t){fetch(`/api/v1/pty/${e}/input/send`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify({data:t})}).catch(()=>{})}function yr(){let{t:e}=u(),t=xt(),{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=gr(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 q=(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)},[]),te=(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=Bn(e.dataTransfer.getData(Ln));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&&(vr(l.ptySessionId,it(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:q,onDragOver:te,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=hr(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(Ln,zn({paneId:t,sourceGroupId:Rn})),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=Bn(e.dataTransfer.getData(Ln));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)(Ie,{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)(pt,{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:_r(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)(ve,{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)(Ee,{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)(ze,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:g,title:e(a?`ide.restorePanel`:`ide.maximizePanel`),children:a?(0,$.jsx)(he,{size:16}):(0,$.jsx)(Se,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:V,title:e(`ide.hidePanel`),children:(0,$.jsx)(Fe,{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)(at,{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)(ze,{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 br(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=Xe({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 xr(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Sr({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=xt(),{rootPath:p,pinTab:m,unpinTab:h}=St(),[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:xr()})},[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;be(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:xr()}),children:(0,$.jsx)(Le,{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(Ln,zn({paneId:f,sourceGroupId:i})):e.dataTransfer.setData(Nn,Fn({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=In(e.dataTransfer.getData(Nn)),n=Bn(e.dataTransfer.getData(Ln)),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)(ve,{size:14}):(0,$.jsx)(Ne,{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)(ue,{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)(Ie,{size:12})})]},a)})}),S&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsRight`),onClick:()=>E.current?.scrollBy({left:150,behavior:xr()}),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 Cr(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 wr({node:e,tabs:t,tabActions:n,activeGroupId:r,onActivateTab:i,onRequestClose:a,onOpenFile:o,renderContent:s}){let c=xt(),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 Pn(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(Nn),r=t.includes(Ln),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=Bn(t.dataTransfer.getData(Ln));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=In(t.dataTransfer.getData(Nn));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=Cr(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)(Sr,{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)(Hn,{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)(at,{paneId:e,initialCwd:_,editorStore:c})},e)),!w&&s(T)]}),v&&(0,$.jsx)(`div`,{className:`editor-dock-drop-preview `+v,"aria-hidden":`true`})]})}function Tr({node:e,path:t,...n}){let r=k(e=>e.setEditorDockSplitRatio);return e.type===`group`?(0,$.jsx)(wr,{node:e,path:t,...n}):(0,$.jsxs)(ot,{direction:e.direction,ratio:e.ratio,onRatioChange:e=>r(t,e),children:[(0,$.jsx)(Tr,{node:e.children[0],path:[...t,0],...n}),(0,$.jsx)(Tr,{node:e.children[1],path:[...t,1],...n})]})}function Er(e){let t=k(e=>e.editorDock);return(0,$.jsx)(`div`,{className:`editor-dock-layout`,children:(0,$.jsx)(Tr,{...e,node:t.root,activeGroupId:t.activeGroupId,path:[]})})}function Dr(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 Or=20,kr=3;function Ar({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>kr)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,Or);let e=[];for(let t of d){let n=Dr(o,t.relativePath);n.match&&e.push({entry:t,score:n.score})}return e.sort((e,t)=>t.score-e.score),e.slice(0,Or).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)(Ne,{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 jr({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)(X,{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)(ne,{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)(Je,{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)(mt,{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)(J,{size:22,strokeWidth:1.5})})]})]})}function Mr(){try{let e=localStorage.getItem(`cbc_search_prefs`);if(e)return{...Nr,...JSON.parse(e)}}catch{}return Nr}var Nr={viewMode:`tree`,caseSensitive:!1,isRegex:!1,wholeWord:!1,query:``,includePattern:``,excludePattern:``,useDefaultExcludes:!0};function Pr(e){try{localStorage.setItem(`cbc_search_prefs`,JSON.stringify(e))}catch{}}function Fr(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 Ir=Mr(),Lr,Rr=0;function zr(){Rr+=1,Lr?.abort(),Lr=void 0}var Br={searching:!1,results:[],totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0};function Vr(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 Hr=l((e,t)=>({query:Ir.query,isRegex:Ir.isRegex,caseSensitive:Ir.caseSensitive,wholeWord:Ir.wholeWord,includePattern:Ir.includePattern,excludePattern:Ir.excludePattern,useDefaultExcludes:Ir.useDefaultExcludes,viewMode:Ir.viewMode,results:[],searching:!1,totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0,setQuery:n=>{zr(),e({query:n,...Br}),Pr(Fr({...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){Lr?.abort(),e({...Br});return}Lr?.abort();let u=new AbortController;Lr=u;let f=++Rr,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:Vr(o),excludeGlobs:Vr(s),useIgnoreFiles:c,maxResults:500})});if(f!==Rr)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!==Rr||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!==Rr||u.signal.aborted)return;e({searching:!1,error:t instanceof Error?t.message:`Search failed`})}finally{Lr===u&&(Lr=void 0)}},cancelSearch:()=>{zr(),e({searching:!1})},invalidateSearch:()=>{zr(),e(Br)},toggleRegex:()=>{zr(),e(e=>({isRegex:!e.isRegex,...Br})),Pr(Fr(t()))},toggleCaseSensitive:()=>{zr(),e(e=>({caseSensitive:!e.caseSensitive,...Br})),Pr(Fr(t()))},toggleWholeWord:()=>{zr(),e(e=>({wholeWord:!e.wholeWord,...Br})),Pr(Fr(t()))},setIncludePattern:n=>{zr(),e({includePattern:n,...Br}),Pr(Fr({...t(),includePattern:n}))},setExcludePattern:n=>{zr(),e({excludePattern:n,...Br}),Pr(Fr({...t(),excludePattern:n}))},toggleUseDefaultExcludes:()=>{zr(),e(e=>({useDefaultExcludes:!e.useDefaultExcludes,...Br})),Pr(Fr(t()))},setViewMode:n=>{e({viewMode:n}),Pr(Fr(t()))},clear:()=>{zr(),e({query:``,includePattern:``,excludePattern:``,...Br}),Pr(Fr(t()))}}));function Ur(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 Wr(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 Gr(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 Kr(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 qr(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 Jr(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 Yr=300;function Xr(){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}=Hr(),{openFile:A}=St(),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(()=>{})},Yr),()=>{N.current&&clearTimeout(N.current)}},[t,n,r,i,a,o,s,j,y,x]);let V=(0,Q.useMemo)(()=>Kr(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)(()=>Ur(l),[l]),U=(0,Q.useMemo)(()=>c===`tree`?Wr(H,P):Gr(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]),q=(0,Q.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),K()),e.key===`Escape`&&(d?b():(k(),M.current?.focus()))},[b,k,K,d]),te=(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)},[]),J=(0,Q.useCallback)(()=>{F(new Set(V))},[V]),ie=(0,Q.useCallback)((e,n)=>{A(e,void 0,n?{line:n,query:t.trim()}:void 0)},[A,t]),ae=(0,Q.useCallback)(()=>{k(),M.current?.focus()},[k]),oe=(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=Jr(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()},[]),se=(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)(Zr,{label:e(`ide.search.refresh`),disabled:!t.trim(),onClick:K,children:(0,$.jsx)(Ve,{size:15,className:d?`animate-spin`:``})}),(0,$.jsx)(Zr,{label:e(`ide.search.clear`),disabled:!t&&f===0,onClick:ae,children:(0,$.jsx)(Ie,{size:16})}),(0,$.jsx)(Zr,{label:e(`ide.search.toggleFilters`),active:I,onClick:()=>L(e=>!e),children:(0,$.jsx)(et,{size:15})}),(0,$.jsx)(Zr,{label:e(c===`tree`?`ide.listView`:`ide.treeView`),onClick:()=>O(c===`tree`?`list`:`tree`),children:c===`tree`?(0,$.jsx)(pt,{size:15}):(0,$.jsx)(gt,{size:15})}),(0,$.jsx)(Zr,{label:e(G?`editor.collapseAll`:`editor.expandAll`),disabled:f===0,onClick:G?re:J,children:G?(0,$.jsx)(dt,{size:15}):(0,$.jsx)(_t,{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)(Fe,{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:q,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)(st,{size:15})}),(0,$.jsx)(Qr,{active:i,label:e(`ide.search.wholeWord`),onClick:w,children:(0,$.jsx)(vt,{size:15})}),(0,$.jsx)(Qr,{active:n,label:e(`ide.search.regex`),onClick:S,children:(0,$.jsx)(ht,{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:q,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:q,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)(ye,{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)(nt,{size:11,fill:`currentColor`})})]}),(0,$.jsxs)(`div`,{className:`search-results`,role:`tree`,"aria-label":e(`ide.search.resultsLabel`),"aria-busy":d,onKeyDown:oe,children:[c===`tree`&&H.map((e,n)=>(0,$.jsx)($r,{node:e,depth:0,parentId:void 0,isFirst:n===0,focusedRowId:W,setFocusedRowId:z,expandedPaths:P,onToggle:te,onFileClick:ie,query:t,highlightOptions:se},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:()=>te(e.path),title:e.path,children:[P.has(e.path)?(0,$.jsx)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ne,{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)(ei,{matches:e.matches,filePath:e.path,parentId:e.path,level:2,indent:26,query:t,highlightOptions:se,focusedRowId:W,setFocusedRowId:z,onFileClick:ie})]},e.path)),!d&&t&&f===0&&!g&&!m&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)(ne,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:e(`ide.search.noResults`)})]})]})]})}function Zr({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 $r({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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(ae,{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)($r,{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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ne,{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)(ei,{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 ei({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)(ti,{text:e.text,query:a,options:o,ranges:e.matchRanges})]},d)})})}function ti({text:e,query:t,options:n,ranges:r}){let i=r??qr(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 ni(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 ri(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(ii)}function ii(e){if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return ii({...t,name:`${e.name}/${t.name}`})}return{...e,children:e.children.map(ii)}}var ai={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 oi({file:e,onStage:t,onUnstage:n,onDiscard:r,onOpenFile:i}){let{t:a}=u(),o=(0,Q.useCallback)(t=>{t.stopPropagation(),be(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)(Oe,{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)(He,{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)(De,{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)(ze,{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)(se,{size:13})})]})}function si({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)(Fe,{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=ai[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)(Ne,{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)(oi,{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 ci({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=ui(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=ui(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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(ae,{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)(De,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:m,title:s(`ide.scm.stageAll`),children:(0,$.jsx)(ze,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:g,title:s(`ide.scm.unstageAll`),children:(0,$.jsx)(se,{size:13})})]}),f&&(0,$.jsx)(`span`,{className:`scm-tree-dir-dot`,style:{background:f}})]}),c&&e.children.map(e=>e.isDir?(0,$.jsx)(ci,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path):(0,$.jsx)(li,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path))]})}function li({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let s=e.data,c=ai[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)(Ne,{name:e.name,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:e.name}),(0,$.jsx)(oi,{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 ui(e){return e.isDir?e.children.flatMap(ui):e.data?[e.data]:[]}function di({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=ri(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)(Fe,{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)(ci,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(li,{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)(ci,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(li,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))})}function fi(e){return e.viewMode===`tree`?(0,$.jsx)(di,{...e}):(0,$.jsx)(si,{...e})}var pi=[`var(--color-accent-green)`,`var(--color-accent-blue)`,`var(--color-accent-yellow)`,`var(--color-accent-purple)`,`var(--color-accent-red)`];function mi(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 hi(){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 Jt(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)(Fe,{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)(Ve,{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:pi[t%pi.length]}}),(0,$.jsx)(`span`,{className:`scm-graph-msg`,children:e.message}),(0,$.jsx)(`span`,{className:`scm-graph-time`,children:mi(e.date)})]},e.hash))]})]})}function gi({onDidOpenFile:e}={}){let{t}=u(),n=xt(),{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}=bn(),j=St(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)(()=>{_(),bn.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}=ni(r.path,i,M,r.staged,r.status);if(k.getState().bottomPanelMaximized&&k.setState({bottomPanelMaximized:!1}),o===`unavailable`){Qe.warn(t(`ide.scm.binaryRevisionPreviewUnavailable`));return}try{let t=a;if(o===`preview`)await n.getState().openFile(a);else{let e=await Vt(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}=ni(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)(pt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`tree`?`active`:``}`,onClick:()=>P(`tree`),title:t(`ide.treeView`),children:(0,$.jsx)(gt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(Ve,{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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.repositories`)})]}),F&&(0,$.jsx)(Cn,{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)($e,{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)(_e,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(Ve,{size:12,className:a?`animate-spin`:``})})]})]})}),g&&V&&(0,$.jsx)(_i,{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)(Fe,{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)(_i,{feedback:g,onRetry:H,onClose:A}),L&&(0,$.jsxs)($.Fragment,{children:[G.length>0&&(0,$.jsx)(fi,{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)(se,{size:13})}),onUnstage:p?void 0:b,onSelect:U,onOpenFile:W}),K.length>0&&(0,$.jsx)(fi,{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)(De,{size:13})}),(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>x(),disabled:p,title:t(`ide.scm.stageAll`),children:(0,$.jsx)(ze,{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)(Ee,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:t(`ide.scm.noChanges`)})]})]})]}),(0,$.jsx)(hi,{})]})]}):(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)(Je,{size:32,strokeWidth:1,style:{opacity:.2}}),(0,$.jsx)(`div`,{className:`ide-panel-placeholder-text`,children:t(`ide.scm.notGitRepo`)})]})]})}function _i({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(xn(e.message,e.operation)),a=Sn(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)(je,{size:16}):(0,$.jsx)(Pe,{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)(Y,{size:12}),r(`ide.scm.feedback.retry`)]})]}),(0,$.jsx)(`button`,{className:`scm-operation-close`,onClick:n,title:r(`common.close`),children:(0,$.jsx)(Ie,{size:14})})]})}function vi({activePanel:e,onMenuClick:t}){return(0,$.jsxs)(`div`,{className:`ide-side-panel-content`,children:[e===`explorer`&&(0,$.jsx)(mr,{onMenuClick:t}),e===`search`&&(0,$.jsx)(Xr,{}),e===`source-control`&&(0,$.jsx)(gi,{})]})}var yi=640;function bi({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}=St(),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<=yi);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=br({direction:`horizontal`,initialSize:P,minSize:160,maxSize:600,collapsible:!0,defaultCollapsed:F,onResize:I,onCollapse:L,ariaLabel:b(`ide.resizeSidePanel`)}),q=br({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`)}),te=bn(e=>e.files.length);(0,Q.useEffect)(()=>(bn.getState().refresh(),bn.getState().startWatching(),()=>{bn.getState().stopWatching()}),[]);let ne=typeof navigator<`u`&&navigator.platform.includes(`Mac`),re=(e=n)=>M?(0,$.jsx)(xi,{t:b}):e?e.loadStatus===`ready`?e.viewMode===`diff`&&e.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Be,{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)(Mt,{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)(Qn,{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)(Nt,{tab:e,onRetry:()=>A(e.id)}):y?(0,$.jsx)(xi,{t:b}):(0,$.jsx)(Si,{isMac:ne,t:b}),J=l&&E&&(0,$.jsx)(Ar,{isOpen:l,onClose:()=>d(!1),onSelect:e=>{D(e),d(!1)},rootPath:E,showHiddenFiles:j}),ie=y?`explorer`:N??`explorer`;(0,Q.useEffect)(()=>{y&&S&&T(M||!n?`explorer`:`editor`)},[n?.path,S,ee?.id,M,y]);let ae=S&&w===`explorer`,oe=y?S?ae:!K.collapsed:!(!N||K.collapsed),se=!S||!ae,ce=!q.collapsed,le=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{if(!y)return;let e=n?.path??(M?`__open__`:null);e&&le.current!==e&&(le.current=e,F&&L(!1))},[n?.path,M,y,L,F]),(0,$.jsxs)(`div`,{className:`ide-layout`,ref:x,children:[J,(0,$.jsxs)(`div`,{className:`ide-layout-row`,ref:K.containerRef,children:[!y&&(0,$.jsx)(jr,{gitFileCount:te}),oe&&(0,$.jsxs)(`div`,{className:`ide-side-panel`,style:{width:S?`100%`:K.size},children:[(0,$.jsx)(vi,{activePanel:ie,onMenuClick:e}),!S&&(0,$.jsx)(`div`,{...K.sashProps})]}),(0,$.jsxs)(`div`,{className:`ide-main-area`,ref:q.containerRef,style:{display:se?`flex`:`none`},children:[!B&&(0,$.jsx)(`div`,{className:`ide-editor-area`,style:{flex:ce?void 0:1,height:ce?`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)(we,{size:14})}),M||!n||!E?(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}):(0,$.jsx)(kt,{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)(ve,{size:14})})]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:re()})]}):(0,$.jsx)(Er,{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)(kt,{filePath:e.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),re(e)]})})}),ce&&(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)(yr,{})})]})]})]}),(0,$.jsx)(`div`,{className:`ide-statusbar-drag-zone`,onPointerDown:q.sashProps.onPointerDown,onDoubleClick:q.sashProps.onDoubleClick,children:(0,$.jsx)(kn,{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)(ve,{size:12}),(0,$.jsx)(`span`,{children:b(`ide.terminal`)})]}):void 0})})]})}function xi({t:e}){return(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(we,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:e(`dock.openFile`)}),(0,$.jsx)(`p`,{children:e(`dock.pickFromTree`)})]})}function Si({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:We,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 Ci(){let{t:e}=u(),t=k(e=>e.activeMobilePanel),n=k(e=>e.setActiveMobilePanel),r=bn(e=>e.files.length),i=[{id:`explorer`,icon:(0,$.jsx)(X,{size:20,strokeWidth:1.5}),label:e(`ide.explorer`)},{id:`search`,icon:(0,$.jsx)(ne,{size:20,strokeWidth:1.5}),label:e(`ide.search`)},{id:`source-control`,icon:(0,$.jsx)(Je,{size:20,strokeWidth:1.5}),label:e(`ide.sourceControl`),badge:r},{id:`terminal`,icon:(0,$.jsx)(ve,{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 wi=1e3,Ti={line:1,col:1,selectedChars:0,selectedLines:0};function Ei(e){return`editor-save:${e}`}function Di({editorStore:e=E,...t}){return(0,$.jsx)(bt,{store:e,children:(0,$.jsx)(Oi,{...t})})}function Oi({onMenuClick:e,isVisible:n=!0,hideActivityBar:r=!1}){let{t:i,resolved:a}=u(),o=xt(),{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}=St(),[D,O]=(0,Q.useState)(!1),[j]=(0,Q.useState)(()=>Dt(wi)),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=de(),[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 te=(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 re=(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===re.current)return;re.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&&te()},[L,l,s.length,te]),(0,Q.useEffect)(()=>{L&&w&&l&&te()},[L,w,l,te]),(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,ie=s.map(e=>e.id).join(`\0`),ae=C(N),oe=!!(ae&&R(ae)),se=(0,Q.useRef)(l),ce=(0,Q.useRef)(s.length>0);(0,Q.useEffect)(()=>{if(r||L)return;if(ie)ce.current=!0;else if(!ce.current)return;let e=se.current!==l;se.current=l;let t=G.current,n=!!(t&&t.tabKey!==ie),i=!!(n&&t?.itemId===ae);n&&(G.current=null),F(ie?ie.split(`\0`):[],oe&&(!e||i)?void 0:l)},[l,oe,N,ie,r,L,F]),(0,Q.useEffect)(()=>{s.length===0||s.some(e=>e.id===l)||E(s[0].id)},[l,E,s]);let le=V(e=>e.quickOpenNonce),ue=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),Y=(0,Q.useCallback)((e,t)=>{let n=o.getState().tabs.find(e=>e.id===t);V.getState().ensureFileTab(e,n?.name??Ct(e),t)},[o]),fe=(0,Q.useRef)(null),pe=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{r&&le!==pe.current&&(pe.current=le,le>0&&O(!0))},[r,le]);let me=i(`editor.saveFailed`),he=i(`app.retry`),_e=i(`editor.overwrite`),ve=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{let e=ve.current,t=new Set,n=Ue.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),Qe.error(`${me}${n.saveError?`: ${n.saveError}`:``}`,{id:Ei(n.id),durationMs:0,action:{label:n.externalChange?_e:he,onClick:()=>o.getState().saveTab(n.id,{forceExternal:!0})}}))}for(let r of e.keys())t.has(r)||(n(Ei(r)),e.delete(r))},[_e,a,he,me,s]),(0,Q.useEffect)(()=>()=>{let e=ve.current,t=Ue.getState().removeToast;for(let n of e.keys())t(Ei(n));e.clear()},[]);let ye=(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[be,xe]=(0,Q.useState)(null),Se=(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),xe(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=fe.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&&Se({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,Se,r,n,E,M]);let Ce=(0,Q.useCallback)(e=>{j.cancel(e),v(e,{forceExternal:!0}).catch(()=>!1)},[j,v]),[Te,X]=(0,Q.useState)({}),Ee=(0,Q.useCallback)((e,t,n,r,i)=>{X(a=>({...a,[e]:{line:t,col:n,selectedChars:r,selectedLines:i}}))},[]),De=J?Te[J.id]??Ti:Ti,[Oe,Ae]=(0,Q.useState)({}),[je,Me]=(0,Q.useState)({}),Ne=(0,Q.useCallback)((e,t)=>{Ae(n=>({...n,[e]:t}))},[]),Pe=(0,Q.useCallback)((e,t)=>{Me(n=>({...n,[e]:t}))},[]),Fe=J?Oe[J.id]??null:null,Ie=J?je[J.id]??1:1,[Le,Re]=(0,Q.useState)(new Set),ze=(0,Q.useCallback)(e=>{let t=o.getState().tabs.find(t=>t.id===e);return!(!t||t.viewMode!==`markdown`&&t.viewMode!==`html`||Le.has(e))},[o,Le]),Ve=J?.viewMode===`markdown`||J?.viewMode===`html`,Z=!!(J&&ze(J.id)),We=(0,Q.useCallback)(()=>{l&&Re(e=>{let t=new Set(e);return t.has(l)?t.delete(l):t.add(l),t})},[l]),Ke=null;Ve&&(Ke=Z?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.preview`),"aria-label":i(`editor.preview`),children:(0,$.jsx)(ke,{size:16})}):(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.source`),"aria-label":i(`editor.source`),children:(0,$.jsx)(Ge,{size:16})}));let qe=(0,Q.useCallback)(()=>{let e=new URLSearchParams(window.location.search);e.set(`standalone`,`1`),window.open(`#/editor?${e.toString()}`,`_blank`,`noopener,noreferrer`)},[]),Je=(0,Q.useCallback)(()=>{if(!J)return;let e=J.name||Ct(J.path);if(J.viewMode===`editor`||J.viewMode===`markdown`||J.viewMode===`html`){Tt(e,J.content??``);return}Et(J.path,e).catch(()=>{Qe.error(i(`editor.downloadFailed`))})},[J,i]),Xe=(0,$.jsxs)($.Fragment,{children:[Ke,J?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Je,title:i(`editor.download`),"aria-label":i(`editor.download`),children:(0,$.jsx)(Ye,{size:16})}):null,(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:qe,title:i(`editor.openInNewWindow`),"aria-label":i(`editor.openInNewWindow`),children:(0,$.jsx)(He,{size:16})})]}),Ze=(0,Q.useCallback)(()=>{be&&(be.targetIds.forEach(e=>j.cancel(e)),x(be.targetIds),xe(null))},[j,x,be]),$e=(0,Q.useCallback)(()=>{G.current=null,xe(null)},[]),et=be?(0,$.jsx)(ge,{title:i(`editor.closeSaveFailedTitle`,{count:be.failedTabIds.length}),message:i(`editor.closeSaveFailedMessage`,{count:be.failedTabIds.length}),confirmLabel:i(`editor.discardAndClose`),danger:!0,onConfirm:Ze,onCancel:$e}):null,tt=k(e=>e.activeMobilePanel),nt=k(e=>e.createBottomTerminal),rt=k(e=>e.bottomTerminals);if((0,Q.useEffect)(()=>{L&&tt===`terminal`&&rt.length===0&&nt()},[L,tt,rt.length,nt]),L){let t=D&&d&&(0,$.jsx)(Ar,{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`||Z?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Mt,{path:J.path,content:J.content,language:J.language,onContentChange:e=>ye(J.id,e),onSave:()=>Ce(J.id),minimap:!1,onCursorChange:(e,t,n,r)=>Ee(J.id,e,t,n,r)})}):(0,$.jsx)(Qn,{path:J.path,name:J.name,content:J.content,viewMode:J.viewMode,onImageInfo:e=>Ne(J.id,e),onZoomChange:e=>Pe(J.id,e)}):(0,$.jsx)(Nt,{tab:J,onRetry:()=>g(J.id)})),(0,$.jsxs)(`div`,{className:`editor-view editor-view-mobile`,ref:fe,children:[t,et,(0,$.jsxs)(`div`,{className:`mobile-panel-content`,children:[tt===`explorer`&&(0,$.jsx)(`div`,{className:`editor-sidebar editor-sidebar-mobile`,children:(0,$.jsx)(mr,{onMenuClick:e})}),tt===`search`&&(0,$.jsx)(Xr,{}),tt===`source-control`&&(0,$.jsx)(gi,{}),tt===`terminal`&&(0,$.jsx)(`div`,{className:`mobile-terminal-panel`,children:(0,$.jsx)(yr,{})})]}),(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)(q,{size:18})}),(0,$.jsx)(`div`,{className:`editor-mobile-tabs-wrap`,children:(0,$.jsx)(Hn,{actions:Xe,onRequestClose:Se})})]}),n,J&&(0,$.jsx)(kn,{language:J.language,cursorLine:De.line,cursorColumn:De.col,selectedCount:De.selectedChars,selectedLines:De.selectedLines,viewMode:Z?`editor`:J.viewMode,isDirty:J.isDirty,saveStatus:J.saveStatus,saveError:J.saveError,imageInfo:Fe,zoom:Ie})]})}),!z&&tt===`explorer`&&(0,$.jsx)(kn,{language:``,cursorLine:1,cursorColumn:1}),(0,$.jsx)(Ci,{})]})}if(r){let t=D&&d&&(0,$.jsx)(Ar,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T});if(ue?.kind===`explorer`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(mr,{onMenuClick:e,onDidOpenFile:Y})}),(0,$.jsx)(kn,{language:``,cursorLine:1,cursorColumn:1})]});if(ue?.kind===`search`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(Xr,{})})]});if(ue?.kind===`scm`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(gi,{onDidOpenFile:Y})})]});let n=ue?.kind===`editor`&&ue.editorTabId&&J?.id===ue.editorTabId?J:null,r;if(!ue?.filePath)r=(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(we,{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===ue.editorTabId)??null;r=e?(0,$.jsx)(Nt,{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)(Be,{path:n.path,oldText:n.diffData.oldText,newText:n.diffData.newText})}):n.viewMode===`editor`||Z?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Mt,{path:n.path,content:n.content,language:n.language,onContentChange:e=>ye(n.id,e),onSave:()=>Ce(n.id),minimap:!1,onCursorChange:(e,t,r,i)=>Ee(n.id,e,t,r,i)})}):(0,$.jsx)(Qn,{path:n.path,name:n.name,content:n.content,viewMode:n.viewMode,onImageInfo:e=>Ne(n.id,e),onZoomChange:e=>Pe(n.id,e)});return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsxs)(`div`,{className:`ide-layout ide-atomic-editor`,children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[n&&d?(0,$.jsx)(kt,{filePath:n.path,rootPath:d,onSegmentClick:S,onOpenFile:h}):(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}),Xe]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:r}),(0,$.jsx)(kn,{language:n?.language||``,cursorLine:De.line,cursorColumn:De.col,selectedCount:De.selectedChars,selectedLines:De.selectedLines,viewMode:n?Z?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:Fe,zoom:Ie})]})]})}return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[et,(0,$.jsx)(bi,{onMenuClick:e,tabs:s,activeTab:oe?null:J,tabActions:Xe,cursorInfo:De,imageInfo:Fe,previewZoom:Ie,isSourceMode:Z,isSourceModeForTab:ze,quickOpenVisible:D,setQuickOpenVisible:O,onContentChange:ye,onSave:Ce,onActivateTab:E,onRequestClose:Se,onCursorChange:Ee,onImageInfo:Ne,onZoomChange:Pe,hideActivityBar:r})]})}export{Di 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-BvJYl_9l.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-7kL2_Dih.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-DOTQJFag.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-BxjPLrr9.js";import{t as B}from"./loader-circle-wVK1RLLa.js";import{t as V}from"./workspace-dock-store-D1kqgYR-.js";import{i as H,m as U,t as W}from"./composer-selection-ulujmy_S.js";import{t as G}from"./sidebar-store-Rkdixr53.js";import{A as K,Cn as q,Dt as te,Et as ne,F as re,Ft as J,I as ie,Jt as ae,L as oe,Lt as se,M as ce,N as le,Nt as ue,O as de,Ot as Y,P as fe,Qt as pe,R as me,Rt as he,S as ge,Sn as _e,St as ve,Tt as ye,U as be,V as xe,Vt as Se,W as Ce,Xt as we,Yt as Te,Zt as X,_n as Ee,_t as De,an as Oe,bn as ke,d as Ae,dn as je,en as Me,f as Ne,fn as Pe,gn as Fe,gt as Ie,hn as Le,j as Re,jt as ze,k as Be,kt as Ve,mn as Z,nn as He,nt as Ue,o as We,on as Ge,ot as Ke,p as qe,qt as Je,rn as Ye,s as Xe,tn as Ze,tt as Qe,wn as $e,wt as et,x as tt,xt as nt,z as rt}from"./index-BtMp20L0.js";import{r as it,t as at}from"./TerminalPaneView-Cs-7CKCw.js";import{t as ot}from"./SplitContainer-DlEN5H4s.js";var st=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`}]]),ct=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`}]]),lt=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`}]]),ut=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`}]]),dt=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`}]]),ft=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`}]]),pt=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`}]]),mt=a(`panel-bottom`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}],[`path`,{d:`M3 15h18`,key:`5xshup`}]]),ht=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`}]]),gt=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`}]]),_t=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`}]]),vt=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(),yt=(0,Q.createContext)(E);function bt({store:e,children:t}){return(0,$.jsx)(yt.Provider,{value:e,children:t})}function xt(){return(0,Q.useContext)(yt)}function St(e){let t=xt();return i(t,e??(e=>e))}function Ct(e){let t=e.split(`/`).pop();return t&&t.trim()?t:e}function wt(e,t){let n=URL.createObjectURL(t),r=document.createElement(`a`);r.href=n,r.download=e,r.click(),URL.revokeObjectURL(n)}function Tt(e,t){wt(e,new Blob([t],{type:`text/plain;charset=utf-8`}))}async function Et(e,t){let n=await fetch(S(e),{headers:d()});if(!n.ok)throw Error(`HTTP ${n.status}`);wt(t,await n.blob())}function Dt(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 Ot(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 kt({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(Ot(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)(Ne,{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)(Ne,{name:t.name,type:t.type,size:16}),(0,$.jsx)(`span`,{className:`breadcrumb-dropdown-item-name`,children:t.name}),(0,$.jsx)(qe,{entry:t,label:i(`editor.symbolicLink`),className:`ml-auto order-10`})]},t.path)})})})]})]})}var At=_();function jt(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 Mt({path:e,content:t,language:n,onContentChange:r,onSave:i,minimap:a=!0,onCursorChange:o}){let{t:s}=u(),c=xt(),{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 K().then(()=>{e||v(!0)}),()=>{e=!0}},[]),(0,Q.useEffect)(()=>{if(y)return ce({onClose:()=>b(null),isInside:e=>le(e,x.current)})},[y]),(0,Q.useLayoutEffect)(()=>{y&&x.current&&fe(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=St(e=>e.pendingReveal);return(0,Q.useEffect)(()=>{if(!A||A.path!==e)return;if(d.current){jt(d.current,e,c);return}let t=0,n=setInterval(()=>{t++,d.current?(jt(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)(re,{path:Re(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,At.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 Nt({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)(lt,{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)(Pe,{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 Pt=l(e=>({progress:null,setProgress:t=>e({progress:t})}));async function Ft(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 It(){return Ft(`status`)}async function Lt(e,t){return(await Ft(`check-ignore`,{paths:e,cwd:t})).paths}async function Rt(e){await Ft(`stage`,{paths:e},!1)}async function zt(e){await Ft(`unstage`,{paths:e},!1)}async function Bt(e){return Ft(`commit`,{message:e},!1)}async function Vt(e,t){return Ft(`diff`,{path:e,staged:t})}async function Ht(e,t){await Ft(`discard`,{paths:e,useTrash:t},!1)}async function Ut(){return(await Ft(`branches`)).branches}async function Wt(e){return Ft(`branch/switch`,{name:e},!1)}async function Gt(e,t=!0){return Ft(`branch/create`,{name:e,checkout:t},!1)}async function Kt(){return Ft(`push`,void 0,!1)}async function qt(){return Ft(`pull`,void 0,!1)}async function Jt(e){return(await Ft(`log`,{limit:e})).entries}var Yt=3e3,Xt=15e3,Zt=3e4;function Qt(e){return e.hidden?null:e.pushLive?Zt:e.focused?Yt:Xt}function $t(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 en(e,t){return t?!e||typeof e!=`object`?!1:e.repositoryRoot===t:!0}var tn=null,nn=null,rn=!1,an=!1,on=`app:git`,sn=!1,cn=!1,ln=null;function un(){return sn&&cn}function dn(){return $t(un())}function fn(){tn&&=(clearTimeout(tn),null)}function pn(){if(fn(),!rn)return;let e=Qt(dn());e!==null&&(tn=setTimeout(()=>{tn=null,bn.getState().refresh().finally(pn)},e))}function mn(e=!1){rn&&(fn(),Qt(dn())!==null&&bn.getState().refresh(e).finally(pn))}function hn(){if(ln)return;let e=Ke(),t=n(null),r=()=>{let n=e.getStatus(t)===`ready`&&e.isStreamAligned(t,on);n!==sn&&(sn=n,n?mn(!0):pn())},i=e.onAppEvent(e=>{e.baseUrl===t&&e.frame.streamId===on&&e.frame.event.event===`changed`&&en(e.frame.event.data,bn.getState().repositoryRoot)&&mn(!0)}),a=e.onAck(e=>{e.baseUrl===t&&r()}),o=e.onStatusChange(e=>{e===t&&r()});e.subscribeAppStream(t,on),ln=()=>{i(),a(),o(),e.unsubscribeAppStream(t,on),sn=!1}}function gn(){mn()}function _n(){an||typeof window>`u`||typeof document>`u`||(document.addEventListener(`visibilitychange`,gn),window.addEventListener(`focus`,gn),window.addEventListener(`blur`,pn),an=!0)}function vn(){an&&=(document.removeEventListener(`visibilitychange`,gn),window.removeEventListener(`focus`,gn),window.removeEventListener(`blur`,pn),!1)}async function yn(){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 bn=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(nn&&(await nn,!n))return;let r=(async()=>{t().files.length===0&&!t().isGitRepo&&e({loading:!0,error:null});try{let t=await It();cn=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})}})();nn=r;try{await r}finally{nn===r&&(nn=null)}},loadBranches:async()=>{e({branchesLoading:!0});try{e({branches:await Ut(),branchesLoading:!1})}catch{e({branchesLoading:!1})}},stageFile:async n=>{if(!t().repositoryOperationInProgress){e({repositoryOperationInProgress:!0,operationFeedback:null});try{await Rt([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 zt([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 Rt(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 zt(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 Ht([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 Ht(r.map(e=>e.path)),i.length>0&&await Ht(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 Bt(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 Kt();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 qt();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 Wt(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 Gt(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 Vt(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(rn)return;let e=D();e||=await yn(),e&&(rn=!0,_n(),hn(),pn())},stopWatching:async()=>{rn=!1,vn(),ln?.(),ln=null,fn()}}));P(async()=>{let e=bn.getState();await e.stopWatching(),e.refresh(),await e.startWatching()});function xn(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 Sn(e,t){if(![`switchBranch`,`createBranch`,`push`,`pull`].includes(t))return!1;let n=xn(e,t);return n===`ide.scm.error.busy`||n===`ide.scm.error.switchFailed`||n===`ide.scm.error.operationFailed`}function Cn({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=tt(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)(Je,{size:14,className:`branch-picker-icon`}),(0,$.jsx)(`span`,{className:`branch-picker-name`,children:e||d(`ide.scm.noBranch`)})]}),s]}),f&&(0,At.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)(ze,{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)(ze,{size:14}),(0,$.jsx)(`span`,{children:m.trim()?d(`ide.scm.createBranchNamed`,{name:m.trim()}):d(`ide.scm.newBranchPlaceholder`)})]})}),E.length>0&&(0,$.jsx)(En,{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 wn=40,Tn=24;function En({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*wn;t<e.scrollTop?e.scrollTop=t:t+wn>e.scrollTop+u&&(e.scrollTop=t+wn-u)},[i,u]);let f=(0,Q.useCallback)(e=>{l(e.target.scrollTop)},[]),p=e.length*wn+(t>0&&n>0?Tn:0)+(n>0?Tn:0),m=Math.max(0,Math.floor(c/wn)-2),h=Math.min(e.length,Math.ceil((c+u)/wn)+2),g=[];t>0&&n>0&&m===0&&g.push((0,$.jsx)(`div`,{className:`branch-picker-group-label`,style:{height:Tn},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:Tn},children:`remotes`},`label-remote`)),g.push((0,$.jsx)(Dn,{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*wn,left:0,right:0},children:g})})})}function Dn({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)(Je,{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)(Ee,{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 On={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 kn({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)(Mn,{}),(0,$.jsx)(An,{}),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:On[a]?p(On[a]):a}),f]})]});if(a!==`editor`)return(0,$.jsxs)(`div`,{className:`editor-statusbar`,children:[(0,$.jsxs)(`div`,{className:`editor-statusbar-left`,children:[(0,$.jsx)(Mn,{}),(0,$.jsx)(An,{})]}),(0,$.jsxs)(`div`,{className:`editor-statusbar-right`,children:[(0,$.jsx)(`span`,{className:`editor-statusbar-item`,children:On[a]?p(On[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)(jn,{isDirty:o,saveStatus:s,saveError:c,translate:p}),(0,$.jsx)(Mn,{}),(0,$.jsx)(An,{}),(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 An(){let{t:e}=u(),t=Pt(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 jn({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 Mn(){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}=bn(),[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=Sn(o.message,t.operation);Qe.error(e(xn(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)(Je,{size:12}),(0,$.jsx)(`span`,{children:t||e(`ide.scm.noBranch`)})]}),m&&(0,$.jsx)(Cn,{currentBranch:t,branches:n,branchesLoading:r,operationInProgress:a,onSwitch:_,onCreate:v,onLoadBranches:d,defaultOpen:!0,onClose:()=>h(!1)})]}):null}var Nn=`application/x-codebuddy-editor-tab`;function Pn(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 Fn(e){return JSON.stringify(e)}function In(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 Ln=`application/x-codebuddy-terminal-tab`,Rn=`bottom-panel`;function zn(e){return JSON.stringify(e)}function Bn(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 Vn(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Hn({actions:e,onRequestClose:t,tabsOverride:n,activeTabIdOverride:r,groupId:i=`editor-main`,onActivateTab:a,onMoveTab:o}){let{t:s}=u(),c=xt(),{tabs:l,activeTabId:d,rootPath:f,setActiveTab:p,closeSavedTabs:m,reorderTabs:h,pinTab:g,unpinTab:_}=St(),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:Vn()})},[y]);let P=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:-150,behavior:Vn()})},[]),I=(0,Q.useCallback)(()=>{D.current?.scrollBy({left:150,behavior:Vn()})},[]),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(Nn,Fn({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=In(e.dataTransfer.getData(Nn)),r=Bn(e.dataTransfer.getData(Ln)),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)},[]),q=(0,Q.useCallback)(e=>{let t=v.find(t=>t.id===e);t&&be(t.path),V()},[v,V]),te=(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;be(e)}else t&&be(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]),J=(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]),ie=(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)(Le,{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)(Ne,{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)(ue,{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)(Ie,{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:()=>J(x.tabId),children:s(`editor.pin`)}),(0,$.jsx)(`div`,{className:`editor-context-separator`}),(0,$.jsx)(`button`,{onClick:()=>q(x.tabId),children:s(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:()=>te(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:ie,children:s(`editor.closeSaved`)}),(0,$.jsx)(`button`,{onClick:()=>re({kind:`all`}),children:s(`editor.closeAll`)})]})]})]})}var Un=rt,Wn=S;function Gn({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=ie(Wn(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)(se,{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)(ze,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(`fit`),h({x:0,y:0})},title:r(`filePreview.fitToWindow`),children:(0,$.jsx)(Se,{size:16})}),(0,$.jsx)(`button`,{onClick:()=>{s(1),h({x:0,y:0})},title:r(`filePreview.actualSize`),children:(0,$.jsx)(te,{size:16})})]})]})}function Kn({path:e,name:t}){let{t:n}=u(),r=ie(Wn(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 qn({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)(Un,{style:n===`dark`?oe:me,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 Jn({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:qn,a:xe},children:e})})})}function Yn({content:e,name:t}){return(0,$.jsx)(`iframe`,{srcDoc:e,className:`file-preview-html`,title:t,sandbox:`allow-forms`,referrerPolicy:`no-referrer`})}function Xn({path:e}){let{t}=u(),n=ie(Wn(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 Zn({name:e}){let{t}=u();return(0,$.jsxs)(`div`,{className:`file-preview-binary`,children:[(0,$.jsx)(pe,{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 Qn({path:e,name:t,content:n,viewMode:r,onImageInfo:i,onZoomChange:a}){switch(r){case`image`:return(0,$.jsx)(Gn,{path:e,onImageInfo:i,onZoomChange:a});case`svg`:return(0,$.jsx)(Gn,{path:e,onImageInfo:i,onZoomChange:a});case`video`:return(0,$.jsx)(Kn,{path:e,name:t});case`markdown`:return(0,$.jsx)(Jn,{content:n});case`html`:return(0,$.jsx)(Yn,{content:n,name:t});case`pdf`:return(0,$.jsx)(Xn,{path:e});case`binary`:return(0,$.jsx)(Zn,{name:t});default:return null}}function $n(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 er(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 tr(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($n(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}var nr=e=>Symbol.iterator in e,rr=e=>`entries`in e,ir=(e,t)=>{let n=e instanceof Map?e:new Map(e.entries()),r=t instanceof Map?t:new Map(t.entries());if(n.size!==r.size)return!1;for(let[e,t]of n)if(!r.has(e)||!Object.is(t,r.get(e)))return!1;return!0},ar=(e,t)=>{let n=e[Symbol.iterator](),r=t[Symbol.iterator](),i=n.next(),a=r.next();for(;!i.done&&!a.done;){if(!Object.is(i.value,a.value))return!1;i=n.next(),a=r.next()}return!!i.done&&!!a.done};function or(e,t){return Object.is(e,t)?!0:typeof e!=`object`||!e||typeof t!=`object`||!t||Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)?!1:nr(e)&&nr(t)?rr(e)&&rr(t)?ir(e,t):ar(e,t):ir({entries:()=>Object.entries(e)},{entries:()=>Object.entries(t)})}function sr(e){let t=Q.useRef(void 0);return n=>{let r=e(n);return or(t.current,r)?t.current:t.current=r}}function cr(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 lr(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 ur(e){return`file-tree-item-${encodeURIComponent(e)}`}function dr({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=xt(),{isExpanded:h,isSelected:g,isMultiSelected:_,isRenaming:v,showHiddenFiles:y}=St(sr(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=cr(!!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(er(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:ur(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)(Ne,{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:lr(S)}),(0,$.jsx)(qe,{entry:e,label:p(`editor.symbolicLink`),className:`ml-1`})]}),b&&h&&(0,$.jsx)(`div`,{role:`group`,children:E.map(e=>(0,$.jsx)(fr,{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 fr=(0,Q.memo)(dr);function pr(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 mr({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}=St(),H=bn(e=>e.files),[W,K]=(0,Q.useState)(new Set),q=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{let e=++q.current;if(!i||!a){K(new Set);return}let t=L(a);if(t.length===0){K(new Set);return}let n=setTimeout(()=>{Lt(t,i).then(t=>{q.current===e&&K(new Set(t))}).catch(()=>{q.current===e&&K(new Set)})},500);return()=>clearTimeout(n)},[i,a]);let te=(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]),ne=(0,Q.useMemo)(()=>w(a?.children,R),[a?.children,R]),[re,J]=(0,Q.useState)(!1),[ie,ae]=(0,Q.useState)(!1),[oe,se]=(0,Q.useState)(null),ce=Pt(e=>e.setProgress),le=(0,Q.useRef)(null),ue=(0,Q.useRef)(null),de=(0,Q.useRef)(f);de.current=f;let[Y,pe]=(0,Q.useState)(null),me=(0,Q.useRef)([]),he=(0,Q.useCallback)(e=>{ae(!1),_(e)},[_]),_e=(0,Q.useCallback)(async(t,n)=>{await S(t,n),e?.(t,t)},[e,S]),ve=(0,Q.useCallback)((e,t)=>{N(e,t)},[N]),ye=(0,Q.useCallback)((e,t)=>{e.preventDefault(),de.current.has(t)||y(t),pe({x:e.clientX,y:e.clientY,path:t})},[y]),xe=(0,Q.useCallback)(()=>pe(null),[]);(0,Q.useLayoutEffect)(()=>{Y&&ue.current&&fe(ue.current,Y.x,Y.y)},[Y]);let Se=(0,Q.useCallback)(()=>{Y&&(A(Y.path),pe(null))},[Y,A]),X=(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=X(n,t);if(e)return e}return null},[]),Ee=Y?X(a,Y.path)?.type===`directory`:!1,De=(0,Q.useCallback)(e=>{let t=e??[...f];if(t.length===0)return;let n=t.some(e=>X(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){se(t);return}F(t).catch(()=>void 0)},[F,X,f,h,a]),Oe=(0,Q.useCallback)(()=>{if(!Y)return;let e=T(Y.path,f);pe(null),De(e)},[Y,De,f]),ke=(0,Q.useCallback)(()=>{let e=oe;se(null),e&&F(e).catch(()=>void 0)},[F,oe]),je=(0,Q.useCallback)(e=>{if(!Y)return;let t=X(a,Y.path)?.type===`directory`?Y.path:Y.path.substring(0,Y.path.lastIndexOf(`/`));if(t){l.has(t)||v(t);let n=`${t}/__new_${e}__`;e===`file`?j(n):ee(n)}pe(null)},[Y,l,X,j,ee,v,a]),Ne=(0,Q.useCallback)(()=>{Y&&(be(Y.path),pe(null))},[Y]),Pe=(0,Q.useCallback)(()=>{if(Y&&i){let e=Y.path.startsWith(i+`/`)?Y.path.slice(i.length+1):Y.path;be(e),pe(null)}},[Y,i]),Ie=(0,Q.useCallback)(()=>{Y&&(be(Y.path.split(`/`).pop()||Y.path),pe(null))},[Y]),Le=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path);e?.type===`file`&&_e(e.path,e.name),pe(null)},[Y,X,_e,a]),Re=(0,Q.useCallback)(()=>{Y&&(Ce(U(Y.path)),pe(null))},[Y]),ze=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path);if(!e){pe(null);return}let n=e.type===`directory`?`${e.name||Ct(e.path)}.zip`:e.name||Ct(e.path);Et(e.path,n).catch(()=>{Qe.error(t(`editor.downloadFailed`))}),pe(null)},[Y,X,t,a]),Be=(0,Q.useCallback)(()=>{if(!Y)return;let e=X(a,Y.path),t=e?er(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))),pe(null)},[Y,X,a]),He=(0,Q.useCallback)(e=>{me.current=e},[]),Ue=(0,Q.useCallback)((e,n)=>{let r=Array.from(n.dataTransfer.files);if(r.length>0){me.current=[];let n=r.reduce((e,t)=>e+t.size,0);ce({completed:0,total:r.length,fileName:r[0]?.name??``,loadedBytes:0,totalBytes:n}),(async()=>{try{let n=await tr(e,r,x,(e,t,n,r,i)=>ce({completed:e,total:t,fileName:n,loadedBytes:r,totalBytes:i}));Qe.success(t(`editor.uploadComplete`,{count:n}))}catch(e){let n=e instanceof Error?e.message:String(e);Qe.error(`${t(`editor.uploadFailed`)}: ${n}`)}finally{await C().catch(()=>void 0),ce(null)}})();return}let i=me.current;me.current=[],i.length!==0&&I(i,e).catch(e=>{let n=e instanceof Error?e.message:String(e);Qe.error(`${t(`editor.moveFailed`)}: ${n}`)})},[I,C,t]),We=(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?X(a,d):null;function i(e,t=!1){y(e,{shift:t}),requestAnimationFrame(()=>pr(le.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&&_e(r.path,r.name);break;case`F2`:e.preventDefault(),d&&A(d);break;case`Delete`:case`Backspace`:e.preventDefault(),f.size>0&&De()}},[a,l,d,f,g,R,X,y,v,A,_e,De]);(0,Q.useLayoutEffect)(()=>{if(!p)return;let e=requestAnimationFrame(()=>{pr(le.current,p),m(null)});return()=>cancelAnimationFrame(e)},[p,m,a]);let Ge=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":!re,onClick:()=>J(e=>!e),children:[re?(0,$.jsx)(Z,{size:12,style:{flexShrink:0}}):(0,$.jsx)(Fe,{size:12,style:{flexShrink:0}}),(0,$.jsx)(`span`,{className:`file-tree-section-name`,children:Ge.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)(ut,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:O,title:t(`editor.newFolder`),"aria-label":t(`editor.newFolder`),children:(0,$.jsx)(Te,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:()=>ae(!0),title:t(`editor.openFolder`),"aria-label":t(`editor.openFolder`),children:(0,$.jsx)(we,{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)(Ve,{size:14})}),(0,$.jsx)(`button`,{className:`file-tree-section-action`,onClick:E,title:t(`editor.collapseAll`),"aria-label":t(`editor.collapseAll`),children:(0,$.jsx)(ct,{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)(Me,{size:14}):(0,$.jsx)(Ze,{size:14})})]})]}),ie&&(0,$.jsx)(Ae,{initialPath:i||n?.cwd||`/`,onSelect:he,onClose:()=>ae(!1)}),oe&&(0,$.jsx)(ge,{title:t(`editor.deleteConfirmTitle`),message:t(`editor.deleteConfirmMessage`,{count:oe.length}),confirmLabel:t(`editor.delete`),danger:!0,onConfirm:ke,onCancel:()=>se(null)}),!re&&(0,$.jsxs)(`div`,{className:`file-tree-content`,ref:le,role:`tree`,"aria-label":t(`editor.fileTreeAriaLabel`),"aria-multiselectable":`true`,"aria-activedescendant":d?ur(d):void 0,tabIndex:0,onKeyDown:We,onClick:()=>le.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(),Ue(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)(Ve,{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)(Ve,{size:12}),t(`editor.refresh`)]}),n?.cwd&&i!==n.cwd&&(0,$.jsxs)(`button`,{className:`file-tree-retry-btn`,onClick:()=>_(n.cwd),children:[(0,$.jsx)(ft,{size:12}),t(`editor.backToWorkDir`)]})]}),ne.map(e=>(0,$.jsx)(fr,{node:e,depth:0,gitStatusMap:te,gitIgnoredPaths:W,onToggleExpand:v,onSelect:y,onOpenFile:_e,onConfirmRename:ve,onCancelRename:P,onContextMenu:ye,onDragStart:He,onDrop:Ue},e.path)),ne.length===0&&a?.children&&(0,$.jsx)(`div`,{className:`file-tree-empty`,children:t(`editor.emptyFolder`)})]}),Y&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`div`,{className:`editor-context-overlay`,onClick:xe}),(0,$.jsxs)(`div`,{ref:ue,className:`editor-context-menu`,style:{left:Y.x,top:Y.y},children:[!Ee&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:Le,children:t(`editor.open`)}),(0,$.jsx)(`button`,{onClick:Re,children:t(`editor.addToChat`)})]}),Ee&&(0,$.jsxs)($.Fragment,{children:[(0,$.jsx)(`button`,{onClick:()=>je(`file`),children:t(`editor.newFile`)}),(0,$.jsx)(`button`,{onClick:()=>je(`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:Ne,children:t(`editor.copyPath`)}),(0,$.jsx)(`button`,{onClick:Pe,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 hr(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 gr(e,t){return t||e>=4}function _r(e,t,n){return t<=0?-1:((e<0?n>0?-1:0:e)+n+t)%t}function vr(e,t){fetch(`/api/v1/pty/${e}/input/send`,{method:`POST`,headers:{...d(),"Content-Type":`application/json`},body:JSON.stringify({data:t})}).catch(()=>{})}function yr(){let{t:e}=u(),t=xt(),{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=gr(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 q=(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)},[]),te=(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=Bn(e.dataTransfer.getData(Ln));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&&(vr(l.ptySessionId,it(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:q,onDragOver:te,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=hr(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(Ln,zn({paneId:t,sourceGroupId:Rn})),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=Bn(e.dataTransfer.getData(Ln));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)(Ie,{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)(pt,{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:_r(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)(ve,{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)(Ee,{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)(ze,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:g,title:e(a?`ide.restorePanel`:`ide.maximizePanel`),children:a?(0,$.jsx)(he,{size:16}):(0,$.jsx)(Se,{size:16})}),(0,$.jsx)(`button`,{className:`ide-bottom-action-btn`,onClick:V,title:e(`ide.hidePanel`),children:(0,$.jsx)(Fe,{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)(at,{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)(ze,{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 br(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=Xe({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 xr(){return window.matchMedia(`(prefers-reduced-motion: reduce)`).matches?`auto`:`smooth`}function Sr({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=xt(),{rootPath:p,pinTab:m,unpinTab:h}=St(),[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:xr()})},[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;be(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:xr()}),children:(0,$.jsx)(Le,{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(Ln,zn({paneId:f,sourceGroupId:i})):e.dataTransfer.setData(Nn,Fn({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=In(e.dataTransfer.getData(Nn)),n=Bn(e.dataTransfer.getData(Ln)),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)(ve,{size:14}):(0,$.jsx)(Ne,{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)(ue,{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)(Ie,{size:12})})]},a)})}),S&&(0,$.jsx)(`button`,{className:`editor-tabs-scroll-btn`,"aria-label":d(`editor.scrollTabsRight`),onClick:()=>E.current?.scrollBy({left:150,behavior:xr()}),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 Cr(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 wr({node:e,tabs:t,tabActions:n,activeGroupId:r,onActivateTab:i,onRequestClose:a,onOpenFile:o,renderContent:s}){let c=xt(),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 Pn(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(Nn),r=t.includes(Ln),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=Bn(t.dataTransfer.getData(Ln));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=In(t.dataTransfer.getData(Nn));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=Cr(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)(Sr,{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)(Hn,{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)(at,{paneId:e,initialCwd:_,editorStore:c})},e)),!w&&s(T)]}),v&&(0,$.jsx)(`div`,{className:`editor-dock-drop-preview `+v,"aria-hidden":`true`})]})}function Tr({node:e,path:t,...n}){let r=k(e=>e.setEditorDockSplitRatio);return e.type===`group`?(0,$.jsx)(wr,{node:e,path:t,...n}):(0,$.jsxs)(ot,{direction:e.direction,ratio:e.ratio,onRatioChange:e=>r(t,e),children:[(0,$.jsx)(Tr,{node:e.children[0],path:[...t,0],...n}),(0,$.jsx)(Tr,{node:e.children[1],path:[...t,1],...n})]})}function Er(e){let t=k(e=>e.editorDock);return(0,$.jsx)(`div`,{className:`editor-dock-layout`,children:(0,$.jsx)(Tr,{...e,node:t.root,activeGroupId:t.activeGroupId,path:[]})})}function Dr(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 Or=20,kr=3;function Ar({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>kr)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,Or);let e=[];for(let t of d){let n=Dr(o,t.relativePath);n.match&&e.push({entry:t,score:n.score})}return e.sort((e,t)=>t.score-e.score),e.slice(0,Or).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)(Ne,{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 jr({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)(X,{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)(ne,{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)(Je,{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)(mt,{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)(J,{size:22,strokeWidth:1.5})})]})]})}function Mr(){try{let e=localStorage.getItem(`cbc_search_prefs`);if(e)return{...Nr,...JSON.parse(e)}}catch{}return Nr}var Nr={viewMode:`tree`,caseSensitive:!1,isRegex:!1,wholeWord:!1,query:``,includePattern:``,excludePattern:``,useDefaultExcludes:!0};function Pr(e){try{localStorage.setItem(`cbc_search_prefs`,JSON.stringify(e))}catch{}}function Fr(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 Ir=Mr(),Lr,Rr=0;function zr(){Rr+=1,Lr?.abort(),Lr=void 0}var Br={searching:!1,results:[],totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0};function Vr(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 Hr=l((e,t)=>({query:Ir.query,isRegex:Ir.isRegex,caseSensitive:Ir.caseSensitive,wholeWord:Ir.wholeWord,includePattern:Ir.includePattern,excludePattern:Ir.excludePattern,useDefaultExcludes:Ir.useDefaultExcludes,viewMode:Ir.viewMode,results:[],searching:!1,totalMatches:0,fileCount:0,error:null,limitHit:!1,incomplete:!1,incompleteReason:void 0,setQuery:n=>{zr(),e({query:n,...Br}),Pr(Fr({...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){Lr?.abort(),e({...Br});return}Lr?.abort();let u=new AbortController;Lr=u;let f=++Rr,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:Vr(o),excludeGlobs:Vr(s),useIgnoreFiles:c,maxResults:500})});if(f!==Rr)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!==Rr||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!==Rr||u.signal.aborted)return;e({searching:!1,error:t instanceof Error?t.message:`Search failed`})}finally{Lr===u&&(Lr=void 0)}},cancelSearch:()=>{zr(),e({searching:!1})},invalidateSearch:()=>{zr(),e(Br)},toggleRegex:()=>{zr(),e(e=>({isRegex:!e.isRegex,...Br})),Pr(Fr(t()))},toggleCaseSensitive:()=>{zr(),e(e=>({caseSensitive:!e.caseSensitive,...Br})),Pr(Fr(t()))},toggleWholeWord:()=>{zr(),e(e=>({wholeWord:!e.wholeWord,...Br})),Pr(Fr(t()))},setIncludePattern:n=>{zr(),e({includePattern:n,...Br}),Pr(Fr({...t(),includePattern:n}))},setExcludePattern:n=>{zr(),e({excludePattern:n,...Br}),Pr(Fr({...t(),excludePattern:n}))},toggleUseDefaultExcludes:()=>{zr(),e(e=>({useDefaultExcludes:!e.useDefaultExcludes,...Br})),Pr(Fr(t()))},setViewMode:n=>{e({viewMode:n}),Pr(Fr(t()))},clear:()=>{zr(),e({query:``,includePattern:``,excludePattern:``,...Br}),Pr(Fr(t()))}}));function Ur(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 Wr(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 Gr(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 Kr(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 qr(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 Jr(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 Yr=300;function Xr(){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}=Hr(),{openFile:A}=St(),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(()=>{})},Yr),()=>{N.current&&clearTimeout(N.current)}},[t,n,r,i,a,o,s,j,y,x]);let V=(0,Q.useMemo)(()=>Kr(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)(()=>Ur(l),[l]),U=(0,Q.useMemo)(()=>c===`tree`?Wr(H,P):Gr(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]),q=(0,Q.useCallback)(e=>{e.key===`Enter`&&(e.preventDefault(),K()),e.key===`Escape`&&(d?b():(k(),M.current?.focus()))},[b,k,K,d]),te=(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)},[]),J=(0,Q.useCallback)(()=>{F(new Set(V))},[V]),ie=(0,Q.useCallback)((e,n)=>{A(e,void 0,n?{line:n,query:t.trim()}:void 0)},[A,t]),ae=(0,Q.useCallback)(()=>{k(),M.current?.focus()},[k]),oe=(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=Jr(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()},[]),se=(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)(Zr,{label:e(`ide.search.refresh`),disabled:!t.trim(),onClick:K,children:(0,$.jsx)(Ve,{size:15,className:d?`animate-spin`:``})}),(0,$.jsx)(Zr,{label:e(`ide.search.clear`),disabled:!t&&f===0,onClick:ae,children:(0,$.jsx)(Ie,{size:16})}),(0,$.jsx)(Zr,{label:e(`ide.search.toggleFilters`),active:I,onClick:()=>L(e=>!e),children:(0,$.jsx)(et,{size:15})}),(0,$.jsx)(Zr,{label:e(c===`tree`?`ide.listView`:`ide.treeView`),onClick:()=>O(c===`tree`?`list`:`tree`),children:c===`tree`?(0,$.jsx)(pt,{size:15}):(0,$.jsx)(gt,{size:15})}),(0,$.jsx)(Zr,{label:e(G?`editor.collapseAll`:`editor.expandAll`),disabled:f===0,onClick:G?re:J,children:G?(0,$.jsx)(dt,{size:15}):(0,$.jsx)(_t,{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)(Fe,{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:q,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)(st,{size:15})}),(0,$.jsx)(Qr,{active:i,label:e(`ide.search.wholeWord`),onClick:w,children:(0,$.jsx)(vt,{size:15})}),(0,$.jsx)(Qr,{active:n,label:e(`ide.search.regex`),onClick:S,children:(0,$.jsx)(ht,{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:q,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:q,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)(ye,{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)(nt,{size:11,fill:`currentColor`})})]}),(0,$.jsxs)(`div`,{className:`search-results`,role:`tree`,"aria-label":e(`ide.search.resultsLabel`),"aria-busy":d,onKeyDown:oe,children:[c===`tree`&&H.map((e,n)=>(0,$.jsx)($r,{node:e,depth:0,parentId:void 0,isFirst:n===0,focusedRowId:W,setFocusedRowId:z,expandedPaths:P,onToggle:te,onFileClick:ie,query:t,highlightOptions:se},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:()=>te(e.path),title:e.path,children:[P.has(e.path)?(0,$.jsx)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ne,{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)(ei,{matches:e.matches,filePath:e.path,parentId:e.path,level:2,indent:26,query:t,highlightOptions:se,focusedRowId:W,setFocusedRowId:z,onFileClick:ie})]},e.path)),!d&&t&&f===0&&!g&&!m&&(0,$.jsxs)(`div`,{className:`scm-empty`,children:[(0,$.jsx)(ne,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:e(`ide.search.noResults`)})]})]})]})}function Zr({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 $r({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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(ae,{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)($r,{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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(Ne,{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)(ei,{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 ei({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)(ti,{text:e.text,query:a,options:o,ranges:e.matchRanges})]},d)})})}function ti({text:e,query:t,options:n,ranges:r}){let i=r??qr(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 ni(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 ri(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(ii)}function ii(e){if(e.isDir&&e.children.length===1&&e.children[0].isDir){let t=e.children[0];return ii({...t,name:`${e.name}/${t.name}`})}return{...e,children:e.children.map(ii)}}var ai={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 oi({file:e,onStage:t,onUnstage:n,onDiscard:r,onOpenFile:i}){let{t:a}=u(),o=(0,Q.useCallback)(t=>{t.stopPropagation(),be(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)(Oe,{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)(He,{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)(De,{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)(ze,{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)(se,{size:13})})]})}function si({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)(Fe,{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=ai[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)(Ne,{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)(oi,{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 ci({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=ui(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=ui(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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(ae,{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)(De,{size:13})}),n&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:m,title:s(`ide.scm.stageAll`),children:(0,$.jsx)(ze,{size:13})}),r&&(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:g,title:s(`ide.scm.unstageAll`),children:(0,$.jsx)(se,{size:13})})]}),f&&(0,$.jsx)(`span`,{className:`scm-tree-dir-dot`,style:{background:f}})]}),c&&e.children.map(e=>e.isDir?(0,$.jsx)(ci,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path):(0,$.jsx)(li,{node:e,depth:t+1,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o},e.path))]})}function li({node:e,depth:t,onStage:n,onUnstage:r,onDiscard:i,onSelect:a,onOpenFile:o}){let s=e.data,c=ai[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)(Ne,{name:e.name,type:`file`,size:16}),(0,$.jsx)(`span`,{className:`scm-file-name-text`,children:e.name}),(0,$.jsx)(oi,{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 ui(e){return e.isDir?e.children.flatMap(ui):e.data?[e.data]:[]}function di({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=ri(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)(Fe,{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)(ci,{node:e,depth:1,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(li,{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)(ci,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path):(0,$.jsx)(li,{node:e,depth:0,onStage:i,onUnstage:a,onDiscard:o,onSelect:s,onOpenFile:c},e.path))})}function fi(e){return e.viewMode===`tree`?(0,$.jsx)(di,{...e}):(0,$.jsx)(si,{...e})}var pi=[`var(--color-accent-green)`,`var(--color-accent-blue)`,`var(--color-accent-yellow)`,`var(--color-accent-purple)`,`var(--color-accent-red)`];function mi(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 hi(){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 Jt(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)(Fe,{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)(Ve,{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:pi[t%pi.length]}}),(0,$.jsx)(`span`,{className:`scm-graph-msg`,children:e.message}),(0,$.jsx)(`span`,{className:`scm-graph-time`,children:mi(e.date)})]},e.hash))]})]})}function gi({onDidOpenFile:e}={}){let{t}=u(),n=xt(),{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}=bn(),j=St(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)(()=>{_(),bn.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}=ni(r.path,i,M,r.staged,r.status);if(k.getState().bottomPanelMaximized&&k.setState({bottomPanelMaximized:!1}),o===`unavailable`){Qe.warn(t(`ide.scm.binaryRevisionPreviewUnavailable`));return}try{let t=a;if(o===`preview`)await n.getState().openFile(a);else{let e=await Vt(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}=ni(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)(pt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn ${N===`tree`?`active`:``}`,onClick:()=>P(`tree`),title:t(`ide.treeView`),children:(0,$.jsx)(gt,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(Ve,{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)(Fe,{size:14}):(0,$.jsx)(Z,{size:14}),(0,$.jsx)(`span`,{children:t(`ide.scm.repositories`)})]}),F&&(0,$.jsx)(Cn,{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)($e,{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)(_e,{size:14})}),(0,$.jsx)(`button`,{className:`scm-icon-btn`,onClick:()=>_(),disabled:a,title:t(`ide.refresh`),children:(0,$.jsx)(Ve,{size:12,className:a?`animate-spin`:``})})]})]})}),g&&V&&(0,$.jsx)(_i,{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)(Fe,{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)(_i,{feedback:g,onRetry:H,onClose:A}),L&&(0,$.jsxs)($.Fragment,{children:[G.length>0&&(0,$.jsx)(fi,{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)(se,{size:13})}),onUnstage:p?void 0:b,onSelect:U,onOpenFile:W}),K.length>0&&(0,$.jsx)(fi,{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)(De,{size:13})}),(0,$.jsx)(`button`,{className:`scm-file-action-btn`,onClick:()=>x(),disabled:p,title:t(`ide.scm.stageAll`),children:(0,$.jsx)(ze,{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)(Ee,{size:20,strokeWidth:1.5,style:{opacity:.3}}),(0,$.jsx)(`span`,{children:t(`ide.scm.noChanges`)})]})]})]}),(0,$.jsx)(hi,{})]})]}):(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)(Je,{size:32,strokeWidth:1,style:{opacity:.2}}),(0,$.jsx)(`div`,{className:`ide-panel-placeholder-text`,children:t(`ide.scm.notGitRepo`)})]})]})}function _i({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(xn(e.message,e.operation)),a=Sn(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)(je,{size:16}):(0,$.jsx)(Pe,{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)(Y,{size:12}),r(`ide.scm.feedback.retry`)]})]}),(0,$.jsx)(`button`,{className:`scm-operation-close`,onClick:n,title:r(`common.close`),children:(0,$.jsx)(Ie,{size:14})})]})}function vi({activePanel:e,onMenuClick:t}){return(0,$.jsxs)(`div`,{className:`ide-side-panel-content`,children:[e===`explorer`&&(0,$.jsx)(mr,{onMenuClick:t}),e===`search`&&(0,$.jsx)(Xr,{}),e===`source-control`&&(0,$.jsx)(gi,{})]})}var yi=640;function bi({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}=St(),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<=yi);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=br({direction:`horizontal`,initialSize:P,minSize:160,maxSize:600,collapsible:!0,defaultCollapsed:F,onResize:I,onCollapse:L,ariaLabel:b(`ide.resizeSidePanel`)}),q=br({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`)}),te=bn(e=>e.files.length);(0,Q.useEffect)(()=>(bn.getState().refresh(),bn.getState().startWatching(),()=>{bn.getState().stopWatching()}),[]);let ne=typeof navigator<`u`&&navigator.platform.includes(`Mac`),re=(e=n)=>M?(0,$.jsx)(xi,{t:b}):e?e.loadStatus===`ready`?e.viewMode===`diff`&&e.diffData?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Be,{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)(Mt,{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)(Qn,{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)(Nt,{tab:e,onRetry:()=>A(e.id)}):y?(0,$.jsx)(xi,{t:b}):(0,$.jsx)(Si,{isMac:ne,t:b}),J=l&&E&&(0,$.jsx)(Ar,{isOpen:l,onClose:()=>d(!1),onSelect:e=>{D(e),d(!1)},rootPath:E,showHiddenFiles:j}),ie=y?`explorer`:N??`explorer`;(0,Q.useEffect)(()=>{y&&S&&T(M||!n?`explorer`:`editor`)},[n?.path,S,ee?.id,M,y]);let ae=S&&w===`explorer`,oe=y?S?ae:!K.collapsed:!(!N||K.collapsed),se=!S||!ae,ce=!q.collapsed,le=(0,Q.useRef)(null);return(0,Q.useEffect)(()=>{if(!y)return;let e=n?.path??(M?`__open__`:null);e&&le.current!==e&&(le.current=e,F&&L(!1))},[n?.path,M,y,L,F]),(0,$.jsxs)(`div`,{className:`ide-layout`,ref:x,children:[J,(0,$.jsxs)(`div`,{className:`ide-layout-row`,ref:K.containerRef,children:[!y&&(0,$.jsx)(jr,{gitFileCount:te}),oe&&(0,$.jsxs)(`div`,{className:`ide-side-panel`,style:{width:S?`100%`:K.size},children:[(0,$.jsx)(vi,{activePanel:ie,onMenuClick:e}),!S&&(0,$.jsx)(`div`,{...K.sashProps})]}),(0,$.jsxs)(`div`,{className:`ide-main-area`,ref:q.containerRef,style:{display:se?`flex`:`none`},children:[!B&&(0,$.jsx)(`div`,{className:`ide-editor-area`,style:{flex:ce?void 0:1,height:ce?`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)(we,{size:14})}),M||!n||!E?(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}):(0,$.jsx)(kt,{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)(ve,{size:14})})]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:re()})]}):(0,$.jsx)(Er,{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)(kt,{filePath:e.path,rootPath:E,onSegmentClick:O,onOpenFile:D}),re(e)]})})}),ce&&(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)(yr,{})})]})]})]}),(0,$.jsx)(`div`,{className:`ide-statusbar-drag-zone`,onPointerDown:q.sashProps.onPointerDown,onDoubleClick:q.sashProps.onDoubleClick,children:(0,$.jsx)(kn,{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)(ve,{size:12}),(0,$.jsx)(`span`,{children:b(`ide.terminal`)})]}):void 0})})]})}function xi({t:e}){return(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(we,{size:40,strokeWidth:1.25,"aria-hidden":!0}),(0,$.jsx)(`h2`,{children:e(`dock.openFile`)}),(0,$.jsx)(`p`,{children:e(`dock.pickFromTree`)})]})}function Si({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:We,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 Ci(){let{t:e}=u(),t=k(e=>e.activeMobilePanel),n=k(e=>e.setActiveMobilePanel),r=bn(e=>e.files.length),i=[{id:`explorer`,icon:(0,$.jsx)(X,{size:20,strokeWidth:1.5}),label:e(`ide.explorer`)},{id:`search`,icon:(0,$.jsx)(ne,{size:20,strokeWidth:1.5}),label:e(`ide.search`)},{id:`source-control`,icon:(0,$.jsx)(Je,{size:20,strokeWidth:1.5}),label:e(`ide.sourceControl`),badge:r},{id:`terminal`,icon:(0,$.jsx)(ve,{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 wi=1e3,Ti={line:1,col:1,selectedChars:0,selectedLines:0};function Ei(e){return`editor-save:${e}`}function Di({editorStore:e=E,...t}){return(0,$.jsx)(bt,{store:e,children:(0,$.jsx)(Oi,{...t})})}function Oi({onMenuClick:e,isVisible:n=!0,hideActivityBar:r=!1}){let{t:i,resolved:a}=u(),o=xt(),{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}=St(),[D,O]=(0,Q.useState)(!1),[j]=(0,Q.useState)(()=>Dt(wi)),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=de(),[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 te=(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 re=(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===re.current)return;re.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&&te()},[L,l,s.length,te]),(0,Q.useEffect)(()=>{L&&w&&l&&te()},[L,w,l,te]),(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,ie=s.map(e=>e.id).join(`\0`),ae=C(N),oe=!!(ae&&R(ae)),se=(0,Q.useRef)(l),ce=(0,Q.useRef)(s.length>0);(0,Q.useEffect)(()=>{if(r||L)return;if(ie)ce.current=!0;else if(!ce.current)return;let e=se.current!==l;se.current=l;let t=G.current,n=!!(t&&t.tabKey!==ie),i=!!(n&&t?.itemId===ae);n&&(G.current=null),F(ie?ie.split(`\0`):[],oe&&(!e||i)?void 0:l)},[l,oe,N,ie,r,L,F]),(0,Q.useEffect)(()=>{s.length===0||s.some(e=>e.id===l)||E(s[0].id)},[l,E,s]);let le=V(e=>e.quickOpenNonce),ue=V(e=>e.tabs.find(t=>t.id===e.activeId)??null),Y=(0,Q.useCallback)((e,t)=>{let n=o.getState().tabs.find(e=>e.id===t);V.getState().ensureFileTab(e,n?.name??Ct(e),t)},[o]),fe=(0,Q.useRef)(null),pe=(0,Q.useRef)(0);(0,Q.useEffect)(()=>{r&&le!==pe.current&&(pe.current=le,le>0&&O(!0))},[r,le]);let me=i(`editor.saveFailed`),he=i(`app.retry`),_e=i(`editor.overwrite`),ve=(0,Q.useRef)(new Map);(0,Q.useEffect)(()=>{let e=ve.current,t=new Set,n=Ue.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),Qe.error(`${me}${n.saveError?`: ${n.saveError}`:``}`,{id:Ei(n.id),durationMs:0,action:{label:n.externalChange?_e:he,onClick:()=>o.getState().saveTab(n.id,{forceExternal:!0})}}))}for(let r of e.keys())t.has(r)||(n(Ei(r)),e.delete(r))},[_e,a,he,me,s]),(0,Q.useEffect)(()=>()=>{let e=ve.current,t=Ue.getState().removeToast;for(let n of e.keys())t(Ei(n));e.clear()},[]);let ye=(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[be,xe]=(0,Q.useState)(null),Se=(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),xe(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=fe.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&&Se({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,Se,r,n,E,M]);let Ce=(0,Q.useCallback)(e=>{j.cancel(e),v(e,{forceExternal:!0}).catch(()=>!1)},[j,v]),[Te,X]=(0,Q.useState)({}),Ee=(0,Q.useCallback)((e,t,n,r,i)=>{X(a=>({...a,[e]:{line:t,col:n,selectedChars:r,selectedLines:i}}))},[]),De=J?Te[J.id]??Ti:Ti,[Oe,Ae]=(0,Q.useState)({}),[je,Me]=(0,Q.useState)({}),Ne=(0,Q.useCallback)((e,t)=>{Ae(n=>({...n,[e]:t}))},[]),Pe=(0,Q.useCallback)((e,t)=>{Me(n=>({...n,[e]:t}))},[]),Fe=J?Oe[J.id]??null:null,Ie=J?je[J.id]??1:1,[Le,Re]=(0,Q.useState)(new Set),ze=(0,Q.useCallback)(e=>{let t=o.getState().tabs.find(t=>t.id===e);return!(!t||t.viewMode!==`markdown`&&t.viewMode!==`html`||Le.has(e))},[o,Le]),Ve=J?.viewMode===`markdown`||J?.viewMode===`html`,Z=!!(J&&ze(J.id)),We=(0,Q.useCallback)(()=>{l&&Re(e=>{let t=new Set(e);return t.has(l)?t.delete(l):t.add(l),t})},[l]),Ke=null;Ve&&(Ke=Z?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.preview`),"aria-label":i(`editor.preview`),children:(0,$.jsx)(ke,{size:16})}):(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:We,title:i(`editor.source`),"aria-label":i(`editor.source`),children:(0,$.jsx)(Ge,{size:16})}));let qe=(0,Q.useCallback)(()=>{let e=new URLSearchParams(window.location.search);e.set(`standalone`,`1`),window.open(`#/editor?${e.toString()}`,`_blank`,`noopener,noreferrer`)},[]),Je=(0,Q.useCallback)(()=>{if(!J)return;let e=J.name||Ct(J.path);if(J.viewMode===`editor`||J.viewMode===`markdown`||J.viewMode===`html`){Tt(e,J.content??``);return}Et(J.path,e).catch(()=>{Qe.error(i(`editor.downloadFailed`))})},[J,i]),Xe=(0,$.jsxs)($.Fragment,{children:[Ke,J?(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:Je,title:i(`editor.download`),"aria-label":i(`editor.download`),children:(0,$.jsx)(Ye,{size:16})}):null,(0,$.jsx)(`button`,{className:`editor-action-btn`,onClick:qe,title:i(`editor.openInNewWindow`),"aria-label":i(`editor.openInNewWindow`),children:(0,$.jsx)(He,{size:16})})]}),Ze=(0,Q.useCallback)(()=>{be&&(be.targetIds.forEach(e=>j.cancel(e)),x(be.targetIds),xe(null))},[j,x,be]),$e=(0,Q.useCallback)(()=>{G.current=null,xe(null)},[]),et=be?(0,$.jsx)(ge,{title:i(`editor.closeSaveFailedTitle`,{count:be.failedTabIds.length}),message:i(`editor.closeSaveFailedMessage`,{count:be.failedTabIds.length}),confirmLabel:i(`editor.discardAndClose`),danger:!0,onConfirm:Ze,onCancel:$e}):null,tt=k(e=>e.activeMobilePanel),nt=k(e=>e.createBottomTerminal),rt=k(e=>e.bottomTerminals);if((0,Q.useEffect)(()=>{L&&tt===`terminal`&&rt.length===0&&nt()},[L,tt,rt.length,nt]),L){let t=D&&d&&(0,$.jsx)(Ar,{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`||Z?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Mt,{path:J.path,content:J.content,language:J.language,onContentChange:e=>ye(J.id,e),onSave:()=>Ce(J.id),minimap:!1,onCursorChange:(e,t,n,r)=>Ee(J.id,e,t,n,r)})}):(0,$.jsx)(Qn,{path:J.path,name:J.name,content:J.content,viewMode:J.viewMode,onImageInfo:e=>Ne(J.id,e),onZoomChange:e=>Pe(J.id,e)}):(0,$.jsx)(Nt,{tab:J,onRetry:()=>g(J.id)})),(0,$.jsxs)(`div`,{className:`editor-view editor-view-mobile`,ref:fe,children:[t,et,(0,$.jsxs)(`div`,{className:`mobile-panel-content`,children:[tt===`explorer`&&(0,$.jsx)(`div`,{className:`editor-sidebar editor-sidebar-mobile`,children:(0,$.jsx)(mr,{onMenuClick:e})}),tt===`search`&&(0,$.jsx)(Xr,{}),tt===`source-control`&&(0,$.jsx)(gi,{}),tt===`terminal`&&(0,$.jsx)(`div`,{className:`mobile-terminal-panel`,children:(0,$.jsx)(yr,{})})]}),(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)(q,{size:18})}),(0,$.jsx)(`div`,{className:`editor-mobile-tabs-wrap`,children:(0,$.jsx)(Hn,{actions:Xe,onRequestClose:Se})})]}),n,J&&(0,$.jsx)(kn,{language:J.language,cursorLine:De.line,cursorColumn:De.col,selectedCount:De.selectedChars,selectedLines:De.selectedLines,viewMode:Z?`editor`:J.viewMode,isDirty:J.isDirty,saveStatus:J.saveStatus,saveError:J.saveError,imageInfo:Fe,zoom:Ie})]})}),!z&&tt===`explorer`&&(0,$.jsx)(kn,{language:``,cursorLine:1,cursorColumn:1}),(0,$.jsx)(Ci,{})]})}if(r){let t=D&&d&&(0,$.jsx)(Ar,{isOpen:D,onClose:()=>O(!1),onSelect:e=>{h(e),O(!1)},rootPath:d,showHiddenFiles:T});if(ue?.kind===`explorer`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(mr,{onMenuClick:e,onDidOpenFile:Y})}),(0,$.jsx)(kn,{language:``,cursorLine:1,cursorColumn:1})]});if(ue?.kind===`search`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(Xr,{})})]});if(ue?.kind===`scm`)return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsx)(`div`,{className:`ide-side-panel-content`,children:(0,$.jsx)(gi,{onDidOpenFile:Y})})]});let n=ue?.kind===`editor`&&ue.editorTabId&&J?.id===ue.editorTabId?J:null,r;if(!ue?.filePath)r=(0,$.jsxs)(`div`,{className:`dock-open-file-empty`,children:[(0,$.jsx)(we,{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===ue.editorTabId)??null;r=e?(0,$.jsx)(Nt,{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)(Be,{path:n.path,oldText:n.diffData.oldText,newText:n.diffData.newText})}):n.viewMode===`editor`||Z?(0,$.jsx)(`div`,{className:`editor-container`,children:(0,$.jsx)(Mt,{path:n.path,content:n.content,language:n.language,onContentChange:e=>ye(n.id,e),onSave:()=>Ce(n.id),minimap:!1,onCursorChange:(e,t,r,i)=>Ee(n.id,e,t,r,i)})}):(0,$.jsx)(Qn,{path:n.path,name:n.name,content:n.content,viewMode:n.viewMode,onImageInfo:e=>Ne(n.id,e),onZoomChange:e=>Pe(n.id,e)});return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[t,et,(0,$.jsxs)(`div`,{className:`ide-layout ide-atomic-editor`,children:[(0,$.jsxs)(`div`,{className:`ide-dock-editor-tools`,children:[n&&d?(0,$.jsx)(kt,{filePath:n.path,rootPath:d,onSegmentClick:S,onOpenFile:h}):(0,$.jsx)(`span`,{className:`ide-dock-editor-tools-spacer`}),Xe]}),(0,$.jsx)(`div`,{className:`ide-editor-content`,children:r}),(0,$.jsx)(kn,{language:n?.language||``,cursorLine:De.line,cursorColumn:De.col,selectedCount:De.selectedChars,selectedLines:De.selectedLines,viewMode:n?Z?`editor`:n.viewMode:`editor`,isDirty:n?.isDirty,saveStatus:n?.saveStatus,saveError:n?.saveError,imageInfo:Fe,zoom:Ie})]})]})}return(0,$.jsxs)(`div`,{className:`editor-view`,ref:fe,children:[et,(0,$.jsx)(bi,{onMenuClick:e,tabs:s,activeTab:oe?null:J,tabActions:Xe,cursorInfo:De,imageInfo:Fe,previewZoom:Ie,isSourceMode:Z,isSourceModeForTab:ze,quickOpenVisible:D,setQuickOpenVisible:O,onContentChange:ye,onSave:Ce,onActivateTab:E,onRequestClose:Se,onCursorChange:Ee,onImageInfo:Ne,onZoomChange:Pe,hideActivityBar:r})]})}export{Di as EditorView};