import{r as m,y as ne,E as U,j as e,R as G,o as K}from"./vendor-codemirror-C7mXSpXt.js";import{B as v,D as oe,a as ae,m as H,c as ce,d as ie}from"./index-BZzvNKfa.js";import{u as re}from"./use-toast-CkA38LVP.js";import{k as D}from"./index-DPhaKvWI.js";import{w as J,aC as q,ay as I,L as M,$ as X,X as _,r as le,ad as de,aD as me,an as ue,ao as xe,H as he,m as pe,f as fe,ah as be,R as we,aE as ke,aF as ge,v as ve}from"./vendor-icons-DIDdqO_o.js";import{S as Z,a as Q,b as ee,c as te,d as se}from"./select-BFGszUub.js";import{x as je,a as Ne}from"./vendor-xterm-20M9KZE1.js";import{B as Pe}from"./badge-IN84WXM6.js";function W(a){if(!a)return"";const d=a.replace(/\r\n/g,` `).split(` `),c=[];let r=0;const k=new Set(["uid","resourceVersion","creationTimestamp","generation","selfLink","clusterName","managedFields","generateName"]),A=new Set(["managedFields","ownerReferences"]),R={dnsPolicy:["ClusterFirst"],restartPolicy:["Always"],schedulerName:["default-scheduler"],terminationGracePeriodSeconds:["30"],serviceAccountName:["default"],enableServiceLinks:["true"],progressDeadlineSeconds:["600"],revisionHistoryLimit:["10"]},F={imagePullPolicy:["Always","IfNotPresent"],terminationMessagePath:["/dev/termination-log"],terminationMessagePolicy:["File"]},$=new Set(["kubectl.kubernetes.io/last-applied-configuration","deployment.kubernetes.io/revision","kubectl.kubernetes.io/restartedAt","control-plane.alpha.kubernetes.io/leader","autoscaling.alpha.kubernetes.io/conditions"]),x=["kube-api-access-","default-token-","kube-"];let b=!1,y=!1,E=!1,Y=!1,w=!1,T=!1,j=!1,C=!1,N=0;function p(u){return u.length-u.trimStart().length}function P(u){const s=u.trimStart().match(/^([a-zA-Z_][a-zA-Z0-9_./-]*)\s*:/);return s?s[1]:null}function V(u){const s=u.trim().split(":").slice(1).join(":").trim();return s!==""&&!/^[>|]/.test(s)}function B(u){for(r++;rs.startsWith(i)):!1}for(;r=2&&i<=4&&s.startsWith("pod-template-hash")&&s.includes(":")){r++;continue}if(i===2&&o&&k.has(o)){V(u)?r++:B(2);continue}if(i===2&&o&&A.has(o)){B(2);continue}if(y&&i>2&&o&&$.has(o)){if(V(u))r++;else{const l=s.split(":").slice(1).join(":").trim();/^[>|]/.test(l)?B(i):r++}continue}}if(E){if(i===2&&o==="template"){c.push(u),r++;continue}if(i===2&&o&&R[o]){const h=s.split(":").slice(1).join(":").trim();if(R[o].includes(h)){r++;continue}}if(i===2&&o==="nodeName"){r++;continue}if(i===2&&o==="spec"){Y=!0,N=i,c.push(u),r++;continue}}if(Y&&i>N){if(o==="containers"){w=!0,T=!1,c.push(u),r++;continue}if(o==="initContainers"){T=!0,w=!1,c.push(u),r++;continue}if(o==="volumes"){C=!0,c.push(u),r++;continue}if(o&&R[o]){const h=s.split(":").slice(1).join(":").trim();if(R[o].includes(h)){r++;continue}}if(o==="nodeName"){r++;continue}if(o==="serviceAccount"&&s.endsWith(":")){V(u)?r++:B(i);continue}}if((w||T)&&i>=6){if(o&&F[o]){const h=s.split(":").slice(1).join(":").trim();if(F[o].includes(h)){r++;continue}}if(o==="volumeMounts"&&(j=!0),j&&s.startsWith("- name:")){let h=[u],l=r+1,t=!1;for(;l=4&&s.startsWith("- name:")&&f(s)){const h=i;for(r++;r0&&c[c.length-1].trim()===""){r++;continue}c.push(u),r++}return c.join(` `).replace(/\n{3,}/g,` `).trimEnd()+` `}function Se(a){return a.includes("mountPath:")&&(a.includes("/var/run/secrets/kubernetes.io")||a.includes("/var/run/secrets/sa"))}const O={green:"#10b981",orange:"#f59e0b",red:"#ef4444",blue:"#326CE5"};function Re(a){if(!a)return"#64748b";const d=a.toLowerCase();return["running","available","ready","active","completed","succeeded"].includes(d)?O.green:["pending","updating","progressing","containercreating"].includes(d)?O.orange:["failed","error","crashloopbackoff","imagepullbackoff","errimageneverpull"].includes(d)?O.red:O.blue}function $e(a){if(!a)return"-";const d=new Date(a);if(isNaN(d.getTime()))return a;const c=r=>String(r).padStart(2,"0");return`${d.getFullYear()}-${c(d.getMonth()+1)}-${c(d.getDate())} ${c(d.getHours())}:${c(d.getMinutes())}:${c(d.getSeconds())}`}function ze(a,d){if(!a||!d)return null;const c=new Date(a).getTime(),r=new Date(d).getTime();return isNaN(c)||isNaN(r)||r{if(x){E(x),w(f?W(x):x),j(!1);return}j(!0);try{const n=await D.getResourceYaml(a,d,c,r);E(n),w(f?W(n):n)}catch(n){b({title:"获取YAML失败",description:n.message,variant:"destructive"});const g=`# Error: ${n.message}`;E(g),w(g)}finally{j(!1)}},u=()=>{const n=f?W(y):y;w(n),P(!0),f&&b({title:"已清理只读字段",description:"已剥离 status / managedFields / uid 等"})},[s,i]=m.useState(!1),o=async()=>{N(!0);try{await D.updateResourceYaml(a,d,c,r,Y),b({title:"YAML已应用",description:`${c}/${r} 更新成功`}),P(!1),E(Y),A?.()}catch(n){b({title:"保存失败",description:n.message,variant:"destructive"})}finally{N(!1)}},h=async()=>{const n=p?Y:y;await navigator.clipboard.writeText(n),B(!0),setTimeout(()=>B(!1),2e3)};m.useEffect(()=>{z()},[]);const l=p?Y:f&&!s?W(y):y,t=m.useMemo(()=>[ne(),U.lineWrapping,...p?[]:[U.editable.of(!1)]],[p]);return $?e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:113:7",className:"space-y-3",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:114:9",className:"flex items-center justify-between",children:[e.jsxs("p",{"code-path":"src/components/kubernetes/YamlViewer.tsx:115:11",className:"text-xs text-slate-500",children:[e.jsxs("code",{"code-path":"src/components/kubernetes/YamlViewer.tsx:116:13",className:"text-slate-400",children:[c,"/",r]})," · ",d," · ",a]}),e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:118:11",className:"flex items-center gap-2",children:[e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:119:13",variant:"outline",size:"sm",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:h,children:[V?e.jsx(J,{"code-path":"src/components/kubernetes/YamlViewer.tsx:120:25",className:"h-3 w-3 mr-1 text-emerald-400"}):e.jsx(q,{"code-path":"src/components/kubernetes/YamlViewer.tsx:120:79",className:"h-3 w-3 mr-1"}),V?"已复制":"复制"]}),f&&!p&&e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:124:15",variant:"outline",size:"sm",className:`h-7 text-xs ${s?"border-slate-700 text-slate-500":"border-emerald-700/50 text-emerald-400"}`,onClick:()=>i(n=>!n),title:"切换 精简/原始 视图",children:[e.jsx(I,{"code-path":"src/components/kubernetes/YamlViewer.tsx:126:17",className:"h-3 w-3 mr-1"}),s?"原始":"精简"]}),p?e.jsxs(e.Fragment,{children:[e.jsx(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:144:17",variant:"outline",size:"sm",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>{P(!1),z()},children:"取消"}),e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:147:17",size:"sm",className:"h-7 bg-blue-600 hover:bg-blue-700 text-xs",onClick:o,disabled:C,children:[C?e.jsx(M,{"code-path":"src/components/kubernetes/YamlViewer.tsx:148:29",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(X,{"code-path":"src/components/kubernetes/YamlViewer.tsx:148:81",className:"h-3 w-3 mr-1"}),"保存"]})]}):e.jsxs(e.Fragment,{children:[f&&e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:132:19",variant:"outline",size:"sm",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:u,title:"清理 status / managedFields 等只读字段后编辑",children:[e.jsx(I,{"code-path":"src/components/kubernetes/YamlViewer.tsx:133:19",className:"h-3 w-3 mr-1 text-amber-400"}),"编辑"]}),!f&&e.jsx(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:137:19",variant:"outline",size:"sm",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>P(!0),children:"编辑"})]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:155:9",className:"border border-slate-700 rounded-lg overflow-hidden",children:T?e.jsx("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:157:13",className:"flex items-center justify-center h-96",children:e.jsx(M,{"code-path":"src/components/kubernetes/YamlViewer.tsx:157:68",className:"h-6 w-6 animate-spin text-slate-500"})}):e.jsx(G,{"code-path":"src/components/kubernetes/YamlViewer.tsx:159:13",value:l,height:"600px",theme:K,extensions:t,onChange:n=>p&&w(n),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:p,highlightActiveLineGutter:p,autocompletion:!0,bracketMatching:!0,closeBrackets:!0,indentOnInput:!0},style:{fontSize:"12px"}})})]}):e.jsx("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:185:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:k,children:e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:186:7",className:"bg-slate-900 border border-slate-700 rounded-xl w-[92vw] max-w-5xl h-[88vh] flex flex-col shadow-2xl",onClick:n=>n.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:188:9",className:"flex items-center justify-between p-4 border-b border-slate-700",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:189:11",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/YamlViewer.tsx:190:13",className:"text-lg font-bold text-slate-100",children:[p?"YAML 编辑":"YAML 查看"," — ",c,"/",r]}),e.jsxs("p",{"code-path":"src/components/kubernetes/YamlViewer.tsx:191:13",className:"text-xs text-slate-500",children:[d," · ",a,p?" · 已清理只读字段":""]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:193:11",className:"flex items-center gap-2",children:[e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:194:13",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300",onClick:h,children:[V?e.jsx(J,{"code-path":"src/components/kubernetes/YamlViewer.tsx:195:25",className:"h-3 w-3 mr-1 text-emerald-400"}):e.jsx(q,{"code-path":"src/components/kubernetes/YamlViewer.tsx:195:79",className:"h-3 w-3 mr-1"}),V?"已复制":"复制"]}),f&&!p&&e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:199:15",variant:"outline",size:"sm",className:`h-8 text-xs ${s?"border-slate-700 text-slate-500":"border-emerald-700/50 text-emerald-400"}`,onClick:()=>i(n=>!n),title:"切换 精简/原始 视图",children:[e.jsx(I,{"code-path":"src/components/kubernetes/YamlViewer.tsx:201:17",className:"h-3 w-3 mr-1"}),s?"原始":"精简"]}),p?e.jsxs(e.Fragment,{children:[e.jsx(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:219:17",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300",onClick:()=>{P(!1),z()},children:"取消"}),e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:222:17",size:"sm",className:"h-8 bg-blue-600 hover:bg-blue-700",onClick:o,disabled:C,children:[C?e.jsx(M,{"code-path":"src/components/kubernetes/YamlViewer.tsx:223:29",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(X,{"code-path":"src/components/kubernetes/YamlViewer.tsx:223:81",className:"h-3 w-3 mr-1"}),"保存"]})]}):e.jsxs(e.Fragment,{children:[f&&e.jsxs(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:207:19",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300",onClick:u,title:"清理 status / managedFields 等只读字段后编辑",children:[e.jsx(I,{"code-path":"src/components/kubernetes/YamlViewer.tsx:208:21",className:"h-3 w-3 mr-1 text-amber-400"}),"清理并编辑"]}),!f&&e.jsx(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:212:19",variant:"outline",size:"sm",className:"h-8 border-slate-700 text-slate-300",onClick:()=>P(!0),children:"编辑"})]}),e.jsx(v,{"code-path":"src/components/kubernetes/YamlViewer.tsx:228:13",variant:"ghost",size:"icon",className:"h-8 w-8 text-slate-400",onClick:k,children:e.jsx(_,{"code-path":"src/components/kubernetes/YamlViewer.tsx:228:102",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:232:9",className:"flex-1 min-h-0 overflow-hidden p-4",children:T?e.jsx("div",{"code-path":"src/components/kubernetes/YamlViewer.tsx:234:13",className:"flex items-center justify-center h-full",children:e.jsx(M,{"code-path":"src/components/kubernetes/YamlViewer.tsx:234:70",className:"h-6 w-6 animate-spin text-slate-500"})}):e.jsx(G,{"code-path":"src/components/kubernetes/YamlViewer.tsx:236:13",value:l,height:"100%",theme:K,extensions:t,onChange:n=>p&&w(n),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:p,highlightActiveLineGutter:p,autocompletion:!0,bracketMatching:!0,closeBrackets:!0,indentOnInput:!0},style:{fontSize:"13px",height:"100%"}})})]})})}const ye=[{value:"sh",label:"/bin/sh"},{value:"bash",label:"/bin/bash"}];function Le({open:a,onOpenChange:d,clusterId:c,namespace:r,podName:k,containers:A=[],initialContainer:R}){const{toast:F}=re(),$=m.useRef(null),x=m.useRef(null),b=m.useRef(null),y=m.useRef(null),E=m.useRef(!1),Y=m.useRef(!1),[w,T]=m.useState("idle"),[j,C]=m.useState(!1),[N,p]=m.useState(R||A[0]||""),[P,V]=m.useState("sh");m.useEffect(()=>{a||(C(!1),E.current=!1)},[a]),m.useEffect(()=>{a&&!N&&A.length>0&&p(R||A[0])},[a,A,R,N]);const B=m.useCallback(()=>{if(!x.current){console.error("[PodExec:connect] ABORT: termRef.current is null");return}const s=x.current;if(b.current){try{b.current.close()}catch{}b.current=null}T("connecting"),s.clear(),s.writeln(`\x1B[36m[正在连接 ${k}${N?"/"+N:""} shell=${P} ...]\x1B[0m`);const i=D.buildPodExecWsUrl(c,r,k,N||void 0,P),o=new WebSocket(i);b.current=o,o.onopen=()=>{T("connected"),s.reset();try{const{cols:l,rows:t}=s;o.send(JSON.stringify({status:1,cols:l,rows:t}))}catch(l){console.error("[PodExec:connect] resize error:",l)}const h=()=>{try{s.focus()}catch{}};h(),setTimeout(h,100),setTimeout(h,300)},o.onmessage=h=>{try{const l=JSON.parse(h.data);if(l.status===0&&typeof l.data=="string")s.write(l.data);else if(l.status===2||l.error){const t=l.data||l.message||l.error||"执行错误";if(t.includes("not found")&&P==="bash"){s.writeln(`\r \x1B[33m⚠ bash 不可用,请切换 /bin/sh 后重连。\x1B[0m`),Y.current=!0;return}s.write(t.includes("\x1B")?t:`\r \x1B[31m${t}\x1B[0m\r `)}}catch{typeof h.data=="string"&&s.write(h.data)}},o.onclose=h=>{T(l=>l==="error"?l:"closed"),Y.current||s.write(`\r \x1B[33m[连接已关闭]\x1B[0m\r `)},o.onerror=h=>{console.error("[PodExec:connect] WS error event fired, readyState=",o.readyState,"type=",h.type),T("error"),s.write(`\r \x1B[31m[连接发生错误]\x1B[0m\r `)}},[c,r,k,N,P]);m.useEffect(()=>{if(!a)return;if(!c){console.error("[PodExec:initEffect] ABORT: clusterId is falsy:",c);return}if(!k){console.error("[PodExec:initEffect] ABORT: podName is falsy:",k);return}let s=!1,i=0;const o=performance.now(),h=()=>{if(s)return;const l=$.current;if(!l){i++,i<20?requestAnimationFrame(h):console.error("[PodExec:tryInit] FAILED: containerRef still null after 20 retries (",Math.round(performance.now()-o),"ms)");return}const t=new je.Terminal({cursorBlink:!0,fontSize:14,fontFamily:'Menlo, Monaco, "Courier New", monospace',allowProposedApi:!0,scrollback:5e3,theme:{background:"#0f172a",foreground:"#e2e8f0",cursor:"#38bdf8",selectionBackground:"#1e40af",black:"#1e293b",red:"#ef4444",green:"#10b981",yellow:"#f59e0b",blue:"#3b82f6",magenta:"#a855f7",cyan:"#06b6d4",white:"#e2e8f0",brightBlack:"#475569",brightRed:"#f87171",brightGreen:"#34d399",brightYellow:"#fbbf24",brightBlue:"#60a5fa",brightMagenta:"#c084fc",brightCyan:"#22d3ee",brightWhite:"#f8fafc"}}),n=new Ne.FitAddon;t.loadAddon(n),x.current=t,y.current=n,t.onData(g=>{b.current&&b.current.readyState===WebSocket.OPEN?b.current.send(JSON.stringify({status:0,data:g})):console.warn("[PodExec:term] TX dropped — WS not open, readyState=",b.current?.readyState)}),t.open(l),requestAnimationFrame(()=>{try{n.fit()}catch{}}),E.current=!0,B()};return requestAnimationFrame(h),()=>{s=!0}},[a,c,k]),m.useEffect(()=>{if(!a){try{b.current?.close()}catch{}try{x.current?.dispose()}catch{}x.current=null,b.current=null,y.current=null,E.current=!1,T("idle")}},[a]),m.useEffect(()=>{a&&x.current&&E.current&&B()},[N,P]),m.useEffect(()=>{if(!a)return;const s=$.current;if(!s)return;let i;const o=new ResizeObserver(()=>{clearTimeout(i),i=setTimeout(()=>{if(y.current&&x.current)try{y.current.fit(),x.current.focus();const{cols:h,rows:l}=x.current;b.current?.readyState===WebSocket.OPEN&&b.current.send(JSON.stringify({status:1,cols:h,rows:l}))}catch{}},60)});return o.observe(s),()=>{clearTimeout(i),o.disconnect()}},[a,j]);const f=w==="connected"?"bg-emerald-400":w==="error"?"bg-red-400":w==="closed"?"bg-slate-500":"bg-amber-400",z=w==="connected"?"已连接":w==="connecting"?"连接中":w==="error"?"连接错误":w==="closed"?"已断开":"空闲",u=m.useCallback(()=>{try{x.current?.focus()}catch{}},[]);return e.jsx(oe,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:279:5",open:a,onOpenChange:d,children:e.jsxs(ae,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:280:7",showCloseButton:!1,className:H("bg-[var(--dg-bg-secondary)] border-[var(--dg-border)] p-0 gap-0","!duration-0 !transition-none",j?"!max-w-none !w-screen !h-screen !rounded-none !translate-x-0 !translate-y-0 !left-0 !top-0":""),style:j?{maxWidth:"100vw",width:"100vw",height:"100vh"}:{maxWidth:"960px",width:"92vw"},children:[e.jsxs(ce,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:289:9",className:"sr-only",children:["exec — ",k]}),e.jsx(ie,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:290:9",className:"sr-only",children:"进入 Pod 容器执行命令"}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:293:9",className:"flex items-center justify-between gap-2 px-4 py-2 border-b border-[var(--dg-border)] flex-wrap",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:294:11",className:"flex items-center gap-2 text-sm min-w-0",children:[e.jsx("div",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:295:13",className:H("w-2 h-2 rounded-full shrink-0",f),title:z}),e.jsx(le,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:296:13",className:"h-4 w-4 text-blue-400 shrink-0"}),e.jsxs("span",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:297:13",className:"text-[var(--dg-text-primary)] font-medium truncate",children:["exec — ",k]}),w==="connecting"&&e.jsx(M,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:298:44",className:"h-3 w-3 animate-spin text-[var(--dg-text-muted)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:299:13",className:"text-xs text-[var(--dg-text-muted)]",children:z})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:301:11",className:"flex items-center gap-2",children:[A.length>0&&e.jsxs(Z,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:303:15",value:N,onValueChange:p,children:[e.jsxs(Q,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:304:17",className:"h-8 w-[150px] text-xs bg-[var(--dg-bg-hover)] border-[var(--dg-border)]",children:[e.jsx(de,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:305:19",className:"h-3 w-3 mr-1 text-[var(--dg-text-muted)]"}),e.jsx(ee,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:306:19",placeholder:"容器"})]}),e.jsx(te,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:308:17",children:A.map(s=>e.jsx(se,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:308:55",value:s,children:s},s))})]}),e.jsxs(Z,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:311:13",value:P,onValueChange:V,children:[e.jsx(Q,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:312:15",className:"h-8 w-[110px] text-xs bg-[var(--dg-bg-hover)] border-[var(--dg-border)]",children:e.jsx(ee,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:313:17"})}),e.jsx(te,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:315:15",children:ye.map(s=>e.jsx(se,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:315:47",value:s.value,children:s.label},s.value))})]}),e.jsx(v,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:317:13",variant:"ghost",size:"sm",className:"h-8 px-2 text-[var(--dg-text-secondary)] hover:text-[var(--dg-text-primary)]",onClick:()=>{B(),F({title:"正在重连…"})},title:"重连",children:e.jsx(me,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:319:15",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:321:13",onClick:()=>C(!j),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",title:j?"退出全屏":"全屏",children:j?e.jsx(ue,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:322:29",className:"h-4 w-4"}):e.jsx(xe,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:322:65",className:"h-4 w-4"})}),e.jsx("button",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:324:13",onClick:()=>d(!1),className:"p-1.5 rounded hover:bg-[var(--dg-bg-hover)] text-[var(--dg-text-secondary)]",title:"关闭",children:e.jsx(_,{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:325:15",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/PodExecTerminal.tsx:331:9",ref:$,className:"bg-[#0f172a] cursor-text",style:{height:j?"calc(100vh - 49px)":"480px"},onClick:u})]})})}function Ie({open:a,onOpenChange:d,clusterCode:c,namespace:r,podName:k,containers:A=[],initialContainer:R}){const[F,$]=m.useState(R||A[0]||""),[x,b]=m.useState("/"),[y,E]=m.useState([]),[Y,w]=m.useState(!1),[T,j]=m.useState(""),[C,N]=m.useState(null),[p,P]=m.useState(!1),V=m.useRef(null),B=m.useRef(!1),f=m.useCallback(async t=>{w(!0),j(""),N(null);try{const n=await D.listPodFiles(c,r,k,t,F||void 0),L=(n?.entries||n?.files||n?.data?.entries||n?.data?.files||(Array.isArray(n)?n:[])).map(S=>({name:S.name??S.Name??"",isDir:!!(S.isDir??S.is_dir??S.IsDir??S.dir??S.directory),size:typeof S.size=="number"?S.size:S.Size?Number(S.Size):void 0,modTime:S.modTime??S.mod_time??S.ModTime??S.mtime??S.modified})).filter(S=>S.name&&S.name!==".");E(L),b(t)}catch(n){j(n.message||"加载文件列表失败"),E([])}finally{w(!1)}},[c,r,k,F]);m.useEffect(()=>{a?(async()=>{if(B.current){f(x);return}w(!0);try{const n=await D.execPod(c,r,k,["pwd"],F||void 0),g=(n?.stdout||n?.data?.stdout||"").trim(),L=g&&g.startsWith("/")?g:"/";B.current=!0,b(L),f(L)}catch{B.current=!0,f("/")}})():B.current=!1},[a,F]);const z=t=>{if(t.isDir){const n=x==="/"?`/${t.name}`:`${x}/${t.name}`;f(n)}else u(t.name)},u=async t=>{const n=x==="/"?`/${t}`:`${x}/${t}`;try{const g=await D.readPodFileText(c,r,k,n,F||void 0);N({file:t,content:g})}catch(g){N({file:t,content:`读取失败: ${g.message}`})}},s=t=>{const n=x==="/"?`/${t}`:`${x}/${t}`,g=D.buildPodFileDownloadUrl(c,r,k,n,F||void 0);window.open(g,"_blank")},i=async t=>{const n=t.target.files?.[0];if(n){P(!0);try{await D.uploadPodFile(c,r,k,x,n,F||void 0),f(x)}catch(g){j(`上传失败: ${g.message}`)}finally{P(!1),V.current&&(V.current.value="")}}},o=()=>{if(x==="/")return;const t=x.split("/").filter(Boolean);t.pop(),f(t.length===0?"/":`/${t.join("/")}`)},h=t=>t==null?"-":t<1024?`${t} B`:t<1024*1024?`${(t/1024).toFixed(1)} KB`:`${(t/(1024*1024)).toFixed(1)} MB`,l=x.split("/").filter(Boolean);return a?e.jsx("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:163:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/70",onClick:()=>d(!1),children:e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:164:7",className:"bg-slate-900 border border-slate-700 rounded-xl w-[90vw] max-w-5xl h-[80vh] flex flex-col shadow-2xl",onClick:t=>t.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:169:9",className:"flex items-center justify-between p-3 border-b border-slate-700 shrink-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:170:11",className:"flex items-center gap-2",children:[e.jsx(he,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:171:13",className:"h-4 w-4 text-amber-400"}),e.jsxs("span",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:172:13",className:"text-sm font-semibold text-slate-200",children:["文件浏览器: ",k]}),e.jsx(Pe,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:173:13",variant:"outline",className:"border-slate-700 text-slate-400 text-[10px]",children:r})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:175:11",className:"flex items-center gap-2",children:[A.length>0&&e.jsx("select",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:177:15",value:F,onChange:t=>{$(t.target.value)},className:"bg-slate-800 border border-slate-700 rounded text-xs text-slate-300 px-2 py-1",children:A.map(t=>e.jsx("option",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:182:40",value:t,children:t},t))}),e.jsx(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:185:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400",onClick:()=>d(!1),children:e.jsx(_,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:186:15",className:"h-4 w-4"})})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:192:9",className:"flex items-center justify-between p-2 border-b border-slate-800 shrink-0",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:193:11",className:"flex items-center gap-1 text-xs text-slate-400",children:[e.jsx(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:194:13",variant:"ghost",size:"icon",className:"h-6 w-6 text-slate-500",onClick:o,disabled:x==="/",children:e.jsx(pe,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:195:15",className:"h-3.5 w-3.5"})}),e.jsx("button",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:197:13",className:"hover:text-slate-200",onClick:()=>f("/"),children:"root"}),l.map((t,n)=>{const g=`/${l.slice(0,n+1).join("/")}`;return e.jsxs("span",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:201:17",className:"flex items-center gap-1",children:[e.jsx(fe,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:202:19",className:"h-3 w-3"}),e.jsx("button",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:203:19",className:"hover:text-slate-200",onClick:()=>f(g),children:t})]},g)})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:208:11",className:"flex items-center gap-2",children:[e.jsx("input",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:209:13",type:"file",ref:V,className:"hidden",onChange:i}),e.jsxs(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:210:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>V.current?.click(),disabled:p,children:[p?e.jsx(M,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:211:28",className:"h-3 w-3 animate-spin mr-1"}):e.jsx(be,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:211:80",className:"h-3 w-3 mr-1"}),"上传"]}),e.jsx(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:213:13",size:"sm",variant:"outline",className:"h-7 border-slate-700 text-slate-300 text-xs",onClick:()=>f(x),disabled:Y,children:Y?e.jsx(M,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:214:26",className:"h-3 w-3 animate-spin"}):e.jsx(we,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:214:73",className:"h-3 w-3"})})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:220:9",className:"flex-1 overflow-hidden flex",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:222:11",className:`${C?"w-1/2":"w-full"} overflow-auto p-2 border-r border-slate-800`,children:[T&&e.jsx("p",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:223:23",className:"text-xs text-red-400 p-2",children:T}),Y?e.jsx("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:225:15",className:"flex items-center justify-center h-32",children:e.jsx(M,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:225:70",className:"h-5 w-5 animate-spin text-slate-500"})}):y.length===0?e.jsx("p",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:227:15",className:"text-xs text-slate-500 p-4 text-center",children:"空目录"}):e.jsx("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:229:15",className:"space-y-0.5",children:y.sort((t,n)=>t.isDir===n.isDir?t.name.localeCompare(n.name):t.isDir?-1:1).map(t=>e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:231:19",className:"flex items-center gap-2 px-2 py-1.5 rounded hover:bg-slate-800/50 cursor-pointer group",onClick:()=>z(t),children:[t.isDir?e.jsx(ke,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:237:23",className:"h-4 w-4 text-blue-400 shrink-0"}):e.jsx(ge,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:239:23",className:"h-4 w-4 text-slate-500 shrink-0"}),e.jsx("span",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:241:21",className:`text-xs truncate ${t.isDir?"text-blue-300":"text-slate-300"}`,children:t.name}),!t.isDir&&e.jsx("span",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:245:23",className:"text-[10px] text-slate-600 ml-auto shrink-0",children:h(t.size)}),!t.isDir&&e.jsx(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:248:23",variant:"ghost",size:"icon",className:"h-5 w-5 opacity-0 group-hover:opacity-100 text-slate-400 hover:text-emerald-400 shrink-0",onClick:n=>{n.stopPropagation(),s(t.name)},title:"下载",children:e.jsx(ve,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:253:25",className:"h-3 w-3"})})]},t.name))})]}),C&&e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:264:13",className:"w-1/2 flex flex-col overflow-hidden",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:265:15",className:"flex items-center justify-between p-2 border-b border-slate-800 shrink-0",children:[e.jsx("span",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:266:17",className:"text-xs text-slate-300 font-mono",children:C.file}),e.jsx(v,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:267:17",variant:"ghost",size:"icon",className:"h-6 w-6 text-slate-400",onClick:()=>N(null),children:e.jsx(_,{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:268:19",className:"h-3.5 w-3.5"})})]}),e.jsx("div",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:271:15",className:"flex-1 overflow-auto p-3",children:e.jsx("pre",{"code-path":"src/components/kubernetes/PodFileBrowser.tsx:272:17",className:"text-xs text-slate-300 font-mono whitespace-pre-wrap break-all bg-slate-950 rounded p-3",children:C.content||"(空文件)"})})]})]})]})}):null}export{Le as P,O as S,Me as Y,Ie as a,De as b,W as c,ze as e,$e as f,Re as s};