import{r as v,j as e,R as K,y as Q,o as Z}from"./vendor-codemirror-C7mXSpXt.js";import{_ as U,B as R}from"./index-BZzvNKfa.js";import{I as k}from"./input-D7JNe8Xd.js";import{L as w}from"./label-Bj0mNUAM.js";import{T as ee}from"./textarea-BL_Am_oZ.js";import{S as D,a as B,b as G,c as W,d as T}from"./select-BFGszUub.js";import{u as se}from"./use-toast-CkA38LVP.js";import{k as Y}from"./index-DPhaKvWI.js";import{c as A}from"./PodFileBrowser-B3WbiDk_.js";import{D as te,f as re,N as oe,j as ae,F as ce,X as ne,L as _,$ as O,P as z,T as L}from"./vendor-icons-DIDdqO_o.js";function de(r,i,o){switch(r){case"services":return{apiVersion:"v1",kind:"Service",metadata:{name:o,namespace:i},spec:{type:"ClusterIP",selector:{},ports:[{name:"http",port:80,targetPort:80,protocol:"TCP"}]}};case"ingresses":return{apiVersion:"networking.k8s.io/v1",kind:"Ingress",metadata:{name:o,namespace:i},spec:{ingressClassName:"nginx",rules:[{host:"",http:{paths:[{path:"/",pathType:"Prefix",backend:{service:{name:"",port:{number:80}}}}]}}]}};case"configmaps":return{apiVersion:"v1",kind:"ConfigMap",metadata:{name:o,namespace:i},data:{}};case"secrets":return{apiVersion:"v1",kind:"Secret",metadata:{name:o,namespace:i},type:"Opaque",data:{}};case"pvcs":return{apiVersion:"v1",kind:"PersistentVolumeClaim",metadata:{name:o,namespace:i},spec:{accessModes:["ReadWriteOnce"],resources:{requests:{storage:"1Gi"}}}};default:return{apiVersion:"v1",kind:"Unknown",metadata:{name:o,namespace:i}}}}async function J(r){if(!r?.trim())return null;try{return JSON.parse(r)}catch{}try{const o=(await U(()=>import("./js-yaml-37NdyH6G.js"),[])).load(r);return o&&typeof o=="object"?o:null}catch{return null}}async function H(r){return(await U(()=>import("./js-yaml-37NdyH6G.js"),[])).dump(r,{lineWidth:120,noRefs:!0})}async function ie(r){const i=JSON.parse(JSON.stringify(r));delete i.status,i.metadata&&(delete i.metadata.managedFields,delete i.metadata.resourceVersion,delete i.metadata.uid,delete i.metadata.creationTimestamp,delete i.metadata.generation);const o=await H(i);return A(o)}function Ne({clusterCode:r,namespace:i,resource:o,name:V,onClose:g,onSaved:N,isCreate:b=!1}){const{toast:l}=se(),[f,p]=v.useState(!0),[h,y]=v.useState(!1),[S,a]=v.useState(""),[t,x]=v.useState(null),[j,C]=v.useState("visual"),[u,c]=v.useState(""),m=v.useCallback(async()=>{p(!0);try{if(b){const q=de(o,i,V||"");x(q),c(JSON.stringify(q,null,2)),a("");return}const E=await Y.getResourceYaml(r,i,o,V),M=A(E);a(E),c(M);const I=await J(M);x(I),I||(C("yaml"),l({title:"可视化编辑不可用",description:"无法解析资源结构,已切换到 YAML 编辑模式"}))}catch(E){l({title:"加载失败",description:E.message,variant:"destructive"})}finally{p(!1)}},[r,i,o,V,b]);v.useEffect(()=>{m()},[m]);const s=async E=>{y(!0);try{const M=await ie(E),I=E?.metadata?.name||V;if(b){if(!I?.trim()){l({title:"请填写名称",variant:"destructive"});return}await Y.applyYAML(r,M),l({title:"创建成功",description:`${o}/${I}`})}else await Y.updateResourceYaml(r,i,o,V,M),l({title:"保存成功",description:`${o}/${V} 已更新`});N?.(),g()}catch(M){l({title:b?"创建失败":"保存失败",description:M.message,variant:"destructive"})}finally{y(!1)}},n=async()=>{y(!0);try{const E=A(u);b?(await Y.applyYAML(r,E),l({title:"创建成功",description:"YAML 已应用"})):(await Y.updateResourceYaml(r,i,o,V,E),l({title:"YAML 已应用",description:`${o}/${V} 更新成功`})),N?.(),g()}catch(E){l({title:"保存失败",description:E.message,variant:"destructive"})}finally{y(!1)}},d=async()=>{const E=await J(u);if(!E){l({title:"无法解析 YAML",description:"请检查语法后继续用 YAML 模式",variant:"destructive"});return}x(E),C("visual")},P=async()=>{if(t){const E=await H(t);c(A(E))}C("yaml")},F={configmaps:{title:"ConfigMap",icon:ce,color:"text-blue-400"},secrets:{title:"Secret",icon:ae,color:"text-amber-400"},services:{title:"Service",icon:oe,color:"text-cyan-400"},ingresses:{title:"Ingress",icon:re,color:"text-purple-400"},pvcs:{title:"PersistentVolumeClaim",icon:te,color:"text-emerald-400"}},$=F[o]||F.configmaps,X=$.icon;return e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:135:5",className:"fixed inset-0 z-50 flex items-center justify-center bg-black/60",onClick:g,children:e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:136: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:E=>E.stopPropagation(),children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:138: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:139:11",className:"flex items-center gap-2",children:[e.jsx(X,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:140:13",className:`h-5 w-5 ${$.color}`}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:141:13",children:[e.jsx("h2",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:142:15",className:"text-lg font-bold text-[var(--dg-text-primary)]",children:b?`新建 ${$.title}`:`${$.title} 编辑`}),e.jsxs("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:143:15",className:"text-xs text-[var(--dg-text-muted)]",children:[b?i:V," · ",i," · ",r]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:146:11",className:"flex items-center gap-2",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:148:13",className:"flex rounded-lg border border-[var(--dg-border)] overflow-hidden",children:[e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:149:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${j==="visual"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>{j==="yaml"?d():C("visual")},disabled:!t&&j!=="yaml",children:"可视化编辑"}),e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:154:15",className:`px-3 py-1.5 text-xs font-medium transition-colors ${j==="yaml"?"bg-blue-600 text-white":"bg-transparent text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>{j==="visual"?P():C("yaml")},children:"YAML 编辑"})]}),e.jsx(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:159:13",variant:"ghost",size:"icon",className:"h-8 w-8 text-[var(--dg-text-secondary)]",onClick:g,children:e.jsx(ne,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:159:119",className:"h-4 w-4"})})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:164:9",className:"flex-1 overflow-auto p-4",children:f?e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:166:13",className:"flex items-center justify-center h-full py-20",children:e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:166:76",className:"h-6 w-6 animate-spin text-[var(--dg-text-muted)]"})}):j==="yaml"?e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:168:13",className:"space-y-3",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:169:15",className:"text-xs text-amber-400/80",children:"⚠️ YAML 编辑模式 — 修改后点击保存。已自动清理只读字段(status/managedFields/uid)"}),e.jsx(K,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:170:15",value:u,height:"550px",theme:Z,extensions:[Q()],onChange:E=>c(E),basicSetup:{lineNumbers:!0,foldGutter:!0,highlightActiveLine:!0,autocompletion:!0},style:{fontSize:"12px"}}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:179:15",className:"flex justify-end gap-2",children:[e.jsx(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:180:17",variant:"outline",size:"sm",onClick:()=>{c(A(S))},children:"重置"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:181:17",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:n,disabled:h,children:[h?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:182:29",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:182:85",className:"h-3.5 w-3.5 mr-1"}),"保存"]})]})]}):t?e.jsxs(e.Fragment,{children:[o==="configmaps"&&e.jsx(le,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:189:45",manifest:t,onSave:s,saving:h,isCreate:b}),o==="secrets"&&e.jsx(ue,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:190:42",manifest:t,onSave:s,saving:h,isCreate:b}),o==="services"&&e.jsx(xe,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:191:43",manifest:t,onSave:s,saving:h,isCreate:b}),o==="ingresses"&&e.jsx(pe,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:192:44",manifest:t,onSave:s,saving:h,isCreate:b}),o==="pvcs"&&e.jsx(me,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:193:39",manifest:t,onSave:s,saving:h,isCreate:b}),!["configmaps","secrets","services","ingresses","pvcs"].includes(o)&&e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:195:17",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:196:19",children:"该资源类型暂不支持可视化编辑"}),e.jsx(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:197:19",variant:"outline",size:"sm",className:"mt-4",onClick:()=>C("yaml"),children:"切换到 YAML 编辑"})]})]}):e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:202:13",className:"text-center py-12 text-[var(--dg-text-muted)]",children:[e.jsx("p",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:203:15",children:"无法解析资源结构"}),e.jsx(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:204:15",variant:"outline",size:"sm",className:"mt-4",onClick:()=>C("yaml"),children:"切换到 YAML 编辑"})]})})]})})}function le({manifest:r,onSave:i,saving:o,isCreate:V}){const g=r?.data||{},[N,b]=v.useState(r?.metadata?.name||""),[l,f]=v.useState(Object.entries(g).map(([a,t])=>({key:a,value:String(t)}))),p=(a,t,x)=>{const j=[...l];j[a]={...j[a],[t]:x},f(j)},h=()=>f([...l,{key:"",value:""}]),y=a=>f(l.filter((t,x)=>x!==a)),S=()=>{const a={};l.forEach(t=>{t.key.trim()&&(a[t.key.trim()]=t.value)}),i({...r,metadata:{...r.metadata,name:N.trim()},data:a})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:241:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:242:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:243:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:244:9",value:N,onChange:a=>b(a.target.value),readOnly:!V,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:246:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:247:9",className:"flex items-center justify-between mb-2",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:248:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"配置数据 (键值对)"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:249:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:h,children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:249:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:251:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[l.map((a,t)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:253:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:254:15",value:a.key,onChange:x=>p(t,"key",x.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(ee,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:260:15",value:a.value,onChange:x=>p(t,"value",x.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(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:266:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>y(t),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:267:17",className:"h-3.5 w-3.5"})})]},t)),l.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:272:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无配置数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:276:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:277:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:S,disabled:o,children:[o?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:278:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:278:77",className:"h-3.5 w-3.5 mr-1"}),"保存配置"]})})]})}function ue({manifest:r,onSave:i,saving:o,isCreate:V}){const g=r?.data||{},[N,b]=v.useState(r?.metadata?.name||""),[l,f]=v.useState(Object.entries(g).map(([a,t])=>{const x=String(t);try{const j=atob(x);return{key:a,value:j,encoded:!0}}catch{return{key:a,value:x,encoded:!1}}})),p=(a,t,x)=>{const j=[...l];j[a]={...j[a],[t]:x},f(j)},h=()=>f([...l,{key:"",value:"",encoded:!0}]),y=a=>f(l.filter((t,x)=>x!==a)),S=()=>{const a={};l.forEach(t=>{t.key.trim()&&(a[t.key.trim()]=t.encoded?btoa(t.value):t.value)}),i({...r,metadata:{...r.metadata,name:N.trim()},data:a})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:327:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:328:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:329:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:330:9",value:N,onChange:a=>b(a.target.value),readOnly:!V,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:332:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:333:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"类型"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:334:9",value:r?.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:336:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:337:9",className:"flex items-center justify-between mb-2",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:338:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"密钥数据 (已自动解码 Base64)"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:339:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:h,children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:339:88",className:"h-3 w-3 mr-1"}),"添加"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:341:9",className:"space-y-2 max-h-[45vh] overflow-y-auto pr-1",children:[l.map((a,t)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:343:13",className:"flex items-start gap-2 p-2 rounded-lg border border-[var(--dg-border)] bg-[var(--dg-bg-secondary)]",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:344:15",value:a.key,onChange:x=>p(t,"key",x.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(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:350:15",value:a.value,onChange:x=>p(t,"value",x.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(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:356:15",variant:"ghost",size:"icon",className:"h-8 w-8 text-red-400 hover:text-red-300 shrink-0",onClick:()=>y(t),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:357:17",className:"h-3.5 w-3.5"})})]},t)),l.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:362:13",className:"text-center py-8 text-[var(--dg-text-muted)] text-xs",children:"暂无密钥数据,点击「添加」创建"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:366:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:367:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:S,disabled:o,children:[o?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:368:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:368:77",className:"h-3.5 w-3.5 mr-1"}),"保存密钥"]})})]})}function xe({manifest:r,onSave:i,saving:o,isCreate:V}){const g=r?.spec||{},[N,b]=v.useState(r?.metadata?.name||""),[l,f]=v.useState(g.type||"ClusterIP"),[p,h]=v.useState((g.ports||[]).map(s=>({name:s.name||"",port:String(s.port||""),targetPort:String(s.targetPort||""),protocol:s.protocol||"TCP",nodePort:s.nodePort?String(s.nodePort):""}))),[y,S]=v.useState(Object.entries(g.selector||{}).map(([s,n])=>({key:s,value:String(n)}))),a=(s,n,d)=>{const P=[...p];P[s]={...P[s],[n]:d},h(P)},t=()=>h([...p,{name:"",port:"",targetPort:"",protocol:"TCP",nodePort:""}]),x=s=>h(p.filter((n,d)=>d!==s)),j=(s,n,d)=>{const P=[...y];P[s]={...P[s],[n]:d},S(P)},C=()=>S([...y,{key:"",value:""}]),u=s=>S(y.filter((n,d)=>d!==s)),c=()=>{const s={...g};s.type=l,s.ports=p.map(d=>{const P={port:parseInt(d.port)||80,targetPort:parseInt(d.targetPort)||parseInt(d.port)||80,protocol:d.protocol};return d.name&&(P.name=d.name),d.nodePort&&l==="NodePort"&&(P.nodePort=parseInt(d.nodePort)),P});const n={};y.forEach(d=>{d.key.trim()&&(n[d.key.trim()]=d.value)}),s.selector=n,i({...r,metadata:{...r.metadata,name:N.trim()},spec:s})},m=[{value:"ClusterIP",label:"ClusterIP"},{value:"NodePort",label:"NodePort"},{value:"LoadBalancer",label:"LoadBalancer"}];return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:438:5",className:"space-y-5",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:439:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:440:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"服务名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:441:9",value:N,onChange:s=>b(s.target.value),readOnly:!V,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:443:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:444:9",className:"text-[var(--dg-text-secondary)] text-xs mb-2 block",children:"服务类型"}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:445:9",className:"flex rounded-lg border border-[var(--dg-border)] overflow-hidden w-fit",children:m.map(s=>e.jsx("button",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:447:13",type:"button",className:`px-3 py-1.5 text-xs transition-colors ${l===s.value?"bg-blue-600 text-white":"text-[var(--dg-text-secondary)] hover:bg-[var(--dg-bg-tertiary)]"}`,onClick:()=>f(s.value),children:s.label},s.value))})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:460:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:461:9",className:"flex items-center justify-between mb-2",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:462:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"端口映射"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:463:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:t,children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:463:89",className:"h-3 w-3 mr-1"}),"添加端口"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:465:9",className:"space-y-2",children:[p.map((s,n)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:467:13",className:"grid grid-cols-[1fr_80px_80px_80px_80px_32px] gap-2 items-center",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:468:15",value:s.name,onChange:d=>a(n,"name",d.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(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:469:15",value:s.port,onChange:d=>a(n,"port",d.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(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:470:15",value:s.targetPort,onChange:d=>a(n,"targetPort",d.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(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:471:15",value:s.protocol,onValueChange:d=>a(n,"protocol",d),children:[e.jsx(B,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:472:17",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:472:139"})}),e.jsxs(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:473:17",children:[e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:473:32",value:"TCP",children:"TCP"}),e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:473:72",value:"UDP",children:"UDP"})]})]}),l==="NodePort"?e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:476:17",value:s.nodePort,onChange:d=>a(n,"nodePort",d.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:477:19"}),e.jsx(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:478:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>x(n),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:478:133",className:"h-3 w-3"})})]},n)),p.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:481:34",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无端口,点击「添加端口」"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:486:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:487:9",className:"flex items-center justify-between mb-2",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:488:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"选择器 (Selector)"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:489:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:C,children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:489:93",className:"h-3 w-3 mr-1"}),"添加标签"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:491:9",className:"space-y-2",children:[y.map((s,n)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:493:13",className:"flex items-center gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:494:15",value:s.key,onChange:d=>j(n,"key",d.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:495:15",className:"text-[var(--dg-text-muted)] text-xs",children:"="}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:496:15",value:s.value,onChange:d=>j(n,"value",d.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(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:497:15",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>u(n),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:497:137",className:"h-3 w-3"})})]},n)),y.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:500:37",className:"text-center py-4 text-[var(--dg-text-muted)] text-xs",children:"暂无选择器"})]})]}),e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:504:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:505:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:c,disabled:o,children:[o?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:506:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:506:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Service"]})})]})}function pe({manifest:r,onSave:i,saving:o,isCreate:V}){const g=r?.spec||{},[N,b]=v.useState(r?.metadata?.name||""),[l,f]=v.useState(g.ingressClassName||"nginx"),[p,h]=v.useState((g.rules||[]).map(u=>({host:u.host||"",paths:u.http?.backend?.servicePort!=null?[{path:"/",pathType:"Prefix",serviceName:u.http?.backend?.serviceName||"",servicePort:String(u.http?.backend?.servicePort||"80")}]:(u.http?.paths||[]).map(c=>({path:c.path||"/",pathType:c.pathType||"Prefix",serviceName:c.backend?.service?.name||c.backend?.serviceName||"",servicePort:String(c.backend?.service?.port?.number??c.backend?.servicePort??"80")}))}))),y=(u,c)=>{const m=[...p];m[u]={...m[u],host:c},h(m)},S=()=>h([...p,{host:"",paths:[{path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}]}]),a=u=>h(p.filter((c,m)=>m!==u)),t=(u,c,m,s)=>{const n=[...p];n[u].paths[c]={...n[u].paths[c],[m]:s},h(n)},x=u=>{const c=[...p];c[u].paths.push({path:"/",pathType:"Prefix",serviceName:"",servicePort:"80"}),h(c)},j=(u,c)=>{const m=[...p];m[u].paths=m[u].paths.filter((s,n)=>n!==c),h(m)},C=()=>{const u=p.map(m=>({host:m.host,http:{paths:m.paths.map(s=>({path:s.path,pathType:s.pathType,backend:{service:{name:s.serviceName,port:{number:parseInt(s.servicePort)||80}}}}))}})),c={...g,rules:u};l.trim()?c.ingressClassName=l.trim():delete c.ingressClassName,i({...r,metadata:{...r.metadata,name:N.trim()},spec:c})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:579:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:580:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:581:9",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:582:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:583:11",value:N,onChange:u=>b(u.target.value),readOnly:!V,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:585:9",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:586:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"Ingress Class"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:587:11",value:l,onChange:u=>f(u.target.value),placeholder:"nginx / alb",className:"mt-1 font-mono text-xs h-8 bg-[var(--dg-bg-tertiary)]"})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:590:7",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:591:9",className:"flex items-center justify-between mb-2",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:592:11",className:"text-[var(--dg-text-secondary)] text-sm",children:"路由规则"}),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:593:11",variant:"outline",size:"sm",className:"h-7 text-xs",onClick:S,children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:593:89",className:"h-3 w-3 mr-1"}),"添加 Host"]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:595:9",className:"space-y-3 max-h-[50vh] overflow-y-auto pr-1",children:[p.map((u,c)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:597: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:598:15",className:"flex items-center gap-2",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:599:17",value:u.host,onChange:m=>y(c,m.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(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:605:17",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>a(c),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:605:136",className:"h-3 w-3"})})]}),u.paths.map((m,s)=>e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:608:17",className:"grid grid-cols-[1fr_100px_1fr_60px_28px] gap-1.5 items-center pl-4",children:[e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:609:19",value:m.path,onChange:n=>t(c,s,"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(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:610:19",value:m.pathType,onValueChange:n=>t(c,s,"pathType",n),children:[e.jsx(B,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:611:21",className:"h-7 text-xs bg-[var(--dg-bg-tertiary)] border-[var(--dg-border)] text-[var(--dg-text-primary)]",children:e.jsx(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:611:143"})}),e.jsxs(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:612:21",children:[e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:612:36",value:"Prefix",children:"Prefix"}),e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:612:82",value:"Exact",children:"Exact"})]})]}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:614:19",value:m.serviceName,onChange:n=>t(c,s,"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(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:615:19",value:m.servicePort,onChange:n=>t(c,s,"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(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:616:19",variant:"ghost",size:"icon",className:"h-7 w-7 text-red-400 hover:text-red-300",onClick:()=>j(c,s),children:e.jsx(L,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:616:142",className:"h-3 w-3"})})]},s)),e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:619:15",variant:"ghost",size:"sm",className:"h-6 text-xs text-[var(--dg-text-muted)]",onClick:()=>x(c),children:[e.jsx(z,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:619:129",className:"h-3 w-3 mr-1"}),"添加路径"]})]},c)),p.length===0&&e.jsx("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:622: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:625:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:626:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:C,disabled:o,children:[o?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:627:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:627:77",className:"h-3.5 w-3.5 mr-1"}),"保存 Ingress"]})})]})}function me({manifest:r,onSave:i,saving:o,isCreate:V}){const g=r?.spec||{},N=g.resources?.requests||{},[b,l]=v.useState(r?.metadata?.name||""),[f,p]=v.useState(N.storage||"1Gi"),[h,y]=v.useState(g.accessModes?.[0]||"ReadWriteOnce"),[S,a]=v.useState(g.storageClassName||""),t=()=>{i({...r,metadata:{...r.metadata,name:b.trim()},spec:{...g,accessModes:[h],storageClassName:S||void 0,resources:{requests:{storage:f}}}})};return e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:660:5",className:"space-y-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:661:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:662:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"名称"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:663:9",value:b,onChange:x=>l(x.target.value),readOnly:!V,className:"mt-1 font-mono text-xs bg-[var(--dg-bg-tertiary)]"})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:665:7",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:666:9",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:667:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"存储大小"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:668:11",value:f,onChange:x=>p(x.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:674: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:676:9",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:677:11",className:"text-[var(--dg-text-secondary)] text-xs",children:"访问模式"}),e.jsxs(D,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:678:11",value:h,onValueChange:y,children:[e.jsx(B,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:679: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(G,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:680:15"})}),e.jsxs(W,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:682:13",children:[e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:683:15",value:"ReadWriteOnce",children:"ReadWriteOnce (单节点读写)"}),e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:684:15",value:"ReadOnlyMany",children:"ReadOnlyMany (多节点只读)"}),e.jsx(T,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:685:15",value:"ReadWriteMany",children:"ReadWriteMany (多节点读写)"})]})]})]})]}),e.jsxs("div",{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:690:7",children:[e.jsx(w,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:691:9",className:"text-[var(--dg-text-secondary)] text-xs",children:"StorageClass"}),e.jsx(k,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:692:9",value:S,onChange:x=>a(x.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:699:7",className:"flex justify-end gap-2 pt-2 border-t border-[var(--dg-border)]",children:e.jsxs(R,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:700:9",size:"sm",className:"bg-blue-600 hover:bg-blue-700",onClick:t,disabled:o,children:[o?e.jsx(_,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:701:21",className:"h-3.5 w-3.5 animate-spin mr-1"}):e.jsx(O,{"code-path":"src/components/kubernetes/ResourceVisualEditor.tsx:701:77",className:"h-3.5 w-3.5 mr-1"}),"保存 PVC"]})})]})}export{Ne as R,H as d,ie as p};