4 lines
75 KiB
JavaScript
4 lines
75 KiB
JavaScript
import{r as g,E as xe,o as te,N as Q,v as T,j as e,B as i,X as he,L as A,k as be,y as ge,m as Ne,q as O,C as ne,A as le,w as de,n as se,F as M,H as ke}from"./index-BTQygws6.js";import{C as ve,a as Re}from"./card-D0oz3NII.js";import{I as P}from"./input-C6mE-wO9.js";import{B as E}from"./badge-BsIZhz7S.js";import{S as I,a as F,b as H,c as J,d as $}from"./select-pPlmgAjn.js";import{T as je,a as Pe,b as C,c as ye,d as fe,e as a}from"./table-Dh5trM9F.js";import{c as re,R as Ee,y as Ve,o as we,Y as Ce,P as Se,a as ze}from"./PodFileBrowser-BYnKz8ea.js";import{L as _}from"./label-8e-EC7mH.js";import{T as _e}from"./textarea-DDxE7TMs.js";import{u as ie}from"./use-toast-C8TQro77.js";import{k as f}from"./index-DSkkspoy.js";import{F as ce}from"./file-text-B8e3PkIb.js";import{S as W}from"./save-w9vZ9YyU.js";import{P as G}from"./plus-DOS6OUrq.js";import{T as U}from"./trash-2-5oUve9eW.js";import{R as $e}from"./refresh-cw-e9vbQhCy.js";import{D as oe}from"./download-BSvsFf63.js";import{S as Me}from"./search-BDsFve6h.js";import{P as B}from"./pencil-BgEVXj0m.js";import{H as Ye}from"./hard-drive-zBn-z9Ht.js";import"./index-WFeZT6kc.js";import"./chevron-up-Z8QjN8G2.js";import"./copy-DRb4X68n.js";import"./sparkles-Bd2inR9e.js";import"./xterm-DSqgeKvr.js";import"./box-CHjdSJYg.js";import"./rotate-cw-ClBTsHWn.js";import"./minimize-2-DBp9LGa2.js";import"./arrow-left-C7utsRsB.js";import"./upload-DAFoufx2.js";import"./folder-CQ5eyfNi.js";function Te(s){try{return JSON.parse(s)}catch{}try{const t=s.split(`
|
||
`).filter(o=>!o.trim().startsWith("#"));return JSON.parse(t.join(`
|
||
`))}catch{return null}}function Ae({clusterCode:s,namespace:t,resource:o,name:d,onClose:r,onSaved:x}){const{toast:v}=ie(),[w,V]=g.useState(!0),[R,m]=g.useState(!1),[u,b]=g.useState(""),[l,h]=g.useState(null),[N,j]=g.useState("visual"),[n,k]=g.useState(""),p=g.useCallback(async()=>{V(!0);try{const S=await f.getResourceYaml(s,t,o,d),L=re(S);b(S),k(L);const ee=Te(L);h(ee),ee||(j("yaml"),v({title:"可视化编辑不可用",description:"无法解析资源结构,已切换到 YAML 编辑模式"}))}catch(S){v({title:"加载失败",description:S.message,variant:"destructive"})}finally{V(!1)}},[s,t,o,d]);g.useEffect(()=>{p()},[p]);const y=async S=>{m(!0);try{const L=q(S);await f.updateResourceYaml(s,t,o,d,L),v({title:"保存成功",description:`${o}/${d} 已更新`}),x?.(),r()}catch(L){v({title:"保存失败",description:L.message,variant:"destructive"})}finally{m(!1)}},Z=async()=>{m(!0);try{await f.updateResourceYaml(s,t,o,d,n),v({title:"YAML 已应用",description:`${o}/${d} 更新成功`}),x?.(),r()}catch(S){v({title:"保存失败",description:S.message,variant:"destructive"})}finally{m(!1)}};function q(S){return JSON.stringify(S,null,2)}const X={configmaps:{title:"ConfigMap",icon:ce,color:"text-blue-400"},secrets:{title:"Secret",icon:T,color:"text-amber-400"},services:{title:"Service",icon:Q,color:"text-cyan-400"},ingresses:{title:"Ingress",icon:te,color:"text-purple-400"},pvcs:{title:"PersistentVolumeClaim",icon:xe,color:"text-emerald-400"}},Y=X[o]||X.configmaps,D=Y.icon;return e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:114:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:r,children:e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:115:7",className:"bg-[var(--dg-bg-primary)] border border-[var(--dg-border)] rounded-xl w-[90vw] max-w-3xl max-h-[85vh] flex flex-col shadow-2xl",onClick:S=>S.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:117:9",className:"flex items-center justify-between p-4 border-b border-[var(--dg-border)]",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:118:11",className:"flex items-center gap-2",children:[e.jsx(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:119:13",className:`h-5 w-5 ${Y.color}`}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:120:13",children:[e.jsxs("h2",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:121:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:[Y.title," 编辑器"]}),e.jsxs("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:122:15",className:"text-xs text-[var(--dg-text-muted)]",children:[d," · ",t," · ",s]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:125:11",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:127:13",className:"flex rounded-lg border border-[var(--dg-border)] overflow-hidden",children:[e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:128:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="visual"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>l&&j("visual"),disabled:!l,children:"可视化编辑"}),e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:133:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${N==="yaml"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>j("yaml"),children:"YAML 编辑"})]}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:13",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)]",onClick:r,children:e.jsx(he,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138:119",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:143:9",className:"flex-1 overflow-auto p-4",children:w?e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:13",className:"flex items-center justify-center h-full py-20",children:e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:145:76",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):N==="yaml"?e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:147:13",className:"space-y-3",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:148:15",className:"text-xs text-amber-400/80",children:"⚠️ YAML 编辑模式 — 修改后点击保存。已自动清理只读字段(status/managedFields/uid)"}),e.jsx(Ee,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:149:15",value:n,height:"550px",theme:we,extensions:[Ve()],onChange:S=>k(S),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,autocompletion:!0},style:{fontSize:"12px"}}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:158:15",className:"flex justify-end gap-2",children:[e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:159:17",variant:"outline",size:"sm",onClick:()=>{k(re(u))},children:"重置"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:160:17",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:Z,disabled:R,children:[R?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:29",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:161:85",className:"h-3.5 w-3.5 mr-1"}),"保存"]})]})]}):l?e.jsxs(e.Fragment,{children:[o==="configmaps"&&e.jsx(Le,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:168:45",manifest:l,onSave:y,saving:R}),o==="secrets"&&e.jsx(Oe,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:169:42",manifest:l,onSave:y,saving:R}),o==="services"&&e.jsx(Be,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:170:43",manifest:l,onSave:y,saving:R}),o==="ingresses"&&e.jsx(De,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:171:44",manifest:l,onSave:y,saving:R}),o==="pvcs"&&e.jsx(Ie,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:172:39",manifest:l,onSave:y,saving:R}),!["configmaps","secrets","services","ingresses","pvcs"].includes(o)&&e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:174:17",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:175:19",children:"该资源类型暂不支持可视化编辑"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:176:19",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:181:13",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:182:15",children:"无法解析资源结构"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:183:15",variant:"outline",size:"sm",className:"mt-4",onClick:()=>j("yaml"),children:"切换到 YAML 编辑"})]})})]})})}function Le({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>({key:m,value:String(u)}))),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:""}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:219:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:220:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:221:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:222:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:224:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:225:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:226:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"配置数据 (键值对)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:227:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:229:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:231:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:232:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 LOG_LEVEL)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(_e,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:238:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"值",className:"flex-[2] font-mono text-xs min-h-[36px] max-h-[120px] bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:244:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:245:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:250:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无配置数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:254:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:255:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:256:77",className:"h-3.5 w-3.5 mr-1"}),"保存配置"]})})]})}function Oe({manifest:s,onSave:t,saving:o}){const d=s?.data||{},[r,x]=g.useState(Object.entries(d).map(([m,u])=>{const b=String(u);try{const l=atob(b);return{key:m,value:l,encoded:!0}}catch{return{key:m,value:b,encoded:!1}}})),v=(m,u,b)=>{const l=[...r];l[m]={...l[m],[u]:b},x(l)},w=()=>x([...r,{key:"",value:"",encoded:!0}]),V=m=>x(r.filter((u,b)=>b!==m)),R=()=>{const m={};r.forEach(u=>{u.key.trim()&&(m[u.key.trim()]=u.encoded?btoa(u.value):u.value)}),t({...s,data:m})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:304:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:305:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:306:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:307:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:309:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:310:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"类型"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:311:9",value:s?.type||"Opaque",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:313:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:314:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:315:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"密钥数据 (已自动解码 Base64)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:316:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:318:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[r.map((m,u)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:320:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:321:15",value:m.key,onChange:b=>v(u,"key",b.target.value),placeholder:"键名 (如 password)",className:"flex-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:327:15",value:m.value,onChange:b=>v(u,"value",b.target.value),placeholder:"明文值",className:"flex-[2] font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:333:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>V(u),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:334:17",className:"h-3.5 w-3.5"})})]},u)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:339:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无密钥数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:343:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:344:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:R,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:345:77",className:"h-3.5 w-3.5 mr-1"}),"保存密钥"]})})]})}function Be({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState(d.type||"ClusterIP"),[v,w]=g.useState((d.ports||[]).map(n=>({name:n.name||"",port:String(n.port||""),targetPort:String(n.targetPort||""),protocol:n.protocol||"TCP",nodePort:n.nodePort?String(n.nodePort):""}))),[V,R]=g.useState(Object.entries(d.selector||{}).map(([n,k])=>({key:n,value:String(k)}))),m=(n,k,p)=>{const y=[...v];y[n]={...y[n],[k]:p},w(y)},u=()=>w([...v,{name:"",port:"",targetPort:"",protocol:"TCP",nodePort:""}]),b=n=>w(v.filter((k,p)=>p!==n)),l=(n,k,p)=>{const y=[...V];y[n]={...y[n],[k]:p},R(y)},h=()=>R([...V,{key:"",value:""}]),N=n=>R(V.filter((k,p)=>p!==n)),j=()=>{const n={...d};n.type=r,n.ports=v.map(p=>{const y={port:parseInt(p.port)||80,targetPort:parseInt(p.targetPort)||parseInt(p.port)||80,protocol:p.protocol};return p.name&&(y.name=p.name),p.nodePort&&r==="NodePort"&&(y.nodePort=parseInt(p.nodePort)),y});const k={};V.forEach(p=>{p.key.trim()&&(k[p.key.trim()]=p.value)}),n.selector=k,t({...s,spec:n})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:408:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:409:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:410:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:411:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:412:11",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:414:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:415:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"Service 类型"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:416:11",value:r,onValueChange:x,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:417:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:418:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:420:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:421:15",value:"ClusterIP",children:"ClusterIP (集群内部)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:422:15",value:"NodePort",children:"NodePort (节点端口)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:423:15",value:"LoadBalancer",children:"LoadBalancer (负载均衡)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:430:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:431:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:432:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"端口映射"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:u,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:433:89",className:"h-3 w-3 mr-1"}),"添加端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:435:9",className:"space-y-2",children:[v.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:437:13",className:"grid grid-cols-[1fr_80px_80px_80px_80px_32px] gap-2 items-center",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:438:15",value:n.name,onChange:p=>m(k,"name",p.target.value),placeholder:"名称",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:439:15",value:n.port,onChange:p=>m(k,"port",p.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:440:15",value:n.targetPort,onChange:p=>m(k,"targetPort",p.target.value),placeholder:"目标",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:441:15",value:n.protocol,onValueChange:p=>m(k,"protocol",p),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:17",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:442:139"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:17",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:32",value:"TCP",children:"TCP"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:72",value:"UDP",children:"UDP"})]})]}),r==="NodePort"?e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:446:17",value:n.nodePort,onChange:p=>m(k,"nodePort",p.target.value),placeholder:"NodePort",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}):e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:447:19"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>b(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:448:133",className:"h-3 w-3"})})]},k)),v.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:451:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无端口,点击「添加端口」"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:456:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:457:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:458:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"选择器 (Selector)"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:h,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:459:93",className:"h-3 w-3 mr-1"}),"添加标签"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:461:9",className:"space-y-2",children:[V.map((n,k)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:463:13",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:464:15",value:n.key,onChange:p=>l(k,"key",p.target.value),placeholder:"键 (如 app)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("span",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:465:15",className:"text-[var(--dg-text-muted)] text-xs",children:"="}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:466:15",value:n.value,onChange:p=>l(k,"value",p.target.value),placeholder:"值 (如 nginx)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>N(k),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:137",className:"h-3 w-3"})})]},k)),V.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:470:37",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无选择器"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:474:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:475:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:j,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Service"]})})]})}function De({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},[r,x]=g.useState((d.rules||[]).map(l=>({host:l.host||"",paths:l.http?.backend?.servicePort!=null?[{path:"/",pathType:"Prefix",serviceName:l.http?.backend?.serviceName||"",servicePort:String(l.http?.backend?.servicePort||"80")}]:(l.http?.paths||[]).map(h=>({path:h.path||"/",pathType:h.pathType||"Prefix",serviceName:h.backend?.service?.name||h.backend?.serviceName||"",servicePort:String(h.backend?.service?.port?.number??h.backend?.servicePort??"80")}))}))),v=(l,h)=>{const N=[...r];N[l]={...N[l],host:h},x(N)},w=()=>x([...r,{host:"",paths:[{path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}]}]),V=l=>x(r.filter((h,N)=>N!==l)),R=(l,h,N,j)=>{const n=[...r];n[l].paths[h]={...n[l].paths[h],[N]:j},x(n)},m=l=>{const h=[...r];h[l].paths.push({path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}),x(h)},u=(l,h)=>{const N=[...r];N[l].paths=N[l].paths.filter((j,n)=>n!==h),x(N)},b=()=>{const l=r.map(h=>({host:h.host,http:{paths:h.paths.map(N=>({path:N.path,pathType:N.pathType,backend:{service:{name:N.serviceName,port:{number:parseInt(N.servicePort)||80}}}}))}}));t({...s,spec:{...d,rules:l}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:544:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:545:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:546:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:547:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:549:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:550:9",className:"flex items-center justify-between mb-2",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:551:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"路由规则"}),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:w,children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:552:89",className:"h-3 w-3 mr-1"}),"添加 Host"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:554:9",className:"space-y-3 max-h-[50vh] overflow-y-auto pr-1",children:[r.map((l,h)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:556:13",className:"p-3 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)] space-y-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:557:15",className:"flex items-center gap-2",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:558:17",value:l.host,onChange:N=>v(h,N.target.value),placeholder:"域名 (如 api.example.com)",className:"flex-1 font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:17",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>V(h),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:564:136",className:"h-3 w-3"})})]}),l.paths.map((N,j)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:567:17",className:"grid grid-cols-[1fr_100px_1fr_60px_28px] gap-1.5 items-center pl-4",children:[e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:568:19",value:N.path,onChange:n=>R(h,j,"path",n.target.value),placeholder:"路径 /",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:569:19",value:N.pathType,onValueChange:n=>R(h,j,"pathType",n),children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:21",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:570:143"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:21",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:36",value:"Prefix",children:"Prefix"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:571:82",value:"Exact",children:"Exact"})]})]}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:573:19",value:N.serviceName,onChange:n=>R(h,j,"serviceName",n.target.value),placeholder:"Service",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:574:19",value:N.servicePort,onChange:n=>R(h,j,"servicePort",n.target.value),placeholder:"端口",type:"number",className:"font-mono text-xs h-7 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:19",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>u(h,j),children:e.jsx(U,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:575:142",className:"h-3 w-3"})})]},j)),e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-[var(--dg-text-muted)]",onClick:()=>m(h),children:[e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:578:129",className:"h-3 w-3 mr-1"}),"添加路径"]})]},h)),r.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:581:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无路由规则,点击「添加 Host」"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:584:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:585:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:b,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Ingress"]})})]})}function Ie({manifest:s,onSave:t,saving:o}){const d=s?.spec||{},r=d.resources?.requests||{},[x,v]=g.useState(r.storage||"1Gi"),[w,V]=g.useState(d.accessModes?.[0]||"ReadWriteOnce"),[R,m]=g.useState(d.storageClassName||""),u=()=>{t({...s,spec:{...d,accessModes:[w],storageClassName:R||void 0,resources:{requests:{storage:x}}}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:617:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:618:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:619:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:620:9",value:s?.metadata?.name||"",readOnly:!0,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:622:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:623:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:624:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"存储大小"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:625:11",value:x,onChange:b=>v(b.target.value),placeholder:"如 10Gi",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"}),e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:631:11",className:"text-[10px] text-[var(--dg-text-muted)] mt-1",children:"单位:Gi (GiB), Mi (MiB), Ti (TiB)"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:633:9",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:634:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"访问模式"}),e.jsxs(I,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:635:11",value:w,onValueChange:V,children:[e.jsx(F,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:636:13",className:"mt-1 h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)] text-xs",children:e.jsx(H,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:637:15"})}),e.jsxs(J,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:639:13",children:[e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:640:15",value:"ReadWriteOnce",children:"ReadWriteOnce (单节点读写)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:641:15",value:"ReadOnlyMany",children:"ReadOnlyMany (多节点只读)"}),e.jsx($,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:642:15",value:"ReadWriteMany",children:"ReadWriteMany (多节点读写)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:647:7",children:[e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:648:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"StorageClass"}),e.jsx(P,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:649:9",value:R,onChange:b=>m(b.target.value),placeholder:"留空使用默认 StorageClass",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]"})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:656:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(i,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:657:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:u,disabled:o,children:[o?e.jsx(A,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:658:77",className:"h-3.5 w-3.5 mr-1"}),"保存 PVC"]})})]})}const ae={deployments:{title:"Deployments",subtitle:"Deployment 工作负载运行状态",icon:O,columns:["名称","命名空间","副本","镜像","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:42:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:43:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:44:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:45:9",children:(()=>{const o=s.ready_replicas||0,d=s.replicas||0,r=d>0?o/d*100:0,x=o===d;return e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:50:15",className:"flex items-center gap-2 min-w-[100px]",children:[e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:51:17",className:"flex-1 h-1.5 rounded-full bg-slate-700/50 overflow-hidden",children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:52:19",className:`h-full rounded-full ${x?"bg-emerald-500":"bg-yellow-500"}`,style:{width:`${r}%`}})}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:54:17",className:`text-xs ${x?"text-emerald-400":"text-yellow-400"}`,children:[o,"/",d]})]})})()}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:59:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:60:9",onClick:o=>o.stopPropagation(),children:e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:61:11",className:"flex items-center gap-0.5",children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:62:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:63:53",className:"h-3.5 w-3.5"})})})})]},s.name)},pods:{title:"Pods",subtitle:"Pod 实例运行状态",icon:de,columns:["名称","命名空间","状态","节点","CPU","内存","重启","镜像","操作"],renderRow:(s,t)=>{const o={Running:"bg-emerald-500/20 text-emerald-400 border-emerald-500/30",Pending:"bg-yellow-500/20 text-yellow-400 border-yellow-500/30",Failed:"bg-red-500/20 text-red-400 border-red-500/30"};return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:75:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:76:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:77:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:78:22",className:o[s.status]||"bg-slate-500/20 text-slate-400",children:s.status||"Unknown"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:79:11",className:"text-sm text-slate-400",children:s.node_name||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:80:11",className:"text-sm text-cyan-400",children:s.cpu_usage_m||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:81:11",className:"text-sm text-amber-400",children:s.mem_usage_mi||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:82:11",className:s.restart_count>0?"text-yellow-400":"text-slate-500",children:s.restart_count||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:83:11",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:84:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:85:13",className:"flex items-center gap-1",children:[e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:86:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-emerald-400 hover:text-emerald-300 hover:bg-emerald-500/10",title:"终端",onClick:()=>t.onTerminal?.(s),children:[e.jsx(ke,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:87:79",className:"h-3.5 w-3.5 mr-1"}),"终端"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:88:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-amber-400 hover:text-amber-300 hover:bg-amber-500/10",title:"文件浏览器",onClick:()=>t.onFileBrowser?.(s),children:[e.jsx(Ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:89:82",className:"h-3.5 w-3.5 mr-1"}),"文件浏览器"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:90:15",variant:"ghost",size:"sm",className:"h-7 px-2 text-xs text-blue-400 hover:text-blue-300 hover:bg-blue-500/10",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:[e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:91:55",className:"h-3.5 w-3.5 mr-1"}),"YAML"]})]})})]},s.name)}},services:{title:"Services",subtitle:"Service 网络服务",icon:Q,columns:["名称","命名空间","类型","Cluster IP","端口","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:102:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:103:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:104:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:105:20",className:"bg-blue-500/20 text-blue-400 border-blue-500/30",children:s.type||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:106:9",className:"text-sm text-slate-400",children:s.cluster_ip||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:107:9",className:"text-sm text-slate-400",children:s.ports||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:108:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:109:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:110:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:111:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},ingresses:{title:"Ingresses",subtitle:"Ingress 路由规则",icon:Q,columns:["名称","命名空间","Hosts","TLS","操作"],renderRow:(s,t)=>{const o=s.hosts||[];return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:123:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:124:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:125:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:126:11",className:"text-sm text-slate-400 max-w-[250px] truncate",children:o.length>0?o.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:127:22",className:s.tls?"bg-emerald-500/20 text-emerald-400":"bg-slate-500/20 text-slate-400",children:s.tls?"HTTPS":"HTTP"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:128:11",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:129:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:130:159",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:131:160",className:"h-3.5 w-3.5"})})]})})]},s.name)}},configmaps:{title:"ConfigMaps",subtitle:"配置字典",icon:ce,columns:["名称","命名空间","键数量","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:142:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:143:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:144:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:145:9",className:"text-sm text-slate-400",children:s.key_count||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:146:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:147:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:148:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:149:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:150:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:151:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},secrets:{title:"Secrets",subtitle:"密钥管理(仅名称与类型)",icon:T,columns:["名称","命名空间","类型","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:161:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:162:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:163:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:164:9",className:"text-sm text-slate-400",children:s.type||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:165:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:166:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:167:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:168:53",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:169:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:170:53",className:"h-3.5 w-3.5"})})]})})]},s.name)},hpas:{title:"HPAs",subtitle:"水平自动伸缩",icon:le,columns:["名称","命名空间","目标","最小/最大","CPU%","Mem%"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:180:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:181:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:182:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:183:9",className:"text-sm text-slate-400",children:[s.target_kind,"/",s.target_name]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:184:9",className:"text-sm text-slate-400",children:[s.min_replicas,"/",s.max_replicas]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:185:9",className:"text-sm text-slate-400",children:[s.cpu_percent??"-","%"]}),e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:186:9",className:"text-sm text-slate-400",children:[s.mem_percent??"-","%"]})]},s.name)},cronjobs:{title:"CronJobs",subtitle:"定时任务",icon:ne,columns:["名称","命名空间","调度","状态","上次执行"],renderRow:s=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:194:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:195:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:196:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:197:9",className:"text-sm font-mono text-slate-400",children:s.schedule||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:198:20",className:s.suspend?"bg-yellow-500/20 text-yellow-400":"bg-emerald-500/20 text-emerald-400",children:s.suspend?"已暂停":"运行中"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:199:9",className:"text-sm text-slate-400",children:s.last_schedule||"-"})]},s.name)},pvcs:{title:"存储卷声明",subtitle:"PersistentVolumeClaim",icon:O,columns:["名称","命名空间","状态","大小","StorageClass","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:207:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:208:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:209:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:210:20",className:s.phase==="Bound"?"bg-emerald-500/20 text-emerald-400":"bg-yellow-500/20 text-yellow-400",children:s.phase||"-"})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:211:9",className:"text-sm text-slate-400",children:s.size||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:212:9",className:"text-sm text-slate-400",children:s.storage_class||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:213:9",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:214:11",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:215:157",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:13",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:216:158",className:"h-3.5 w-3.5"})})]})})]},s.name)},statefulsets:{title:"StatefulSets",subtitle:"有状态应用",icon:O,columns:["名称","命名空间","副本","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:226:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:227:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:228:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:229:9",className:"text-sm text-slate-400",children:s.replicas||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:230:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:231:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},daemonsets:{title:"DaemonSets",subtitle:"守护进程集",icon:O,columns:["名称","命名空间","期望","当前","就绪","镜像"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:239:7",className:"border-slate-800 hover:bg-slate-800/30 cursor-pointer",onClick:()=>t.onDetail?.(s),children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:240:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:241:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:242:9",className:"text-sm text-slate-400",children:s.desired||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:243:9",className:"text-sm text-slate-400",children:s.current||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:244:9",className:"text-sm text-slate-400",children:s.ready||0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:245:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image||"-"})]},s.name)},serviceaccounts:{title:"ServiceAccounts",subtitle:"服务账号(RBAC 身份标识)",icon:T,columns:["名称","命名空间","Secret数","镜像拉取凭证","创建时间","操作"],renderRow:(s,t)=>e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:253:7",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:254:9",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:9",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:255:20",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:256:9",className:"text-sm text-slate-400",children:s.secret_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:257:9",className:"text-xs text-slate-500 max-w-[200px] truncate",children:s.image_pull_secrets&&s.image_pull_secrets.length>0?s.image_pull_secrets.join(", "):"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:260:9",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:261:9",onClick:o=>o.stopPropagation(),children:e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:262:11",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:263:52",className:"h-3.5 w-3.5"})})})]},s.name)},roles:{title:"Roles",subtitle:"命名空间级角色权限(RBAC)",icon:T,columns:["名称","命名空间","规则数","权限范围","创建时间","操作"],renderRow:(s,t)=>{const o=s.verbs||[],d=s.resources||[],r=o.length>4?o.slice(0,4).join(", ")+` +${o.length-4}`:o.join(", "),x=d.length>4?d.slice(0,4).join(", ")+` +${d.length-4}`:d.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:277:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:278:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:279:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:280:11",className:"text-sm text-slate-400",children:s.rule_count??0}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:281:11",className:"text-xs text-slate-500 max-w-[280px]",children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:282:13",className:"flex flex-col gap-0.5",children:[e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:283:15",className:"text-cyan-400 truncate",title:o.join(", "),children:["verbs: ",r||"-"]}),e.jsxs("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:284:15",className:"text-amber-400 truncate",title:d.join(", "),children:["resources: ",x||"-"]})]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:287:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:288:11",onClick:v=>v.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:289:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:290:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:291:55",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:292:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:293:55",className:"h-3.5 w-3.5"})})]})})]},s.name)}},rolebindings:{title:"RoleBindings",subtitle:"角色绑定关系(RBAC 授权)",icon:T,columns:["名称","命名空间","角色引用","绑定主体","创建时间","操作"],renderRow:(s,t)=>{const o=s.subjects||[],d=o.length>3?o.slice(0,3).join(", ")+` +${o.length-3}`:o.join(", ");return e.jsxs(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:307:9",className:"border-slate-800 hover:bg-slate-800/30",children:[e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:308:11",className:"font-medium text-slate-200",children:s.name}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:11",children:e.jsx(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:309:22",variant:"outline",className:"border-slate-700 text-slate-400",children:s.namespace})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:310:11",children:e.jsxs(E,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:311:13",className:"bg-purple-500/20 text-purple-400 border-purple-500/30",children:[s.role_ref_kind||"-","/",s.role_ref_name||"-"]})}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:315:11",className:"text-xs text-slate-500 max-w-[200px] truncate",title:o.join(", "),children:d||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:318:11",className:"text-xs text-slate-500",children:s.age||"-"}),e.jsx(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:319:11",onClick:r=>r.stopPropagation(),children:e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:320:13",className:"flex items-center gap-0.5",children:[e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:321:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-slate-400 hover:text-blue-400",title:"查看YAML",onClick:()=>t.onYaml?.(s.name),children:e.jsx(M,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:322:56",className:"h-3.5 w-3.5"})}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:323:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-emerald-400 hover:text-emerald-300",title:"编辑",onClick:()=>t.onEdit?.(s.name),children:e.jsx(B,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:324:56",className:"h-3.5 w-3.5"})})]})})]},s.name)}}};function vs(){const{clusterCode:s,namespace:t}=be(),o=ge(),d=Ne();ie();const r=g.useMemo(()=>{const c=o.pathname.split("/"),z=c[c.length-1];if(z&&ae[z])return z;if(c.length>=2){const K=c[c.length-2];if(K&&ae[K])return K}return"deployments"},[o.pathname]),x=ae[r],[v,w]=g.useState([]),[V,R]=g.useState([]),[m,u]=g.useState([]),[b,l]=g.useState(!1),[h,N]=g.useState(""),[j,n]=g.useState(null),[k,p]=g.useState(null),[y,Z]=g.useState(null),[q,X]=g.useState(null);g.useEffect(()=>{f.getClusters().then(c=>{const z=c?.list||[];if(w(z),!s&&z.length>0){const K=z[0].code||String(z[0].id);d(`/kubernetes/${K}/namespace/${t||"default"}/${r}`,{replace:!0})}}).catch(()=>w([]))},[]),g.useEffect(()=>{s&&f.getNamespaces(s).then(c=>{const z=Array.isArray(c)?c:c?.list||c?.data||[];R(z),!t&&z.length>0&&d(`/kubernetes/${s}/namespace/${z[0]}/${r}`,{replace:!0})}).catch(()=>R([]))},[s]);const Y=g.useCallback(async()=>{if(!(!s||!t)){l(!0);try{let c=[];switch(r){case"deployments":c=await f.getNamespaceDeployments(s,t).catch(()=>[]);break;case"pods":c=await f.getNamespacePods(s,t).catch(()=>[]);break;case"services":c=await f.getNamespaceServices(s,t).catch(()=>[]);break;case"ingresses":c=await f.getNamespaceIngresses(s,t).catch(()=>[]);break;case"configmaps":c=await f.getNamespaceConfigMaps(s,t).catch(()=>[]);break;case"secrets":c=await f.getNamespaceSecrets(s,t).catch(()=>[]);break;case"hpas":c=await f.getHPAs(s,t).catch(()=>[]);break;case"cronjobs":c=await f.getCronJobs(s,t).catch(()=>[]);break;case"pvcs":c=await f.getPVCs(s,t).catch(()=>[]);break;case"statefulsets":c=await f.getStatefulSets(s,t).catch(()=>[]);break;case"daemonsets":c=await f.getDaemonSets(s,t).catch(()=>[]);break;case"serviceaccounts":c=await f.getServiceAccounts(s,t).catch(()=>[]);break;case"roles":c=await f.getRoles(s,t).catch(()=>[]);break;case"rolebindings":c=await f.getRoleBindings(s,t).catch(()=>[]);break}u(Array.isArray(c)?c:c?.list||c?.data||[])}catch{u([])}finally{l(!1)}}},[s,t,r]);g.useEffect(()=>{Y()},[Y]);const D=m.filter(c=>(c.name||"").toLowerCase().includes(h.toLowerCase())),S=c=>{r==="deployments"?d(`/kubernetes/${s}/namespace/${t}/workload/view/Deployment/${c.name}`):r==="statefulsets"?d(`/kubernetes/${s}/namespace/${t}/workload/view/StatefulSet/${c.name}`):r==="daemonsets"&&d(`/kubernetes/${s}/namespace/${t}/workload/view/DaemonSet/${c.name}`)},L=c=>n({resource:r,name:c}),ee=c=>{["configmaps","secrets","services","ingresses","pvcs"].includes(r)?p({resource:r,name:c}):n({resource:r,name:c,editMode:!0})},me=()=>f.exportAsCSV(`${r}-${s}-${t}.csv`,D),ue=()=>f.exportAsJSON(`${r}-${s}-${t}.json`,D),pe=g.useMemo(()=>[{type:"deployments",label:"Deployments",icon:O},{type:"statefulsets",label:"StatefulSets",icon:O},{type:"daemonsets",label:"DaemonSets",icon:O},{type:"pods",label:"Pods",icon:de},{type:"cronjobs",label:"CronJobs",icon:ne},{type:"services",label:"Services",icon:Q},{type:"ingresses",label:"Ingresses",icon:Q},{type:"configmaps",label:"ConfigMaps",icon:ce},{type:"secrets",label:"Secrets",icon:T},{type:"hpas",label:"HPAs",icon:le},{type:"pvcs",label:"存储卷",icon:O},{type:"serviceaccounts",label:"ServiceAccounts",icon:T},{type:"roles",label:"Roles",icon:T},{type:"rolebindings",label:"RoleBindings",icon:T}],[]);return x?e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:454:5",className:"space-y-4",children:[j&&e.jsx(Ce,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:456:9",clusterCode:s||"",namespace:t||"",resource:j.resource,name:j.name,onClose:()=>n(null),onSaved:Y,cleanBeforeEdit:!0,autoEdit:j.editMode===!0}),k&&e.jsx(Ae,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:468:9",clusterCode:s||"",namespace:t||"",resource:k.resource,name:k.name,onClose:()=>p(null),onSaved:Y}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:477:7",className:"flex items-center gap-2 text-sm text-slate-500",children:[e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:478:9",to:"/kubernetes",className:"hover:text-slate-300 transition-colors",children:"集群"}),s&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:27",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:479:63",to:`/kubernetes/${s}`,className:"hover:text-slate-300 transition-colors",children:s})]}),t&&e.jsxs(e.Fragment,{children:[e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:25",className:"h-3 w-3"}),e.jsx(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:480:61",to:`/kubernetes/${s}/namespace/${t}`,className:"hover:text-slate-300 transition-colors",children:t})]}),e.jsx(te,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:9",className:"h-3 w-3"}),e.jsx("span",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:481:45",className:"text-slate-300",children:x.title})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:483:7",className:"flex items-center justify-between",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:484:9",children:[e.jsx("h1",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:485:11",className:"text-2xl font-bold text-slate-100",children:x.title}),e.jsx("p",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:486:11",className:"text-sm text-slate-500 mt-1",children:x.subtitle})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:488:9",className:"flex items-center gap-2",children:[e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:489:11",value:s||"",onValueChange:c=>d(`/kubernetes/${c}/namespace/${t||"default"}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:13",className:"w-48 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:490:97",placeholder:"选择集群"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:13",className:"bg-slate-800 border-slate-700",children:v.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:491:91",value:c.code||String(c.id),children:c.name},c.id))})]}),e.jsxs(I,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:493:11",value:t||"",onValueChange:c=>d(`/kubernetes/${s}/namespace/${c}/${r}`),children:[e.jsx(F,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:13",className:"w-40 h-9 bg-slate-800/50 border-slate-700 text-slate-200",children:e.jsx(H,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:494:97",placeholder:"命名空间"})}),e.jsx(J,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:13",className:"bg-slate-800 border-slate-700 max-h-[300px]",children:V.map(c=>e.jsx($,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:495:108",value:c,children:c},c))})]}),e.jsx(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:497:11",variant:"outline",size:"icon",className:"h-9 w-9 border-slate-700 text-slate-400",onClick:Y,disabled:b,children:b?e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:24",className:"h-4 w-4 animate-spin"}):e.jsx($e,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:498:71",className:"h-4 w-4"})}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:500:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:me,title:"导出CSV",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:501:13",className:"h-3 w-3 mr-1"}),"CSV"]}),e.jsxs(i,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:503:11",variant:"outline",size:"sm",className:"h-9 border-slate-700 text-slate-400 text-xs",onClick:ue,title:"导出JSON",children:[e.jsx(oe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:504:13",className:"h-3 w-3 mr-1"}),"JSON"]})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:508:7",className:"flex items-center gap-1 bg-slate-900/50 border border-slate-800 rounded-lg p-1 overflow-x-auto",children:pe.map(c=>e.jsxs(se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:510:11",to:`/kubernetes/${s}/namespace/${t}/${c.type}`,className:`flex items-center gap-1.5 px-3 py-1.5 text-xs rounded-md transition-colors whitespace-nowrap ${c.type===r?"bg-blue-600/20 text-blue-400":"text-slate-400 hover:text-slate-200 hover:bg-slate-800/50"}`,children:[e.jsx(c.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:512:13",className:"h-3 w-3"}),c.label]},c.type))}),e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:516:7",className:"relative w-56",children:[e.jsx(Me,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:517:9",className:"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-500"}),e.jsx(P,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:518:9",placeholder:"搜索...",value:h,onChange:c=>N(c.target.value),className:"pl-9 h-9 bg-slate-800/50 border-slate-700 text-slate-200"})]}),e.jsx(ve,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:520:7",className:"bg-slate-900 border-slate-800",children:e.jsx(Re,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:521:9",className:"p-0",children:e.jsxs(je,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:522:11",children:[e.jsx(Pe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:13",children:e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:26",className:"border-slate-800 hover:bg-transparent",children:x.columns.map(c=>e.jsx(ye,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:523:115",className:"text-slate-400",children:c},c))})}),e.jsx(fe,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:524:13",children:b?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(A,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:526:115",className:"h-5 w-5 animate-spin mx-auto mb-2"}),"加载中..."]})}):D.length===0?e.jsx(C,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:17",children:e.jsxs(a,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:27",colSpan:x.columns.length,className:"text-center text-slate-500 py-12",children:[e.jsx(x.icon,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:528:115",className:"h-8 w-8 mx-auto mb-2 opacity-50"}),"暂无 ",x.title]})}):D.map(c=>x.renderRow(c,{clusterCode:s||"",namespace:t||"",onDetail:S,onYaml:L,onEdit:ee,onTerminal:z=>Z(z),onFileBrowser:z=>X(z)}))})]})})}),e.jsx(Se,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:538:7",open:!!y,onOpenChange:c=>{c||Z(null)},clusterId:v[0]?.id||v[0]?.code||s||"",namespace:t||"",podName:y?.name||"",containers:(y?.containers||[]).map(c=>c.name).filter(Boolean)}),e.jsx(ze,{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:547:7",open:!!q,onOpenChange:c=>{c||X(null)},clusterCode:s||"",namespace:t||"",podName:q?.name||"",containers:(q?.containers||[]).map(c=>c.name).filter(Boolean)})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/NamespaceResourcePage.tsx:451:23",className:"text-slate-400 p-8 text-center",children:["未知资源类型: ",r]})}export{vs as default};
|